GimpStroke * gimp_pdb_get_vectors_stroke (GimpVectors *vectors, gint stroke_ID, GimpPDBItemModify modify, GError **error) { GimpStroke *stroke = NULL; g_return_val_if_fail (GIMP_IS_VECTORS (vectors), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); if (! gimp_pdb_item_is_not_group (GIMP_ITEM (vectors), error)) return NULL; if (! modify || gimp_pdb_item_is_modifyable (GIMP_ITEM (vectors), modify, error)) { stroke = gimp_vectors_stroke_get_by_ID (vectors, stroke_ID); if (! stroke) g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT, _("Vectors object %d does not contain stroke with ID %d"), gimp_item_get_ID (GIMP_ITEM (vectors)), stroke_ID); } return stroke; }
static GValueArray * floating_sel_attach_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args, GError **error) { gboolean success = TRUE; GimpLayer *layer; GimpDrawable *drawable; layer = gimp_value_get_layer (&args->values[0], gimp); drawable = gimp_value_get_drawable (&args->values[1], gimp); if (success) { if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL, TRUE, error) && gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error)) floating_sel_attach (layer, drawable); else success = FALSE; } return gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); }
static GimpValueArray * text_fontname_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; GimpImage *image; GimpDrawable *drawable; gdouble x; gdouble y; const gchar *text; gint32 border; gboolean antialias; gdouble size; const gchar *fontname; GimpLayer *text_layer = NULL; image = gimp_value_get_image (gimp_value_array_index (args, 0), gimp); drawable = gimp_value_get_drawable (gimp_value_array_index (args, 1), gimp); x = g_value_get_double (gimp_value_array_index (args, 2)); y = g_value_get_double (gimp_value_array_index (args, 3)); text = g_value_get_string (gimp_value_array_index (args, 4)); border = g_value_get_int (gimp_value_array_index (args, 5)); antialias = g_value_get_boolean (gimp_value_array_index (args, 6)); size = g_value_get_double (gimp_value_array_index (args, 7)); fontname = g_value_get_string (gimp_value_array_index (args, 9)); if (success) { if (drawable && (! gimp_pdb_item_is_attached (GIMP_ITEM (drawable), image, GIMP_PDB_ITEM_CONTENT, error) || ! gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error))) success = FALSE; if (success) { gchar *real_fontname = g_strdup_printf ("%s %d", fontname, (gint) size); text_layer = text_render (image, drawable, context, x, y, real_fontname, text, border, antialias); g_free (real_fontname); } } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) gimp_value_set_layer (gimp_value_array_index (return_vals, 1), text_layer); return return_vals; }
static GimpValueArray * edit_named_cut_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; GimpDrawable *drawable; const gchar *buffer_name; gchar *real_name = NULL; drawable = gimp_value_get_drawable (gimp_value_array_index (args, 0), gimp); buffer_name = g_value_get_string (gimp_value_array_index (args, 1)); if (success) { if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL, GIMP_PDB_ITEM_CONTENT, error) && gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error)) { GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); GError *my_error = NULL; real_name = (gchar *) gimp_edit_named_cut (image, buffer_name, drawable, context, &my_error); if (real_name) { real_name = g_strdup (real_name); } else { gimp_message_literal (gimp, G_OBJECT (progress), GIMP_MESSAGE_WARNING, my_error->message); g_clear_error (&my_error); } } else success = FALSE; } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) g_value_take_string (gimp_value_array_index (return_vals, 1), real_name); return return_vals; }
static GimpValueArray * edit_named_paste_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; GimpDrawable *drawable; const gchar *buffer_name; gboolean paste_into; GimpLayer *floating_sel = NULL; drawable = gimp_value_get_drawable (gimp_value_array_index (args, 0), gimp); buffer_name = g_value_get_string (gimp_value_array_index (args, 1)); paste_into = g_value_get_boolean (gimp_value_array_index (args, 2)); if (success) { GimpBuffer *buffer = gimp_pdb_get_buffer (gimp, buffer_name, error); if (buffer && gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL, GIMP_PDB_ITEM_CONTENT, error) && gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error)) { floating_sel = gimp_edit_paste (gimp_item_get_image (GIMP_ITEM (drawable)), drawable, GIMP_OBJECT (buffer), paste_into ? GIMP_PASTE_TYPE_FLOATING_INTO : GIMP_PASTE_TYPE_FLOATING, -1, -1, -1, -1); if (! floating_sel) success = FALSE; } else success = FALSE; } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) gimp_value_set_layer (gimp_value_array_index (return_vals, 1), floating_sel); return return_vals; }
static GimpValueArray * edit_cut_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; GimpDrawable *drawable; gboolean non_empty = FALSE; drawable = gimp_value_get_drawable (gimp_value_array_index (args, 0), gimp); if (success) { if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL, GIMP_PDB_ITEM_CONTENT, error) && gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error)) { GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); GError *my_error = NULL; non_empty = gimp_edit_cut (image, drawable, context, &my_error) != NULL; if (! non_empty) { gimp_message_literal (gimp, G_OBJECT (progress), GIMP_MESSAGE_WARNING, my_error->message); g_clear_error (&my_error); } } else success = FALSE; } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) g_value_set_boolean (gimp_value_array_index (return_vals, 1), non_empty); return return_vals; }
static GimpValueArray * selection_float_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; GimpDrawable *drawable; gint32 offx; gint32 offy; GimpLayer *layer = NULL; drawable = gimp_value_get_drawable (gimp_value_array_index (args, 0), gimp); offx = g_value_get_int (gimp_value_array_index (args, 1)); offy = g_value_get_int (gimp_value_array_index (args, 2)); if (success) { if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), NULL, GIMP_PDB_ITEM_CONTENT, error) && gimp_pdb_item_is_not_group (GIMP_ITEM (drawable), error)) { GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); layer = gimp_selection_float (GIMP_SELECTION (gimp_image_get_mask (image)), drawable, context, TRUE, offx, offy, error); if (! layer) success = FALSE; } else success = FALSE; } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) gimp_value_set_layer (gimp_value_array_index (return_vals, 1), layer); return return_vals; }