[gimp] Add gimp_image_merge_group_layer()



commit 170054a36e04e4ecba8e39b3cd7f0ab273f72c80
Author: Michael Natterer <mitch gimp org>
Date:   Mon Sep 21 19:08:04 2009 +0200

    Add gimp_image_merge_group_layer()
    
    The new function replaces a group layer by a normal one that looks
    exactly the same.

 app/core/gimpimage-merge.c |   35 ++++++++++++++++++++++++++++++++++-
 app/core/gimpimage-merge.h |    4 ++++
 2 files changed, 38 insertions(+), 1 deletions(-)
---
diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c
index 1c6cf02..7771fdd 100644
--- a/app/core/gimpimage-merge.c
+++ b/app/core/gimpimage-merge.c
@@ -37,11 +37,11 @@
 #include "gimpcontainer.h"
 #include "gimpcontext.h"
 #include "gimperror.h"
+#include "gimpgrouplayer.h"
 #include "gimpimage.h"
 #include "gimpimage-colorhash.h"
 #include "gimpimage-merge.h"
 #include "gimpimage-undo.h"
-#include "gimplayer.h"
 #include "gimplayer-floating-sel.h"
 #include "gimplayermask.h"
 #include "gimpmarshal.h"
@@ -257,6 +257,39 @@ gimp_image_merge_down (GimpImage      *image,
   return layer;
 }
 
+GimpLayer *
+gimp_image_merge_group_layer (GimpImage      *image,
+                              GimpGroupLayer *group)
+{
+  GimpLayer *parent;
+  GimpLayer *layer;
+  gint       index;
+
+  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
+  g_return_val_if_fail (GIMP_IS_GROUP_LAYER (group), NULL);
+  g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (group)), NULL);
+  g_return_val_if_fail (gimp_item_get_image (GIMP_ITEM (group)) == image, NULL);
+
+  gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_IMAGE_LAYERS_MERGE,
+                               _("Merge Layer Group"));
+
+  parent = GIMP_LAYER (gimp_viewable_get_parent (GIMP_VIEWABLE (group)));
+  index  = gimp_item_get_index (GIMP_ITEM (group));
+
+  layer = GIMP_LAYER (gimp_item_duplicate (GIMP_ITEM (group),
+                                           GIMP_TYPE_LAYER));
+
+  gimp_object_set_name (GIMP_OBJECT (layer), gimp_object_get_name (group));
+
+  gimp_image_remove_layer (image, GIMP_LAYER (group), TRUE, NULL);
+  gimp_image_add_layer (image, layer, parent, index, TRUE);
+
+  gimp_image_undo_group_end (image);
+
+  return layer;
+}
+
+
 /* merging vectors */
 
 GimpVectors *
diff --git a/app/core/gimpimage-merge.h b/app/core/gimpimage-merge.h
index 32a3779..423a44a 100644
--- a/app/core/gimpimage-merge.h
+++ b/app/core/gimpimage-merge.h
@@ -28,8 +28,12 @@ GimpLayer   * gimp_image_merge_down            (GimpImage      *image,
                                                 GimpContext    *context,
                                                 GimpMergeType   merge_type,
                                                 GError        **error);
+GimpLayer   * gimp_image_merge_group_layer     (GimpImage      *image,
+                                                GimpGroupLayer *group);
+
 GimpLayer   * gimp_image_flatten               (GimpImage      *image,
                                                 GimpContext    *context);
+
 GimpVectors * gimp_image_merge_visible_vectors (GimpImage      *image,
                                                 GError        **error);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]