summaryrefslogtreecommitdiffstats
path: root/app/gfx/path_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'app/gfx/path_gtk.cc')
-rw-r--r--app/gfx/path_gtk.cc23
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