static GValueArray * text_get_extents_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args) { gboolean success = TRUE; GValueArray *return_vals; const gchar *text; gdouble size; gint32 size_type; const gchar *foundry; const gchar *family; const gchar *weight; const gchar *slant; const gchar *set_width; const gchar *spacing; const gchar *registry; const gchar *encoding; gint32 width = 0; gint32 height = 0; gint32 ascent = 0; gint32 descent = 0; text = g_value_get_string (&args->values[0]); size = g_value_get_double (&args->values[1]); size_type = g_value_get_enum (&args->values[2]); foundry = g_value_get_string (&args->values[3]); family = g_value_get_string (&args->values[4]); weight = g_value_get_string (&args->values[5]); slant = g_value_get_string (&args->values[6]); set_width = g_value_get_string (&args->values[7]); spacing = g_value_get_string (&args->values[8]); registry = g_value_get_string (&args->values[9]); encoding = g_value_get_string (&args->values[10]); if (success) { gchar *real_fontname = g_strdup_printf ("%s %d", family, (gint) size); success = text_get_extents (real_fontname, text, &width, &height, &ascent, &descent); g_free (real_fontname); } return_vals = gimp_procedure_get_return_values (procedure, success); if (success) { g_value_set_int (&return_vals->values[1], width); g_value_set_int (&return_vals->values[2], height); g_value_set_int (&return_vals->values[3], ascent); g_value_set_int (&return_vals->values[4], descent); } return return_vals; }
static GimpValueArray * text_get_extents_fontname_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpValueArray *return_vals; const gchar *text; gdouble size; const gchar *fontname; gint32 width = 0; gint32 height = 0; gint32 ascent = 0; gint32 descent = 0; text = g_value_get_string (gimp_value_array_index (args, 0)); size = g_value_get_double (gimp_value_array_index (args, 1)); fontname = g_value_get_string (gimp_value_array_index (args, 3)); if (success) { gchar *real_fontname = g_strdup_printf ("%s %d", fontname, (gint) size); success = text_get_extents (gimp, real_fontname, text, &width, &height, &ascent, &descent); g_free (real_fontname); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) { g_value_set_int (gimp_value_array_index (return_vals, 1), width); g_value_set_int (gimp_value_array_index (return_vals, 2), height); g_value_set_int (gimp_value_array_index (return_vals, 3), ascent); g_value_set_int (gimp_value_array_index (return_vals, 4), descent); } return return_vals; }
static GValueArray * text_get_extents_fontname_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GValueArray *args) { gboolean success = TRUE; GValueArray *return_vals; const gchar *text; gdouble size; gint32 size_type; const gchar *fontname; gint32 width = 0; gint32 height = 0; gint32 ascent = 0; gint32 descent = 0; text = g_value_get_string (&args->values[0]); size = g_value_get_double (&args->values[1]); size_type = g_value_get_enum (&args->values[2]); fontname = g_value_get_string (&args->values[3]); if (success) { gchar *real_fontname = g_strdup_printf ("%s %d", fontname, (gint) size); success = text_get_extents (real_fontname, text, &width, &height, &ascent, &descent); g_free (real_fontname); } return_vals = gimp_procedure_get_return_values (procedure, success); if (success) { g_value_set_int (&return_vals->values[1], width); g_value_set_int (&return_vals->values[2], height); g_value_set_int (&return_vals->values[3], ascent); g_value_set_int (&return_vals->values[4], descent); } return return_vals; }