[gimp] app: avoid applying buffer to drawable if application region is empty
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: avoid applying buffer to drawable if application region is empty
- Date: Sat, 29 Sep 2018 14:28:01 +0000 (UTC)
commit ae3c006293deff496b813597ef2addc4cc56276f
Author: Ell <ell_se yahoo com>
Date: Sat Sep 29 10:24:53 2018 -0400
app: avoid applying buffer to drawable if application region is empty
In gimp_drawable_real_{apply,replace}_buffer(), bail if the
applcation region, after intersection with the drawable and mask
extents, is empty. This avoids trying to create a GeglBuffer with
negative width/height.
app/core/gimpdrawable-combine.c | 56 +++++++++++++++++++++++++----------------
1 file changed, 34 insertions(+), 22 deletions(-)
---
diff --git a/app/core/gimpdrawable-combine.c b/app/core/gimpdrawable-combine.c
index cb904c41c5..9a4dccea1c 100644
--- a/app/core/gimpdrawable-combine.c
+++ b/app/core/gimpdrawable-combine.c
@@ -72,12 +72,15 @@ gimp_drawable_real_apply_buffer (GimpDrawable *drawable,
gimp_item_get_offset (item, &offset_x, &offset_y);
/* make sure the image application coordinates are within drawable bounds */
- gimp_rectangle_intersect (base_x, base_y,
- buffer_region->width, buffer_region->height,
- 0, 0,
- gimp_item_get_width (item),
- gimp_item_get_height (item),
- &x, &y, &width, &height);
+ if (! gimp_rectangle_intersect (base_x, base_y,
+ buffer_region->width, buffer_region->height,
+ 0, 0,
+ gimp_item_get_width (item),
+ gimp_item_get_height (item),
+ &x, &y, &width, &height))
+ {
+ return;
+ }
if (mask)
{
@@ -87,11 +90,14 @@ gimp_drawable_real_apply_buffer (GimpDrawable *drawable,
* we need to add the layer offset to transform coords
* into the mask coordinate system
*/
- gimp_rectangle_intersect (x, y, width, height,
- -offset_x, -offset_y,
- gimp_item_get_width (mask_item),
- gimp_item_get_height (mask_item),
- &x, &y, &width, &height);
+ if (! gimp_rectangle_intersect (x, y, width, height,
+ -offset_x, -offset_y,
+ gimp_item_get_width (mask_item),
+ gimp_item_get_height (mask_item),
+ &x, &y, &width, &height))
+ {
+ return;
+ }
}
if (push_undo)
@@ -197,12 +203,15 @@ gimp_drawable_real_replace_buffer (GimpDrawable *drawable,
gimp_item_get_offset (item, &offset_x, &offset_y);
/* make sure the image application coordinates are within drawable bounds */
- gimp_rectangle_intersect (dest_x, dest_y,
- buffer_rect.width, buffer_rect.height,
- 0, 0,
- gimp_item_get_width (item),
- gimp_item_get_height (item),
- &x, &y, &width, &height);
+ if (! gimp_rectangle_intersect (dest_x, dest_y,
+ buffer_rect.width, buffer_rect.height,
+ 0, 0,
+ gimp_item_get_width (item),
+ gimp_item_get_height (item),
+ &x, &y, &width, &height))
+ {
+ return;
+ }
if (mask)
{
@@ -212,11 +221,14 @@ gimp_drawable_real_replace_buffer (GimpDrawable *drawable,
* we need to add the layer offset to transform coords
* into the mask coordinate system
*/
- gimp_rectangle_intersect (x, y, width, height,
- -offset_x, -offset_y,
- gimp_item_get_width (mask_item),
- gimp_item_get_height (mask_item),
- &x, &y, &width, &height);
+ if (! gimp_rectangle_intersect (x, y, width, height,
+ -offset_x, -offset_y,
+ gimp_item_get_width (mask_item),
+ gimp_item_get_height (mask_item),
+ &x, &y, &width, &height))
+ {
+ return;
+ }
}
/* adjust the original regions according to the application
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]