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

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

?? grwin32.c

?? Demo for Free type 2.2.1
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************
 *
 *  grwin32.c  graphics driver for Win32 platform
 *
 *  This is the driver for displaying inside a window under Win32,
 *  used by the graphics utility of the FreeType test suite.
 *
 *  Written by Antoine Leca.
 *  Copyright 1999-2000, 2001, 2002 by Antoine Leca, David Turner
 *  David Turner, Robert Wilhelm, and Werner Lemberg.
 *
 *  Borrowing liberally from the other FreeType drivers.
 *
 *  This file is part of the FreeType project, and may only be used
 *  modified and distributed under the terms of the FreeType project
 *  license, LICENSE.TXT. By continuing to use, modify or distribute
 *  this file you indicate that you have read the license and
 *  understand and accept it fully.
 *
 ******************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#include <grobjs.h>
#include <grdevice.h>


/* logging facility */
#include <stdarg.h>

#define  DEBUGxxx

#ifdef DEBUG
#define LOG(x)  LogMessage##x
#else
#define LOG(x)  /* rien */
#endif

#ifdef DEBUG
  static void  LogMessage( const char*  fmt, ... )
  {
    va_list  ap;

    va_start( ap, fmt );
    vfprintf( stderr, fmt, ap );
    va_end( ap );
  }
#endif
/*-------------------*/

/*  Size of the window. */
#define WIN_WIDTH   640u
#define WIN_HEIGHT  450u

/* These values can be changed, but WIN_WIDTH should remain for now a  */
/* multiple of 32 to avoid padding issues.                             */

  typedef struct  _Translator
  {
    ULONG   winkey;
    grKey   grkey;

  } Translator;

  static
  Translator  key_translators[] =
  {
    { VK_BACK,      grKeyBackSpace },
    { VK_TAB,       grKeyTab       },
    { VK_RETURN,    grKeyReturn    },
    { VK_ESCAPE,    grKeyEsc       },
    { VK_HOME,      grKeyHome      },
    { VK_LEFT,      grKeyLeft      },
    { VK_UP,        grKeyUp        },
    { VK_RIGHT,     grKeyRight     },
    { VK_DOWN,      grKeyDown      },
    { VK_PRIOR,     grKeyPageUp    },
    { VK_NEXT,      grKeyPageDown  },
    { VK_END,       grKeyEnd       },
    { VK_F1,        grKeyF1        },
    { VK_F2,        grKeyF2        },
    { VK_F3,        grKeyF3        },
    { VK_F4,        grKeyF4        },
    { VK_F5,        grKeyF5        },
    { VK_F6,        grKeyF6        },
    { VK_F7,        grKeyF7        },
    { VK_F8,        grKeyF8        },
    { VK_F9,        grKeyF9        },
    { VK_F10,       grKeyF10       },
    { VK_F11,       grKeyF11       },
    { VK_F12,       grKeyF12       }
  };

  static
  Translator  syskey_translators[] =
  {
    { VK_F1,        grKeyF1        }
  };

  static ATOM  ourAtom;

  typedef struct grWin32SurfaceRec_
  {
    grSurface     root;
    HWND          window;
    int           window_width;
    int           window_height;
    int           title_set;
    const char*   the_title;
    LPBITMAPINFO  pbmi;
    char          bmi[ sizeof(BITMAPINFO) + 256*sizeof(RGBQUAD) ];
    HBITMAP       hbm;
    grEvent       ourevent;
    int           eventToProcess;

  } grWin32Surface;


/* destroys the surface*/
static void
gr_win32_surface_done( grWin32Surface*  surface )
{
  /* The graphical window has perhaps already destroyed itself */
  if ( surface->window )
  {
    DestroyWindow ( surface->window );
    PostMessage( surface->window, WM_QUIT, 0, 0 );
  }
  grDoneBitmap( &surface->root.bitmap );
}


static void
gr_win32_surface_refresh_rectangle(
         grWin32Surface*  surface,
         int              x,
         int              y,
         int              w,
         int              h )
{
  HDC           hDC;
  int           row_bytes, delta;
  LPBITMAPINFO  pbmi   = surface->pbmi;
  HANDLE        window = surface->window;

  LOG(( "gr_win32_surface_refresh_rectangle: ( %p, %d, %d, %d, %d )\n",
        (long)surface, x, y, w, h ));

  /* clip update rectangle */

  if ( x < 0 )
  {
    w += x;
    x  = 0;
  }

  delta = x + w - surface->window_width;
  if ( delta > 0 )
    w -= delta;

  if ( y < 0 )
  {
    h += y;
    y  = 0;
  }

  delta = y + h - surface->window_height;
  if ( delta > 0 )
    h -= delta;

  if ( w <= 0 || h <= 0 )
    return;

  /* now, perform the blit */
  row_bytes = surface->root.bitmap.pitch;
  if (row_bytes < 0) row_bytes = -row_bytes;

  if ( row_bytes*8 != pbmi->bmiHeader.biWidth * pbmi->bmiHeader.biBitCount )
    pbmi->bmiHeader.biWidth  = row_bytes * 8 / pbmi->bmiHeader.biBitCount;

  hDC = GetDC ( window );
  SetDIBits ( hDC, surface->hbm,
              0,
              surface->root.bitmap.rows,
              surface->root.bitmap.buffer,
              pbmi,
              DIB_RGB_COLORS );

  ReleaseDC ( window, hDC );

  ShowWindow( window, SW_SHOW );
  InvalidateRect ( window, NULL, FALSE );
  UpdateWindow ( window );
}


