diff options
Diffstat (limited to 'app/gfx/path_gtk.cc')
-rw-r--r-- | app/gfx/path_gtk.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/app/gfx/path_gtk.cc b/app/gfx/path_gtk.cc index 9a2b92c..e9aee05 100644 --- a/app/gfx/path_gtk.cc +++ b/app/gfx/path_gtk.cc @@ -11,7 +11,7 @@ namespace gfx { -GdkRegion* Path::CreateGdkRegion() const { +GdkRegion* Path::CreateNativeRegion() const { int point_count = getPoints(NULL, 0); if (point_count <= 1) { // NOTE: ideally this would return gdk_empty_region, but that returns a @@ -31,4 +31,25 @@ GdkRegion* Path::CreateGdkRegion() const { return gdk_region_polygon(gdk_points.get(), point_count, GDK_EVEN_ODD_RULE); } +// static +NativeRegion Path::IntersectRegions(NativeRegion r1, NativeRegion r2) { + GdkRegion* copy = gdk_region_copy(r1); + gdk_region_intersect(copy, r2); + return copy; +} + +// static +NativeRegion Path::CombineRegions(NativeRegion r1, NativeRegion r2) { + GdkRegion* copy = gdk_region_copy(r1); + gdk_region_union(copy, r2); + return copy; +} + +// static +NativeRegion Path::SubtractRegion(NativeRegion r1, NativeRegion r2) { + GdkRegion* copy = gdk_region_copy(r1); + gdk_region_subtract(copy, r2); + return copy; +} + } // namespace gfx |