Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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;
}