static void gimp_text_layer_push_undo (GimpDrawable *drawable, const gchar *undo_desc, GeglBuffer *buffer, gint x, gint y, gint width, gint height) { GimpTextLayer *layer = GIMP_TEXT_LAYER (drawable); GimpImage *image = gimp_item_get_image (GIMP_ITEM (layer)); if (! layer->modified) gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_DRAWABLE, undo_desc); GIMP_DRAWABLE_CLASS (parent_class)->push_undo (drawable, undo_desc, buffer, x, y, width, height); if (! layer->modified) { gimp_image_undo_push_text_layer_modified (image, NULL, layer); g_object_set (drawable, "modified", TRUE, NULL); gimp_image_undo_group_end (image); } }
static void gimp_text_layer_set_buffer (GimpDrawable *drawable, gboolean push_undo, const gchar *undo_desc, GeglBuffer *buffer, gint offset_x, gint offset_y) { GimpTextLayer *layer = GIMP_TEXT_LAYER (drawable); GimpImage *image = gimp_item_get_image (GIMP_ITEM (layer)); if (push_undo && ! layer->modified) gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_DRAWABLE_MOD, undo_desc); GIMP_DRAWABLE_CLASS (parent_class)->set_buffer (drawable, push_undo, undo_desc, buffer, offset_x, offset_y); if (push_undo && ! layer->modified) { gimp_image_undo_push_text_layer_modified (image, NULL, layer); g_object_set (drawable, "modified", TRUE, NULL); gimp_image_undo_group_end (image); } }
static void gimp_text_layer_class_init (GimpTextLayerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GimpObjectClass *gimp_object_class = GIMP_OBJECT_CLASS (klass); GimpViewableClass *viewable_class = GIMP_VIEWABLE_CLASS (klass); GimpItemClass *item_class = GIMP_ITEM_CLASS (klass); GimpDrawableClass *drawable_class = GIMP_DRAWABLE_CLASS (klass); object_class->finalize = gimp_text_layer_finalize; object_class->get_property = gimp_text_layer_get_property; object_class->set_property = gimp_text_layer_set_property; gimp_object_class->get_memsize = gimp_text_layer_get_memsize; viewable_class->default_stock_id = "gimp-text-layer"; item_class->duplicate = gimp_text_layer_duplicate; item_class->rename = gimp_text_layer_rename; #if 0 item_class->scale = gimp_text_layer_scale; item_class->flip = gimp_text_layer_flip; item_class->rotate = gimp_text_layer_rotate; item_class->transform = gimp_text_layer_transform; #endif item_class->default_name = _("Text Layer"); item_class->rename_desc = _("Rename Text Layer"); item_class->translate_desc = _("Move Text Layer"); item_class->scale_desc = _("Scale Text Layer"); item_class->resize_desc = _("Resize Text Layer"); item_class->flip_desc = _("Flip Text Layer"); item_class->rotate_desc = _("Rotate Text Layer"); item_class->transform_desc = _("Transform Text Layer"); drawable_class->set_buffer = gimp_text_layer_set_buffer; drawable_class->push_undo = gimp_text_layer_push_undo; GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, PROP_TEXT, "text", NULL, GIMP_TYPE_TEXT, GIMP_PARAM_STATIC_STRINGS); GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_AUTO_RENAME, "auto-rename", NULL, TRUE, GIMP_PARAM_STATIC_STRINGS); GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_MODIFIED, "modified", NULL, FALSE, GIMP_PARAM_STATIC_STRINGS); }
static void gimp_layer_mask_class_init (GimpLayerMaskClass *klass) { GimpViewableClass *viewable_class = GIMP_VIEWABLE_CLASS (klass); GimpItemClass *item_class = GIMP_ITEM_CLASS (klass); GimpDrawableClass *drawable_class = GIMP_DRAWABLE_CLASS (klass); viewable_class->default_stock_id = "gimp-layer-mask"; item_class->is_attached = gimp_layer_mask_is_attached; item_class->is_content_locked = gimp_layer_mask_is_content_locked; item_class->is_position_locked = gimp_layer_mask_is_position_locked; item_class->get_tree = gimp_layer_mask_get_tree; item_class->duplicate = gimp_layer_mask_duplicate; item_class->rename = gimp_layer_mask_rename; item_class->translate_desc = C_("undo-type", "Move Layer Mask"); item_class->to_selection_desc = C_("undo-type", "Layer Mask to Selection"); drawable_class->convert_type = gimp_layer_mask_convert_type; }
static void gimp_layer_mask_convert_type (GimpDrawable *drawable, GimpImage *dest_image, const Babl *new_format, GimpImageBaseType new_base_type, GimpPrecision new_precision, gint layer_dither_type, gint mask_dither_type, gboolean push_undo) { new_format = gimp_babl_mask_format (new_precision); GIMP_DRAWABLE_CLASS (parent_class)->convert_type (drawable, dest_image, new_format, new_base_type, new_precision, layer_dither_type, mask_dither_type, push_undo); }