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

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

?? gdkfont-fb.c

?? linux下電話本所依賴的一些圖形庫(kù)
?? C
字號(hào):
/* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. *//* * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS * file for a list of people on the GTK+ Team.  See the ChangeLog * files for a list of changes.  These files are distributed with * GTK+ at ftp://ftp.gtk.org/pub/gtk/.  */#include <config.h>#include <math.h>#include <stdlib.h>#include <string.h>#include "gdkfont.h"#include "gdkprivate-fb.h"#include "gdkpango.h"#include <pango/pango.h>#include <freetype/freetype.h>#if !defined(FREETYPE_MAJOR) || FREETYPE_MAJOR != 2#error "We need Freetype 2.0"#endif#ifdef EMULATE_GDKFONTstatic GHashTable *font_name_hash = NULL;static GHashTable *fontset_name_hash = NULL;static voidgdk_font_hash_insert (GdkFontType type, GdkFont *font){  GdkFontPrivateFB *private = (GdkFontPrivateFB *)font;    GHashTable **hashp = (type == GDK_FONT_FONT) ?    &font_name_hash : &fontset_name_hash;  if (!*hashp)    *hashp = g_hash_table_new (g_str_hash, g_str_equal);  g_hash_table_insert (*hashp, private->name, font);}static voidgdk_font_hash_remove (GdkFontType type, GdkFont *font){  GdkFontPrivateFB *private = (GdkFontPrivateFB *)font;    GHashTable *hash = (type == GDK_FONT_FONT) ?    font_name_hash : fontset_name_hash;  g_hash_table_remove (hash, private->name);}static GdkFont *gdk_font_hash_lookup (GdkFontType type, const gchar *font_name){  GdkFont *result;  GHashTable *hash = (type == GDK_FONT_FONT) ?    font_name_hash : fontset_name_hash;  if (!hash)    return NULL;  else    {      result = g_hash_table_lookup (hash, font_name);      if (result)	gdk_font_ref (result);            return result;    }}GdkFont*gdk_font_from_description_for_display (GdkDisplay           *display,				       PangoFontDescription *desc){  GdkFont *font;  GdkFontPrivateFB *private;  PangoFont *pango_font;  PangoContext *context;  PangoFontMetrics *metrics;  PangoLanguage *lang;    g_return_val_if_fail (desc, NULL);  private = g_new0 (GdkFontPrivateFB, 1);  private->base.ref_count = 1;  private->name = NULL;    font = (GdkFont*) private;  font->type = GDK_FONT_FONT;  context = gdk_pango_context_get ();  pango_context_set_base_dir (context, PANGO_DIRECTION_LTR);  pango_context_set_language (context, pango_language_from_string ("UNKNOWN"));  pango_font = pango_context_load_font (context, desc);  if (!pango_font)    {      desc = pango_font_description_copy (desc);      pango_font_description_set_family (desc, "sans");      pango_font = pango_context_load_font (context, desc);      if (!pango_font)	{	  pango_font_description_set_style (desc, PANGO_STYLE_NORMAL);	  pango_font_description_set_weight (desc, PANGO_WEIGHT_NORMAL);	  pango_font_description_set_variant (desc, PANGO_VARIANT_NORMAL);	  pango_font_description_set_stretch (desc, PANGO_STRETCH_NORMAL);	  pango_font = pango_context_load_font (context, desc);	}      pango_font_description_free (desc);    }    g_assert (pango_font != NULL);  if (pango_font == NULL)    {      g_free (private);      return NULL;    }    lang = pango_context_get_language (context);  metrics = pango_font_get_metrics (pango_font, lang);  private->pango_font = pango_font;    g_free (lang);  g_object_unref (context);  font->ascent = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics));  font->descent = PANGO_PIXELS (pango_font_metrics_get_descent (metrics));  g_assert ((font->ascent > 0) || (font->descent > 0));  pango_font_metrics_unref (metrics);    return font;}GdkFont*gdk_font_load_for_display (GdkDisplay  *display,			   const gchar *font_name){  GdkFont *font;  GdkFontPrivateFB *private;  PangoFontDescription *desc;  gchar **pieces;  g_return_val_if_fail (font_name != NULL, NULL);  font = gdk_font_hash_lookup (GDK_FONT_FONT, font_name);  if (font)    return font;  desc = pango_font_description_new ();    pieces = g_strsplit (font_name, "-", 8);  do {    if (!pieces[0])      break;        if (!pieces[1])      break;        if (!pieces[2])      break;    if (strcmp (pieces[2], "*")!=0)      pango_font_description_set_family (desc, pieces[2]);        if (!pieces[3])      break;        if (strcmp (pieces[3], "light")==0)      pango_font_description_set_weight (desc, PANGO_WEIGHT_LIGHT);    if (strcmp (pieces[3], "medium")==0)      pango_font_description_set_weight (desc, PANGO_WEIGHT_NORMAL);    if (strcmp (pieces[3], "bold")==0)      pango_font_description_set_weight (desc, PANGO_WEIGHT_BOLD);        if (!pieces[4])      break;        if (strcmp (pieces[4], "r")==0)      pango_font_description_set_style (desc, PANGO_STYLE_NORMAL);    if (strcmp (pieces[4], "i")==0)      pango_font_description_set_style (desc, PANGO_STYLE_ITALIC);    if (strcmp (pieces[4], "o")==0)      pango_font_description_set_style (desc, PANGO_STYLE_OBLIQUE);        if (!pieces[5])      break;    if (!pieces[6])      break;    if (!pieces[7])      break;    if (strcmp (pieces[7], "*")!=0)      pango_font_description_set_size (desc, atoi (pieces[7]) * PANGO_SCALE);    if (pango_font_description_get_size (desc) == 0)      pango_font_description_set_size (desc, 12 * PANGO_SCALE);      } while (0);    font = gdk_font_from_description (desc);  private = (GdkFontPrivateFB*) font;  private->name = g_strdup (font_name);  gdk_font_hash_insert (GDK_FONT_FONT, font);  g_strfreev (pieces);  pango_font_description_free (desc);    return font;}GdkFont*gdk_fontset_load (const gchar *fontset_name){  return gdk_font_load(fontset_name);}void_gdk_font_destroy (GdkFont *font){  GdkFontPrivateFB *private = (GdkFontPrivateFB *)font;  gdk_font_hash_remove (font->type, font);  g_object_unref (private->pango_font);  g_free (private->name);  g_free (font);}gint_gdk_font_strlen (GdkFont     *font,		  const gchar *str){  GdkFontPrivateFB *font_private;  g_return_val_if_fail (font != NULL, -1);  g_return_val_if_fail (str != NULL, -1);  font_private = (GdkFontPrivateFB*) font;    return strlen (str);}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;}/* Assumes text is in Latin-1 for performance reasons.   If you need another encoding, use pangofont */voidgdk_text_extents (GdkFont     *font,                  const gchar *text,                  gint         text_length,		  gint        *lbearing,		  gint        *rbearing,		  gint        *width,		  gint        *ascent,		  gint        *descent){  GdkFontPrivateFB *private;  guchar *utf8, *utf8_end;  PangoGlyphString *glyphs = pango_glyph_string_new ();  PangoEngineShape *shaper, *last_shaper;  PangoAnalysis analysis;  guchar *p, *start;  int i;    g_return_if_fail (font != NULL);  g_return_if_fail (text != NULL);  private = (GdkFontPrivateFB*) font;  if(ascent)    *ascent = 0;  if(descent)    *descent = 0;  if(width)    *width = 0;  if(lbearing)    *lbearing = 0;  if(rbearing)    *rbearing = 0;  utf8 = alloca (text_length*2);  /* Convert latin-1 to utf8 */  p = utf8;  for (i = 0; i < text_length; i++)    {      if (text[i]==0)	*p++ = 1; /* Hack to handle embedded nulls */      else	{	  if(((guchar)text[i])<128)	    *p++ = text[i];	  else	    {	      *p++ = ((((guchar)text[i])>>6) & 0x3f) | 0xC0;	      *p++ = (((guchar)text[i]) & 0x3f) | 0x80;	    }	}    }  utf8_end = p;  last_shaper = NULL;  shaper = NULL;  p = start = utf8;  while (p < utf8_end)    {      gunichar wc = g_utf8_get_char (p);      p = g_utf8_next_char (p);      shaper = pango_font_find_shaper (private->pango_font, pango_language_from_string ("fr"), wc);      if (shaper != last_shaper)	{	  analysis.shape_engine = shaper;	  analysis.lang_engine = NULL;	  analysis.font = private->pango_font;	  analysis.level = 0;	  pango_shape (start, p - start, &analysis, glyphs);	  for (i = 0; i < glyphs->num_glyphs; i++)	    {	      PangoRectangle ink_rect;	      PangoGlyphGeometry *geometry = &glyphs->glyphs[i].geometry;	      	      pango_font_get_glyph_extents (private->pango_font, glyphs->glyphs[i].glyph,					    &ink_rect, NULL);	      	      if(ascent)		*ascent = MAX (*ascent, ink_rect.y);	      if(descent)		*descent = MAX (*descent, ink_rect.height - ink_rect.y);	      if(width)		*width += geometry->width;	      if(lbearing)		*lbearing = 0;	      if(rbearing)		*rbearing = 0;	      	    }	  	  start = p;	}      last_shaper = shaper;    }  if (p > start)    {      analysis.shape_engine = shaper;      analysis.lang_engine = NULL;      analysis.font = private->pango_font;      analysis.level = 0;            pango_shape (start, p - start, &analysis, glyphs);            for (i = 0; i < glyphs->num_glyphs; i++)	{	  PangoRectangle ink_rect;	  PangoGlyphGeometry *geometry = &glyphs->glyphs[i].geometry;	  	  pango_font_get_glyph_extents (private->pango_font, glyphs->glyphs[i].glyph,					&ink_rect, NULL);	  	  if(ascent)	    *ascent = MAX (*ascent, ink_rect.y);	  if(descent)	    *descent = MAX (*descent, ink_rect.height - ink_rect.y);	  if(width)	    *width += geometry->width;	  if(lbearing)	    *lbearing = 0;	  if(rbearing)	    *rbearing = 0;	}    }    pango_glyph_string_free (glyphs);  if(ascent)    *ascent = PANGO_PIXELS (*ascent);  if(descent)    *descent = PANGO_PIXELS(*descent);  if(width)    *width = PANGO_PIXELS (*width);  if(lbearing)    *lbearing = PANGO_PIXELS (*lbearing);  if(rbearing)    *rbearing = PANGO_PIXELS (*rbearing);}#else/* Don't emulate GdkFont */static GdkFont *gdk_fb_bogus_font (gint height){  GdkFont *font;  GdkFontPrivateFB *private;  private = g_new0 (GdkFontPrivateFB, 1);  font = (GdkFont *)private;    font->type = GDK_FONT_FONT;  font->ascent = height*3/4;  font->descent = height/4;  private->size = height;  private->base.ref_count = 1;  return font;}GdkFont*gdk_font_from_description (PangoFontDescription *font_desc){  g_return_val_if_fail (font_desc, NULL);  return gdk_fb_bogus_font (PANGO_PIXELS (pango_font_description_get_size (font_desc)));}GdkFont*gdk_fontset_load (const gchar *fontset_name){  return gdk_fb_bogus_font (10);}GdkFont *gdk_font_load (const gchar *font_name){  return gdk_fb_bogus_font (10);}void_gdk_font_destroy (GdkFont *font){  g_free (font);}gint_gdk_font_strlen (GdkFont     *font,		  const gchar *str){  GdkFontPrivateFB *font_private;  gint length = 0;  g_return_val_if_fail (font != NULL, -1);  g_return_val_if_fail (str != NULL, -1);  font_private = (GdkFontPrivateFB*) font;    return strlen (str);}gintgdk_text_width (GdkFont      *font,		const gchar  *text,		gint          text_length){  GdkFontPrivateFB *private;  private = (GdkFontPrivateFB*) font;  return (text_length * private->size) / 2;}voidgdk_text_extents (GdkFont     *font,                  const gchar *text,                  gint         text_length,		  gint        *lbearing,		  gint        *rbearing,		  gint        *width,		  gint        *ascent,		  gint        *descent){  if(ascent)    *ascent = font->ascent;  if(descent)    *descent = font->descent;  if(width)    *width = gdk_text_width(font, text, text_length);  if(lbearing)    *lbearing = 0;  if(rbearing)    *rbearing = 0;}#endifgintgdk_font_id (const GdkFont *font){  const GdkFontPrivateFB *font_private;  g_return_val_if_fail (font != NULL, 0);  font_private = (const GdkFontPrivateFB*) font;  if (font->type == GDK_FONT_FONT)    {      return -1;    }  else    {      return 0;    }}gintgdk_font_equal (const GdkFont *fonta,                const GdkFont *fontb){  const GdkFontPrivateFB *privatea;  const GdkFontPrivateFB *privateb;  g_return_val_if_fail (fonta != NULL, FALSE);  g_return_val_if_fail (fontb != NULL, FALSE);  privatea = (const GdkFontPrivateFB*) fonta;  privateb = (const GdkFontPrivateFB*) fontb;  if(fonta == fontb)    return TRUE;  return FALSE;}gintgdk_text_width_wc (GdkFont	  *font,		   const GdkWChar *text,		   gint		   text_length){  return 0;}voidgdk_text_extents_wc (GdkFont        *font,		     const GdkWChar *text,		     gint            text_length,		     gint           *lbearing,		     gint           *rbearing,		     gint           *width,		     gint           *ascent,		     gint           *descent){  g_warning ("gdk_text_extents_wc() is not implemented\n");  return;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区精品视频| 亚洲1区2区3区视频| 久久精品人人做| 26uuu国产在线精品一区二区| 91精品一区二区三区在线观看| 欧美在线不卡一区| 欧美体内she精视频| 欧美久久久久久久久| 欧美精品久久天天躁| 717成人午夜免费福利电影| 91.成人天堂一区| 欧美一级夜夜爽| 精品国产人成亚洲区| 亚洲精品一区在线观看| 国产午夜久久久久| 国产精品美女久久久久av爽李琼| 国产精品短视频| 夜夜爽夜夜爽精品视频| 日韩专区一卡二卡| 狠狠色丁香婷婷综合| 国产乱码精品一区二区三| 国产aⅴ精品一区二区三区色成熟| 粉嫩av亚洲一区二区图片| av一本久道久久综合久久鬼色| 91久久精品日日躁夜夜躁欧美| 欧美男男青年gay1069videost | 色综合一个色综合亚洲| 91麻豆视频网站| 91麻豆精品国产自产在线| 欧美r级电影在线观看| 中文字幕国产一区| 亚洲国产aⅴ天堂久久| 久久精品久久精品| 99re66热这里只有精品3直播| 欧美精品乱码久久久久久按摩| 2023国产精品自拍| 亚洲色图欧洲色图| 日日骚欧美日韩| 成人久久18免费网站麻豆| 欧美在线三级电影| 久久综合给合久久狠狠狠97色69| 亚洲人精品午夜| 免费观看日韩电影| 91在线国产福利| 日韩一区二区电影网| 日韩一区在线看| 蜜桃91丨九色丨蝌蚪91桃色| 99久久婷婷国产综合精品| 91精品国产一区二区三区香蕉| 久久久久久9999| 亚洲国产精品尤物yw在线观看| 国产乱码精品一区二区三区av | 久久久久99精品一区| 一区二区三区日本| 国产黄色成人av| 欧美日韩国产乱码电影| 欧美激情艳妇裸体舞| 日本美女视频一区二区| 不卡av在线免费观看| 日韩一级二级三级| 亚洲欧美日韩小说| 国产精品一区二区久激情瑜伽| 欧美日韩高清在线| 国产精品色在线观看| 麻豆精品国产传媒mv男同| 91久久一区二区| 欧美经典一区二区三区| 日本va欧美va精品发布| 91国产精品成人| 国产精品麻豆一区二区| 国精品**一区二区三区在线蜜桃| 欧美三区在线观看| 中文字幕一区二区日韩精品绯色| 国内成人免费视频| 91麻豆精品久久久久蜜臀| 亚洲狠狠爱一区二区三区| 91在线免费播放| 欧美国产一区视频在线观看| 激情偷乱视频一区二区三区| 欧美日韩国产美女| 亚洲国产视频网站| 一本色道久久综合亚洲91| 欧美国产精品劲爆| 国产一区二区不卡在线| 日韩欧美成人激情| 日本中文字幕不卡| 8v天堂国产在线一区二区| 午夜精品久久久久久久 | 国产亲近乱来精品视频| 久久精品国产一区二区三 | 欧美一区二区三区电影| 亚洲国产精品一区二区www在线| av一区二区不卡| 国产精品久久久久四虎| 成人免费不卡视频| 日韩一区中文字幕| 99国产精品久久久久久久久久久| 国产精品美女久久久久aⅴ国产馆| 国产成人在线看| 国产精品视频免费看| 成人av电影免费观看| 国产精品午夜电影| jlzzjlzz欧美大全| 亚洲人123区| 91色视频在线| 一区二区免费看| 欧美日韩国产一区二区三区地区| 亚洲www啪成人一区二区麻豆| 欧美中文字幕一区二区三区| 亚洲国产aⅴ天堂久久| 欧美日韩精品是欧美日韩精品| 亚洲综合网站在线观看| 欧美老人xxxx18| 男女激情视频一区| 久久蜜臀中文字幕| 99久久综合色| 亚洲国产毛片aaaaa无费看 | 亚洲激情成人在线| 欧美色倩网站大全免费| 亚洲成av人片| 欧美电影免费提供在线观看| 国产一区二区精品久久| 国产精品国产馆在线真实露脸| 一本一本大道香蕉久在线精品| 亚洲一区国产视频| 日韩精品资源二区在线| 国产精品69毛片高清亚洲| 中文字幕制服丝袜一区二区三区 | 激情综合色播五月| 国产性色一区二区| 99精品一区二区| 亚洲h在线观看| 欧美精品一区二区三区四区| 成人午夜伦理影院| 亚洲黄网站在线观看| 欧美一区二区视频免费观看| 国产在线日韩欧美| 国产精品久久夜| 欧美日韩aaaaaa| 国产成人av电影在线观看| 亚洲久本草在线中文字幕| 欧美一区三区二区| 成人黄色大片在线观看| 亚洲成人1区2区| 久久久久久久久久久久久久久99| 91视频免费播放| 欧美aaaaaa午夜精品| 中文字幕一区在线观看视频| 777久久久精品| kk眼镜猥琐国模调教系列一区二区| 亚洲成人综合视频| 日本一区二区三区四区在线视频| 欧美性高清videossexo| 国产精品一区免费在线观看| 一区二区在线电影| 久久久99精品免费观看| 欧美日韩视频第一区| 不卡一区中文字幕| 久久99久久99| 午夜一区二区三区视频| 国产精品全国免费观看高清| 91精品国产日韩91久久久久久| av在线不卡电影| 麻豆国产欧美日韩综合精品二区| 亚洲日本va午夜在线电影| 精品sm在线观看| 在线成人免费观看| 色婷婷激情综合| 国产精选一区二区三区| 午夜精品福利一区二区三区蜜桃| 国产精品美女久久久久久久网站| 日韩欧美第一区| 欧美男生操女生| 91久久人澡人人添人人爽欧美| 成人综合在线观看| 国内精品伊人久久久久av影院| 亚洲电影你懂得| 亚洲精品高清在线观看| 国产精品青草综合久久久久99| 久久青草欧美一区二区三区| 91精品国产欧美日韩| 欧美在线视频你懂得| 色av成人天堂桃色av| 不卡电影免费在线播放一区| 国产麻豆一精品一av一免费| 青青草伊人久久| 婷婷综合久久一区二区三区| 亚洲一级不卡视频| 亚洲激情图片qvod| 亚洲精品日日夜夜| 成人免费一区二区三区在线观看| 国产欧美一区二区三区在线看蜜臀| 欧美成人激情免费网| 日韩视频免费直播| 欧美蜜桃一区二区三区| 欧美日韩免费视频| 欧美精品久久天天躁| 欧美精品第1页| 欧美精品 日韩| 在线不卡欧美精品一区二区三区|