static void
gr_win32_surface_set_title( grWin32Surface*  surface,
                            const char*      title )
{
  /* the title will be set on the next listen_event, just */
  /* record it there..                                    */
  surface->title_set = 1;
  surface->the_title = title;
}

static void
gr_win32_surface_listen_event( grWin32Surface*  surface,
                               int              event_mask,
                               grEvent*         grevent )
{
  MSG     msg;
  HANDLE  window = surface->window;

  event_mask=event_mask;  /* unused parameter */

  if ( window && !surface->title_set )
  {
    SetWindowText( window, surface->the_title );
    surface->title_set = 1;
  }

  surface->eventToProcess = 0;
  while (GetMessage( &msg, 0, 0, 0 ))
  {
    TranslateMessage( &msg );
    DispatchMessage( &msg );
    if (surface->eventToProcess)
      break;
  }

  *grevent = surface->ourevent;
}

/*
 * set graphics mode
 * and create the window class and the message handling.
 */


static grWin32Surface*
gr_win32_surface_init( grWin32Surface*  surface,
                       grBitmap*        bitmap )
{
  static RGBQUAD  black = {    0,    0,    0, 0 };
  static RGBQUAD  white = { 0xFF, 0xFF, 0xFF, 0 };
  LPBITMAPINFO    pbmi;

  /* find some memory for the bitmap header */
  surface->pbmi = pbmi = (LPBITMAPINFO) surface->bmi;

  LOG(( "Win32: init_surface( %p, %p )\n", surface, bitmap ));

  LOG(( "       -- input bitmap =\n" ));
  LOG(( "       --   mode   = %d\n", bitmap->mode ));
  LOG(( "       --   grays  = %d\n", bitmap->grays ));
  LOG(( "       --   width  = %d\n", bitmap->width ));
  LOG(( "       --   height = %d\n", bitmap->rows ));

  /* create the bitmap - under Win32, we support all modes as the GDI */
  /* handles all conversions automatically..                          */
  if ( grNewBitmap( bitmap->mode,
                    bitmap->grays,
                    bitmap->width,
                    bitmap->rows,
                    bitmap ) )
    return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日免费三级在线| 国产亚洲成av人在线观看导航| 日韩一级高清毛片| 国产欧美日产一区| 在线免费观看一区| 久久精品国产第一区二区三区| 中文字幕亚洲成人| 日韩精品一区二区三区中文精品 | 欧美tk—视频vk| 色94色欧美sute亚洲13| 精品一区二区免费| 香蕉成人啪国产精品视频综合网| 国产清纯白嫩初高生在线观看91| 欧美日本一区二区在线观看| 99视频在线观看一区三区| 久久久www成人免费无遮挡大片| 久久福利视频一区二区| 国产精品成人一区二区三区夜夜夜| 91欧美一区二区| 国产69精品久久久久毛片| 国产综合成人久久大片91| 日本午夜精品视频在线观看| 亚洲激情在线播放| 亚洲男人天堂一区| 国产精品久久久久天堂| 国产精品美女一区二区在线观看| 精品粉嫩超白一线天av| 欧美一区二区三区视频| 欧美一区二区视频观看视频| 欧美日韩在线播放| 91麻豆自制传媒国产之光| 成人app网站| 91丝袜国产在线播放| 91麻豆免费在线观看| 色网站国产精品| 91国产精品成人| 欧美午夜一区二区| 91精品久久久久久久91蜜桃| 久久久精品免费免费| 色视频欧美一区二区三区| 亚洲女人****多毛耸耸8| 久久久久久久性| 日韩三级在线观看| 色偷偷成人一区二区三区91| caoporen国产精品视频| 成人激情黄色小说| 欧美视频中文一区二区三区在线观看| 91成人免费网站| 欧美精品一级二级三级| 91精选在线观看| 精品成人在线观看| 国产精品另类一区| 亚洲mv大片欧洲mv大片精品| 日本午夜一本久久久综合| 国产一区二区三区免费播放| 成人福利视频在线看| 欧美丝袜第三区| 欧美tk—视频vk| 亚洲欧美色一区| 日韩国产在线观看| 成人精品一区二区三区四区| 色综合色综合色综合| 69堂亚洲精品首页| 在线免费亚洲电影| 91久久精品网| 欧美在线播放高清精品| 欧美午夜视频网站| 免费在线观看一区二区三区| 极品少妇xxxx精品少妇偷拍| 97se亚洲国产综合自在线观| 欧美欧美欧美欧美首页| 国产精品色呦呦| 丝袜国产日韩另类美女| 成人综合在线观看| 日韩亚洲电影在线| 亚洲色大成网站www久久九九| 免费观看91视频大全| 99视频在线精品| 久久婷婷国产综合国色天香| 亚洲一线二线三线久久久| 国产麻豆精品在线| 欧美一级片在线| 亚洲伦理在线精品| 东方aⅴ免费观看久久av| 5566中文字幕一区二区电影| 1024成人网| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品123区| 中文字幕一区视频| 国产成人免费在线视频| 717成人午夜免费福利电影| 亚洲欧美在线另类| 美女在线观看视频一区二区| 99视频超级精品| 欧美一级在线视频| 午夜精品成人在线| 欧美在线一二三四区| 亚洲日本丝袜连裤袜办公室| 国产精品一区二区男女羞羞无遮挡| 欧美男同性恋视频网站| 一区二区三区精品久久久| 97久久超碰国产精品| 国产精品另类一区| 成人av午夜影院| 亚洲欧洲性图库| 99久久婷婷国产| 一本久久a久久免费精品不卡| 91久久人澡人人添人人爽欧美| 久久久国际精品| 国产精品一区不卡| 国产视频911| 国产成人aaa| 椎名由奈av一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产精品嫩草影院com| 97se亚洲国产综合自在线观| 国产精品久久久久aaaa樱花 | 精品av综合导航| 男男视频亚洲欧美| 91 com成人网| 无吗不卡中文字幕| 色94色欧美sute亚洲线路二| 日韩一区二区免费视频| 久久影院视频免费| 风间由美一区二区三区在线观看 | 亚洲视频图片小说| 欧美色综合网站| 毛片av一区二区| 国产精品理论片| 欧美视频完全免费看| 日韩国产精品91| 欧美一区二区三区视频在线观看| 日韩精品一级二级| 国产欧美视频一区二区三区| 色视频一区二区| 久久精品国产77777蜜臀| 欧美高清性hdvideosex| 久久www免费人成看片高清| 久久久久久久综合| 色香蕉成人二区免费| 日本成人超碰在线观看| 欧美高清在线精品一区| 欧美日韩亚洲综合在线| 美脚の诱脚舐め脚责91| 亚洲免费资源在线播放| 日韩一区二区三区在线视频| 成人午夜精品一区二区三区| 亚洲国产视频网站| 中文字幕第一区| 在线成人免费观看| 成人国产视频在线观看| 婷婷六月综合网| 国产精品久久午夜夜伦鲁鲁| 欧美精品久久天天躁| 成人黄色在线看| 国产一区二区按摩在线观看| 亚洲制服丝袜av| 亚洲欧洲成人av每日更新| 日韩欧美国产一区二区在线播放| 91丨九色丨国产丨porny| 国产一区欧美一区| 首页亚洲欧美制服丝腿| 亚洲男同1069视频| 国产精品午夜在线| 精品久久久网站| 51精品国自产在线| 欧洲中文字幕精品| 成人av在线看| 高清不卡一区二区| 久久丁香综合五月国产三级网站| 一区二区免费看| 亚洲另类一区二区| 亚洲日本在线视频观看| 国产精品午夜免费| 国产欧美日韩综合| 久久久精品国产免费观看同学| 日韩欧美一区二区三区在线| 紧缚捆绑精品一区二区| 亚洲国产精品影院| 亚洲午夜国产一区99re久久| 一区二区三区在线观看视频| 自拍偷拍欧美激情| 亚洲综合无码一区二区| 亚洲视频中文字幕| 一区二区久久久久| 亚洲欧美另类小说视频| 亚洲高清免费在线| 午夜伦欧美伦电影理论片| 天堂午夜影视日韩欧美一区二区| 亚洲一区在线视频观看| 亚洲电影欧美电影有声小说| 午夜精品久久久久| 蜜桃在线一区二区三区| 开心九九激情九九欧美日韩精美视频电影| 午夜免费久久看| 亚洲综合一区二区三区| 亚洲一区av在线| 不卡av在线免费观看| 日韩精品中文字幕在线一区| 亚洲精品日产精品乱码不卡|