void gimp_item_rotate (GimpItem *item, GimpContext *context, GimpRotationType rotate_type, gdouble center_x, gdouble center_y, gboolean clip_result) { GimpItemClass *item_class; GimpImage *image; g_return_if_fail (GIMP_IS_ITEM (item)); g_return_if_fail (gimp_item_is_attached (item)); g_return_if_fail (GIMP_IS_CONTEXT (context)); item_class = GIMP_ITEM_GET_CLASS (item); image = gimp_item_get_image (item); gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM, item_class->rotate_desc); item_class->rotate (item, context, rotate_type, center_x, center_y, clip_result); gimp_image_undo_group_end (image); }
void gimp_item_transform (GimpItem *item, GimpContext *context, const GimpMatrix3 *matrix, GimpTransformDirection direction, GimpInterpolationType interpolation, gint recursion_level, GimpTransformResize clip_result, GimpProgress *progress) { GimpItemClass *item_class; GimpImage *image; g_return_if_fail (GIMP_IS_ITEM (item)); g_return_if_fail (gimp_item_is_attached (item)); g_return_if_fail (GIMP_IS_CONTEXT (context)); g_return_if_fail (matrix != NULL); g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress)); item_class = GIMP_ITEM_GET_CLASS (item); image = gimp_item_get_image (item); gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM, item_class->transform_desc); item_class->transform (item, context, matrix, direction, interpolation, recursion_level, clip_result, progress); gimp_image_undo_group_end (image); }
void gimp_item_scale (GimpItem *item, gint new_width, gint new_height, gint new_offset_x, gint new_offset_y, GimpInterpolationType interpolation, GimpProgress *progress) { GimpItemClass *item_class; GimpImage *image; g_return_if_fail (GIMP_IS_ITEM (item)); g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress)); if (new_width < 1 || new_height < 1) return; item_class = GIMP_ITEM_GET_CLASS (item); image = gimp_item_get_image (item); if (gimp_item_is_attached (item)) gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_SCALE, item_class->scale_desc); item_class->scale (item, new_width, new_height, new_offset_x, new_offset_y, interpolation, progress); if (gimp_item_is_attached (item)) gimp_image_undo_group_end (image); }
void gimp_item_resize (GimpItem *item, GimpContext *context, gint new_width, gint new_height, gint offset_x, gint offset_y) { GimpItemClass *item_class; GimpImage *image; g_return_if_fail (GIMP_IS_ITEM (item)); g_return_if_fail (GIMP_IS_CONTEXT (context)); if (new_width < 1 || new_height < 1) return; item_class = GIMP_ITEM_GET_CLASS (item); image = gimp_item_get_image (item); if (gimp_item_is_attached (item)) gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_RESIZE, item_class->resize_desc); item_class->resize (item, context, new_width, new_height, offset_x, offset_y); if (gimp_item_is_attached (item)) gimp_image_undo_group_end (image); }
/** * gimp_item_is_attached: * @item: The #GimpItem to check. * * Returns: %TRUE if the item is attached to an image, %FALSE otherwise. */ gboolean gimp_item_is_attached (GimpItem *item) { g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE); return GIMP_ITEM_GET_CLASS (item)->is_attached (item); }
/** * gimp_item_translate: * @item: The #GimpItem to move. * @offset_x: Increment to the X offset of the item. * @offset_y: Increment to the Y offset of the item. * @push_undo: If #TRUE, create an entry in the image's undo stack * for this action. * * Adds the specified increments to the X and Y offsets for the item. */ void gimp_item_translate (GimpItem *item, gint offset_x, gint offset_y, gboolean push_undo) { GimpItemClass *item_class; GimpImage *image; g_return_if_fail (GIMP_IS_ITEM (item)); item_class = GIMP_ITEM_GET_CLASS (item); image = gimp_item_get_image (item); if (! gimp_item_is_attached (item)) push_undo = FALSE; if (push_undo) gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_DISPLACE, item_class->translate_desc); item_class->translate (item, offset_x, offset_y, push_undo); if (push_undo) gimp_image_undo_group_end (image); }
/** * gimp_item_duplicate: * @item: The #GimpItem to duplicate. * @new_type: The type to make the new item. * * Returns: the newly created item. */ GimpItem * gimp_item_duplicate (GimpItem *item, GType new_type) { g_return_val_if_fail (GIMP_IS_ITEM (item), NULL); g_return_val_if_fail (GIMP_IS_IMAGE (item->image), NULL); g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_ITEM), NULL); return GIMP_ITEM_GET_CLASS (item)->duplicate (item, new_type); }
static void gimp_vectors_to_selection (GimpItem *item, GimpChannelOps op, gboolean antialias, gboolean feather, gdouble feather_radius_x, gdouble feather_radius_y) { GimpVectors *vectors = GIMP_VECTORS (item); GimpImage *image = gimp_item_get_image (item); gimp_channel_select_vectors (gimp_image_get_mask (image), GIMP_ITEM_GET_CLASS (item)->to_selection_desc, vectors, op, antialias, feather, feather_radius_x, feather_radius_x, TRUE); }
/** * gimp_item_convert: * @item: The #GimpItem to convert. * @dest_image: The #GimpImage in which to place the converted item. * @new_type: The type to convert the item to. * * Returns: the new item that results from the conversion. */ GimpItem * gimp_item_convert (GimpItem *item, GimpImage *dest_image, GType new_type) { GimpItem *new_item; g_return_val_if_fail (GIMP_IS_ITEM (item), NULL); g_return_val_if_fail (GIMP_IS_IMAGE (item->image), NULL); g_return_val_if_fail (GIMP_IS_IMAGE (dest_image), NULL); g_return_val_if_fail (g_type_is_a (new_type, GIMP_TYPE_ITEM), NULL); new_item = gimp_item_duplicate (item, new_type); if (new_item) GIMP_ITEM_GET_CLASS (new_item)->convert (new_item, dest_image); return new_item; }
/** * gimp_item_rename: * @item: The #GimpItem to rename. * @new_name: The new name to give the item. * @error: Return location for error message. * * This function assigns a new name to the item, if the desired name is * different from the name it already has, and pushes an entry onto the * undo stack for the item's image. If @new_name is NULL or empty, the * default name for the item's class is used. If the name is changed, * the GimpObject::name-changed signal is emitted for the item. * * Returns: %TRUE if the @item could be renamed, %FALSE otherwise. */ gboolean gimp_item_rename (GimpItem *item, const gchar *new_name, GError **error) { GimpItemClass *item_class; g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); item_class = GIMP_ITEM_GET_CLASS (item); if (! new_name || ! *new_name) new_name = item_class->default_name; if (strcmp (new_name, gimp_object_get_name (GIMP_OBJECT (item)))) return item_class->rename (item, new_name, item_class->rename_desc, error); return TRUE; }
gboolean gimp_item_stroke (GimpItem *item, GimpDrawable *drawable, GimpContext *context, GimpStrokeDesc *stroke_desc, gboolean use_default_values, GimpProgress *progress, GError **error) { GimpItemClass *item_class; gboolean retval = FALSE; g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE); g_return_val_if_fail (gimp_item_is_attached (item), FALSE); g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), FALSE); g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); g_return_val_if_fail (GIMP_IS_STROKE_DESC (stroke_desc), FALSE); g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); item_class = GIMP_ITEM_GET_CLASS (item); if (item_class->stroke) { GimpImage *image = gimp_item_get_image (item); gimp_stroke_desc_prepare (stroke_desc, context, use_default_values); gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_PAINT, item_class->stroke_desc); retval = item_class->stroke (item, drawable, stroke_desc, progress, error); gimp_image_undo_group_end (image); gimp_stroke_desc_finish (stroke_desc); } return retval; }