[gimp] app: use GimpApplicator in gimp_image_merge_layers()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: use GimpApplicator in gimp_image_merge_layers()
- Date: Wed, 17 Apr 2013 14:22:15 +0000 (UTC)
commit e2bcad3cfdc3ffe1717f56037def739bc8b6280e
Author: Michael Natterer <mitch gimp org>
Date: Wed Apr 17 16:17:39 2013 +0200
app: use GimpApplicator in gimp_image_merge_layers()
app/core/gimpimage-merge.c | 52 ++++++++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 23 deletions(-)
---
diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c
index 2d6bf0d..1460b29 100644
--- a/app/core/gimpimage-merge.c
+++ b/app/core/gimpimage-merge.c
@@ -27,9 +27,9 @@
#include "core-types.h"
+#include "gegl/gimpapplicator.h"
#include "gegl/gimp-babl-compat.h"
#include "gegl/gimp-gegl-apply-operation.h"
-#include "gegl/gimp-gegl-nodes.h"
#include "gegl/gimp-gegl-utils.h"
#include "vectors/gimpvectors.h"
@@ -582,8 +582,7 @@ gimp_image_merge_layers (GimpImage *image,
{
GeglBuffer *merge_buffer;
GeglBuffer *layer_buffer;
- GeglBuffer *mask_buffer = NULL;
- GeglNode *apply;
+ GimpApplicator *applicator;
GimpLayerModeEffects mode;
layer = layers->data;
@@ -601,32 +600,39 @@ gimp_image_merge_layers (GimpImage *image,
merge_buffer = gimp_drawable_get_buffer (GIMP_DRAWABLE (merge_layer));
layer_buffer = gimp_drawable_get_buffer (GIMP_DRAWABLE (layer));
+ applicator = gimp_applicator_new (NULL);
+
if (gimp_layer_get_mask (layer) &&
gimp_layer_get_apply_mask (layer))
{
+ GeglBuffer *mask_buffer;
+
mask_buffer = gimp_drawable_get_buffer (GIMP_DRAWABLE (layer->mask));
+
+ gimp_applicator_set_mask_buffer (applicator, mask_buffer);
+ gimp_applicator_set_mask_offset (applicator,
+ - (x1 - off_x),
+ - (y1 - off_y));
}
- apply =
- gimp_gegl_create_apply_buffer_node (layer_buffer,
- - (x1 - off_x),
- - (y1 - off_y),
- 0,
- 0,
- 0,
- 0,
- mask_buffer,
- - (x1 - off_x),
- - (y1 - off_y),
- gimp_layer_get_opacity (layer),
- mode,
- GIMP_COMPONENT_ALL);
-
- gimp_gegl_apply_operation (merge_buffer, NULL, NULL,
- apply,
- merge_buffer, NULL);
-
- g_object_unref (apply);
+ gimp_applicator_set_src_buffer (applicator, merge_buffer);
+ gimp_applicator_set_dest_buffer (applicator, merge_buffer);
+
+ gimp_applicator_set_apply_buffer (applicator, layer_buffer);
+ gimp_applicator_set_apply_offset (applicator,
+ - (x1 - off_x),
+ - (y1 - off_y));
+
+ gimp_applicator_set_mode (applicator,
+ gimp_layer_get_opacity (layer),
+ mode);
+
+ gimp_applicator_blit (applicator,
+ GEGL_RECTANGLE (0, 0,
+ gegl_buffer_get_width (merge_buffer),
+ gegl_buffer_get_height (merge_buffer)));
+
+ g_object_unref (applicator);
gimp_image_remove_layer (image, layer, TRUE, NULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]