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

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

?? gros2pm.c

?? freetype庫的應用demo,里面包含freetype的很多實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
                                     GPIA_ASSOC | GPIF_DEFAULT );    GpiSetBackMix( surface->image_ps, BM_OVERPAINT );    /* create the image's PM bitmap */    bit = (PBITMAPINFO2)grAlloc( sizeof(BITMAPINFO2) + 256*sizeof(RGB2) );    surface->bitmap_header = bit;    bit->cbFix   = sizeof( BITMAPINFOHEADER2 );    bit->cx      = surface->root.bitmap.width;    bit->cy      = surface->root.bitmap.rows;    bit->cPlanes = 1;    bit->argbColor[0].bBlue  = 255;    bit->argbColor[0].bGreen = 0;    bit->argbColor[0].bRed   = 0;    bit->argbColor[1].bBlue  = 0;    bit->argbColor[1].bGreen = 255;    bit->argbColor[1].bRed   = 0;    bit->cBitCount = (bitmap->mode == gr_pixel_mode_gray ? 8 : 1 );    if (bitmap->mode == gr_pixel_mode_gray)    {      RGB2*  color = bit->argbColor;      int    x, count;      count = bitmap->grays;      for ( x = 0; x < count; x++, color++ )      {        color->bBlue  =        color->bGreen =        color->bRed   = (((count-x)*255)/count);      }    }    else    {      RGB2*  color = bit->argbColor;      color[0].bBlue  =      color[0].bGreen =      color[0].bRed   = 0;      color[1].bBlue  =      color[1].bGreen =      color[1].bRed   = 255;    }    surface->os2_bitmap = GpiCreateBitmap( surface->image_ps,                                           (PBITMAPINFOHEADER2)bit,                                           0L, NULL, NULL );    GpiSetBitmap( surface->image_ps, surface->os2_bitmap );    bit->cbFix = sizeof( BITMAPINFOHEADER2 );    GpiQueryBitmapInfoHeader( surface->os2_bitmap,                              (PBITMAPINFOHEADER2)bit );    surface->bitmap_header = bit;    /* for gr_pixel_mode_gray, create a gray-levels logical palette */    if ( bitmap->mode == gr_pixel_mode_gray )    {      int     x, count;      count = bitmap->grays;      for ( x = 0; x < count; x++ )        palette[x] = (((count-x)*255)/count) * 0x010101;      /* create logical color table */      GpiCreateLogColorTable( surface->image_ps,                              (ULONG) LCOL_PURECOLOR,                              (LONG)  LCOLF_CONSECRGB,                              (LONG)  0L,                              (LONG)  count,                              (PLONG) palette );      /* now, copy the color indexes to surface->shades */      for ( x = 0; x < count; x++ )        surface->shades[x] = GpiQueryColorIndex( surface->image_ps,                                                 0, palette[x] );    }    /* set up the blit points array */    surface->blit_points[1].x = surface->root.bitmap.width;    surface->blit_points[1].y = surface->root.bitmap.rows;    surface->blit_points[3]   = surface->blit_points[1];    /* Finally, create the event handling thread for the surface's window */    DosCreateThread( &surface->message_thread,                     (PFNTHREAD) RunPMWindow,                     (ULONG)     surface,                     0UL,                     32920 );    /* wait for the window creation */    LOCK(surface->image_lock);    UNLOCK(surface->image_lock);    surface->root.done         = (grDoneSurfaceFunc) done_surface;    surface->root.refresh_rect = (grRefreshRectFunc) refresh_rectangle;    surface->root.set_title    = (grSetTitleFunc)    set_title;    surface->root.listen_event = (grListenEventFunc) listen_event;    /* convert_rectangle( surface, 0, 0, bitmap->width, bitmap->rows ); */    return surface;  }  MRESULT EXPENTRY  Message_Process( HWND    handle,                                     ULONG   mess,                                     MPARAM  parm1,                                     MPARAM  parm2 );  static  void  RunPMWindow( grPMSurface*  surface )  {    unsigned char   class_name[] = "DisplayClass";             ULONG  class_flags;    static   HMQ    queue;             QMSG   message;    /* store the current surface pointer in "the_surface". It is a static */    /* variable that is only used to retrieve the pointer in the client   */    /* window procedure the first time is is called..                     */    the_surface = surface;    /* try to prevent the program from going on without the setup of thread 2 */    LOCK( surface->image_lock );    LOG(( "Os2PM: RunPMWindow( %08lx )\n", (long)surface ));    /* create an anchor to allow this thread to use PM */    surface->anchor = WinInitialize(0);    if (!surface->anchor)    {      printf( "Error doing WinInitialize()\n" );      return;    }    /* create a message queue */    queue = WinCreateMsgQueue( surface->anchor, 0 );    if (!queue)    {      printf( "Error doing WinCreateMsgQueue()\n" );      return;    }    /* register the window class */    if ( !WinRegisterClass( surface->anchor,                            (PSZ)   class_name,                            (PFNWP) Message_Process,                            CS_SIZEREDRAW,                            0 ) )    {      printf( "Error doing WinRegisterClass()\n" );      return;    }    /* create the PM window */    class_flags = FCF_TITLEBAR | FCF_MINBUTTON | FCF_DLGBORDER |                  FCF_TASKLIST | FCF_SYSMENU;    LOG(( "Os2PM: RunPMWindow: Creating window\n" ));    surface->frame_window = WinCreateStdWindow(                                HWND_DESKTOP,                                WS_VISIBLE,                                &class_flags,                                (PSZ) class_name,                                (PSZ) "FreeType Viewer - press F1 for help",                                WS_VISIBLE,                                0, 0,                                &surface->client_window );    if (!surface->frame_window)    {      printf( "Error doing WinCreateStdWindow()\n" );      return;    }    /* find the title window handle */    surface->title_window = WinWindowFromID( surface->frame_window,                                             FID_TITLEBAR );    LOG (( "Os2PM: RunPMWIndow: Creation succeeded\n" ));    LOG (( "    -- frame  = %08lx\n", surface->frame_window ));    LOG (( "    -- client = %08lx\n", surface->client_window ));    /* set Window size and position */    WinSetWindowPos( surface->frame_window,                     0L,                     (SHORT) 60,                     (SHORT) WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN ) -                             (surface->root.bitmap.rows + 100),                     (SHORT) WinQuerySysValue( HWND_DESKTOP, SV_CYDLGFRAME )*2 +                             surface->root.bitmap.width,                     (SHORT) WinQuerySysValue( HWND_DESKTOP, SV_CYTITLEBAR ) +                             WinQuerySysValue( HWND_DESKTOP, SV_CYDLGFRAME )*2 +                             surface->root.bitmap.rows,                     SWP_SIZE | SWP_MOVE );#if 0    /* save the handle to the current surface within the window words */    WinSetWindowPtr( surface->client_window,QWL_USER, surface );#endif    /* Announcing window_created */    UNLOCK(surface->image_lock);    /* run the message queue till the end */    while ( WinGetMsg( surface->anchor, &message, (HWND)NULL, 0, 0 ) )    {      WinDispatchMsg( surface->anchor, &message );    }    /* clean-up */    WinDestroyWindow( surface->frame_window );    surface->frame_window = 0;    WinDestroyMsgQueue( queue );    WinTerminate( surface->anchor );    /* await death... */    while ( 1 )      DosSleep( 100 );  }  /* Message processing for our PM Window class */  MRESULT EXPENTRY  Message_Process( HWND    handle,                                     ULONG   mess,                                     MPARAM  parm1,                                     MPARAM  parm2 )  {     static HDC     screen_dc;     static HPS     screen_ps;     static BOOL    minimized;     SIZEL   sizl;     SWP     swp;     grPMSurface*  surface;    /* get the handle to the window's surface -- note that this */    /* value will be null when the window is created            */    surface = (grPMSurface*)WinQueryWindowPtr( handle, QWL_USER );    if (!surface)    {      surface = the_surface;      WinSetWindowPtr( handle, QWL_USER, surface );    }    switch( mess )    {    case WM_DESTROY:      /* warn the main thread to quit if it didn't know */      surface->event.type = gr_event_key;      surface->event.key  = grKeyEsc;      DosPostEventSem( surface->event_lock );      break;    case WM_CREATE:      /* set original magnification */      minimized = FALSE;      /* create Device Context and Presentation Space for screen. */      screen_dc = WinOpenWindowDC( handle );      screen_ps = GpiCreatePS( surface->anchor,                               screen_dc,                               &sizl,                               PU_PELS | GPIT_MICRO |                               GPIA_ASSOC | GPIF_DEFAULT );      /* take the input focus */      WinFocusChange( HWND_DESKTOP, handle, 0L );      LOG(( "screen_dc and screen_ps have been created\n" ));      /* To permit F9, F10 and others to pass through to the application */      if (TRUE != WinSetAccelTable (surface->anchor, 0, surface->frame_window))      {        printf( "Error - failed to clear accel table\n");      }      break;    case WM_MINMAXFRAME:      /* to update minimized if changed */      swp = *((PSWP) parm1);      if ( swp.fl & SWP_MINIMIZE )        minimized = TRUE;      if ( swp.fl & SWP_RESTORE )        minimized = FALSE;      return WinDefWindowProc( handle, mess, parm1, parm2 );      break;    case WM_ERASEBACKGROUND:    case WM_PAINT:      /* copy the memory image of the screen out to the real screen */      LOCK( surface->image_lock );      WinBeginPaint( handle, screen_ps, NULL );      /* main image and magnified picture */      GpiBitBlt( screen_ps,                 surface->image_ps,                 4L,                 surface->blit_points,                 ROP_SRCCOPY, BBO_AND );      WinEndPaint( screen_ps );      UNLOCK( surface->image_lock );      break;    case WM_HELP:  /* this really is a F1 Keypress !! */      surface->event.key = grKeyF1;      goto Do_Key_Event;    case WM_CHAR:      if ( CHARMSG( &mess )->fs & KC_KEYUP )        break;      /* look for a specific vkey */      {        int          count = sizeof( key_translators )/sizeof( key_translators[0] );        Translator*  trans = key_translators;        Translator*  limit = trans + count;        for ( ; trans < limit; trans++ )          if ( CHARMSG(&mess)->vkey == trans->os2key )          {            surface->event.key = trans->grkey;            goto Do_Key_Event;          }      }      /* otherwise, simply record the character code */      if ( (CHARMSG( &mess )->fs & KC_CHAR) == 0 )        break;      surface->event.key = CHARMSG(&mess)->chr;    Do_Key_Event:      surface->event.type = gr_event_key;      DosPostEventSem( surface->event_lock );      break;    default:      return WinDefWindowProc( handle, mess, parm1, parm2 );    }    return (MRESULT) FALSE;  }  grDevice  gr_os2pm_device =  {    sizeof( grPMSurface ),    "os2pm",    init_device,    done_device,    (grDeviceInitSurfaceFunc) init_surface,    0,    0  };

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜另类动漫二区| 亚洲欧洲在线观看av| 亚洲乱码日产精品bd| 久久99国产精品麻豆| 欧美视频日韩视频| 国产精品美女久久久久av爽李琼| 日本在线不卡视频| 91福利精品视频| 国产精品丝袜91| 国产原创一区二区三区| 欧美高清视频www夜色资源网| 亚洲三级在线看| 风间由美一区二区三区在线观看| 日韩欧美一二三区| 午夜日韩在线观看| 色8久久精品久久久久久蜜| 久久久久久久久久久99999| 日本特黄久久久高潮| 欧美午夜片在线观看| 亚洲视频在线观看三级| 国产91露脸合集magnet| 精品国产免费人成在线观看| 日韩中文字幕区一区有砖一区| 色婷婷av一区二区三区大白胸| 国产精品久久久久9999吃药| 国产高清不卡一区二区| 精品国产污污免费网站入口| 蜜桃一区二区三区在线| 91精品国产综合久久精品app| 亚洲精品久久久蜜桃| 91最新地址在线播放| 国产精品传媒入口麻豆| 成人深夜视频在线观看| 日本一区二区高清| 懂色一区二区三区免费观看| 久久久久久免费网| 国产黄人亚洲片| 欧美激情综合五月色丁香小说| 国产激情91久久精品导航| 久久老女人爱爱| 国产精品一区二区久久不卡| 久久影院午夜论| 国产精品系列在线播放| 国产网站一区二区三区| 国产成人精品一区二区三区网站观看| 日韩欧美久久久| 久久99久国产精品黄毛片色诱| 欧美成人女星排行榜| 精品在线一区二区三区| 精品不卡在线视频| 国产福利一区二区三区视频| 国产亚洲综合av| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产香蕉久久精品综合网| 国产精品一区二区在线观看不卡| 久久久777精品电影网影网| 成人亚洲一区二区一| 亚洲国产高清在线观看视频| 不卡一区二区三区四区| 亚洲欧美日韩国产中文在线| 欧美唯美清纯偷拍| 日本美女视频一区二区| 精品久久一二三区| 成熟亚洲日本毛茸茸凸凹| 中文字幕视频一区| 欧日韩精品视频| 强制捆绑调教一区二区| 久久精品欧美一区二区三区麻豆 | 视频一区中文字幕| 亚洲精品一区二区三区精华液 | 蜜桃免费网站一区二区三区| 久久综合色天天久久综合图片| 成人国产精品免费网站| 夜夜嗨av一区二区三区网页| 欧美一区二区国产| 国产成人免费在线观看| 伊人婷婷欧美激情| 欧美一区二区视频在线观看2022| 国产尤物一区二区在线| 亚洲欧美国产77777| 6080亚洲精品一区二区| 国产伦精品一区二区三区免费| 亚洲男人电影天堂| 欧美一区二区三区日韩| 风间由美性色一区二区三区| 一区二区激情视频| 久久亚洲综合色一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 一本大道久久a久久精二百| 免费人成黄页网站在线一区二区| 中文欧美字幕免费| 在线观看91av| 成人激情小说乱人伦| 午夜精品影院在线观看| 久久精品无码一区二区三区| 欧美系列一区二区| 国产精品18久久久久久久久| 亚洲精品视频自拍| 精品成人在线观看| 色婷婷综合久久久| 国产一区二区看久久| 亚洲国产视频一区| 国产亚洲一区字幕| 欧美日韩高清在线播放| 成人app下载| 精品一区二区三区久久| 一区二区三区国产精品| 国产亚洲视频系列| 欧美高清www午色夜在线视频| 99久久免费精品| 国产在线观看免费一区| 亚洲第一二三四区| 中文幕一区二区三区久久蜜桃| 欧美一级夜夜爽| 91福利精品第一导航| 国产精品66部| 秋霞电影网一区二区| 亚洲乱码国产乱码精品精可以看| 精品国产乱码久久| 欧美精品久久99| 色吊一区二区三区| 成年人网站91| 国产一区在线精品| 秋霞影院一区二区| 亚洲va在线va天堂| 亚洲色图欧洲色图婷婷| 中文字幕精品三区| 久久久综合视频| 日韩精品资源二区在线| 欧美蜜桃一区二区三区| 91一区在线观看| 大陆成人av片| 国产成人自拍网| 激情av综合网| 九色|91porny| 麻豆视频一区二区| 青青草国产成人av片免费| 亚洲一区二区三区视频在线播放| 亚洲欧美另类图片小说| 国产精品色婷婷久久58| 国产午夜精品久久久久久久| 欧美精品一区二| 精品国产一区二区国模嫣然| 91精品国产色综合久久| 51精品秘密在线观看| 欧美精品一二三区| 欧美日韩一区二区在线视频| 在线看国产一区| 色婷婷精品大视频在线蜜桃视频| 93久久精品日日躁夜夜躁欧美| www.日韩精品| www.av精品| av资源网一区| 91香蕉视频mp4| 91免费小视频| 色成人在线视频| 欧美性生活影院| a美女胸又www黄视频久久| 成人av电影在线| 色综合久久久久综合体桃花网| 99精品久久免费看蜜臀剧情介绍| 99精品国产99久久久久久白柏| 99久久精品国产一区| 色妞www精品视频| 欧美性受xxxx黑人xyx| 欧美日韩国产bt| 日韩美女视频一区二区在线观看| 欧美mv日韩mv| 国产视频一区在线观看| 中文字幕欧美区| 亚洲欧美日本韩国| 亚洲一级二级在线| 强制捆绑调教一区二区| 国产在线国偷精品产拍免费yy| 国产成人免费xxxxxxxx| 91亚洲精华国产精华精华液| 91国在线观看| 欧美丰满美乳xxx高潮www| 日韩一级大片在线| 久久久一区二区| 国产精品对白交换视频| 亚洲综合免费观看高清完整版| 午夜久久久久久| 国产一区二区免费视频| www.av精品| 欧美精品久久一区| 久久久久久久久久久黄色| 日韩理论片在线| 日韩中文字幕1| 国产福利视频一区二区三区| 91一区一区三区| 91精品国产手机| 欧美国产欧美综合| 亚洲一卡二卡三卡四卡无卡久久| 日本亚洲天堂网| 国产91高潮流白浆在线麻豆| 99re热这里只有精品免费视频| 欧美精品一二三| 国产日韩欧美精品一区| 亚洲韩国一区二区三区|