[gegl] buffer: add gegl_rectangle_xor()
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: add gegl_rectangle_xor()
- Date: Thu, 1 Aug 2019 13:25:26 +0000 (UTC)
commit c7de787947253024d33b3a8c434a1a8f529a61b4
Author: Ell <ell_se yahoo com>
Date: Thu Aug 1 16:23:55 2019 +0300
buffer: add gegl_rectangle_xor()
... which computes the symmetric difference between a pair of
rectangles.
gegl/buffer/gegl-rectangle.c | 15 +++++++++++++++
gegl/buffer/gegl-rectangle.h | 18 ++++++++++++++++++
2 files changed, 33 insertions(+)
---
diff --git a/gegl/buffer/gegl-rectangle.c b/gegl/buffer/gegl-rectangle.c
index 059fd1382..112856e98 100644
--- a/gegl/buffer/gegl-rectangle.c
+++ b/gegl/buffer/gegl-rectangle.c
@@ -316,6 +316,21 @@ gegl_rectangle_subtract_bounding_box (GeglRectangle *dest,
}
}
+gint
+gegl_rectangle_xor (GeglRectangle *dest,
+ const GeglRectangle *src1,
+ const GeglRectangle *src2)
+{
+ GeglRectangle rect1 = *src1;
+ GeglRectangle rect2 = *src2;
+ gint n;
+
+ n = gegl_rectangle_subtract (dest, &rect1, &rect2);
+ n += gegl_rectangle_subtract (dest + n, &rect2, &rect1);
+
+ return n;
+}
+
void
gegl_rectangle_copy (GeglRectangle *to,
const GeglRectangle *from)
diff --git a/gegl/buffer/gegl-rectangle.h b/gegl/buffer/gegl-rectangle.h
index d17cdad22..4b2b03bc4 100644
--- a/gegl/buffer/gegl-rectangle.h
+++ b/gegl/buffer/gegl-rectangle.h
@@ -275,6 +275,24 @@ gboolean
const GeglRectangle *minuend,
const GeglRectangle *subtrahend);
+/**
+ * gegl_rectangle_xor:
+ * @destination: an array of 4 #GeglRectangle elements
+ * @source1: a #GeglRectangle
+ * @source2: a #GeglRectangle
+ *
+ * Computes the symmetric difference of the rectangles @source1 and @source2,
+ * and stores the resulting rectangles in @destination. Between 0 and 4
+ * disjoint rectangles may be produced.
+ *
+ * @destination may contain @rectangle1 or @rectangle2.
+ *
+ * Returns the number of resulting rectangles.
+ */
+gint gegl_rectangle_xor (GeglRectangle *destination,
+ const GeglRectangle *source1,
+ const GeglRectangle *source2);
+
/**
* gegl_rectangle_contains:
* @parent: a #GeglRectangle
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]