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 GValueArray * text_fontname_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args) { gboolean success = TRUE; GValueArray *return_vals; GimpImage *image; GimpDrawable *drawable; gdouble x; gdouble y; const gchar *text; gint32 border; gboolean antialias; gdouble size; gint32 size_type; const gchar *fontname; GimpLayer *text_layer = NULL; image = gimp_value_get_image (&args->values[0], gimp); drawable = gimp_value_get_drawable (&args->values[1], gimp); x = g_value_get_double (&args->values[2]); y = g_value_get_double (&args->values[3]); text = g_value_get_string (&args->values[4]); border = g_value_get_int (&args->values[5]); antialias = g_value_get_boolean (&args->values[6]); size = g_value_get_double (&args->values[7]); size_type = g_value_get_enum (&args->values[8]); fontname = g_value_get_string (&args->values[9]); if (success) { if (drawable && ! gimp_item_is_attached (GIMP_ITEM (drawable))) 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); if (success) gimp_value_set_layer (&return_vals->values[1], text_layer); return return_vals; }
static GimpValueArray * file_load_layer_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; gint32 run_mode; GimpImage *image; const gchar *filename; GimpLayer *layer = NULL; run_mode = g_value_get_enum (gimp_value_array_index (args, 0)); image = gimp_value_get_image (gimp_value_array_index (args, 1), gimp); filename = g_value_get_string (gimp_value_array_index (args, 2)); if (success) { gchar *uri = file_utils_filename_to_uri (gimp, filename, error); if (uri) { GList *layers; GimpPDBStatusType status; layers = file_open_layers (gimp, context, progress, image, FALSE, uri, run_mode, NULL, &status, error); if (layers) { layer = layers->data; g_list_free (layers); } else 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; }
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 * 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; }
static GValueArray * selection_float_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args, GError **error) { gboolean success = TRUE; GValueArray *return_vals; GimpDrawable *drawable; gint32 offx; gint32 offy; GimpLayer *layer = NULL; drawable = gimp_value_get_drawable (&args->values[0], gimp); offx = g_value_get_int (&args->values[1]); offy = g_value_get_int (&args->values[2]); if (success) { if (gimp_pdb_item_is_attached (GIMP_ITEM (drawable), error)) { GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); layer = gimp_selection_float (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 (&return_vals->values[1], layer); return return_vals; }