From 170054a36e04e4ecba8e39b3cd7f0ab273f72c80 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Mon, 21 Sep 2009 19:08:04 +0200 Subject: [PATCH] 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 deletion(-) diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c index 1c6cf02653..7771fdde57 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 32a3779122..423a44a9b6 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);