亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? grx11.c

?? freetype庫的應用demo,里面包含freetype的很多實例
?? C
?? 第 1 頁 / 共 3 頁
字號:
  /************************************************************************/  /************************************************************************/  typedef struct  grX11Surface_  {    grSurface           root;    Display*            display;    Window              win;    Visual*             visual;    Colormap            colormap;    GC                  gc;    int                 depth;    XImage*             ximage;    grBitmap            ximage_bitmap;    const grX11Format*  format;    grX11ConvertFunc    convert;    int                 win_org_x,   win_org_y;    int                 win_width,   win_height;    int                 image_width, image_height;    char                key_buffer[10];    int                 key_cursor;    int                 key_number;  } grX11Surface;  /* close a given window */  static void  gr_x11_surface_done( grX11Surface*  surface )  {    Display*  display = surface->display;    if ( display )    {      if ( surface->ximage )      {        XDestroyImage( surface->ximage );        surface->ximage = 0;      }      if ( surface->win )      {        XUnmapWindow( display, surface->win );        surface->win = 0;      }    }  }  static void  gr_x11_surface_refresh_rect( grX11Surface*  surface,                               int            x,                               int            y,                               int            w,                               int            h )  {    grX11Blitter  blit;    if ( !gr_x11_blitter_reset( &blit, &surface->root.bitmap,                                &surface->ximage_bitmap,                                x, y, w, h ) )    {      surface->convert( &blit );      XPutImage( surface->display,                 surface->win,                 surface->gc,                 surface->ximage,                 blit.x, blit.y, blit.x, blit.y, blit.width, blit.height );    }  }  static void  gr_x11_surface_refresh( grX11Surface*  surface )  {    gr_x11_surface_refresh_rect( surface, 0, 0,                                 surface->root.bitmap.width,                                 surface->root.bitmap.rows );  }  static void  gr_x11_surface_set_title( grX11Surface*  surface,                             const char*   title )  {    XStoreName( surface->display, surface->win, title );  }  static grKey  KeySymTogrKey( KeySym  key )  {    grKey        k;    int          count = sizeof ( key_translators ) /                           sizeof( key_translators[0] );    Translator*  trans = key_translators;    Translator*  limit = trans + count;    k = grKeyNone;    while ( trans < limit )    {      if ( trans->xkey == key )      {        k = trans->grkey;        break;      }      trans++;    }    return k;  }  static void  gr_x11_surface_listen_event( grX11Surface*  surface,                               int            event_mask,                               grEvent*       grevent )  {    XEvent     x_event;    KeySym     key;    Display*   display = surface->display;    int        bool_exit;    grKey      grkey;    XComposeStatus  compose;    /* XXX: for now, ignore the event mask, and only exit when */    /*      a key is pressed                                   */    (void)event_mask;    bool_exit = surface->key_cursor < surface->key_number;    XDefineCursor( display, surface->win, x11dev.idle );    while ( !bool_exit )    {      XNextEvent( display, &x_event );      switch ( x_event.type )      {      case KeyPress:        surface->key_number = XLookupString( &x_event.xkey,                                             surface->key_buffer,                                             sizeof ( surface->key_buffer ),                                             &key,                                             &compose );        surface->key_cursor = 0;        if ( surface->key_number == 0 ||             key > 512       )        {          /* this may be a special key like F1, F2, etc. */          grkey = KeySymTogrKey( key );          if ( grkey != grKeyNone )            goto Set_Key;        }        else          bool_exit = 1;        break;      case MappingNotify:        XRefreshKeyboardMapping( &x_event.xmapping );        break;      case Expose:#if 1        /* we don't need to convert the bits on each expose! */        XPutImage( surface->display,                   surface->win,                   surface->gc,                   surface->ximage,                   x_event.xexpose.x,                   x_event.xexpose.y,                   x_event.xexpose.x,                   x_event.xexpose.y,                   x_event.xexpose.width,                   x_event.xexpose.height );#else        gr_x11_surface_refresh_rectangle( surface,                                          x_event.xexpose.x,                                          x_event.xexpose.y,                                          x_event.xexpose.width,                                          x_event.xexpose.height );#endif        break;      /* You should add more cases to handle mouse events, etc. */      }    }    XDefineCursor( display, surface->win, x11dev.busy );    XFlush       ( display );    /* now, translate the keypress to a grKey; */    /* if this wasn't part of the simple translated keys, */    /* simply get the charcode from the character buffer  */    grkey = grKEY( surface->key_buffer[surface->key_cursor++] );  Set_Key:    grevent->type = gr_key_down;    grevent->key  = grkey;  }  static int  gr_x11_surface_init( grX11Surface*  surface,                       grBitmap*      bitmap )  {    Display*            display;    int                 screen;    grBitmap*           pximage = &surface->ximage_bitmap;    const grX11Format*  format;    surface->key_number = 0;    surface->key_cursor = 0;    surface->display    = display = x11dev.display;    screen = DefaultScreen( display );    surface->depth    = x11dev.format->x_depth;    surface->visual   = x11dev.visual;    surface->format      = format = x11dev.format;    surface->root.bitmap = *bitmap;    switch ( bitmap->mode )    {    case gr_pixel_mode_rgb24:      surface->convert = format->rgb_convert;      break;    case gr_pixel_mode_gray:      /* we only support 256-gray level 8-bit pixmaps */      if ( bitmap->grays == 256 )      {        surface->convert = format->gray_convert;        break;      }    default:      /* we don't support other modes */      return 0;    }    /* allocate surface image */    {      int  bits, over;      bits = bitmap->width * format->x_bits_per_pixel;      over = bits % x11dev.scanline_pad;      if ( over )        bits += x11dev.scanline_pad - over;      pximage->pitch  = bits >> 3;      pximage->width  = bitmap->width;      pximage->rows   = bitmap->rows;    }    pximage->buffer =      (unsigned char*)grAlloc( pximage->pitch * pximage->rows );    if ( !pximage->buffer )      return 0;    /* create the bitmap */    if ( grNewBitmap( bitmap->mode,                      bitmap->grays,                      bitmap->width,                      bitmap->rows,                      bitmap ) )      return 0;    surface->root.bitmap = *bitmap;    /* Now create the surface X11 image */    surface->ximage = XCreateImage( display,                                    surface->visual,                                    format->x_depth,                                    ZPixmap,                                    0,                                    (char*)pximage->buffer,                                    pximage->width,                                    pximage->rows,                                    x11dev.scanline_pad,                                    0 );    if ( !surface->ximage )      return 0;    {      XColor                color, dummy;      XTextProperty         xtp;      XSizeHints            xsh;      XSetWindowAttributes  xswa;      long                  xswa_mask = CWBackPixel | CWEventMask | CWCursor;      xswa.border_pixel = BlackPixel( display, screen);      if (surface->visual == DefaultVisual( display, screen ) )      {        xswa.background_pixel = WhitePixel( display, screen );        surface->colormap     = DefaultColormap( display, screen );      }      else      {        xswa_mask             |= CWColormap | CWBorderPixel;        xswa.colormap         = XCreateColormap( display,                                                  RootWindow( display, screen ),                                                  surface->visual,                                                  AllocNone );        XAllocNamedColor( display, xswa.colormap, "white", &color, &dummy );        xswa.background_pixel = color.pixel;        surface->colormap     = xswa.colormap;      }      xswa.cursor           = x11dev.busy;      xswa.event_mask = KeyPressMask | ExposureMask;      surface->win = XCreateWindow( display,                                    RootWindow( display, screen ),                                    0,                                    0,                                    bitmap->width,                                    bitmap->rows,                                    10,                                    format->x_depth,                                    InputOutput,                                    surface->visual,                                    xswa_mask,                                    &xswa );      XMapWindow( display, surface->win );      surface->gc = XCreateGC( display, surface->win,                               0L, NULL );      XSetForeground( display, surface->gc, xswa.border_pixel     );      XSetBackground( display, surface->gc, xswa.background_pixel );      /* make window manager happy :-) */      xtp.value    = (unsigned char*)"FreeType";      xtp.encoding = 31;      xtp.format   = 8;      xtp.nitems   = strlen( (char*)xtp.value );      xsh.x = 0;      xsh.y = 0;      xsh.width  = bitmap->width;      xsh.height = bitmap->rows;      xsh.flags  = PPosition | PSize;      xsh.flags  = 0;      XSetWMProperties( display, surface->win, &xtp, &xtp,                        NULL, 0, &xsh, NULL, NULL );    }    surface->root.done         = (grDoneSurfaceFunc)gr_x11_surface_done;    surface->root.refresh_rect = (grRefreshRectFunc)gr_x11_surface_refresh_rect;    surface->root.set_title    = (grSetTitleFunc)   gr_x11_surface_set_title;    surface->root.listen_event = (grListenEventFunc)gr_x11_surface_listen_event;    gr_x11_surface_refresh( surface );    return 1;  }  grDevice  gr_x11_device =  {    sizeof( grX11Surface ),    "x11",    gr_x11_device_init,    gr_x11_device_done,    (grDeviceInitSurfaceFunc) gr_x11_surface_init,    0,    0  };#ifdef TEST  typedef struct  grKeyName  {    grKey        key;    const char*  name;  } grKeyName;  static const grKeyName  key_names[] =  {    { grKeyF1,   "F1"  },    { grKeyF2,   "F2"  },    { grKeyF3,   "F3"  },    { grKeyF4,   "F4"  },    { grKeyF5,   "F5"  },    { grKeyF6,   "F6"  },    { grKeyF7,   "F7"  },    { grKeyF8,   "F8"  },    { grKeyF9,   "F9"  },    { grKeyF10,  "F10" },    { grKeyF11,  "F11" },    { grKeyF12,  "F12" },    { grKeyEsc,  "Esc" },    { grKeyHome, "Home" },    { grKeyEnd,  "End"  },    { grKeyPageUp,   "Page_Up" },    { grKeyPageDown, "Page_Down" },    { grKeyLeft,     "Left" },    { grKeyRight,    "Right" },    { grKeyUp,       "Up" },    { grKeyDown,     "Down" },    { grKeyBackSpace, "BackSpace" },    { grKeyReturn,   "Return" }  };#if 0  int  main( void )  {    grSurface*  surface;    int         n;    grInit();    surface = grNewScreenSurface( 0, gr_pixel_mode_gray, 320, 400, 128 );    if ( !surface )      Panic( "Could not create window\n" );    else    {      grColor      color;      grEvent      event;      const char*  string;      int          x;      grSetSurfaceRefresh( surface, 1 );      grSetTitle( surface, "X11 driver demonstration" );      for ( x = -10; x < 10; x++ )      {        for ( n = 0; n < 128; n++ )        {          color.value = ( n * 3 ) & 127;          grWriteCellChar( surface,                           x + ( ( n % 60 ) << 3 ),                           80 + ( x + 10 ) * 8 * 3 + ( ( n / 60 ) << 3 ),                           n, color );        }      }      color.value = 64;      grWriteCellString( surface, 0, 0, "just an example", color );      do      {        listen_event( (grXSurface*)surface, 0, &event );        /* return if ESC was pressed */        if ( event.key == grKeyEsc )          return 0;        /* otherwise, display key string */        color.value = ( color.value + 8 ) & 127;        {          int          count = sizeof ( key_names ) / sizeof ( key_names[0] );          grKeyName*   name  = key_names;          grKeyName*   limit = name + count;          const char*  kname = 0;          char         kname_temp[16];          while ( name < limit )          {            if ( name->key == event.key )            {              kname = name->name;              break;            }            name++;          }          if ( !kname )          {            sprintf( kname_temp, "char '%c'", (char)event.key );            kname = kname_temp;          }          grWriteCellString( surface, 30, 30, kname, color );          grRefreshSurface( surface );          paint_rectangle( surface, 0, 0,                           surface->bitmap.width, surface->bitmap.rows );        }      } while ( 1 );    }    return 0;  }#endif /* O */#endif /* TEST *//* END */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线你懂得| 日本一区中文字幕| 亚洲精品国产成人久久av盗摄| 一区二区成人在线| 久久99精品一区二区三区 | 欧美三区免费完整视频在线观看| 欧美在线小视频| 久久一留热品黄| 一区二区三区精品视频| 男人的天堂久久精品| 成人午夜免费av| 欧美日韩黄色影视| 国产视频一区二区三区在线观看| 亚洲精品国产一区二区三区四区在线 | 日韩福利视频网| 春色校园综合激情亚洲| 欧美日本在线播放| 久久久.com| 日韩电影在线观看一区| 成人av在线影院| 欧美一激情一区二区三区| 亚洲欧洲国产日韩| 麻豆国产精品777777在线| 色哟哟一区二区三区| 日韩欧美中文一区二区| 亚洲乱码日产精品bd| 久久99久久99精品免视看婷婷 | 一区二区在线看| 国产精品一区在线观看乱码| 欧美色区777第一页| 国产精品理论片在线观看| 午夜精品在线看| 93久久精品日日躁夜夜躁欧美| 精品美女在线观看| 亚洲国产日日夜夜| av福利精品导航| 99视频超级精品| av中文字幕不卡| 欧美大尺度电影在线| 亚洲欧美另类图片小说| 国产成人亚洲综合a∨婷婷图片| 欧美日韩成人综合天天影院| 亚洲精品成人在线| 国产91清纯白嫩初高中在线观看 | 免费欧美高清视频| 欧美性三三影院| ...中文天堂在线一区| 国产毛片精品一区| 日韩精品一区二区三区在线观看| 亚洲国产视频一区| 日本电影欧美片| 自拍偷拍国产精品| 懂色av一区二区在线播放| 日韩欧美久久久| 男人的天堂亚洲一区| 51精品国自产在线| 五月婷婷久久丁香| 欧美日韩国产首页| 亚洲电影一区二区三区| 欧美在线免费观看亚洲| 亚洲特黄一级片| 91香蕉视频在线| 成人免费一区二区三区视频| 不卡一卡二卡三乱码免费网站| 国产亚洲一二三区| 成人午夜精品在线| 国产欧美一区在线| 成人av网站在线观看| 国产精品久久午夜夜伦鲁鲁| 成人avav影音| 中文字幕一区二区三| 91网站最新网址| 亚洲乱码中文字幕综合| 欧美自拍丝袜亚洲| 偷拍一区二区三区| 在线电影欧美成精品| 免费黄网站欧美| 日韩欧美国产高清| 国产精品18久久久久久久久| 国产亚洲欧美一区在线观看| 国产成a人无v码亚洲福利| 国产精品久线在线观看| 色呦呦日韩精品| 亚洲18色成人| 欧美大片拔萝卜| 国产乱码精品一品二品| 国产日韩v精品一区二区| 国产iv一区二区三区| 综合婷婷亚洲小说| 欧美性猛交xxxxxx富婆| 日韩福利视频导航| 久久综合色之久久综合| 不卡视频一二三| 亚洲自拍欧美精品| 99国产精品久久久| 精品黑人一区二区三区久久 | 精品欧美一区二区在线观看| 国产乱码一区二区三区| 国产精品久久久久婷婷| 一本大道综合伊人精品热热 | 欧美一区二区三区免费| 国产乱码精品一区二区三区五月婷| 欧美经典一区二区| 日本久久一区二区| 蜜臀a∨国产成人精品| 国产丝袜美腿一区二区三区| 99久久精品99国产精品| 天天影视色香欲综合网老头| 久久久一区二区| 欧美亚洲一区二区在线观看| 美女任你摸久久| 国产精品国产自产拍高清av| 精品视频在线看| 国产精品一区一区| 亚洲成人一区在线| 久久婷婷色综合| 在线视频一区二区免费| 久久99久久99精品免视看婷婷| 亚洲欧洲无码一区二区三区| 欧美一区二区三区爱爱| 成人av影视在线观看| 日本欧美肥老太交大片| 国产精品区一区二区三| 欧美日韩三级在线| 高清beeg欧美| 日韩福利视频网| 成人欧美一区二区三区| 欧美不卡一区二区三区| 在线看国产日韩| 国产精品99久久久久久久女警| 亚洲国产精品欧美一二99| 国产欧美一区在线| 欧美一区二区三区视频免费| 91视频免费观看| 国产一区二区毛片| 视频一区二区三区中文字幕| 国产精品成人免费在线| 精品久久久三级丝袜| 欧美三级一区二区| 北条麻妃一区二区三区| 美女精品一区二区| 亚洲第一二三四区| 亚洲天堂av一区| 国产视频在线观看一区二区三区 | 激情久久五月天| 亚洲成人动漫av| 亚洲乱码国产乱码精品精的特点| 久久久精品影视| 日韩免费看的电影| 9191国产精品| 91福利国产精品| 91亚洲午夜精品久久久久久| 国产成人免费网站| 国模一区二区三区白浆| 欧美激情一区在线观看| 波多野洁衣一区| 国产精品99久久久| 久久99在线观看| 日韩电影免费一区| 亚洲高清免费视频| 尤物在线观看一区| 综合欧美一区二区三区| 国产精品久久久99| 亚洲国产高清aⅴ视频| 久久亚洲一区二区三区四区| 日韩美一区二区三区| 欧美一区二区三区性视频| 欧美日韩亚洲综合| 欧洲精品视频在线观看| 日本道精品一区二区三区 | 亚洲综合自拍偷拍| 1024精品合集| 亚洲日本va午夜在线影院| 国产精品久久久久桃色tv| 亚洲国产精品精华液ab| 欧美激情一区二区三区不卡 | 成人avav影音| 成人av资源在线| 99精品国产视频| 91视频.com| 色天使色偷偷av一区二区| 91免费版在线| 欧洲一区二区av| 欧美久久久久久蜜桃| 欧美猛男超大videosgay| 欧美日韩激情一区二区| 6080国产精品一区二区| 欧美一级艳片视频免费观看| 欧美一区二区黄| 欧美大片一区二区三区| 久久先锋影音av鲁色资源| 久久精品在线观看| 国产精品乱码人人做人人爱 | 91福利在线看| 欧美视频一二三区| 日韩午夜激情免费电影| 久久久久久久久久久99999| 欧美激情一区二区三区在线| 中文字幕字幕中文在线中不卡视频| 亚洲精品中文在线观看|