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

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

?? gdkfont-win32.c

?? linux下電話本所依賴的一些圖形庫
?? C
?? 第 1 頁 / 共 4 頁
字號:
  private = g_new (GdkFontPrivateWin32, 1);  font = (GdkFont*) private;  private->base.ref_count = 1;  private->names = NULL;  private->fonts = NULL;  font->type = GDK_FONT_FONTSET;  font->ascent = 0;  font->descent = 0;  while (TRUE)    {      if ((p = strchr (s, ',')) != NULL)	b = p;      else	b = s + strlen (s);      while (isspace (b[-1]))	b--;      *b = '\0';      singlefont = gdk_font_load_internal (s);      if (singlefont)	{	  private->fonts = g_slist_append (private->fonts, singlefont);	  oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont);	  GetTextMetrics (_gdk_display_hdc, &textmetric);	  SelectObject (_gdk_display_hdc, oldfont);	  font->ascent = MAX (font->ascent, textmetric.tmAscent);	  font->descent = MAX (font->descent, textmetric.tmDescent);	}      if (p)	{	  s = p + 1;	  while (*s && isspace (*s))	    s++;	}      else	break;      if (!*s)	break;    }    g_free (fs);  gdk_font_hash_insert (GDK_FONT_FONTSET, font, fontset_name);  return font;}GdkFont*gdk_fontset_load_for_display (GdkDisplay  *display,			      const gchar *fontset_name){  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);    return gdk_fontset_load (fontset_name);}void_gdk_font_destroy (GdkFont *font){  GdkFontPrivateWin32 *private = (GdkFontPrivateWin32 *) font;  GdkWin32SingleFont *singlefont;  GSList *list;  singlefont = (GdkWin32SingleFont *) private->fonts->data;  GDK_NOTE (MISC, g_print ("_gdk_font_destroy %p\n",			   singlefont->hfont));  gdk_font_hash_remove (font->type, font);    switch (font->type)    {    case GDK_FONT_FONT:      DeleteObject (singlefont->hfont);      break;          case GDK_FONT_FONTSET:      list = private->fonts;      while (list)	{	  singlefont = (GdkWin32SingleFont *) list->data;	  DeleteObject (singlefont->hfont);	  	  list = list->next;	}      g_slist_free (private->fonts);      break;    }  g_free (font);}gint_gdk_font_strlen (GdkFont     *font,		  const gchar *str){  g_return_val_if_fail (font != NULL, -1);  g_return_val_if_fail (str != NULL, -1);  return strlen (str);}gintgdk_font_id (const GdkFont *font){  const GdkFontPrivateWin32 *private;  g_return_val_if_fail (font != NULL, 0);  private = (const GdkFontPrivateWin32 *) font;  if (font->type == GDK_FONT_FONT)    return (gint) ((GdkWin32SingleFont *) private->fonts->data)->hfont;  else    return 0;}gbooleangdk_font_equal (const GdkFont *fonta,                const GdkFont *fontb){  const GdkFontPrivateWin32 *privatea;  const GdkFontPrivateWin32 *privateb;  g_return_val_if_fail (fonta != NULL, FALSE);  g_return_val_if_fail (fontb != NULL, FALSE);  privatea = (const GdkFontPrivateWin32 *) fonta;  privateb = (const GdkFontPrivateWin32 *) fontb;  if (fonta->type == GDK_FONT_FONT && fontb->type == GDK_FONT_FONT)    return (((GdkWin32SingleFont *) privatea->fonts->data)->hfont	    == ((GdkWin32SingleFont *) privateb->fonts->data)->hfont);  else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)    {      GSList *lista = privatea->fonts;      GSList *listb = privateb->fonts;      while (lista && listb)	{	  if (((GdkWin32SingleFont *) lista->data)->hfont	      != ((GdkWin32SingleFont *) listb->data)->hfont)	    return FALSE;	  lista = lista->next;	  listb = listb->next;	}      if (lista || listb)	return FALSE;      else	return TRUE;    }  else    return FALSE;}/* Return the Unicode Subset bitfield number for a Unicode character */static intunicode_classify (wchar_t wc){  int min = 0;  int max = G_N_ELEMENTS (utab) - 1;  int mid;  while (max >= min)    {      mid = (min + max) / 2;      if (utab[mid].high < wc)	min = mid + 1;      else if (wc < utab[mid].low)	max = mid - 1;      else if (utab[mid].low <= wc && wc <= utab[mid].high)	return utab[mid].bit;      else	break;    }  /* Fallback... returning -1 might cause problems. Returning   * U_BASIC_LATIN won't help handling strange characters, but won't   * do harm either.   */  return U_BASIC_LATIN;}void_gdk_wchar_text_handle (GdkFont       *font,		       const wchar_t *wcstr,		       int            wclen,		       void         (*handler)(GdkWin32SingleFont *,					       const wchar_t *,					       int,					       void *),		       void          *arg){  GdkFontPrivateWin32 *private;  GdkWin32SingleFont *singlefont;  GSList *list;  int  block;  const wchar_t *start, *end, *wcp;  wcp = wcstr;  end = wcp + wclen;  private = (GdkFontPrivateWin32 *) font;  g_assert (private->base.ref_count > 0);  GDK_NOTE (MISC, g_print ("_gdk_wchar_text_handle: "));  while (wcp < end)    {      /* Split Unicode string into pieces of the same class */      start = wcp;      block = unicode_classify (*wcp);      while (wcp + 1 < end && unicode_classify (wcp[1]) == block)	wcp++;      /* Find a font in the fontset that can handle this class */      list = private->fonts;      while (list)	{	  singlefont = (GdkWin32SingleFont *) list->data;	  	  if (singlefont->fs.fsUsb[block/32] & (1 << (block % 32)))	    break;	  list = list->next;	}      if (!list)	singlefont = NULL;      GDK_NOTE (MISC, g_print ("%d:%d:%d:%p ",			       start-wcstr, wcp-wcstr, block,			       (singlefont ? singlefont->hfont : 0)));      /* Call the callback function */      (*handler) (singlefont, start, wcp+1 - start, arg);      wcp++;    }  GDK_NOTE (MISC, g_print ("\n"));}typedef struct{  SIZE total;} gdk_text_size_arg;static voidgdk_text_size_handler (GdkWin32SingleFont *singlefont,		       const wchar_t      *wcstr,		       int		   wclen,		       void		  *argp){  SIZE this_size;  HGDIOBJ oldfont;  gdk_text_size_arg *arg = (gdk_text_size_arg *) argp;  if (!singlefont)    return;  if ((oldfont = SelectObject (_gdk_display_hdc, singlefont->hfont)) == NULL)    {      WIN32_GDI_FAILED ("SelectObject");      return;    }  GetTextExtentPoint32W (_gdk_display_hdc, wcstr, wclen, &this_size);  SelectObject (_gdk_display_hdc, oldfont);  arg->total.cx += this_size.cx;  arg->total.cy = MAX (arg->total.cy, this_size.cy);}gintgdk_text_width (GdkFont      *font,		const gchar  *text,		gint          text_length){  gint width = -1;  gdk_text_extents (font, text, text_length, NULL, NULL, &width, NULL, NULL);  return width;}gintgdk_text_width_wc (GdkFont	  *font,		   const GdkWChar *text,		   gint		   text_length){  gint width = -1;  gdk_text_extents_wc (font, text, text_length, NULL, NULL, &width, NULL, NULL);  return width;}voidgdk_text_extents (GdkFont     *font,                  const gchar *text,                  gint         text_length,		  gint        *lbearing,		  gint        *rbearing,		  gint        *width,		  gint        *ascent,		  gint        *descent){  gdk_text_size_arg arg;  glong wlen;  wchar_t *wcstr, wc;  g_return_if_fail (font != NULL);  g_return_if_fail (text != NULL);  if (text_length == 0)    {      if (lbearing)	*lbearing = 0;      if (rbearing)	*rbearing = 0;      if (width)	*width = 0;      if (ascent)	*ascent = 0;      if (descent)	*descent = 0;      return;    }  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);  arg.total.cx = arg.total.cy = 0;  if (text_length == 1)    {      wc = (guchar) text[0];      _gdk_wchar_text_handle (font, &wc, 1, gdk_text_size_handler, &arg);    }  else    {      wcstr = g_utf8_to_utf16 (text, text_length, NULL, &wlen, NULL);      _gdk_wchar_text_handle (font, wcstr, wlen, gdk_text_size_handler, &arg);      g_free (wcstr);    }  /* XXX This is quite bogus */  if (lbearing)    *lbearing = 0;  if (rbearing)    *rbearing = arg.total.cx;  /* What should be the difference between width and rbearing? */  if (width)    *width = arg.total.cx;  if (ascent)    *ascent = arg.total.cy + 1;  if (descent)    *descent = font->descent + 1;}voidgdk_text_extents_wc (GdkFont        *font,		     const GdkWChar *text,		     gint            text_length,		     gint           *lbearing,		     gint           *rbearing,		     gint           *width,		     gint           *ascent,		     gint           *descent){  gdk_text_size_arg arg;  wchar_t *wcstr;  gint i;  g_return_if_fail (font != NULL);  g_return_if_fail (text != NULL);  if (text_length == 0)    {      if (lbearing)	*lbearing = 0;      if (rbearing)	*rbearing = 0;      if (width)	*width = 0;      if (ascent)	*ascent = 0;      if (descent)	*descent = 0;      return;    }  g_assert (font->type == GDK_FONT_FONT || font->type == GDK_FONT_FONTSET);  if (sizeof (wchar_t) != sizeof (GdkWChar))    {      wcstr = g_new (wchar_t, text_length);      for (i = 0; i < text_length; i++)	wcstr[i] = text[i];    }  else    wcstr = (wchar_t *) text;  arg.total.cx = arg.total.cy = 0;  _gdk_wchar_text_handle (font, wcstr, text_length,			 gdk_text_size_handler, &arg);  if (sizeof (wchar_t) != sizeof (GdkWChar))    g_free (wcstr);  /* XXX This is quite bogus */  if (lbearing)    *lbearing = 0;  if (rbearing)    *rbearing = arg.total.cx;  if (width)    *width = arg.total.cx;  if (ascent)    *ascent = arg.total.cy + 1;  if (descent)    *descent = font->descent + 1;}GdkDisplay* gdk_font_get_display (GdkFont* font){  return _gdk_display;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线看国产| 亚洲国产精品高清| 国产精品无码永久免费888| 亚洲综合网站在线观看| 国产成人精品一区二| 欧美日韩高清一区二区| 亚洲视频一区在线观看| 国产一区二区三区在线观看免费视频| 日本精品一级二级| 国产日韩高清在线| 久久99精品国产.久久久久| 欧美性生活久久| 亚洲欧美日韩电影| 国产成人免费视频网站高清观看视频| 欧美一区二区三区播放老司机 | 欧美午夜片在线看| 国产精品第四页| 成人在线视频首页| 久久亚洲欧美国产精品乐播| 石原莉奈在线亚洲二区| 欧美曰成人黄网| 亚洲免费在线电影| 色婷婷国产精品久久包臀| 国产精品情趣视频| 国产精品2024| 久久精品亚洲精品国产欧美kt∨| 日韩极品在线观看| 91精品国产综合久久福利软件| 亚洲一区欧美一区| 欧美日本在线看| 日韩成人精品在线| 欧美男同性恋视频网站| 午夜精品福利一区二区蜜股av | 欧美高清www午色夜在线视频| 亚洲美女屁股眼交3| 色偷偷一区二区三区| 亚洲欧美日韩国产一区二区三区| jlzzjlzz亚洲女人18| 国产精品国产三级国产a| 99久久久精品| 一区二区三区成人| 精品视频色一区| 国模一区二区三区白浆| www国产成人免费观看视频 深夜成人网| 青草国产精品久久久久久| 日韩精品一区二区三区视频| 久久99精品久久只有精品| 久久久久久久久久久电影| 成人性生交大片免费看中文网站| 中文av一区二区| 欧美专区日韩专区| 麻豆成人综合网| 国产精品女人毛片| 欧美日韩三级在线| 韩国精品主播一区二区在线观看| 久久久久久久久久久久久久久99 | 热久久久久久久| 久久嫩草精品久久久精品| 波多野结衣视频一区| 夜夜亚洲天天久久| 精品久久一二三区| 9i在线看片成人免费| 亚洲风情在线资源站| 2欧美一区二区三区在线观看视频| 成人深夜在线观看| 午夜欧美大尺度福利影院在线看 | 国产在线精品一区二区三区不卡| 国产午夜精品一区二区三区四区| 一本到不卡免费一区二区| 久久精品国产秦先生| 亚洲欧美日韩国产中文在线| 日韩精品中午字幕| 色婷婷精品大视频在线蜜桃视频 | 久久久亚洲高清| 91久久免费观看| 国模无码大尺度一区二区三区| 亚洲欧美日韩国产综合在线| 久久综合中文字幕| 欧美影视一区二区三区| 大桥未久av一区二区三区中文| 亚洲成人av福利| 综合久久给合久久狠狠狠97色 | 亚洲国产精品成人综合| 91精品欧美福利在线观看| 亚洲综合男人的天堂| 久久精品视频免费观看| 欧美二区在线观看| 色哟哟一区二区三区| 国产精品一区在线| 久久国产精品免费| 视频一区二区三区在线| 一区二区三区四区在线播放| 亚洲国产精品av| 久久久久国产成人精品亚洲午夜 | bt7086福利一区国产| 国产在线精品国自产拍免费| 日韩高清电影一区| 亚洲二区视频在线| 亚洲在线免费播放| 亚洲黄色在线视频| 亚洲视频香蕉人妖| 亚洲国产成人一区二区三区| 久久青草国产手机看片福利盒子 | 欧美性一区二区| 91久久精品一区二区二区| 99久久伊人网影院| 99在线视频精品| 91在线云播放| 97久久久精品综合88久久| 成人app软件下载大全免费| 国产一区 二区| 韩国av一区二区三区| 国产一区二区在线免费观看| 精品一区二区三区日韩| 国模无码大尺度一区二区三区| 久久国产精品色| 国产激情一区二区三区桃花岛亚洲| 激情国产一区二区| 国产麻豆精品一区二区| 国产成人精品亚洲777人妖| 国产·精品毛片| av一区二区三区黑人| 色视频一区二区| 欧美精品久久一区二区三区| 91精品国产综合久久精品app| 欧美一二三区精品| 国产日韩欧美制服另类| 欧美国产日产图区| 国产精品久久一级| 亚洲国产婷婷综合在线精品| 亚洲777理论| 国模大尺度一区二区三区| 成人av电影免费在线播放| 91免费观看视频在线| 欧美日韩日日夜夜| 欧美成人一区二区三区在线观看| 国产丝袜美腿一区二区三区| 亚洲另类春色国产| 麻豆一区二区三区| 国产69精品一区二区亚洲孕妇| 色综合 综合色| 日韩一区二区三区四区五区六区| 久久久久国产精品免费免费搜索| 亚洲视频图片小说| 蜜桃av一区二区三区电影| 成人免费看片app下载| 欧美日韩中字一区| 久久综合九色综合欧美亚洲| 亚洲精品精品亚洲| 麻豆91精品视频| 日本高清免费不卡视频| 欧美成人一区二区| 亚洲一区在线看| 国内精品在线播放| 欧美性色黄大片| 国产婷婷精品av在线| 午夜成人免费电影| av在线播放一区二区三区| 日韩欧美国产一区二区在线播放| 国产精品久线观看视频| 看电视剧不卡顿的网站| 91香蕉视频污在线| 精品动漫一区二区三区在线观看| 亚洲免费资源在线播放| 国产一区二区三区免费看| 欧美日韩综合色| 中文字幕欧美一| 激情六月婷婷综合| 欧美精品成人一区二区三区四区| 国产精品视频免费看| 蜜桃精品在线观看| 欧美日韩亚洲另类| 亚洲少妇30p| 国产成人超碰人人澡人人澡| 91精品国产入口| 亚洲自拍偷拍综合| 99视频精品全部免费在线| 久久尤物电影视频在线观看| 三级影片在线观看欧美日韩一区二区 | 粉嫩aⅴ一区二区三区四区五区| 欧美日韩一区高清| 亚洲欧洲综合另类| 成人动漫av在线| 国产欧美精品一区aⅴ影院 | 成人一道本在线| www国产成人免费观看视频 深夜成人网| 亚洲成a天堂v人片| 欧洲在线/亚洲| 亚洲一区二区不卡免费| 在线亚洲精品福利网址导航| 国产精品久久久久四虎| 成人a级免费电影| 国产精品理论在线观看| 国产成人免费视频精品含羞草妖精| 欧美精品一区在线观看| 久久99国产精品尤物| 精品欧美一区二区久久| 国产美女久久久久| 色婷婷久久综合| 亚洲国产三级在线|