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

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

?? gdkdrawable-win32.c

?? linux下電話本所依賴的一些圖形庫
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * Copyright (C) 1998-2004 Tor Lillqvist * Copyright (C) 2001-2005 Hans Breuer * * 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 <stdio.h>#include <glib.h>#include <pango/pangowin32.h>#include "gdkscreen.h" /* gdk_screen_get_default() */#include "gdkregion-generic.h"#include "gdkprivate-win32.h"#define ROP3_D 0x00AA0029#define ROP3_DSna 0x00220326#define ROP3_DSPDxax 0x00E20746#define LINE_ATTRIBUTES (GDK_GC_LINE_WIDTH|GDK_GC_LINE_STYLE| \			 GDK_GC_CAP_STYLE|GDK_GC_JOIN_STYLE)#define MUST_RENDER_DASHES_MANUALLY(gcwin32)			\  (gcwin32->line_style == GDK_LINE_DOUBLE_DASH ||		\   (gcwin32->line_style == GDK_LINE_ON_OFF_DASH &&		\    (gcwin32->pen_dash_offset ||				\     (!G_WIN32_IS_NT_BASED () && (gcwin32->pen_style & PS_STYLE_MASK) == PS_SOLID))))static void gdk_win32_draw_rectangle (GdkDrawable    *drawable,				      GdkGC          *gc,				      gboolean        filled,				      gint            x,				      gint            y,				      gint            width,				      gint            height);static void gdk_win32_draw_arc       (GdkDrawable    *drawable,				      GdkGC          *gc,				      gboolean        filled,				      gint            x,				      gint            y,				      gint            width,				      gint            height,				      gint            angle1,				      gint            angle2);static void gdk_win32_draw_polygon   (GdkDrawable    *drawable,				      GdkGC          *gc,				      gboolean        filled,				      GdkPoint       *points,				      gint            npoints);static void gdk_win32_draw_text      (GdkDrawable    *drawable,				      GdkFont        *font,				      GdkGC          *gc,				      gint            x,				      gint            y,				      const gchar    *text,				      gint            text_length);static void gdk_win32_draw_text_wc   (GdkDrawable    *drawable,				      GdkFont        *font,				      GdkGC          *gc,				      gint            x,				      gint            y,				      const GdkWChar *text,				      gint            text_length);static void gdk_win32_draw_drawable  (GdkDrawable    *drawable,				      GdkGC          *gc,				      GdkPixmap      *src,				      gint            xsrc,				      gint            ysrc,				      gint            xdest,				      gint            ydest,				      gint            width,				      gint            height);static void gdk_win32_draw_points    (GdkDrawable    *drawable,				      GdkGC          *gc,				      GdkPoint       *points,				      gint            npoints);static void gdk_win32_draw_segments  (GdkDrawable    *drawable,				      GdkGC          *gc,				      GdkSegment     *segs,				      gint            nsegs);static void gdk_win32_draw_lines     (GdkDrawable    *drawable,				      GdkGC          *gc,				      GdkPoint       *points,				      gint            npoints);static void gdk_win32_draw_glyphs    (GdkDrawable      *drawable,				      GdkGC            *gc,				      PangoFont        *font,				      gint              x,				      gint              y,				      PangoGlyphString *glyphs);static void gdk_win32_draw_glyphs_transformed (GdkDrawable      *drawable,					     GdkGC            *gc,					     PangoMatrix      *matrix,					     PangoFont        *font,					     gint              x,					     gint              y,					     PangoGlyphString *glyphs);static void gdk_win32_draw_image     (GdkDrawable     *drawable,				      GdkGC           *gc,				      GdkImage        *image,				      gint             xsrc,				      gint             ysrc,				      gint             xdest,				      gint             ydest,				      gint             width,				      gint             height);static void gdk_win32_set_colormap   (GdkDrawable    *drawable,				      GdkColormap    *colormap);static GdkColormap* gdk_win32_get_colormap   (GdkDrawable    *drawable);static gint         gdk_win32_get_depth      (GdkDrawable    *drawable);static GdkScreen *  gdk_win32_get_screen     (GdkDrawable    *drawable);static GdkVisual*   gdk_win32_get_visual     (GdkDrawable    *drawable);static void gdk_drawable_impl_win32_class_init (GdkDrawableImplWin32Class *klass);static void gdk_drawable_impl_win32_finalize   (GObject *object);static gpointer parent_class = NULL;GTypegdk_drawable_impl_win32_get_type (void){  static GType object_type = 0;  if (!object_type)    {      static const GTypeInfo object_info =      {        sizeof (GdkDrawableImplWin32Class),        (GBaseInitFunc) NULL,        (GBaseFinalizeFunc) NULL,        (GClassInitFunc) gdk_drawable_impl_win32_class_init,        NULL,           /* class_finalize */        NULL,           /* class_data */        sizeof (GdkDrawableImplWin32),        0,              /* n_preallocs */        (GInstanceInitFunc) NULL,      };            object_type = g_type_register_static (GDK_TYPE_DRAWABLE,                                            "GdkDrawableImplWin32",                                            &object_info, 0);    }    return object_type;}static voidgdk_drawable_impl_win32_class_init (GdkDrawableImplWin32Class *klass){  GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass);  GObjectClass *object_class = G_OBJECT_CLASS (klass);  parent_class = g_type_class_peek_parent (klass);  object_class->finalize = gdk_drawable_impl_win32_finalize;  drawable_class->create_gc = _gdk_win32_gc_new;  drawable_class->draw_rectangle = gdk_win32_draw_rectangle;  drawable_class->draw_arc = gdk_win32_draw_arc;  drawable_class->draw_polygon = gdk_win32_draw_polygon;  drawable_class->draw_text = gdk_win32_draw_text;  drawable_class->draw_text_wc = gdk_win32_draw_text_wc;  drawable_class->draw_drawable = gdk_win32_draw_drawable;  drawable_class->draw_points = gdk_win32_draw_points;  drawable_class->draw_segments = gdk_win32_draw_segments;  drawable_class->draw_lines = gdk_win32_draw_lines;  drawable_class->draw_glyphs = gdk_win32_draw_glyphs;  drawable_class->draw_glyphs_transformed = gdk_win32_draw_glyphs_transformed;  drawable_class->draw_image = gdk_win32_draw_image;    drawable_class->set_colormap = gdk_win32_set_colormap;  drawable_class->get_colormap = gdk_win32_get_colormap;  drawable_class->get_depth = gdk_win32_get_depth;  drawable_class->get_screen = gdk_win32_get_screen;  drawable_class->get_visual = gdk_win32_get_visual;  drawable_class->_copy_to_image = _gdk_win32_copy_to_image;}static voidgdk_drawable_impl_win32_finalize (GObject *object){  gdk_drawable_set_colormap (GDK_DRAWABLE (object), NULL);  G_OBJECT_CLASS (parent_class)->finalize (object);}/***************************************************** * Win32 specific implementations of generic functions * *****************************************************/static GdkColormap*gdk_win32_get_colormap (GdkDrawable *drawable){  return GDK_DRAWABLE_IMPL_WIN32 (drawable)->colormap;}static voidgdk_win32_set_colormap (GdkDrawable *drawable,			GdkColormap *colormap){  GdkDrawableImplWin32 *impl = GDK_DRAWABLE_IMPL_WIN32 (drawable);  if (impl->colormap == colormap)    return;    if (impl->colormap)    gdk_colormap_unref (impl->colormap);  impl->colormap = colormap;  if (impl->colormap)    gdk_colormap_ref (impl->colormap);}/* Drawing */static introp2_to_rop3 (int rop2){  switch (rop2)    {    /* Oh, Microsoft's silly names for binary and ternary rops. */#define CASE(rop2,rop3) case R2_##rop2: return rop3      CASE (BLACK, BLACKNESS);      CASE (NOTMERGEPEN, NOTSRCERASE);      CASE (MASKNOTPEN, 0x00220326);      CASE (NOTCOPYPEN, NOTSRCCOPY);      CASE (MASKPENNOT, SRCERASE);      CASE (NOT, DSTINVERT);      CASE (XORPEN, SRCINVERT);      CASE (NOTMASKPEN, 0x007700E6);      CASE (MASKPEN, SRCAND);      CASE (NOTXORPEN, 0x00990066);      CASE (NOP, 0x00AA0029);      CASE (MERGENOTPEN, MERGEPAINT);      CASE (COPYPEN, SRCCOPY);      CASE (MERGEPENNOT, 0x00DD0228);      CASE (MERGEPEN, SRCPAINT);      CASE (WHITE, WHITENESS);#undef CASE    default: return SRCCOPY;    }}static introp2_to_patblt_rop (int rop2){  switch (rop2)    {#define CASE(rop2,patblt_rop) case R2_##rop2: return patblt_rop      CASE (COPYPEN, PATCOPY);      CASE (XORPEN, PATINVERT);      CASE (NOT, DSTINVERT);      CASE (BLACK, BLACKNESS);      CASE (WHITE, WHITENESS);#undef CASE    default:      g_warning ("Unhandled rop2 in GC to be used in PatBlt: %#x", rop2);      return PATCOPY;    }}static inline intalign_with_dash_offset (int a, DWORD *dashes, int num_dashes, GdkGCWin32 *gcwin32){  int	   n = 0;  int    len_sum = 0;  /*    * We can't simply add the dashoffset, it can be an arbitrary larger   * or smaller value not even between x1 and x2. It just says use the   * dash pattern aligned to the offset. So ensure x1 is smaller _x1   * and we start with the appropriate dash.   */  for (n = 0; n < num_dashes; n++)    len_sum += dashes[n];  if (   len_sum > 0 /* pathological api usage? */      && gcwin32->pen_dash_offset > a)    a -= (((gcwin32->pen_dash_offset/len_sum - a/len_sum) + 1) * len_sum);  else    a = gcwin32->pen_dash_offset;  return a;} /* Render a dashed line 'by hand'. Used for all dashes on Win9x (where * GDI is way too limited), and for double dashes on all Windowses. */static inline gbooleanrender_line_horizontal (GdkGCWin32 *gcwin32,                        int         x1,                        int         x2,                        int         y){  int n = 0;  const int pen_width = MAX (gcwin32->pen_width, 1);  const int _x1 = x1;  g_assert (gcwin32->pen_dashes);  x1 = align_with_dash_offset (x1, gcwin32->pen_dashes, gcwin32->pen_num_dashes, gcwin32);  for (n = 0; x1 < x2; n++)    {      int len = gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];      if (x1 + len > x2)        len = x2 - x1;      if (n % 2 == 0 && x1 + len > _x1)        if (!GDI_CALL (PatBlt, (gcwin32->hdc, 				x1 < _x1 ? _x1 : x1, 				y - pen_width / 2, 				len, pen_width, 				rop2_to_patblt_rop (gcwin32->rop2))))	  return FALSE;      x1 += gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];    }  if (gcwin32->line_style == GDK_LINE_DOUBLE_DASH)    {      HBRUSH hbr;      if ((hbr = SelectObject (gcwin32->hdc, gcwin32->pen_hbrbg)) == HGDI_ERROR)	return FALSE;      x1 = _x1;      x1 += gcwin32->pen_dash_offset;      for (n = 0; x1 < x2; n++)	{	  int len = gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];	  if (x1 + len > x2)	    len = x2 - x1;	  if (n % 2)	    if (!GDI_CALL (PatBlt, (gcwin32->hdc, x1, y - pen_width / 2,				    len, pen_width,				    rop2_to_patblt_rop (gcwin32->rop2))))	      return FALSE;	  x1 += gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];	}      if (SelectObject (gcwin32->hdc, hbr) == HGDI_ERROR)	return FALSE;    }  return TRUE;}static inline gbooleanrender_line_vertical (GdkGCWin32 *gcwin32,		      int         x,                      int         y1,                      int         y2){  int n;  const int pen_width = MAX (gcwin32->pen_width, 1);  const int _y1 = y1;  g_assert (gcwin32->pen_dashes);  y1 = align_with_dash_offset (y1, gcwin32->pen_dashes, gcwin32->pen_num_dashes, gcwin32);  for (n = 0; y1 < y2; n++)    {      int len = gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];      if (y1 + len > y2)        len = y2 - y1;      if (n % 2 == 0 && y1 + len > _y1)        if (!GDI_CALL (PatBlt, (gcwin32->hdc, x - pen_width / 2, 				y1 < _y1 ? _y1 : y1, 				pen_width, len, 				rop2_to_patblt_rop (gcwin32->rop2))))	  return FALSE;      y1 += gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];    }  if (gcwin32->line_style == GDK_LINE_DOUBLE_DASH)    {      HBRUSH hbr;      if ((hbr = SelectObject (gcwin32->hdc, gcwin32->pen_hbrbg)) == HGDI_ERROR)	return FALSE;      y1 = _y1;      y1 += gcwin32->pen_dash_offset;      for (n = 0; y1 < y2; n++)	{	  int len = gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];	  if (y1 + len > y2)	    len = y2 - y1;	  if (n % 2)	    if (!GDI_CALL (PatBlt, (gcwin32->hdc, x - pen_width / 2, y1,				    pen_width, len,				    rop2_to_patblt_rop (gcwin32->rop2))))	      return FALSE;	  y1 += gcwin32->pen_dashes[n % gcwin32->pen_num_dashes];	}      if (SelectObject (gcwin32->hdc, hbr) == HGDI_ERROR)	return FALSE;    }  return TRUE;}static voiddraw_tiles_lowlevel (HDC  dest,		     HDC  tile,		     int  rop3,		     gint dest_x,		     gint dest_y,		     gint tile_x_origin,		     gint tile_y_origin,		     gint width,		     gint height,		     gint tile_width,		     gint tile_height){  gint x, y;  GDK_NOTE (MISC, g_print ("draw_tiles_lowlevel: %p +%d+%d tile=%p:%dx%d@+%d+%d %dx%d\n",			   dest,			   dest_x, dest_y,			   tile, tile_width, tile_height,			   tile_x_origin, tile_y_origin,			   width, height));  y = tile_y_origin % tile_height;  if (y > 0)    y -= tile_height;  while (y < dest_y + height)    {      if (y + tile_height >= dest_y)	{	  x = tile_x_origin % tile_width;	  if (x > 0)	    x -= tile_width;	  while (x < dest_x + width)	    {	      if (x + tile_width >= dest_x)		{		  gint src_x = MAX (0, dest_x - x);		  gint src_y = MAX (0, dest_y - y);		  if (!GDI_CALL (BitBlt, (dest, x + src_x, y + src_y,					  MIN (tile_width, dest_x + width - (x + src_x)),					  MIN (tile_height, dest_y + height - (y + src_y)),					  tile,					  src_x, src_y,					  rop3)))		    return;		}	      x += tile_width;	    }	}      y += tile_height;    }}static voiddraw_tiles (GdkDrawable *drawable,	    GdkGC       *gc,	    int          rop3,	    GdkPixmap   *tile,	    gint         dest_x,	    gint 	 dest_y,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情资源网| 日韩欧美激情四射| 18成人在线观看| 99视频精品免费视频| 亚洲欧洲成人自拍| 91免费国产视频网站| 亚洲精品国产第一综合99久久| 91免费在线看| 日韩精品国产精品| 欧美va亚洲va| caoporen国产精品视频| 一区二区不卡在线视频 午夜欧美不卡在 | 99久久国产综合精品女不卡| 综合久久久久久| 欧美影片第一页| 另类欧美日韩国产在线| 国产视频亚洲色图| 在线观看日韩高清av| 视频精品一区二区| 久久在线观看免费| 色综合色综合色综合| 日韩av不卡在线观看| 国产欧美一区二区精品仙草咪| 91麻豆国产精品久久| 丝袜a∨在线一区二区三区不卡| 欧美成人r级一区二区三区| 风间由美一区二区三区在线观看 | 亚洲综合一区在线| 日韩欧美中文一区| 成人动漫视频在线| 日韩精品国产欧美| 亚洲欧洲美洲综合色网| 欧美日韩在线直播| 国产精品一线二线三线精华| 一区二区三区四区蜜桃 | 97精品视频在线观看自产线路二| 亚洲一区二区三区美女| 久久综合国产精品| 欧美手机在线视频| 国产白丝精品91爽爽久久| 午夜精品一区二区三区免费视频 | 一区在线中文字幕| 日韩亚洲电影在线| 日本精品一区二区三区高清| 麻豆91在线播放免费| 亚洲男女毛片无遮挡| 精品对白一区国产伦| 欧美人与z0zoxxxx视频| 99视频一区二区三区| 久久超碰97人人做人人爱| 亚洲精品中文字幕乱码三区| 国产亚洲欧美激情| 日韩欧美在线网站| 欧美性色综合网| 99re6这里只有精品视频在线观看| 精品一区二区影视| 视频在线在亚洲| 亚洲精选一二三| 中文字幕一区二区三区四区 | 26uuu精品一区二区| 欧美日韩三级视频| 色伊人久久综合中文字幕| 国产福利91精品一区| 日本伊人午夜精品| 石原莉奈一区二区三区在线观看| 中文字幕五月欧美| 国产精品盗摄一区二区三区| 久久久久久久国产精品影院| 日韩欧美一二三| 欧美一二三四在线| 8v天堂国产在线一区二区| 欧美亚洲综合在线| 欧美日韩精品综合在线| 欧美亚洲综合一区| 欧美色老头old∨ideo| 91亚洲国产成人精品一区二区三 | 精品亚洲成av人在线观看| 日韩福利电影在线| 日本vs亚洲vs韩国一区三区 | 精品国产乱码久久久久久夜甘婷婷| 欧美三级电影在线观看| 欧美午夜理伦三级在线观看| 在线观看亚洲精品| 欧美日韩大陆在线| 欧美精品久久久久久久久老牛影院 | 亚洲国产欧美日韩另类综合 | 成人激情图片网| 不卡电影一区二区三区| 成人黄色软件下载| 91亚洲精品久久久蜜桃| 色94色欧美sute亚洲线路一ni| 91福利精品视频| 欧美日韩免费一区二区三区视频| 9191久久久久久久久久久| 欧美一级片在线观看| 久久综合色之久久综合| 国产日韩欧美综合一区| 欧美国产一区在线| 亚洲欧美偷拍卡通变态| 亚洲电影第三页| 日韩成人免费电影| 国产综合色产在线精品| 99久久精品国产一区| 色屁屁一区二区| 欧美日韩精品一区视频| 久久亚洲精品国产精品紫薇| 国产精品国产三级国产普通话99 | 亚洲444eee在线观看| 麻豆精品视频在线| 岛国av在线一区| 欧美视频日韩视频在线观看| 日韩欧美国产1| 国产精品激情偷乱一区二区∴| 亚洲永久免费视频| 国产一区二区三区日韩| 日本高清不卡在线观看| 日韩一区二区三区精品视频| 国产精品日产欧美久久久久| 亚洲一区二区三区中文字幕 | 性做久久久久久免费观看| 国产一区二区日韩精品| 色先锋资源久久综合| 日韩午夜在线影院| 亚洲欧美日韩综合aⅴ视频| 奇米影视一区二区三区小说| 99精品久久99久久久久| 91精品国产综合久久久久久久| 国产嫩草影院久久久久| 视频一区二区中文字幕| www.成人网.com| 日韩欧美在线123| 亚洲男人的天堂网| 国产精品一二三四区| 欧美久久一二区| 日韩毛片精品高清免费| 精品一区二区三区在线观看| 欧美色视频在线| 欧美国产一区视频在线观看| 日本网站在线观看一区二区三区 | 激情六月婷婷综合| 欧美亚州韩日在线看免费版国语版| 久久久美女毛片| 日韩国产在线观看| 欧美视频一区二区三区四区| 国产精品天干天干在线综合| 麻豆精品视频在线观看| 欧美日韩国产片| 亚洲日本丝袜连裤袜办公室| 国产高清不卡一区| 91麻豆精品国产91久久久资源速度| 国产精品二三区| 懂色av一区二区在线播放| 精品国产乱码久久久久久夜甘婷婷 | 日韩无一区二区| 婷婷久久综合九色综合伊人色| 91免费精品国自产拍在线不卡| 中日韩av电影| 国产成人小视频| 久久久美女毛片| 韩国午夜理伦三级不卡影院| 欧美一级国产精品| 日本一道高清亚洲日美韩| 欧美日韩国产一级| 亚洲成人av中文| 欧美日韩免费电影| 五月激情六月综合| 91精品国产91久久久久久最新毛片 | 国产一区二区精品久久| 亚洲视频电影在线| 99视频精品在线| 亚洲欧美另类久久久精品| 色综合天天狠狠| 亚洲一二三区不卡| 欧美高清视频不卡网| 视频在线观看一区二区三区| 欧美精品日日鲁夜夜添| 蜜桃av一区二区三区| 日韩免费观看高清完整版在线观看| 日本成人在线网站| 精品国产凹凸成av人网站| 国产一区不卡精品| 欧美国产日本韩| 色综合色狠狠天天综合色| 亚洲一区二区中文在线| 欧美美女bb生活片| 秋霞国产午夜精品免费视频| 精品久久久网站| 丁香婷婷综合激情五月色| 1区2区3区国产精品| 在线亚洲高清视频| 天堂午夜影视日韩欧美一区二区| 日韩一区二区在线看| 国产精品一品视频| 亚洲精品乱码久久久久久久久 | 国产成人综合视频| 中文字幕在线不卡| 欧美一区二区三区在| 国产精品中文字幕一区二区三区| 中国色在线观看另类| 在线观看国产91|