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

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

?? 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,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区免费观看| 麻豆免费精品视频| 不卡电影免费在线播放一区| 日本一区二区视频在线观看| av一区二区三区| 一区二区三区在线视频免费| 欧美日韩一本到| 麻豆91在线看| 国产精品毛片a∨一区二区三区| 成人免费视频免费观看| 亚洲老妇xxxxxx| 欧美精品日韩综合在线| 麻豆精品一二三| 国产欧美一区二区精品婷婷| 97久久超碰国产精品| 香蕉久久夜色精品国产使用方法| 日韩精品专区在线影院重磅| 成人亚洲精品久久久久软件| 亚洲黄色尤物视频| 欧美成人vps| 91国偷自产一区二区三区观看| 丝袜亚洲另类欧美综合| 国产日韩欧美一区二区三区综合| 91玉足脚交白嫩脚丫在线播放| 婷婷综合五月天| 中文字幕欧美国产| 欧美日韩高清一区| 粉嫩在线一区二区三区视频| 亚洲mv大片欧洲mv大片精品| 国产亚洲精品免费| 欧美日韩国产片| 99久久久久久| 韩国女主播成人在线| 亚洲国产成人porn| 国产亚洲精品7777| 欧美日韩国产123区| 风流少妇一区二区| 蜜臀av一区二区在线免费观看| 国产精品视频一二三| 日韩一区二区三区视频| 色婷婷精品久久二区二区蜜臀av| 激情文学综合丁香| 日韩精品欧美成人高清一区二区| 中文字幕亚洲区| 久久久久久麻豆| 51精品久久久久久久蜜臀| 99久久精品国产毛片| 国产美女精品在线| 免费欧美在线视频| 午夜精品一区二区三区三上悠亚| 国产精品嫩草99a| 久久久精品欧美丰满| 欧美岛国在线观看| 欧美精品少妇一区二区三区| 在线免费观看视频一区| 成人免费高清视频| 盗摄精品av一区二区三区| 久久不见久久见免费视频7| 亚洲国产一区在线观看| 亚洲激情图片qvod| 亚洲私人黄色宅男| 一区免费观看视频| 国产精品久久久久久久第一福利| 精品少妇一区二区三区| 日韩一区二区电影在线| 91精品免费在线| 欧美老肥妇做.爰bbww视频| 欧日韩精品视频| 91麻豆国产精品久久| 99国产精品99久久久久久| 成人免费高清视频在线观看| 国v精品久久久网| 国产91丝袜在线18| 国产91色综合久久免费分享| 成人一区二区三区| 波多野结衣的一区二区三区| 成人深夜在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲国产中文字幕在线视频综合| 亚洲欧美综合色| 亚洲丝袜美腿综合| 亚洲制服丝袜一区| 五月天激情综合| 蜜桃精品在线观看| 韩国成人福利片在线播放| 久久精品99久久久| 国产91富婆露脸刺激对白| 国产成人在线色| jiyouzz国产精品久久| 色综合久久久久网| 精品婷婷伊人一区三区三| 制服丝袜国产精品| 精品少妇一区二区| 国产精品国产三级国产有无不卡 | 亚洲人午夜精品天堂一二香蕉| 欧美国产日韩一二三区| 亚洲三级免费观看| 舔着乳尖日韩一区| 久久国产综合精品| 成人黄页毛片网站| 91福利精品第一导航| 欧美精品黑人性xxxx| 久久女同互慰一区二区三区| 国产精品黄色在线观看 | 同产精品九九九| 精品一区二区三区久久| 成人永久aaa| 欧美少妇xxx| 久久日韩精品一区二区五区| 国产精品国产自产拍高清av| 视频一区二区三区中文字幕| 国内精品视频666| 欧洲精品一区二区三区在线观看| 欧美一二三区在线观看| 亚洲欧洲日韩在线| 精品一区二区在线免费观看| 91尤物视频在线观看| 制服丝袜日韩国产| 亚洲乱码精品一二三四区日韩在线| 亚洲h精品动漫在线观看| 成人午夜在线免费| 91麻豆精品国产| 中文字幕日韩一区二区| 欧美a一区二区| 色婷婷久久久久swag精品| 久久尤物电影视频在线观看| 亚洲一二三区视频在线观看| 久久99久久99小草精品免视看| 欧美亚日韩国产aⅴ精品中极品| 久久亚洲一级片| 日日摸夜夜添夜夜添精品视频| av电影一区二区| 久久亚洲精华国产精华液| 香蕉久久夜色精品国产使用方法| 成人网在线免费视频| 精品国精品国产| 日韩国产在线观看一区| 色婷婷精品大在线视频| 欧美激情中文字幕| 久久99精品久久只有精品| 欧美嫩在线观看| 综合激情成人伊人| 国产99久久久国产精品潘金 | 欧美激情艳妇裸体舞| 久久精品国产精品青草| 欧美日韩国产在线播放网站| 亚洲精品亚洲人成人网在线播放| 高清国产一区二区三区| 精品区一区二区| 日本大胆欧美人术艺术动态 | 麻豆国产精品官网| 欧美日韩一本到| 亚洲一区免费视频| 色呦呦网站一区| 日韩一区在线看| 99九九99九九九视频精品| 久久婷婷久久一区二区三区| 九九九精品视频| 精品美女一区二区| 九九热在线视频观看这里只有精品| 91精品在线麻豆| 免费亚洲电影在线| 欧美大黄免费观看| 精品伊人久久久久7777人| 欧美精品一区二区久久婷婷| 久久国产三级精品| 久久久久久电影| 国产高清成人在线| 国产精品理伦片| 色国产综合视频| 亚洲图片欧美视频| 欧美一区二区三区喷汁尤物| 免费黄网站欧美| 久久久亚洲午夜电影| 成人一区二区三区| 亚洲乱码日产精品bd| 欧美日韩亚洲综合| 亚洲电影第三页| 欧美α欧美αv大片| 国产精品 日产精品 欧美精品| 久久久精品国产99久久精品芒果| 成人一区二区三区中文字幕| 一区二区三区四区乱视频| 欧美亚洲丝袜传媒另类| 美女网站一区二区| 国产欧美日韩一区二区三区在线观看 | 2021国产精品久久精品| 粉嫩一区二区三区性色av| 亚洲色图.com| 欧美三级日本三级少妇99| 视频一区二区三区入口| 欧美成人a视频| 成人av午夜电影| 亚洲一区二区三区自拍| 欧美一区二区久久| 盗摄精品av一区二区三区| 夜夜嗨av一区二区三区中文字幕| 91精品啪在线观看国产60岁| 国产高清不卡一区二区| 夜色激情一区二区|