void view_use_gegl_cmd_callback (GtkAction *action, gpointer data) { GimpImage *image; GimpDisplayShell *shell; GList *layers; GList *list; gboolean active; return_if_no_image (image, data); return_if_no_shell (shell, data); active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); gimp_image_get_projection (image)->use_gegl = active; layers = gimp_image_get_layer_list (image); for (list = layers; list; list = g_list_next (list)) { GimpLayer *layer = list->data; if (GIMP_IS_GROUP_LAYER (layer)) gimp_group_layer_get_projection (GIMP_GROUP_LAYER (layer))->use_gegl = active; } g_list_free (layers); gimp_image_invalidate (image, 0, 0, gimp_image_get_width (image), gimp_image_get_height (image)); gimp_image_flush (image); }
static void gimp_group_layer_undo_constructed (GObject *object) { GimpGroupLayerUndo *group_layer_undo = GIMP_GROUP_LAYER_UNDO (object); GimpGroupLayer *group; G_OBJECT_CLASS (parent_class)->constructed (object); g_assert (GIMP_IS_GROUP_LAYER (GIMP_ITEM_UNDO (object)->item)); group = GIMP_GROUP_LAYER (GIMP_ITEM_UNDO (object)->item); switch (GIMP_UNDO (object)->undo_type) { case GIMP_UNDO_GROUP_LAYER_SUSPEND: case GIMP_UNDO_GROUP_LAYER_RESUME: break; case GIMP_UNDO_GROUP_LAYER_CONVERT: group_layer_undo->prev_type = gimp_drawable_get_base_type (GIMP_DRAWABLE (group)); group_layer_undo->prev_precision = gimp_drawable_get_precision (GIMP_DRAWABLE (group)); break; default: g_assert_not_reached (); } }
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, C_("undo-type", "Merge Layer Group")); parent = gimp_layer_get_parent (GIMP_LAYER (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; }
GimpUndo * gimp_image_undo_push_group_layer_convert (GimpImage *image, const gchar *undo_desc, GimpGroupLayer *group) { 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); return gimp_image_undo_push (image, GIMP_TYPE_GROUP_LAYER_UNDO, GIMP_UNDO_GROUP_LAYER_CONVERT, undo_desc, GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE, "item", group, NULL); }