⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svgawin.c

📁 远程桌面登陆软件 用rdesktop 但不基于Xwindows 可基于(nano-x ,svga,qt) ,可使用于嵌入式环境
💻 C
📖 第 1 页 / 共 4 页
字号:
}/*****************************************************************************/void ui_screenblt(uint8 opcode, int x, int y, int cx, int cy,                  int srcx, int srcy){  int i;  int j;  uint8* temp;  if (x == srcx && y == srcy)    return;  if (warp_coords(&x, &y, &cx, &cy, &srcx, &srcy))  {    if (contains_mouse(x, y, cx, cy) || contains_mouse(srcx, srcy, cx, cy))      draw_cursor_under(mousex, mousey);    if (opcode == 0xc) /* copy */      accel_screen_copy(x, y, cx, cy, srcx, srcy);    else    {      temp = (uint8*)xmalloc(cx * cy * g_server_Bpp);      for (i = 0; i < cy; i++)        for (j = 0; j < cx; j++)          set_pixel2(j, i, get_pixel(srcx + j, srcy + i), temp, cx, g_server_bpp);      for (i = 0; i < cy; i++)        for (j = 0; j < cx; j++)          set_pixel(x + j, y + i, get_pixel2(j, i, temp, cx, g_server_bpp), opcode);      xfree(temp);    }    cache_rect(x, y, cx, cy, False);    draw_cache_rects(); // draw them all so screen is not jumpy  }}/*****************************************************************************/void ui_patblt(uint8 opcode, int x, int y, int cx, int cy,               BRUSH * brush, int bgcolour, int fgcolour){  int i;  int j;  uint8 ipattern[8];  if (warp_coords(&x, &y, &cx, &cy, NULL, NULL))  {    if (contains_mouse(x, y, cx, cy))      draw_cursor_under(mousex, mousey);    switch (brush->style)    {      case 0:        fill_rect(x, y, cx, cy, fgcolour, opcode);        break;      case 3:        for (i = 0; i < 8; i++)          ipattern[i] = ~brush->pattern[7 - i];        for (i = 0; i < cy; i++)          for (j = 0; j < cx; j++)            if (is_pixel_on(ipattern, (x + j + brush->xorigin) % 8,                              (y + i + brush->yorigin) % 8, 8, 1))              set_pixel(x + j, y + i, fgcolour, opcode);            else              set_pixel(x + j, y + i, bgcolour, opcode);        break;    }    cache_rect(x, y, cx, cy, False);  }}/*****************************************************************************/void ui_destblt(uint8 opcode, int x, int y, int cx, int cy){  if (warp_coords(&x, &y, &cx, &cy, NULL, NULL))  {    if (contains_mouse(x, y, cx, cy))      draw_cursor_under(mousex, mousey);    fill_rect(x, y, cx, cy, -1, opcode);    cache_rect(x, y, cx, cy, False);  }}/*****************************************************************************/void ui_move_pointer(int x, int y){}/*****************************************************************************/void ui_set_null_cursor(void){  draw_cursor_under(mousex, mousey);  mousex = mousex - mcursor.x;  mousey = mousey - mcursor.y;  memset(&mcursor, 0, sizeof(mcursor));  memset(mcursor.andmask, 255, sizeof(mcursor.andmask));  memset(mcursor.xormask, 0, sizeof(mcursor.xormask));  draw_cursor();}/*****************************************************************************/void ui_paint_bitmap(int x, int y, int cx, int cy,                     int width, int height, uint8* data){  if (warp_coords(&x, &y, &cx, &cy, NULL, NULL))  {    if (contains_mouse(x, y, cx, cy))      draw_cursor_under(mousex, mousey);    accel_draw_box(x, y, cx, cy, data, width * g_server_Bpp);    cache_rect(x, y, cx, cy, False);  }}/*****************************************************************************/void* ui_create_cursor(unsigned int x, unsigned int y,                       int width, int height,                       uint8* andmask, uint8* xormask){  tcursor* c;  int i;  int j;  c = (tcursor*)xmalloc(sizeof(tcursor));  memset(c, 0, sizeof(tcursor));  c->w = width;  c->h = height;  c->x = x;  c->y = y;  for (i = 0; i < 32; i++)  {    for (j = 0; j < 32; j++)    {      if (is_pixel_on(andmask, j, i, 32, 1))        set_pixel_on(c->andmask, j, 31 - i, 32, 8, 255);      if (is_pixel_on(xormask, j, i, 32, 24))        set_pixel_on(c->xormask, j, 31 - i, 32, 8, 255);    }  }  return (void*)c;}/*****************************************************************************/void ui_destroy_cursor(void* cursor){  if (cursor != NULL)    xfree(cursor);}/*****************************************************************************/void ui_set_cursor(void* cursor){  int x;  int y;  int ox;  int oy;  ox = mousex;  oy = mousey;  x = mousex + mcursor.x;  y = mousey + mcursor.y;  memcpy(&mcursor, cursor, sizeof(tcursor));  mousex = x - mcursor.x;  mousey = y - mcursor.y;  draw_cursor_under(ox, oy);  draw_cursor();}/*****************************************************************************/uint16 ui_get_numlock_state(unsigned int state){  return 0;}/*****************************************************************************/unsigned int read_keyboard_state(void){  return 0;}/*****************************************************************************/void ui_resize_window(void){}/*****************************************************************************/void ui_begin_update(void){}/*****************************************************************************/void ui_end_update(void){  draw_cache_rects();  draw_cursor();}/*****************************************************************************/void ui_polygon(uint8 opcode, uint8 fillmode, POINT * point, int npoints,                BRUSH * brush, int bgcolour, int fgcolour){}/*****************************************************************************/void ui_polyline(uint8 opcode, POINT * points, int npoints, PEN * pen){}/*****************************************************************************/void ui_ellipse(uint8 opcode, uint8 fillmode,                int x, int y, int cx, int cy,                BRUSH * brush, int bgcolour, int fgcolour){}/*****************************************************************************/void generate_random(uint8* random){  memcpy(random, "12345678901234567890123456789012", 32);}/*****************************************************************************/void save_licence(uint8* data, int length){}/*****************************************************************************/int load_licence(uint8** data){  return 0;}/*****************************************************************************/void* xrealloc(void* in_val, int size){  return realloc(in_val, size);}/*****************************************************************************/void* xmalloc(int size){  return malloc(size);}/*****************************************************************************/void xfree(void* in_val){  free(in_val);}/*****************************************************************************/void warning(char* format, ...){  va_list ap;  fprintf(stderr, "WARNING: ");  va_start(ap, format);  vfprintf(stderr, format, ap);  va_end(ap);}/*****************************************************************************/void unimpl(char* format, ...){  va_list ap;  fprintf(stderr, "NOT IMPLEMENTED: ");  va_start(ap, format);  vfprintf(stderr, format, ap);  va_end(ap);}/*****************************************************************************/void error(char* format, ...){  va_list ap;  fprintf(stderr, "ERROR: ");  va_start(ap, format);  vfprintf(stderr, format, ap);  va_end(ap);}BOOL rd_pstcache_mkdir(void){  return 0;}/*****************************************************************************/int rd_open_file(char *filename){  return 0;}/*****************************************************************************/void rd_close_file(int fd){  return;}/*****************************************************************************/int rd_read_file(int fd, void *ptr, int len){  return 0;}/*****************************************************************************/int rd_write_file(int fd, void* ptr, int len){  return 0;}/*****************************************************************************/int rd_lseek_file(int fd, int offset){  return 0;}/*****************************************************************************/BOOL rd_lock_file(int fd, int start, int len){  return False;}/*****************************************************************************/void get_username_and_hostname(void){  char fullhostname[64];  char* p;  struct passwd* pw;  STRNCPY(g_username, "unknown", sizeof(g_username));  STRNCPY(g_hostname, "unknown", sizeof(g_hostname));  pw = getpwuid(getuid());  if (pw != NULL && pw->pw_name != NULL)  {    STRNCPY(g_username, pw->pw_name, sizeof(g_username));  }  if (gethostname(fullhostname, sizeof(fullhostname)) != -1)  {    p = strchr(fullhostname, '.');    if (p != NULL)      *p = 0;    STRNCPY(g_hostname, fullhostname, sizeof(g_hostname));  }}/*****************************************************************************/void out_params(void){  fprintf(stderr, "rdesktop: A Remote Desktop Protocol client.\n");  fprintf(stderr, "Version " VERSION ". Copyright (C) 1999-2003 Matt Chapman.\n");  fprintf(stderr, "See http://www.rdesktop.org/ for more information.\n\n");  fprintf(stderr, "Usage: svgardesktop [options] server\n");  fprintf(stderr, "   -g: desktop geometry (WxH)\n");  fprintf(stderr, "   -4: use RDP version 4\n");  fprintf(stderr, "   -5: use RDP version 5 (default)\n");  fprintf(stderr, "   -t: tcp port\n");  fprintf(stderr, "   -u: user name\n");  fprintf(stderr, "   -n: client hostname\n");  fprintf(stderr, "   -d: disable accel funcs\n");  fprintf(stderr, "   -a: connection colour depth\n");  fprintf(stderr, "   -l: low memory\n");  fprintf(stderr, "\n");}/* produce a hex dump */void hexdump(uint8* p, uint32 len){  uint8* line;  int i;  int thisline;  int offset;  line = p;  offset = 0;  while (offset < len)  {    printf("%04x ", offset);    thisline = len - offset;    if (thisline > 16)      thisline = 16;    for (i = 0; i < thisline; i++)      printf("%02x ", line[i]);    for (; i < 16; i++)      printf("   ");    for (i = 0; i < thisline; i++)      printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.');    printf("\n");    offset += thisline;    line += thisline;  }}/*****************************************************************************/int parse_parameters(int in_argc, char** in_argv){  int i;  char* p;  if (in_argc <= 1)  {    out_params();    return 0;  }  g_argc = in_argc;  g_argv = in_argv;  for (i = 1; i < in_argc; i++)  {    strcpy(g_servername, in_argv[i]);    if (strcmp(in_argv[i], "-g") == 0)    {      g_width = strtol(in_argv[i + 1], &p, 10);      if (g_width <= 0)      {        error("invalid geometry\n");        return 0;      }      if (*p == 'x')        g_height = strtol(p + 1, NULL, 10);      if (g_height <= 0)      {        error("invalid geometry\n");        return 0;      }      g_width = (g_width + 3) & ~3;    }    else if (strcmp(in_argv[i], "-4") == 0)      g_use_rdp5 = 0;    else if (strcmp(in_argv[i], "-5") == 0)      g_use_rdp5 = 1;    else if (strcmp(in_argv[i], "-t") == 0)      g_tcp_port_rdp = strtol(in_argv[i + 1], &p, 10);    else if (strcmp(in_argv[i], "-h") == 0)    {      out_params();      return 0;    }    else if (strcmp(in_argv[i], "-n") == 0)    {      STRNCPY(g_hostname, in_argv[i + 1], sizeof(g_hostname));    }    else if (strcmp(in_argv[i], "-u") == 0)    {      STRNCPY(g_username, in_argv[i + 1], sizeof(g_username));    }    else if (strcmp(in_argv[i], "-d") == 0)    {      use_accel = 0;    }    else if (strcmp(in_argv[i], "-a") == 0)    {      g_server_bpp = strtol(in_argv[i + 1], NULL, 10);      if (g_server_bpp != 8 && g_server_bpp != 16)      {        error("invalid server bpp\n");        return 0;      }      g_server_Bpp = (g_server_bpp + 7) / 8;    }    else if (strcmp(in_argv[i], "-l") == 0)      g_save_mem = 1;  }  return 1;}/*****************************************************************************/int main(int in_argc, char** in_argv){  get_username_and_hostname();  if (!parse_parameters(in_argc, in_argv))    return 0;  if (!ui_init())    return 1;  if (!ui_create_window())    return 1;  ui_main_loop();  ui_destroy_window();  ui_deinit();  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -