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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? grx11.c

?? freetype庫的應(yīng)用demo,里面包含freetype的很多實(shí)例
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/******************************************************************* * *  grx11.c  graphics driver for X11. * *  This is the driver for displaying inside a window under X11, *  used by the graphics utility of the FreeType test suite. * *  Copyright 1999-2000, 2001, 2002, 2005 by Antoine Leca, David Turner *  David Turner, Robert Wilhelm, and Werner Lemberg. * *  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. * ******************************************************************/#ifdef __VMS#include <vms_x_fix.h>#endif#include <grobjs.h>#include <grdevice.h>#define TEST#ifdef TEST#include "grfont.h"#endif#include <stdio.h>#include <string.h>#include <stdlib.h>#include <X11/Xlib.h>#include <X11/Xutil.h>#include <X11/cursorfont.h>#include <X11/keysym.h>#if defined( __cplusplus ) || defined( c_plusplus )#define Class  c_class#else#define Class  class#endif  /* old trick to determine 32-bit integer type */#include <limits.h>  /* The number of bytes in an `int' type.  */#if   UINT_MAX == 0xFFFFFFFFUL#define GR_SIZEOF_INT  4#elif UINT_MAX == 0xFFFFU#define GR_SIZEOF_INT  2#elif UINT_MAX > 0xFFFFFFFFU && UINT_MAX == 0xFFFFFFFFFFFFFFFFU#define GR_SIZEOF_INT  8#else#error "Unsupported number of bytes in `int' type!"#endif  /* The number of bytes in a `long' type.  */#if   ULONG_MAX == 0xFFFFFFFFUL#define GR_SIZEOF_LONG  4#elif ULONG_MAX > 0xFFFFFFFFU && ULONG_MAX == 0xFFFFFFFFFFFFFFFFU#define GR_SIZEOF_LONG  8#else#error "Unsupported number of bytes in `long' type!"#endif#if GR_SIZEOF_INT == 4typedef  int             int32;typedef  unsigned int    uint32;#elif GR_SIZEOF_LONG == 4typedef  long            int32;typedef  unsigned long   uint32;#else#error  "could not find a 32-bit integer type"#endif  typedef struct  Translator  {    KeySym  xkey;    grKey   grkey;  } Translator;  static  Translator  key_translators[] =  {    { XK_BackSpace, grKeyBackSpace },    { XK_Tab,       grKeyTab       },    { XK_Return,    grKeyReturn    },    { XK_Escape,    grKeyEsc       },    { XK_Home,      grKeyHome      },    { XK_Left,      grKeyLeft      },    { XK_Up,        grKeyUp        },    { XK_Right,     grKeyRight     },    { XK_Down,      grKeyDown      },    { XK_Page_Up,   grKeyPageUp    },    { XK_Page_Down, grKeyPageDown  },    { XK_End,       grKeyEnd       },    { XK_Begin,     grKeyHome      },    { XK_F1,        grKeyF1        },    { XK_F2,        grKeyF2        },    { XK_F3,        grKeyF3        },    { XK_F4,        grKeyF4        },    { XK_F5,        grKeyF5        },    { XK_F6,        grKeyF6        },    { XK_F7,        grKeyF7        },    { XK_F8,        grKeyF8        },    { XK_F9,        grKeyF9        },    { XK_F10,       grKeyF10       },    { XK_F11,       grKeyF11       },    { XK_F12,       grKeyF12       }  };  typedef XPixmapFormatValues  XDepth;#ifdef TEST#define grAlloc  malloc#endif  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                   PIXEL BLITTING SUPPORT                     *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  typedef struct grX11Blitter_  {    unsigned char*  src_line;    int             src_pitch;    unsigned char*  dst_line;    int             dst_pitch;    int             x;    int             y;    int             width;    int             height;  } grX11Blitter;  /* setup blitter; returns 1 if no drawing happens */  static int  gr_x11_blitter_reset( grX11Blitter*  blit,                        grBitmap*      source,                        grBitmap*      target,                        int            x,                        int            y,                        int            width,                        int            height )  {    long  pitch;    int   delta;    /* clip rectangle to source bitmap */    if ( x < 0 )    {      width += x;      x      = 0;    }    delta = x + width - source->width;    if ( delta > 0 )      width -= delta;    if ( y < 0 )    {      height += y;      y       = 0;    }    delta = y + height - source->rows;    if ( delta > 0 )      height -= delta;    /* clip rectangle to target bitmap */    delta = x + width - target->width;    if ( delta > 0 )      width -= delta;    delta = y + height - target->rows;    if ( delta > 0 )      height -= delta;    if ( width <= 0 || height <= 0 )      return 1;    /* now, setup the blitter */    pitch = blit->src_pitch = source->pitch;    blit->src_line  = source->buffer + y * pitch;    if ( pitch < 0 )      blit->src_line -= ( source->rows - 1 ) * pitch;    pitch = blit->dst_pitch = target->pitch;    blit->dst_line = target->buffer + y * pitch;    if ( pitch < 0 )      blit->dst_line -= ( target->rows - 1 ) * pitch;    blit->x      = x;    blit->y      = y;    blit->width  = width;    blit->height = height;    return 0;  }  typedef void  (*grX11ConvertFunc)( grX11Blitter*  blit );  typedef struct grX11FormatRec_  {    int             x_depth;    int             x_bits_per_pixel;    unsigned long   x_red_mask;    unsigned long   x_green_mask;    unsigned long   x_blue_mask;    grX11ConvertFunc  rgb_convert;    grX11ConvertFunc  gray_convert;  } grX11Format;  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                BLITTING ROUTINES FOR RGB565                  *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  static void  gr_x11_convert_rgb_to_rgb565( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x * 3;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read += 3, write++ )      {        unsigned int  r = read[0];        unsigned int  g = read[1];        unsigned int  b = read[2];        write[0] = (unsigned short)( ( ( r << 8 ) & 0xF800U ) |                                     ( ( g << 3 ) & 0x07E0  ) |                                     ( ( b >> 3 ) & 0x001F  ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static void  gr_x11_convert_gray_to_rgb565( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read++, write++ )      {        unsigned int  p = read[0];        write[0] = (unsigned short)( ( ( p << 8 ) & 0xF800U ) |                                     ( ( p << 3 ) & 0x07E0  ) |                                     ( ( p >> 3 ) & 0x001F  ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static const grX11Format  gr_x11_format_rgb565 =  {    16, 16, 0xF800U, 0x07E0, 0x001F,    gr_x11_convert_rgb_to_rgb565,    gr_x11_convert_gray_to_rgb565  };  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                BLITTING ROUTINES FOR  BGR565                 *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  static void  gr_x11_convert_rgb_to_bgr565( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x * 3;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read += 3, write++ )      {        unsigned int  r = read[0];        unsigned int  g = read[1];        unsigned int  b = read[2];        write[0] = (unsigned short)( ( ( b << 8 ) & 0xF800U ) |                                     ( ( g << 3 ) & 0x07E0  ) |                                     ( ( r >> 3 ) & 0x001F  ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static const grX11Format  gr_x11_format_bgr565 =  {    16, 16, 0x001F, 0x7E00, 0xF800U,    gr_x11_convert_rgb_to_bgr565,    gr_x11_convert_gray_to_rgb565  /* the same for bgr565! */  };  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                BLITTING ROUTINES FOR RGB555                  *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  static void  gr_x11_convert_rgb_to_rgb555( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x * 3;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read += 3, write++ )      {        unsigned int  r = read[0];        unsigned int  g = read[1];        unsigned int  b = read[2];        write[0] = (unsigned short)( ( ( r << 7 ) & 0x7C00 ) |                                     ( ( g << 2 ) & 0x03E0 ) |                                     ( ( b >> 3 ) & 0x001F ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static void  gr_x11_convert_gray_to_rgb555( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read++, write++ )      {        unsigned int  p = read[0];        write[0] = (unsigned short)( ( ( p << 7 ) & 0x7C00 ) |                                     ( ( p << 2 ) & 0x03E0 ) |                                     ( ( p >> 3 ) & 0x001F ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static const grX11Format  gr_x11_format_rgb555 =  {    15, 16, 0x7C00, 0x3E00, 0x001F,    gr_x11_convert_rgb_to_rgb555,    gr_x11_convert_gray_to_rgb555  };  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                BLITTING ROUTINES FOR  BGR555                 *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  static void  gr_x11_convert_rgb_to_bgr555( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x * 3;    unsigned char*  line_write = blit->dst_line + blit->x * 2;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      unsigned char*   read  = line_read;      unsigned short*  write = (unsigned short*)line_write;      int              x     = blit->width;      for ( ; x > 0; x--, read += 3, write++ )      {        unsigned int  r = read[0];        unsigned int  g = read[1];        unsigned int  b = read[2];        write[0] = (unsigned short)( ( (b << 7) & 0x7C00 ) |                                     ( (g << 2) & 0x03E0 ) |                                     ( (r >> 3) & 0x001F ) );      }      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static const grX11Format gr_x11_format_bgr555 =  {    15, 16, 0x1F00, 0x3E00, 0x7C00,    gr_x11_convert_rgb_to_bgr555,    gr_x11_convert_gray_to_rgb555  /* the same for bgr555! */  };  /************************************************************************/  /************************************************************************/  /*****                                                              *****/  /*****                BLITTING ROUTINES FOR RGB888                  *****/  /*****                                                              *****/  /************************************************************************/  /************************************************************************/  static void  gr_x11_convert_rgb_to_rgb888( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x * 3;    unsigned char*  line_write = blit->dst_line + blit->x * 3;    int             h          = blit->height;    for ( ; h > 0; h-- )    {      memcpy( line_write, line_read, blit->width * 3 );      line_read  += blit->src_pitch;      line_write += blit->dst_pitch;    }  }  static void  gr_x11_convert_gray_to_rgb888( grX11Blitter*  blit )  {    unsigned char*  line_read  = blit->src_line + blit->x;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉成人啪国产精品视频综合网| 99久久免费视频.com| 午夜精品久久久久久久蜜桃app| 亚洲欧洲精品一区二区三区不卡| 国产午夜精品一区二区三区视频| 久久婷婷成人综合色| 久久九九99视频| 欧美激情综合在线| 日本一区二区高清| 国产精品传媒在线| 亚洲男人的天堂网| 亚洲乱码国产乱码精品精98午夜 | 国产成人av电影| 丁香婷婷综合激情五月色| 成人网在线播放| 91麻豆精品秘密| 欧美亚洲另类激情小说| 欧美日韩国产一二三| 欧美一区二区在线视频| 欧美精品一区二区不卡| 国产亚洲一区字幕| 国产精品久久久久三级| 一区二区三区在线高清| 亚洲一区二区三区三| 免费在线观看日韩欧美| 国产一区二区三区日韩| 99久久精品国产麻豆演员表| 欧美在线视频日韩| 日韩一区二区三区观看| 欧美—级在线免费片| 亚洲男人天堂一区| 日本aⅴ免费视频一区二区三区| 九一九一国产精品| 成人午夜短视频| 欧美日韩一区高清| 精品美女在线观看| 国产精品人成在线观看免费| 亚洲愉拍自拍另类高清精品| 美女网站色91| 91麻豆国产福利精品| 欧美一区中文字幕| 中文字幕在线观看一区| 日韩高清在线电影| 成人小视频在线| 欧美二区在线观看| 国产精品美女www爽爽爽| 婷婷成人激情在线网| 国产一本一道久久香蕉| 在线视频一区二区三区| 久久久影视传媒| 亚洲图片欧美视频| 懂色av噜噜一区二区三区av| 欧美色图天堂网| 久久人人超碰精品| 亚洲电影激情视频网站| 国产永久精品大片wwwapp | 欧美精品一区二区在线播放| 中文字幕一区在线观看视频| 麻豆成人av在线| 91麻豆产精品久久久久久| 精品日韩欧美在线| 亚洲电影一级片| 99久久精品免费看国产免费软件| 日韩欧美综合一区| 久久精品国产亚洲一区二区三区| 91在线免费看| 久久免费电影网| 日韩**一区毛片| 在线视频国内一区二区| 久久久久国产精品厨房| 亚洲v精品v日韩v欧美v专区| 成人美女视频在线观看| 精品少妇一区二区三区视频免付费| 夜夜爽夜夜爽精品视频| 成人午夜电影小说| 久久久久久日产精品| 日韩福利视频网| 在线观看亚洲一区| 国产精品九色蝌蚪自拍| 国产精品自拍网站| 日韩一区二区精品在线观看| 亚洲国产欧美在线| 色综合中文综合网| 91免费视频大全| 国产欧美日韩精品a在线观看| 日本午夜一本久久久综合| 91视频国产观看| 国产精品久久久久久久久免费樱桃 | fc2成人免费人成在线观看播放| 欧美tk丨vk视频| 青青草原综合久久大伊人精品 | 懂色一区二区三区免费观看| 精品国产免费一区二区三区四区 | 中文字幕久久午夜不卡| 国模大尺度一区二区三区| 在线成人av影院| 天天综合网 天天综合色| 欧美综合一区二区| 亚洲永久免费av| 色欧美日韩亚洲| 一区二区高清视频在线观看| 91社区在线播放| 亚洲精品v日韩精品| 91免费看片在线观看| 亚洲色图视频网站| 色先锋久久av资源部| 亚洲精品一卡二卡| 欧美日韩午夜在线| 国产成人高清在线| 国产欧美一区二区三区鸳鸯浴 | 成人免费毛片高清视频| 国产欧美精品区一区二区三区| 寂寞少妇一区二区三区| 久久这里只有精品首页| 国产经典欧美精品| 欧美激情一区二区| 99精品视频在线播放观看| 亚洲视频一区二区免费在线观看| 91在线一区二区| 亚洲一区二区三区激情| 91精品国产综合久久久久久漫画| 日韩av午夜在线观看| 精品少妇一区二区三区在线视频 | 欧美日韩第一区日日骚| 偷拍与自拍一区| 精品国产髙清在线看国产毛片| 国产尤物一区二区| 亚洲视频综合在线| 在线电影欧美成精品| 久久精品国产在热久久| 欧美韩国日本综合| 欧美在线一二三| 久久99国产精品麻豆| 国产午夜一区二区三区| 色菇凉天天综合网| 麻豆91免费看| 国产精品成人午夜| 3d动漫精品啪啪一区二区竹菊| 久久66热偷产精品| 亚洲特黄一级片| 7799精品视频| 国产成人aaa| 亚洲电影一区二区| 久久久久国产一区二区三区四区| 一本色道久久综合狠狠躁的推荐| 日韩高清一区二区| 国产精品无圣光一区二区| 欧美亚洲自拍偷拍| 国产一区二区视频在线播放| 亚洲另类春色校园小说| 欧美va在线播放| 在线免费观看视频一区| 老司机精品视频在线| 亚洲蜜桃精久久久久久久| 欧美一区二区三区成人| 99久久久免费精品国产一区二区| 婷婷久久综合九色综合伊人色| 国产肉丝袜一区二区| 制服丝袜av成人在线看| hitomi一区二区三区精品| 日本视频一区二区三区| 亚洲欧美日韩国产成人精品影院 | 久久男人中文字幕资源站| 色婷婷狠狠综合| 国产高清久久久久| 日本欧美肥老太交大片| 精品亚洲porn| 亚洲成人免费观看| 国产精品高清亚洲| 精品国产乱码久久久久久浪潮| 色婷婷av一区二区三区大白胸| 国产一区视频在线看| 三级在线观看一区二区| 亚洲激情av在线| 欧美韩国日本综合| 精品欧美一区二区三区精品久久| 日本电影欧美片| 成人理论电影网| 国产一本一道久久香蕉| 美女网站色91| 天天色综合成人网| 亚洲综合激情另类小说区| 国产精品素人视频| 久久嫩草精品久久久精品| 欧美一级艳片视频免费观看| 色哦色哦哦色天天综合| 成人午夜激情片| 国产成人在线视频免费播放| 久久精品国产77777蜜臀| 日日夜夜精品免费视频| 亚洲午夜日本在线观看| 一区二区三区精品| 亚洲日本一区二区| 中文字幕一区免费在线观看| 欧美极品aⅴ影院| 国产午夜精品在线观看| 久久这里只精品最新地址| 日韩女优毛片在线| 日韩欧美一区二区视频| 日韩欧美美女一区二区三区|