diff options
author | Federico Mena Quintero <federico@nuclecu.unam.mx> | 1998-04-14 00:49:06 +0000 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1998-04-14 00:49:06 +0000 |
commit | af36f7765aa24a4bfc7630fd4e0cff30785202b9 (patch) | |
tree | 75abe89adfab007f00dffe75a9d8a8bead003246 /gdk/gdkregion.c | |
parent | 0b0524d3971ffcdfe8c8135ead62d97fe208e541 (diff) | |
download | gtk+-af36f7765aa24a4bfc7630fd4e0cff30785202b9.tar.gz |
New function; wrapper for XPolygonRegion().
1998-04-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdk/gdkregion.c (gdk_region_polygon): New function; wrapper for
XPolygonRegion().
* gdk/gdk.h: Added prototype for gdk_region_polygon().
* gdk/gdktypes.h (GdkFillRule): New enum type of fill rule for polygons.
Diffstat (limited to 'gdk/gdkregion.c')
-rw-r--r-- | gdk/gdkregion.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gdk/gdkregion.c b/gdk/gdkregion.c index e949b3cadf..6034bbae86 100644 --- a/gdk/gdkregion.c +++ b/gdk/gdkregion.c @@ -119,6 +119,39 @@ gdk_region_rect_in (GdkRegion *region, return GDK_OVERLAP_RECTANGLE_OUT; /*what else ? */ } +GdkRegion * +gdk_region_polygon (GdkPoint *points, + gint npoints, + GdkFillRule fill_rule) +{ + GdkRegionPrivate *private; + GdkRegion *region; + Region xregion; + int xfill_rule; + + 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, |