static void gimp_vectors_resize (GimpItem *item, GimpContext *context, gint new_width, gint new_height, gint offset_x, gint offset_y) { GimpVectors *vectors = GIMP_VECTORS (item); GimpImage *image = gimp_item_get_image (item); GList *list; gimp_vectors_freeze (vectors); if (gimp_item_is_attached (item)) gimp_image_undo_push_vectors_mod (image, NULL, vectors); for (list = vectors->strokes; list; list = g_list_next (list)) { GimpStroke *stroke = list->data; gimp_stroke_translate (stroke, offset_x, offset_y); } GIMP_ITEM_CLASS (parent_class)->resize (item, context, gimp_image_get_width (image), gimp_image_get_height (image), 0, 0); gimp_vectors_thaw (vectors); }
static GimpItem * gimp_text_layer_duplicate (GimpItem *item, GType new_type) { GimpItem *new_item; g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_DRAWABLE), NULL); new_item = GIMP_ITEM_CLASS (parent_class)->duplicate (item, new_type); if (GIMP_IS_TEXT_LAYER (new_item)) { GimpTextLayer *layer = GIMP_TEXT_LAYER (item); GimpTextLayer *new_layer = GIMP_TEXT_LAYER (new_item); gimp_config_sync (G_OBJECT (layer), G_OBJECT (new_layer), 0); if (layer->text) { GimpText *text = gimp_config_duplicate (GIMP_CONFIG (layer->text)); gimp_text_layer_set_text (new_layer, text); g_object_unref (text); } /* this is just the parasite name, not a pointer to the parasite */ if (layer->text_parasite) new_layer->text_parasite = layer->text_parasite; } return new_item; }
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_vectors_convert (GimpItem *item, GimpImage *dest_image, GType old_type) { gimp_item_set_size (item, gimp_image_get_width (dest_image), gimp_image_get_height (dest_image)); GIMP_ITEM_CLASS (parent_class)->convert (item, dest_image, old_type); }
static GimpItem * gimp_layer_mask_duplicate (GimpItem *item, GType new_type) { GimpItem *new_item; g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_DRAWABLE), NULL); new_item = GIMP_ITEM_CLASS (parent_class)->duplicate (item, new_type); return new_item; }
static gboolean gimp_text_layer_rename (GimpItem *item, const gchar *new_name, const gchar *undo_desc, GError **error) { if (GIMP_ITEM_CLASS (parent_class)->rename (item, new_name, undo_desc, error)) { g_object_set (item, "auto-rename", FALSE, NULL); return TRUE; } return FALSE; }
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 GimpItem * gimp_vectors_duplicate (GimpItem *item, GType new_type) { GimpItem *new_item; g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_VECTORS), NULL); new_item = GIMP_ITEM_CLASS (parent_class)->duplicate (item, new_type); if (GIMP_IS_VECTORS (new_item)) { GimpVectors *vectors = GIMP_VECTORS (item); GimpVectors *new_vectors = GIMP_VECTORS (new_item); gimp_vectors_copy_strokes (vectors, new_vectors); } return new_item; }
static void gimp_layer_mask_class_init (GimpLayerMaskClass *klass) { GimpViewableClass *viewable_class = GIMP_VIEWABLE_CLASS (klass); GimpItemClass *item_class = GIMP_ITEM_CLASS (klass); layer_mask_signals[APPLY_CHANGED] = g_signal_new ("apply-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpLayerMaskClass, apply_changed), NULL, NULL, gimp_marshal_VOID__VOID, G_TYPE_NONE, 0); layer_mask_signals[EDIT_CHANGED] = g_signal_new ("edit-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpLayerMaskClass, edit_changed), NULL, NULL, gimp_marshal_VOID__VOID, G_TYPE_NONE, 0); layer_mask_signals[SHOW_CHANGED] = g_signal_new ("show-changed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpLayerMaskClass, show_changed), NULL, NULL, gimp_marshal_VOID__VOID, G_TYPE_NONE, 0); viewable_class->default_stock_id = "gimp-layer-mask"; item_class->is_attached = gimp_layer_mask_is_attached; item_class->duplicate = gimp_layer_mask_duplicate; item_class->rename = gimp_layer_mask_rename; item_class->translate_desc = _("Move Layer Mask"); }
static GimpItem * gimp_layer_mask_duplicate (GimpItem *item, GType new_type, gboolean add_alpha) { GimpItem *new_item; g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_DRAWABLE), NULL); new_item = GIMP_ITEM_CLASS (parent_class)->duplicate (item, new_type, add_alpha); if (GIMP_IS_LAYER_MASK (new_item)) { GimpLayerMask *layer_mask = GIMP_LAYER_MASK (item); GimpLayerMask *new_layer_mask = GIMP_LAYER_MASK (new_item); new_layer_mask->apply_mask = layer_mask->apply_mask; new_layer_mask->edit_mask = layer_mask->edit_mask; new_layer_mask->show_mask = layer_mask->show_mask; } return new_item; }
static void gimp_vectors_scale (GimpItem *item, gint new_width, gint new_height, gint new_offset_x, gint new_offset_y, GimpInterpolationType interpolation_type, GimpProgress *progress) { GimpVectors *vectors = GIMP_VECTORS (item); GimpImage *image = gimp_item_get_image (item); GList *list; gimp_vectors_freeze (vectors); if (gimp_item_is_attached (item)) gimp_image_undo_push_vectors_mod (image, NULL, vectors); for (list = vectors->strokes; list; list = g_list_next (list)) { GimpStroke *stroke = list->data; gimp_stroke_scale (stroke, (gdouble) new_width / (gdouble) gimp_item_get_width (item), (gdouble) new_height / (gdouble) gimp_item_get_height (item)); gimp_stroke_translate (stroke, new_offset_x, new_offset_y); } GIMP_ITEM_CLASS (parent_class)->scale (item, gimp_image_get_width (image), gimp_image_get_height (image), 0, 0, interpolation_type, progress); gimp_vectors_thaw (vectors); }
static void gimp_vectors_class_init (GimpVectorsClass *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); gimp_vectors_signals[FREEZE] = g_signal_new ("freeze", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GimpVectorsClass, freeze), NULL, NULL, gimp_marshal_VOID__VOID, G_TYPE_NONE, 0); gimp_vectors_signals[THAW] = g_signal_new ("thaw", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GimpVectorsClass, thaw), NULL, NULL, gimp_marshal_VOID__VOID, G_TYPE_NONE, 0); object_class->finalize = gimp_vectors_finalize; gimp_object_class->get_memsize = gimp_vectors_get_memsize; viewable_class->get_new_preview = gimp_vectors_get_new_preview; viewable_class->default_icon_name = "gimp-path"; item_class->is_attached = gimp_vectors_is_attached; item_class->get_tree = gimp_vectors_get_tree; item_class->bounds = gimp_vectors_bounds; item_class->duplicate = gimp_vectors_duplicate; item_class->convert = gimp_vectors_convert; item_class->translate = gimp_vectors_translate; item_class->scale = gimp_vectors_scale; item_class->resize = gimp_vectors_resize; item_class->flip = gimp_vectors_flip; item_class->rotate = gimp_vectors_rotate; item_class->transform = gimp_vectors_transform; item_class->stroke = gimp_vectors_stroke; item_class->to_selection = gimp_vectors_to_selection; item_class->default_name = _("Path"); item_class->rename_desc = C_("undo-type", "Rename Path"); item_class->translate_desc = C_("undo-type", "Move Path"); item_class->scale_desc = C_("undo-type", "Scale Path"); item_class->resize_desc = C_("undo-type", "Resize Path"); item_class->flip_desc = C_("undo-type", "Flip Path"); item_class->rotate_desc = C_("undo-type", "Rotate Path"); item_class->transform_desc = C_("undo-type", "Transform Path"); item_class->stroke_desc = C_("undo-type", "Stroke Path"); item_class->to_selection_desc = C_("undo-type", "Path to Selection"); item_class->reorder_desc = C_("undo-type", "Reorder Path"); item_class->raise_desc = C_("undo-type", "Raise Path"); item_class->raise_to_top_desc = C_("undo-type", "Raise Path to Top"); item_class->lower_desc = C_("undo-type", "Lower Path"); item_class->lower_to_bottom_desc = C_("undo-type", "Lower Path to Bottom"); item_class->raise_failed = _("Path cannot be raised higher."); item_class->lower_failed = _("Path cannot be lowered more."); klass->freeze = gimp_vectors_real_freeze; klass->thaw = gimp_vectors_real_thaw; klass->stroke_add = gimp_vectors_real_stroke_add; klass->stroke_remove = gimp_vectors_real_stroke_remove; klass->stroke_get = gimp_vectors_real_stroke_get; klass->stroke_get_next = gimp_vectors_real_stroke_get_next; klass->stroke_get_length = gimp_vectors_real_stroke_get_length; klass->anchor_get = gimp_vectors_real_anchor_get; klass->anchor_delete = gimp_vectors_real_anchor_delete; klass->get_length = gimp_vectors_real_get_length; klass->get_distance = gimp_vectors_real_get_distance; klass->interpolate = gimp_vectors_real_interpolate; klass->make_bezier = gimp_vectors_real_make_bezier; }