⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkregion.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
字号:
/* 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 Library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library 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-1999.  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 <X11/Xlib.h>#include <X11/Xutil.h>#include "gdk.h"#include "gdkprivate.h"GdkRegion*gdk_region_new (void){  GdkRegionPrivate *private;  GdkRegion *region;  Region xregion;  xregion = XCreateRegion();  private = g_new (GdkRegionPrivate, 1);  private->xregion = xregion;  region = (GdkRegion*) private;  region->user_data = NULL;  return region;}voidgdk_region_destroy (GdkRegion *region){  GdkRegionPrivate *private;  g_return_if_fail (region != NULL);  private = (GdkRegionPrivate *) region;  XDestroyRegion (private->xregion);  g_free (private);}gbooleangdk_region_empty (GdkRegion      *region){  GdkRegionPrivate *private;  g_return_val_if_fail (region != NULL, 0);  private = (GdkRegionPrivate *) region;    return XEmptyRegion (private->xregion);}gbooleangdk_region_equal (GdkRegion      *region1,                  GdkRegion      *region2){  GdkRegionPrivate *private1;  GdkRegionPrivate *private2;  g_return_val_if_fail (region1 != NULL, 0);  g_return_val_if_fail (region2 != NULL, 0);  private1 = (GdkRegionPrivate *) region1;  private2 = (GdkRegionPrivate *) region2;    return XEqualRegion (private1->xregion, private2->xregion);}voidgdk_region_get_clipbox(GdkRegion    *region,		       GdkRectangle *rectangle){	GdkRegionPrivate *rp;	XRectangle r;	g_return_if_fail(region != NULL);	g_return_if_fail(rectangle != NULL);	rp = (GdkRegionPrivate *)region;	XClipBox(rp->xregion, &r);	rectangle->x = r.x;	rectangle->y = r.y;		rectangle->width = r.width;	rectangle->height = r.height;}gbooleangdk_region_point_in (GdkRegion      *region,                     gint           x,		     gint           y){  GdkRegionPrivate *private;  g_return_val_if_fail (region != NULL, 0);  private = (GdkRegionPrivate *) region;    return XPointInRegion (private->xregion, x, y);}GdkOverlapTypegdk_region_rect_in (GdkRegion      *region,                    GdkRectangle   *rect){  GdkRegionPrivate *private;  int res;  g_return_val_if_fail (region != NULL, 0);  private = (GdkRegionPrivate *) region;    res = XRectInRegion (private->xregion, rect->x, rect->y, rect->width, rect->height);    switch (res)  {    case RectangleIn:   return GDK_OVERLAP_RECTANGLE_IN;    case RectangleOut:  return GDK_OVERLAP_RECTANGLE_OUT;    case RectanglePart: return GDK_OVERLAP_RECTANGLE_PART;  }    return GDK_OVERLAP_RECTANGLE_OUT;  /*what else ? */}				    GdkRegion *gdk_region_polygon (GdkPoint    *points,		    gint         npoints,		    GdkFillRule  fill_rule){  GdkRegionPrivate *private;  GdkRegion *region;  Region xregion;  gint xfill_rule = EvenOddRule;  g_return_val_if_fail (points != NULL, NULL);  g_return_val_if_fail (npoints != 0, NULL); /* maybe we should check for at least three points */  switch (fill_rule)    {    case GDK_EVEN_ODD_RULE:      xfill_rule = EvenOddRule;      break;    case GDK_WINDING_RULE:      xfill_rule = WindingRule;      break;    }  xregion = XPolygonRegion ((XPoint *) points, npoints, xfill_rule);  private = g_new (GdkRegionPrivate, 1);  private->xregion = xregion;  region = (GdkRegion *) private;  region->user_data = NULL;  return region;}void          gdk_region_offset (GdkRegion      *region,                   gint           dx,		   gint           dy){  GdkRegionPrivate *private;  g_return_if_fail (region != NULL);  private = (GdkRegionPrivate *) region;    XOffsetRegion (private->xregion, dx, dy);}voidgdk_region_shrink (GdkRegion      *region,                   gint           dx,		   gint           dy){  GdkRegionPrivate *private;  g_return_if_fail (region != NULL);  private = (GdkRegionPrivate *) region;    XShrinkRegion (private->xregion, dx, dy);}GdkRegion*    gdk_region_union_with_rect (GdkRegion      *region,                            GdkRectangle   *rect){  GdkRegionPrivate *private;  GdkRegion *res;  GdkRegionPrivate *res_private;  XRectangle xrect;  g_return_val_if_fail (region != NULL, NULL);  private = (GdkRegionPrivate *) region;    xrect.x = rect->x;  xrect.y = rect->y;  xrect.width = rect->width;  xrect.height = rect->height;    res = gdk_region_new ();  res_private = (GdkRegionPrivate *) res;    XUnionRectWithRegion (&xrect, private->xregion, res_private->xregion);    return res;}GdkRegion*    gdk_regions_intersect (GdkRegion      *source1,                       GdkRegion      *source2){  GdkRegionPrivate *private1;  GdkRegionPrivate *private2;  GdkRegion *res;  GdkRegionPrivate *res_private;  g_return_val_if_fail (source1 != NULL, NULL);  g_return_val_if_fail (source2 != NULL, NULL);  private1 = (GdkRegionPrivate *) source1;  private2 = (GdkRegionPrivate *) source2;  res = gdk_region_new ();  res_private = (GdkRegionPrivate *) res;    XIntersectRegion (private1->xregion, private2->xregion, res_private->xregion);    return res;}GdkRegion* gdk_regions_union (GdkRegion      *source1,                   GdkRegion      *source2){  GdkRegionPrivate *private1;  GdkRegionPrivate *private2;  GdkRegion *res;  GdkRegionPrivate *res_private;  g_return_val_if_fail (source1 != NULL, NULL);  g_return_val_if_fail (source2 != NULL, NULL);  private1 = (GdkRegionPrivate *) source1;  private2 = (GdkRegionPrivate *) source2;  res = gdk_region_new ();  res_private = (GdkRegionPrivate *) res;    XUnionRegion (private1->xregion, private2->xregion, res_private->xregion);    return res;}GdkRegion*    gdk_regions_subtract (GdkRegion      *source1,                      GdkRegion      *source2){  GdkRegionPrivate *private1;  GdkRegionPrivate *private2;  GdkRegion *res;  GdkRegionPrivate *res_private;  g_return_val_if_fail (source1 != NULL, NULL);  g_return_val_if_fail (source2 != NULL, NULL);  private1 = (GdkRegionPrivate *) source1;  private2 = (GdkRegionPrivate *) source2;  res = gdk_region_new ();  res_private = (GdkRegionPrivate *) res;    XSubtractRegion (private1->xregion, private2->xregion, res_private->xregion);    return res;}GdkRegion*    gdk_regions_xor (GdkRegion      *source1,                 GdkRegion      *source2){  GdkRegionPrivate *private1;  GdkRegionPrivate *private2;  GdkRegion *res;  GdkRegionPrivate *res_private;  g_return_val_if_fail (source1 != NULL, NULL);  g_return_val_if_fail (source2 != NULL, NULL);  private1 = (GdkRegionPrivate *) source1;  private2 = (GdkRegionPrivate *) source2;  res = gdk_region_new ();  res_private = (GdkRegionPrivate *) res;    XXorRegion (private1->xregion, private2->xregion, res_private->xregion);    return res;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -