[gimp] app, libgimpbase: move lots of GValue and GParamSpec types to libgimpbase
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app, libgimpbase: move lots of GValue and GParamSpec types to libgimpbase
- Date: Fri, 26 Jul 2019 13:55:18 +0000 (UTC)
commit 76ee0f65591fb78f3bb76cf706b67dd9e5ff9520
Author: Michael Natterer <mitch gimp org>
Date: Fri Jul 26 15:54:33 2019 +0200
app, libgimpbase: move lots of GValue and GParamSpec types to libgimpbase
all the stuff from app/core/gimpparamspecs.[ch] that is not about
image, drawable etc IDs, these will have to go to libgimp with
different implementations than in app/.
app/core/gimpparamspecs.c | 1517 ---------------------------------
app/core/gimpparamspecs.h | 477 +----------
app/plug-in/gimpplugin-message.c | 12 +-
app/plug-in/gimpplugin-progress.c | 2 +
app/plug-in/gimppluginmanager-file.c | 2 +
app/plug-in/plug-in-rc.c | 21 +-
libgimpbase/Makefile.am | 5 +-
libgimpbase/Makefile.gi | 2 +
libgimpbase/gimpbase.def | 68 ++
libgimpbase/gimpbase.h | 1 +
libgimpbase/gimpparamspecs.c | 1542 ++++++++++++++++++++++++++++++++++
libgimpbase/gimpparamspecs.h | 505 +++++++++++
12 files changed, 2152 insertions(+), 2002 deletions(-)
---
diff --git a/app/core/gimpparamspecs.c b/app/core/gimpparamspecs.c
index 8570c185b6..3c9bcbf41b 100644
--- a/app/core/gimpparamspecs.c
+++ b/app/core/gimpparamspecs.c
@@ -34,415 +34,6 @@
#include "vectors/gimpvectors.h"
-/*
- * GIMP_TYPE_INT32
- */
-
-GType
-gimp_int32_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info = { 0, };
-
- type = g_type_register_static (G_TYPE_INT, "GimpInt32", &info, 0);
- }
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT32
- */
-
-static void gimp_param_int32_class_init (GParamSpecClass *klass);
-static void gimp_param_int32_init (GParamSpec *pspec);
-
-GType
-gimp_param_int32_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int32_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecInt32),
- 0,
- (GInstanceInitFunc) gimp_param_int32_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_INT,
- "GimpParamInt32", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int32_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT32;
-}
-
-static void
-gimp_param_int32_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int32 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gint minimum,
- gint maximum,
- gint default_value,
- GParamFlags flags)
-{
- GParamSpecInt *ispec;
-
- g_return_val_if_fail (minimum >= G_MININT32, NULL);
- g_return_val_if_fail (maximum <= G_MAXINT32, NULL);
- g_return_val_if_fail (default_value >= minimum &&
- default_value <= maximum, NULL);
-
- ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT32,
- name, nick, blurb, flags);
-
- ispec->minimum = minimum;
- ispec->maximum = maximum;
- ispec->default_value = default_value;
-
- return G_PARAM_SPEC (ispec);
-}
-
-
-/*
- * GIMP_TYPE_INT16
- */
-
-GType
-gimp_int16_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info = { 0, };
-
- type = g_type_register_static (G_TYPE_INT, "GimpInt16", &info, 0);
- }
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT16
- */
-
-static void gimp_param_int16_class_init (GParamSpecClass *klass);
-static void gimp_param_int16_init (GParamSpec *pspec);
-
-GType
-gimp_param_int16_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int16_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecInt16),
- 0,
- (GInstanceInitFunc) gimp_param_int16_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_INT,
- "GimpParamInt16", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int16_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT16;
-}
-
-static void
-gimp_param_int16_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int16 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gint minimum,
- gint maximum,
- gint default_value,
- GParamFlags flags)
-{
- GParamSpecInt *ispec;
-
- g_return_val_if_fail (minimum >= G_MININT16, NULL);
- g_return_val_if_fail (maximum <= G_MAXINT16, NULL);
- g_return_val_if_fail (default_value >= minimum &&
- default_value <= maximum, NULL);
-
- ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT16,
- name, nick, blurb, flags);
-
- ispec->minimum = minimum;
- ispec->maximum = maximum;
- ispec->default_value = default_value;
-
- return G_PARAM_SPEC (ispec);
-}
-
-
-/*
- * GIMP_TYPE_INT8
- */
-
-GType
-gimp_int8_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info = { 0, };
-
- type = g_type_register_static (G_TYPE_UINT, "GimpInt8", &info, 0);
- }
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT8
- */
-
-static void gimp_param_int8_class_init (GParamSpecClass *klass);
-static void gimp_param_int8_init (GParamSpec *pspec);
-
-GType
-gimp_param_int8_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int8_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecInt8),
- 0,
- (GInstanceInitFunc) gimp_param_int8_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_UINT,
- "GimpParamInt8", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int8_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT8;
-}
-
-static void
-gimp_param_int8_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int8 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- guint minimum,
- guint maximum,
- guint default_value,
- GParamFlags flags)
-{
- GParamSpecInt *ispec;
-
- g_return_val_if_fail (maximum <= G_MAXUINT8, NULL);
- g_return_val_if_fail (default_value >= minimum &&
- default_value <= maximum, NULL);
-
- ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT8,
- name, nick, blurb, flags);
-
- ispec->minimum = minimum;
- ispec->maximum = maximum;
- ispec->default_value = default_value;
-
- return G_PARAM_SPEC (ispec);
-}
-
-
-/*
- * GIMP_TYPE_PARAM_STRING
- */
-
-static void gimp_param_string_class_init (GParamSpecClass *klass);
-static void gimp_param_string_init (GParamSpec *pspec);
-static gboolean gimp_param_string_validate (GParamSpec *pspec,
- GValue *value);
-
-static GParamSpecClass * gimp_param_string_parent_class = NULL;
-
-GType
-gimp_param_string_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_string_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecString),
- 0,
- (GInstanceInitFunc) gimp_param_string_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_STRING,
- "GimpParamString", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_string_class_init (GParamSpecClass *klass)
-{
- gimp_param_string_parent_class = g_type_class_peek_parent (klass);
-
- klass->value_type = G_TYPE_STRING;
- klass->value_validate = gimp_param_string_validate;
-}
-
-static void
-gimp_param_string_init (GParamSpec *pspec)
-{
- GimpParamSpecString *sspec = GIMP_PARAM_SPEC_STRING (pspec);
-
- G_PARAM_SPEC_STRING (pspec)->ensure_non_null = TRUE;
-
- sspec->allow_non_utf8 = FALSE;
- sspec->non_empty = FALSE;
-}
-
-static gboolean
-gimp_param_string_validate (GParamSpec *pspec,
- GValue *value)
-{
- GimpParamSpecString *sspec = GIMP_PARAM_SPEC_STRING (pspec);
- gchar *string = value->data[0].v_pointer;
-
- if (gimp_param_string_parent_class->value_validate (pspec, value))
- return TRUE;
-
- if (string)
- {
- gchar *s;
-
- if (sspec->non_empty && ! string[0])
- {
- if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
- g_free (string);
- else
- value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
-
- value->data[0].v_pointer = g_strdup ("none");
- return TRUE;
- }
-
- if (! sspec->allow_non_utf8 &&
- ! g_utf8_validate (string, -1, (const gchar **) &s))
- {
- if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)
- {
- value->data[0].v_pointer = g_strdup (string);
- value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
- string = value->data[0].v_pointer;
- }
-
- for (s = string; *s; s++)
- if (*s < ' ')
- *s = '?';
-
- return TRUE;
- }
- }
- else if (sspec->non_empty)
- {
- value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
- value->data[0].v_pointer = g_strdup ("none");
- return TRUE;
- }
-
- return FALSE;
-}
-
-GParamSpec *
-gimp_param_spec_string (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gboolean allow_non_utf8,
- gboolean null_ok,
- gboolean non_empty,
- const gchar *default_value,
- GParamFlags flags)
-{
- GimpParamSpecString *sspec;
-
- g_return_val_if_fail (! (null_ok && non_empty), NULL);
-
- sspec = g_param_spec_internal (GIMP_TYPE_PARAM_STRING,
- name, nick, blurb, flags);
-
- if (sspec)
- {
- g_free (G_PARAM_SPEC_STRING (sspec)->default_value);
- G_PARAM_SPEC_STRING (sspec)->default_value = g_strdup (default_value);
-
- G_PARAM_SPEC_STRING (sspec)->ensure_non_null = null_ok ? FALSE : TRUE;
-
- sspec->allow_non_utf8 = allow_non_utf8 ? TRUE : FALSE;
- sspec->non_empty = non_empty ? TRUE : FALSE;
- }
-
- return G_PARAM_SPEC (sspec);
-}
-
-
/*
* GIMP_TYPE_PARAM_ENUM
*/
@@ -1861,1111 +1452,3 @@ gimp_value_set_display (GValue *value,
value->data[0].v_int = id;
}
-
-
-/*
- * GIMP_TYPE_ARRAY
- */
-
-GimpArray *
-gimp_array_new (const guint8 *data,
- gsize length,
- gboolean static_data)
-{
- GimpArray *array;
-
- g_return_val_if_fail ((data == NULL && length == 0) ||
- (data != NULL && length > 0), NULL);
-
- array = g_slice_new0 (GimpArray);
-
- array->data = static_data ? (guint8 *) data : g_memdup (data, length);
- array->length = length;
- array->static_data = static_data;
-
- return array;
-}
-
-GimpArray *
-gimp_array_copy (const GimpArray *array)
-{
- if (array)
- return gimp_array_new (array->data, array->length, FALSE);
-
- return NULL;
-}
-
-void
-gimp_array_free (GimpArray *array)
-{
- if (array)
- {
- if (! array->static_data)
- g_free (array->data);
-
- g_slice_free (GimpArray, array);
- }
-}
-
-GType
-gimp_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpArray",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_ARRAY
- */
-
-static void gimp_param_array_class_init (GParamSpecClass *klass);
-static void gimp_param_array_init (GParamSpec *pspec);
-static gboolean gimp_param_array_validate (GParamSpec *pspec,
- GValue *value);
-static gint gimp_param_array_values_cmp (GParamSpec *pspec,
- const GValue *value1,
- const GValue *value2);
-
-GType
-gimp_param_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_array_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_BOXED,
- "GimpParamArray", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_ARRAY;
- klass->value_validate = gimp_param_array_validate;
- klass->values_cmp = gimp_param_array_values_cmp;
-}
-
-static void
-gimp_param_array_init (GParamSpec *pspec)
-{
-}
-
-static gboolean
-gimp_param_array_validate (GParamSpec *pspec,
- GValue *value)
-{
- GimpArray *array = value->data[0].v_pointer;
-
- if (array)
- {
- if ((array->data == NULL && array->length != 0) ||
- (array->data != NULL && array->length == 0))
- {
- g_value_set_boxed (value, NULL);
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static gint
-gimp_param_array_values_cmp (GParamSpec *pspec,
- const GValue *value1,
- const GValue *value2)
-{
- GimpArray *array1 = value1->data[0].v_pointer;
- GimpArray *array2 = value2->data[0].v_pointer;
-
- /* try to return at least *something*, it's useless anyway... */
-
- if (! array1)
- return array2 != NULL ? -1 : 0;
- else if (! array2)
- return array1 != NULL ? 1 : 0;
- else if (array1->length < array2->length)
- return -1;
- else if (array1->length > array2->length)
- return 1;
-
- return 0;
-}
-
-GParamSpec *
-gimp_param_spec_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-static const guint8 *
-gimp_value_get_array (const GValue *value)
-{
- GimpArray *array = value->data[0].v_pointer;
-
- if (array)
- return array->data;
-
- return NULL;
-}
-
-static guint8 *
-gimp_value_dup_array (const GValue *value)
-{
- GimpArray *array = value->data[0].v_pointer;
-
- if (array)
- return g_memdup (array->data, array->length);
-
- return NULL;
-}
-
-static void
-gimp_value_set_array (GValue *value,
- const guint8 *data,
- gsize length)
-{
- GimpArray *array = gimp_array_new (data, length, FALSE);
-
- g_value_take_boxed (value, array);
-}
-
-static void
-gimp_value_set_static_array (GValue *value,
- const guint8 *data,
- gsize length)
-{
- GimpArray *array = gimp_array_new (data, length, TRUE);
-
- g_value_take_boxed (value, array);
-}
-
-static void
-gimp_value_take_array (GValue *value,
- guint8 *data,
- gsize length)
-{
- GimpArray *array = gimp_array_new (data, length, TRUE);
-
- array->static_data = FALSE;
-
- g_value_take_boxed (value, array);
-}
-
-
-/*
- * GIMP_TYPE_INT8_ARRAY
- */
-
-GType
-gimp_int8_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpInt8Array",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT8_ARRAY
- */
-
-static void gimp_param_int8_array_class_init (GParamSpecClass *klass);
-static void gimp_param_int8_array_init (GParamSpec *pspec);
-
-GType
-gimp_param_int8_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int8_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_int8_array_init
- };
-
- type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
- "GimpParamInt8Array", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int8_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT8_ARRAY;
-}
-
-static void
-gimp_param_int8_array_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int8_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT8_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const guint8 *
-gimp_value_get_int8_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value), NULL);
-
- return gimp_value_get_array (value);
-}
-
-guint8 *
-gimp_value_dup_int8_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value), NULL);
-
- return gimp_value_dup_array (value);
-}
-
-void
-gimp_value_set_int8_array (GValue *value,
- const guint8 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
-
- gimp_value_set_array (value, data, length);
-}
-
-void
-gimp_value_set_static_int8_array (GValue *value,
- const guint8 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
-
- gimp_value_set_static_array (value, data, length);
-}
-
-void
-gimp_value_take_int8_array (GValue *value,
- guint8 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
-
- gimp_value_take_array (value, data, length);
-}
-
-
-/*
- * GIMP_TYPE_INT16_ARRAY
- */
-
-GType
-gimp_int16_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpInt16Array",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT16_ARRAY
- */
-
-static void gimp_param_int16_array_class_init (GParamSpecClass *klass);
-static void gimp_param_int16_array_init (GParamSpec *pspec);
-
-GType
-gimp_param_int16_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int16_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_int16_array_init
- };
-
- type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
- "GimpParamInt16Array", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int16_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT16_ARRAY;
-}
-
-static void
-gimp_param_int16_array_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int16_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT16_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const gint16 *
-gimp_value_get_int16_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value), NULL);
-
- return (const gint16 *) gimp_value_get_array (value);
-}
-
-gint16 *
-gimp_value_dup_int16_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value), NULL);
-
- return (gint16 *) gimp_value_dup_array (value);
-}
-
-void
-gimp_value_set_int16_array (GValue *value,
- const gint16 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
-
- gimp_value_set_array (value, (const guint8 *) data,
- length * sizeof (gint16));
-}
-
-void
-gimp_value_set_static_int16_array (GValue *value,
- const gint16 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
-
- gimp_value_set_static_array (value, (const guint8 *) data,
- length * sizeof (gint16));
-}
-
-void
-gimp_value_take_int16_array (GValue *value,
- gint16 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
-
- gimp_value_take_array (value, (guint8 *) data,
- length * sizeof (gint16));
-}
-
-
-/*
- * GIMP_TYPE_INT32_ARRAY
- */
-
-GType
-gimp_int32_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpInt32Array",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_INT32_ARRAY
- */
-
-static void gimp_param_int32_array_class_init (GParamSpecClass *klass);
-static void gimp_param_int32_array_init (GParamSpec *pspec);
-
-GType
-gimp_param_int32_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_int32_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_int32_array_init
- };
-
- type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
- "GimpParamInt32Array", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_int32_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_INT32_ARRAY;
-}
-
-static void
-gimp_param_int32_array_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_int32_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT32_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const gint32 *
-gimp_value_get_int32_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value), NULL);
-
- return (const gint32 *) gimp_value_get_array (value);
-}
-
-gint32 *
-gimp_value_dup_int32_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value), NULL);
-
- return (gint32 *) gimp_value_dup_array (value);
-}
-
-void
-gimp_value_set_int32_array (GValue *value,
- const gint32 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
-
- gimp_value_set_array (value, (const guint8 *) data,
- length * sizeof (gint32));
-}
-
-void
-gimp_value_set_static_int32_array (GValue *value,
- const gint32 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
-
- gimp_value_set_static_array (value, (const guint8 *) data,
- length * sizeof (gint32));
-}
-
-void
-gimp_value_take_int32_array (GValue *value,
- gint32 *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
-
- gimp_value_take_array (value, (guint8 *) data,
- length * sizeof (gint32));
-}
-
-
-/*
- * GIMP_TYPE_FLOAT_ARRAY
- */
-
-GType
-gimp_float_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpFloatArray",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_FLOAT_ARRAY
- */
-
-static void gimp_param_float_array_class_init (GParamSpecClass *klass);
-static void gimp_param_float_array_init (GParamSpec *pspec);
-
-GType
-gimp_param_float_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_float_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_float_array_init
- };
-
- type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
- "GimpParamFloatArray", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_float_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_FLOAT_ARRAY;
-}
-
-static void
-gimp_param_float_array_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_float_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_FLOAT_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const gdouble *
-gimp_value_get_float_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value), NULL);
-
- return (const gdouble *) gimp_value_get_array (value);
-}
-
-gdouble *
-gimp_value_dup_float_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value), NULL);
-
- return (gdouble *) gimp_value_dup_array (value);
-}
-
-void
-gimp_value_set_float_array (GValue *value,
- const gdouble *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
-
- gimp_value_set_array (value, (const guint8 *) data,
- length * sizeof (gdouble));
-}
-
-void
-gimp_value_set_static_float_array (GValue *value,
- const gdouble *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
-
- gimp_value_set_static_array (value, (const guint8 *) data,
- length * sizeof (gdouble));
-}
-
-void
-gimp_value_take_float_array (GValue *value,
- gdouble *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
-
- gimp_value_take_array (value, (guint8 *) data,
- length * sizeof (gdouble));
-}
-
-
-/*
- * GIMP_TYPE_STRING_ARRAY
- */
-
-GimpArray *
-gimp_string_array_new (const gchar **data,
- gsize length,
- gboolean static_data)
-{
- GimpArray *array;
-
- g_return_val_if_fail ((data == NULL && length == 0) ||
- (data != NULL && length > 0), NULL);
-
- array = g_slice_new0 (GimpArray);
-
- if (! static_data)
- {
- gchar **tmp = g_new (gchar *, length);
- gint i;
-
- for (i = 0; i < length; i++)
- tmp[i] = g_strdup (data[i]);
-
- array->data = (guint8 *) tmp;
- }
- else
- {
- array->data = (guint8 *) data;
- }
-
- array->length = length;
- array->static_data = static_data;
-
- return array;
-}
-
-GimpArray *
-gimp_string_array_copy (const GimpArray *array)
-{
- if (array)
- return gimp_string_array_new ((const gchar **) array->data,
- array->length, FALSE);
-
- return NULL;
-}
-
-void
-gimp_string_array_free (GimpArray *array)
-{
- if (array)
- {
- if (! array->static_data)
- {
- gchar **tmp = (gchar **) array->data;
- gint i;
-
- for (i = 0; i < array->length; i++)
- g_free (tmp[i]);
-
- g_free (array->data);
- }
-
- g_slice_free (GimpArray, array);
- }
-}
-
-GType
-gimp_string_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpStringArray",
- (GBoxedCopyFunc) gimp_string_array_copy,
- (GBoxedFreeFunc) gimp_string_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_STRING_ARRAY
- */
-
-static void gimp_param_string_array_class_init (GParamSpecClass *klass);
-static void gimp_param_string_array_init (GParamSpec *pspec);
-static gboolean gimp_param_string_array_validate (GParamSpec *pspec,
- GValue *value);
-static gint gimp_param_string_array_values_cmp (GParamSpec *pspec,
- const GValue *value1,
- const GValue *value2);
-
-GType
-gimp_param_string_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_string_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_string_array_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_BOXED,
- "GimpParamStringArray", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_string_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_STRING_ARRAY;
- klass->value_validate = gimp_param_string_array_validate;
- klass->values_cmp = gimp_param_string_array_values_cmp;
-}
-
-static void
-gimp_param_string_array_init (GParamSpec *pspec)
-{
-}
-
-static gboolean
-gimp_param_string_array_validate (GParamSpec *pspec,
- GValue *value)
-{
- GimpArray *array = value->data[0].v_pointer;
-
- if (array)
- {
- if ((array->data == NULL && array->length != 0) ||
- (array->data != NULL && array->length == 0))
- {
- g_value_set_boxed (value, NULL);
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static gint
-gimp_param_string_array_values_cmp (GParamSpec *pspec,
- const GValue *value1,
- const GValue *value2)
-{
- GimpArray *array1 = value1->data[0].v_pointer;
- GimpArray *array2 = value2->data[0].v_pointer;
-
- /* try to return at least *something*, it's useless anyway... */
-
- if (! array1)
- return array2 != NULL ? -1 : 0;
- else if (! array2)
- return array1 != NULL ? 1 : 0;
- else if (array1->length < array2->length)
- return -1;
- else if (array1->length > array2->length)
- return 1;
-
- return 0;
-}
-
-GParamSpec *
-gimp_param_spec_string_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecStringArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_STRING_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const gchar **
-gimp_value_get_string_array (const GValue *value)
-{
- GimpArray *array;
-
- g_return_val_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value), NULL);
-
- array = value->data[0].v_pointer;
-
- if (array)
- return (const gchar **) array->data;
-
- return NULL;
-}
-
-gchar **
-gimp_value_dup_string_array (const GValue *value)
-{
- GimpArray *array;
-
- g_return_val_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value), NULL);
-
- array = value->data[0].v_pointer;
-
- if (array)
- {
- gchar **ret = g_memdup (array->data, array->length * sizeof (gchar *));
- gint i;
-
- for (i = 0; i < array->length; i++)
- ret[i] = g_strdup (ret[i]);
-
- return ret;
- }
-
- return NULL;
-}
-
-void
-gimp_value_set_string_array (GValue *value,
- const gchar **data,
- gsize length)
-{
- GimpArray *array;
-
- g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
-
- array = gimp_string_array_new (data, length, FALSE);
-
- g_value_take_boxed (value, array);
-}
-
-void
-gimp_value_set_static_string_array (GValue *value,
- const gchar **data,
- gsize length)
-{
- GimpArray *array;
-
- g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
-
- array = gimp_string_array_new (data, length, TRUE);
-
- g_value_take_boxed (value, array);
-}
-
-void
-gimp_value_take_string_array (GValue *value,
- gchar **data,
- gsize length)
-{
- GimpArray *array;
-
- g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
-
- array = gimp_string_array_new ((const gchar **) data, length, TRUE);
- array->static_data = FALSE;
-
- g_value_take_boxed (value, array);
-}
-
-
-/*
- * GIMP_TYPE_RGB_ARRAY
- */
-
-GType
-gimp_rgb_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- type = g_boxed_type_register_static ("GimpRgbArray",
- (GBoxedCopyFunc) gimp_array_copy,
- (GBoxedFreeFunc) gimp_array_free);
-
- return type;
-}
-
-
-/*
- * GIMP_TYPE_PARAM_RGB_ARRAY
- */
-
-static void gimp_param_rgb_array_class_init (GParamSpecClass *klass);
-static void gimp_param_rgb_array_init (GParamSpec *pspec);
-
-GType
-gimp_param_rgb_array_get_type (void)
-{
- static GType type = 0;
-
- if (! type)
- {
- const GTypeInfo info =
- {
- sizeof (GParamSpecClass),
- NULL, NULL,
- (GClassInitFunc) gimp_param_rgb_array_class_init,
- NULL, NULL,
- sizeof (GimpParamSpecArray),
- 0,
- (GInstanceInitFunc) gimp_param_rgb_array_init
- };
-
- type = g_type_register_static (G_TYPE_PARAM_BOXED,
- "GimpParamRGBArray", &info, 0);
- }
-
- return type;
-}
-
-static void
-gimp_param_rgb_array_class_init (GParamSpecClass *klass)
-{
- klass->value_type = GIMP_TYPE_RGB_ARRAY;
-}
-
-static void
-gimp_param_rgb_array_init (GParamSpec *pspec)
-{
-}
-
-GParamSpec *
-gimp_param_spec_rgb_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags)
-{
- GimpParamSpecRGBArray *array_spec;
-
- array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_RGB_ARRAY,
- name, nick, blurb, flags);
-
- return G_PARAM_SPEC (array_spec);
-}
-
-const GimpRGB *
-gimp_value_get_rgb_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
-
- return (const GimpRGB *) gimp_value_get_array (value);
-}
-
-GimpRGB *
-gimp_value_dup_rgb_array (const GValue *value)
-{
- g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
-
- return (GimpRGB *) gimp_value_dup_array (value);
-}
-
-void
-gimp_value_set_rgb_array (GValue *value,
- const GimpRGB *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
-
- gimp_value_set_array (value, (const guint8 *) data,
- length * sizeof (GimpRGB));
-}
-
-void
-gimp_value_set_static_rgb_array (GValue *value,
- const GimpRGB *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
-
- gimp_value_set_static_array (value, (const guint8 *) data,
- length * sizeof (GimpRGB));
-}
-
-void
-gimp_value_take_rgb_array (GValue *value,
- GimpRGB *data,
- gsize length)
-{
- g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
-
- gimp_value_take_array (value, (guint8 *) data,
- length * sizeof (GimpRGB));
-}
diff --git a/app/core/gimpparamspecs.h b/app/core/gimpparamspecs.h
index 51e7968d52..2bd10b7706 100644
--- a/app/core/gimpparamspecs.h
+++ b/app/core/gimpparamspecs.h
@@ -15,155 +15,8 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#ifndef __GIMP_PARAM_SPECS_H__
-#define __GIMP_PARAM_SPECS_H__
-
-
-/*
- * Keep in sync with libgimpconfig/gimpconfig-params.h
- */
-#define GIMP_PARAM_NO_VALIDATE (1 << (6 + G_PARAM_USER_SHIFT))
-
-
-/*
- * GIMP_TYPE_INT32
- */
-
-#define GIMP_TYPE_INT32 (gimp_int32_get_type ())
-#define GIMP_VALUE_HOLDS_INT32(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
- GIMP_TYPE_INT32))
-
-GType gimp_int32_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT32
- */
-
-#define GIMP_TYPE_PARAM_INT32 (gimp_param_int32_get_type ())
-#define GIMP_PARAM_SPEC_INT32(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT32,
GimpParamSpecInt32))
-#define GIMP_IS_PARAM_SPEC_INT32(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT32))
-
-typedef struct _GimpParamSpecInt32 GimpParamSpecInt32;
-
-struct _GimpParamSpecInt32
-{
- GParamSpecInt parent_instance;
-};
-
-GType gimp_param_int32_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int32 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gint minimum,
- gint maximum,
- gint default_value,
- GParamFlags flags);
-
-
-/*
- * GIMP_TYPE_INT16
- */
-
-#define GIMP_TYPE_INT16 (gimp_int16_get_type ())
-#define GIMP_VALUE_HOLDS_INT16(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
- GIMP_TYPE_INT16))
-
-GType gimp_int16_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT16
- */
-
-#define GIMP_TYPE_PARAM_INT16 (gimp_param_int16_get_type ())
-#define GIMP_PARAM_SPEC_INT16(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT16,
GimpParamSpecInt16))
-#define GIMP_IS_PARAM_SPEC_INT16(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT16))
-
-typedef struct _GimpParamSpecInt16 GimpParamSpecInt16;
-
-struct _GimpParamSpecInt16
-{
- GParamSpecInt parent_instance;
-};
-
-GType gimp_param_int16_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int16 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gint minimum,
- gint maximum,
- gint default_value,
- GParamFlags flags);
-
-
-/*
- * GIMP_TYPE_INT8
- */
-
-#define GIMP_TYPE_INT8 (gimp_int8_get_type ())
-#define GIMP_VALUE_HOLDS_INT8(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
- GIMP_TYPE_INT8))
-
-GType gimp_int8_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT8
- */
-
-#define GIMP_TYPE_PARAM_INT8 (gimp_param_int8_get_type ())
-#define GIMP_PARAM_SPEC_INT8(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT8,
GimpParamSpecInt8))
-#define GIMP_IS_PARAM_SPEC_INT8(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT8))
-
-typedef struct _GimpParamSpecInt8 GimpParamSpecInt8;
-
-struct _GimpParamSpecInt8
-{
- GParamSpecUInt parent_instance;
-};
-
-GType gimp_param_int8_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int8 (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- guint minimum,
- guint maximum,
- guint default_value,
- GParamFlags flags);
-
-
-/*
- * GIMP_TYPE_PARAM_STRING
- */
-
-#define GIMP_TYPE_PARAM_STRING (gimp_param_string_get_type ())
-#define GIMP_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_STRING,
GimpParamSpecString))
-#define GIMP_IS_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_STRING))
-
-typedef struct _GimpParamSpecString GimpParamSpecString;
-
-struct _GimpParamSpecString
-{
- GParamSpecString parent_instance;
-
- guint allow_non_utf8 : 1;
- guint non_empty : 1;
-};
-
-GType gimp_param_string_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_string (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- gboolean allow_non_utf8,
- gboolean null_ok,
- gboolean non_empty,
- const gchar *default_value,
- GParamFlags flags);
+#ifndef __APP_GIMP_PARAM_SPECS_H__
+#define __APP_GIMP_PARAM_SPECS_H__
/*
@@ -577,328 +430,4 @@ void gimp_value_set_display (GValue *value,
GimpObject *display);
-/*
- * GIMP_TYPE_ARRAY
- */
-
-typedef struct _GimpArray GimpArray;
-
-struct _GimpArray
-{
- guint8 *data;
- gsize length;
- gboolean static_data;
-};
-
-GimpArray * gimp_array_new (const guint8 *data,
- gsize length,
- gboolean static_data);
-GimpArray * gimp_array_copy (const GimpArray *array);
-void gimp_array_free (GimpArray *array);
-
-#define GIMP_TYPE_ARRAY (gimp_array_get_type ())
-#define GIMP_VALUE_HOLDS_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_ARRAY))
-
-GType gimp_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_ARRAY (gimp_param_array_get_type ())
-#define GIMP_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_ARRAY,
GimpParamSpecArray))
-#define GIMP_IS_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_ARRAY))
-
-typedef struct _GimpParamSpecArray GimpParamSpecArray;
-
-struct _GimpParamSpecArray
-{
- GParamSpecBoxed parent_instance;
-};
-
-GType gimp_param_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-
-/*
- * GIMP_TYPE_INT8_ARRAY
- */
-
-#define GIMP_TYPE_INT8_ARRAY (gimp_int8_array_get_type ())
-#define GIMP_VALUE_HOLDS_INT8_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT8_ARRAY))
-
-GType gimp_int8_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT8_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_INT8_ARRAY (gimp_param_int8_array_get_type ())
-#define GIMP_PARAM_SPEC_INT8_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT8_ARRAY, GimpParamSpecInt8Array))
-#define GIMP_IS_PARAM_SPEC_INT8_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT8_ARRAY))
-
-typedef struct _GimpParamSpecInt8Array GimpParamSpecInt8Array;
-
-struct _GimpParamSpecInt8Array
-{
- GimpParamSpecArray parent_instance;
-};
-
-GType gimp_param_int8_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int8_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const guint8 * gimp_value_get_int8_array (const GValue *value);
-guint8 * gimp_value_dup_int8_array (const GValue *value);
-void gimp_value_set_int8_array (GValue *value,
- const guint8 *array,
- gsize length);
-void gimp_value_set_static_int8_array (GValue *value,
- const guint8 *array,
- gsize length);
-void gimp_value_take_int8_array (GValue *value,
- guint8 *array,
- gsize length);
-
-
-/*
- * GIMP_TYPE_INT16_ARRAY
- */
-
-#define GIMP_TYPE_INT16_ARRAY (gimp_int16_array_get_type ())
-#define GIMP_VALUE_HOLDS_INT16_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT16_ARRAY))
-
-GType gimp_int16_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT16_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_INT16_ARRAY (gimp_param_int16_array_get_type ())
-#define GIMP_PARAM_SPEC_INT16_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT16_ARRAY, GimpParamSpecInt16Array))
-#define GIMP_IS_PARAM_SPEC_INT16_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT16_ARRAY))
-
-typedef struct _GimpParamSpecInt16Array GimpParamSpecInt16Array;
-
-struct _GimpParamSpecInt16Array
-{
- GimpParamSpecArray parent_instance;
-};
-
-GType gimp_param_int16_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int16_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const gint16 * gimp_value_get_int16_array (const GValue *value);
-gint16 * gimp_value_dup_int16_array (const GValue *value);
-void gimp_value_set_int16_array (GValue *value,
- const gint16 *array,
- gsize length);
-void gimp_value_set_static_int16_array (GValue *value,
- const gint16 *array,
- gsize length);
-void gimp_value_take_int16_array (GValue *value,
- gint16 *array,
- gsize length);
-
-
-/*
- * GIMP_TYPE_INT32_ARRAY
- */
-
-#define GIMP_TYPE_INT32_ARRAY (gimp_int32_array_get_type ())
-#define GIMP_VALUE_HOLDS_INT32_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT32_ARRAY))
-
-GType gimp_int32_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_INT32_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_INT32_ARRAY (gimp_param_int32_array_get_type ())
-#define GIMP_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT32_ARRAY, GimpParamSpecInt32Array))
-#define GIMP_IS_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT32_ARRAY))
-
-typedef struct _GimpParamSpecInt32Array GimpParamSpecInt32Array;
-
-struct _GimpParamSpecInt32Array
-{
- GimpParamSpecArray parent_instance;
-};
-
-GType gimp_param_int32_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_int32_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const gint32 * gimp_value_get_int32_array (const GValue *value);
-gint32 * gimp_value_dup_int32_array (const GValue *value);
-void gimp_value_set_int32_array (GValue *value,
- const gint32 *array,
- gsize length);
-void gimp_value_set_static_int32_array (GValue *value,
- const gint32 *array,
- gsize length);
-void gimp_value_take_int32_array (GValue *value,
- gint32 *array,
- gsize length);
-
-
-/*
- * GIMP_TYPE_FLOAT_ARRAY
- */
-
-#define GIMP_TYPE_FLOAT_ARRAY (gimp_float_array_get_type ())
-#define GIMP_VALUE_HOLDS_FLOAT_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_FLOAT_ARRAY))
-
-GType gimp_float_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_FLOAT_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_FLOAT_ARRAY (gimp_param_float_array_get_type ())
-#define GIMP_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_FLOAT_ARRAY, GimpParamSpecFloatArray))
-#define GIMP_IS_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_FLOAT_ARRAY))
-
-typedef struct _GimpParamSpecFloatArray GimpParamSpecFloatArray;
-
-struct _GimpParamSpecFloatArray
-{
- GimpParamSpecArray parent_instance;
-};
-
-GType gimp_param_float_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_float_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const gdouble * gimp_value_get_float_array (const GValue *value);
-gdouble * gimp_value_dup_float_array (const GValue *value);
-void gimp_value_set_float_array (GValue *value,
- const gdouble *array,
- gsize length);
-void gimp_value_set_static_float_array (GValue *value,
- const gdouble *array,
- gsize length);
-void gimp_value_take_float_array (GValue *value,
- gdouble *array,
- gsize length);
-
-
-/*
- * GIMP_TYPE_STRING_ARRAY
- */
-
-GimpArray * gimp_string_array_new (const gchar **data,
- gsize length,
- gboolean static_data);
-GimpArray * gimp_string_array_copy (const GimpArray *array);
-void gimp_string_array_free (GimpArray *array);
-
-#define GIMP_TYPE_STRING_ARRAY (gimp_string_array_get_type ())
-#define GIMP_VALUE_HOLDS_STRING_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_STRING_ARRAY))
-
-GType gimp_string_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_STRING_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_STRING_ARRAY (gimp_param_string_array_get_type ())
-#define GIMP_PARAM_SPEC_STRING_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_STRING_ARRAY, GimpParamSpecStringArray))
-#define GIMP_IS_PARAM_SPEC_STRING_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_STRING_ARRAY))
-
-typedef struct _GimpParamSpecStringArray GimpParamSpecStringArray;
-
-struct _GimpParamSpecStringArray
-{
- GParamSpecBoxed parent_instance;
-};
-
-GType gimp_param_string_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_string_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const gchar ** gimp_value_get_string_array (const GValue *value);
-gchar ** gimp_value_dup_string_array (const GValue *value);
-void gimp_value_set_string_array (GValue *value,
- const gchar **array,
- gsize length);
-void gimp_value_set_static_string_array (GValue *value,
- const gchar **array,
- gsize length);
-void gimp_value_take_string_array (GValue *value,
- gchar **array,
- gsize length);
-
-
-/*
- * GIMP_TYPE_RGB_ARRAY
- */
-
-#define GIMP_TYPE_RGB_ARRAY (gimp_rgb_array_get_type ())
-#define GIMP_VALUE_HOLDS_RGB_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_RGB_ARRAY))
-
-GType gimp_rgb_array_get_type (void) G_GNUC_CONST;
-
-
-/*
- * GIMP_TYPE_PARAM_RGB_ARRAY
- */
-
-#define GIMP_TYPE_PARAM_RGB_ARRAY (gimp_param_rgb_array_get_type ())
-#define GIMP_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY,
GimpParamSpecRGBArray))
-#define GIMP_IS_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY))
-
-typedef struct _GimpParamSpecRGBArray GimpParamSpecRGBArray;
-
-struct _GimpParamSpecRGBArray
-{
- GParamSpecBoxed parent_instance;
-};
-
-GType gimp_param_rgb_array_get_type (void) G_GNUC_CONST;
-
-GParamSpec * gimp_param_spec_rgb_array (const gchar *name,
- const gchar *nick,
- const gchar *blurb,
- GParamFlags flags);
-
-const GimpRGB * gimp_value_get_rgb_array (const GValue *value);
-GimpRGB * gimp_value_dup_rgb_array (const GValue *value);
-void gimp_value_set_rgb_array (GValue *value,
- const GimpRGB *array,
- gsize length);
-void gimp_value_set_static_rgb_array (GValue *value,
- const GimpRGB *array,
- gsize length);
-void gimp_value_take_rgb_array (GValue *value,
- GimpRGB *array,
- gsize length);
-
-
-#endif /* __GIMP_PARAM_SPECS_H__ */
+#endif /* __APP_GIMP_PARAM_SPECS_H__ */
diff --git a/app/plug-in/gimpplugin-message.c b/app/plug-in/gimpplugin-message.c
index 0ee2c5d3e3..affbb35297 100644
--- a/app/plug-in/gimpplugin-message.c
+++ b/app/plug-in/gimpplugin-message.c
@@ -755,7 +755,8 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
null_name = TRUE;
}
else if (! (VALIDATE (proc_install->params[i].name) &&
- VALIDATE_OR_NULL (proc_install->params[i].description)))
+ VALIDATE_OR_NULL (proc_install->params[i].nick) &&
+ VALIDATE_OR_NULL (proc_install->params[i].blurb)))
{
valid_utf8 = FALSE;
}
@@ -768,7 +769,8 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
null_name = TRUE;
}
else if (! (VALIDATE (proc_install->return_vals[i].name) &&
- VALIDATE_OR_NULL (proc_install->return_vals[i].description)))
+ VALIDATE_OR_NULL (proc_install->return_vals[i].nick) &&
+ VALIDATE_OR_NULL (proc_install->return_vals[i].blurb)))
{
valid_utf8 = FALSE;
}
@@ -861,7 +863,8 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
gimp_pdb_compat_param_spec (plug_in->manager->gimp,
proc_install->params[i].type,
proc_install->params[i].name,
- proc_install->params[i].description);
+ proc_install->params[i].nick,
+ proc_install->params[i].blurb);
gimp_procedure_add_argument (procedure, pspec);
}
@@ -872,7 +875,8 @@ gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
gimp_pdb_compat_param_spec (plug_in->manager->gimp,
proc_install->return_vals[i].type,
proc_install->return_vals[i].name,
- proc_install->return_vals[i].description);
+ proc_install->return_vals[i].nick,
+ proc_install->return_vals[i].blurb);
gimp_procedure_add_return_value (procedure, pspec);
}
diff --git a/app/plug-in/gimpplugin-progress.c b/app/plug-in/gimpplugin-progress.c
index ddf2ef5a7e..1664f06abf 100644
--- a/app/plug-in/gimpplugin-progress.c
+++ b/app/plug-in/gimpplugin-progress.c
@@ -22,6 +22,8 @@
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gegl.h>
+#include "libgimpbase/gimpbase.h"
+
#include "plug-in-types.h"
#include "core/gimp.h"
diff --git a/app/plug-in/gimppluginmanager-file.c b/app/plug-in/gimppluginmanager-file.c
index e9524478d3..beadf226f4 100644
--- a/app/plug-in/gimppluginmanager-file.c
+++ b/app/plug-in/gimppluginmanager-file.c
@@ -24,6 +24,8 @@
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gegl.h>
+#include "libgimpbase/gimpbase.h"
+
#include "plug-in-types.h"
#include "core/gimp.h"
diff --git a/app/plug-in/plug-in-rc.c b/app/plug-in/plug-in-rc.c
index 87bd8e7292..1f2852ec29 100644
--- a/app/plug-in/plug-in-rc.c
+++ b/app/plug-in/plug-in-rc.c
@@ -743,8 +743,9 @@ plug_in_proc_arg_deserialize (GScanner *scanner,
{
GTokenType token;
gint arg_type;
- gchar *name = NULL;
- gchar *desc = NULL;
+ gchar *name = NULL;
+ gchar *nick = NULL;
+ gchar *blurb = NULL;
GParamSpec *pspec;
if (! gimp_scanner_parse_token (scanner, G_TOKEN_LEFT_PAREN))
@@ -770,7 +771,12 @@ plug_in_proc_arg_deserialize (GScanner *scanner,
token = G_TOKEN_STRING;
goto error;
}
- if (! gimp_scanner_parse_string (scanner, &desc))
+ if (! gimp_scanner_parse_string (scanner, &nick))
+ {
+ token = G_TOKEN_STRING;
+ goto error;
+ }
+ if (! gimp_scanner_parse_string (scanner, &blurb))
{
token = G_TOKEN_STRING;
goto error;
@@ -784,7 +790,7 @@ plug_in_proc_arg_deserialize (GScanner *scanner,
token = G_TOKEN_LEFT_PAREN;
- pspec = gimp_pdb_compat_param_spec (gimp, arg_type, name, desc);
+ pspec = gimp_pdb_compat_param_spec (gimp, arg_type, name, nick, blurb);
if (return_value)
gimp_procedure_add_return_value (procedure, pspec);
@@ -794,7 +800,8 @@ plug_in_proc_arg_deserialize (GScanner *scanner,
error:
g_free (name);
- g_free (desc);
+ g_free (nick);
+ g_free (blurb);
return token;
}
@@ -1063,6 +1070,8 @@ plug_in_rc_write (GSList *plug_in_defs,
gimp_config_writer_string (writer,
g_param_spec_get_name (pspec));
+ gimp_config_writer_string (writer,
+ g_param_spec_get_nick (pspec));
gimp_config_writer_string (writer,
g_param_spec_get_blurb (pspec));
@@ -1079,6 +1088,8 @@ plug_in_rc_write (GSList *plug_in_defs,
gimp_config_writer_string (writer,
g_param_spec_get_name (pspec));
+ gimp_config_writer_string (writer,
+ g_param_spec_get_nick (pspec));
gimp_config_writer_string (writer,
g_param_spec_get_blurb (pspec));
diff --git a/libgimpbase/Makefile.am b/libgimpbase/Makefile.am
index 860bf53639..4395f5e506 100644
--- a/libgimpbase/Makefile.am
+++ b/libgimpbase/Makefile.am
@@ -51,10 +51,10 @@ libgimpbaseincludedir = $(includedir)/gimp-$(GIMP_API_VERSION)/libgimpbase
AM_CPPFLAGS = \
-DPREFIX=\""$(prefix)"\" \
-DGIMPDIR=\""$(gimpdir)"\" \
- -DGIMPDATADIR=\""$(gimpdatadir)"\" \
+ -DGIMPDATADIR=\""$(gimpdatadir)"\" \
-DLOCALEDIR=\""$(gimplocaledir)"\" \
-DPLUGINDIR=\""$(gimpplugindir)"\" \
- -DGIMPSYSCONFDIR=\""$(gimpsysconfdir)"\" \
+ -DGIMPSYSCONFDIR=\""$(gimpsysconfdir)"\" \
-DGIMP_PACKAGE=\""@PACKAGE@"\" \
-DGIMP_DATA_VERSION=\"$(GIMP_DATA_VERSION)\" \
-DGIMP_USER_VERSION=\"$(GIMP_USER_VERSION)\" \
@@ -125,6 +125,7 @@ libgimpbaseinclude_HEADERS = \
gimpcpuaccel.h \
gimplimits.h \
gimpparam.h \
+ gimpparamspecs.h \
gimpversion.h \
\
gimpchecks.h \
diff --git a/libgimpbase/Makefile.gi b/libgimpbase/Makefile.gi
index 09153d79bc..f8aeb34c45 100644
--- a/libgimpbase/Makefile.gi
+++ b/libgimpbase/Makefile.gi
@@ -18,6 +18,8 @@ libgimpbase_introspectable = \
$(top_srcdir)/libgimpbase/gimpmemsize.h \
$(top_srcdir)/libgimpbase/gimpmetadata.c \
$(top_srcdir)/libgimpbase/gimpmetadata.h \
+ $(top_srcdir)/libgimpbase/gimpparamspecs.c \
+ $(top_srcdir)/libgimpbase/gimpparamspecs.h \
$(top_srcdir)/libgimpbase/gimpparasite.c \
$(top_srcdir)/libgimpbase/gimpparasite.h \
$(top_srcdir)/libgimpbase/gimpparasiteio.c \
diff --git a/libgimpbase/gimpbase.def b/libgimpbase/gimpbase.def
index 3c0bb383d4..d829ebbdd7 100644
--- a/libgimpbase/gimpbase.def
+++ b/libgimpbase/gimpbase.def
@@ -1,6 +1,10 @@
EXPORTS
gimp_add_mask_type_get_type
gimp_any_to_utf8
+ gimp_array_copy
+ gimp_array_free
+ gimp_array_get_type
+ gimp_array_new
gimp_base_compat_enums_init
gimp_base_init
gimp_blend_mode_get_type
@@ -47,6 +51,7 @@ EXPORTS
gimp_flags_value_get_abbrev
gimp_flags_value_get_desc
gimp_flags_value_get_help
+ gimp_float_array_get_type
gimp_foreground_extract_mode_get_type
gimp_gradient_blend_color_space_get_type
gimp_gradient_segment_color_get_type
@@ -61,6 +66,12 @@ EXPORTS
gimp_ink_blob_type_get_type
gimp_installation_directory
gimp_installation_directory_file
+ gimp_int16_array_get_type
+ gimp_int16_get_type
+ gimp_int32_array_get_type
+ gimp_int32_get_type
+ gimp_int8_array_get_type
+ gimp_int8_get_type
gimp_interpolation_type_get_type
gimp_join_style_get_type
gimp_locale_directory
@@ -96,12 +107,34 @@ EXPORTS
gimp_offset_type_get_type
gimp_orientation_type_get_type
gimp_paint_application_mode_get_type
+ gimp_param_array_get_type
+ gimp_param_float_array_get_type
+ gimp_param_int16_array_get_type
+ gimp_param_int16_get_type
+ gimp_param_int32_array_get_type
+ gimp_param_int32_get_type
+ gimp_param_int8_array_get_type
+ gimp_param_int8_get_type
gimp_param_memsize_get_type
gimp_param_parasite_get_type
+ gimp_param_rgb_array_get_type
+ gimp_param_spec_array
+ gimp_param_spec_float_array
+ gimp_param_spec_int16
+ gimp_param_spec_int16_array
+ gimp_param_spec_int32
+ gimp_param_spec_int32_array
+ gimp_param_spec_int8
+ gimp_param_spec_int8_array
gimp_param_spec_memsize
gimp_param_spec_parasite
+ gimp_param_spec_rgb_array
+ gimp_param_spec_string
+ gimp_param_spec_string_array
gimp_param_spec_unit
gimp_param_spec_value_array
+ gimp_param_string_array_get_type
+ gimp_param_string_get_type
gimp_param_unit_get_type
gimp_param_value_array_get_type
gimp_parasite_compare
@@ -138,6 +171,7 @@ EXPORTS
gimp_rectangle_intersect
gimp_rectangle_union
gimp_repeat_mode_get_type
+ gimp_rgb_array_get_type
gimp_rotation_type_get_type
gimp_run_mode_get_type
gimp_select_criterion_get_type
@@ -147,6 +181,10 @@ EXPORTS
gimp_stack_trace_mode_get_type
gimp_stack_trace_print
gimp_stack_trace_query
+ gimp_string_array_copy
+ gimp_string_array_free
+ gimp_string_array_get_type
+ gimp_string_array_new
gimp_strip_uline
gimp_stroke_method_get_type
gimp_sysconf_directory
@@ -192,6 +230,36 @@ EXPORTS
gimp_value_array_remove
gimp_value_array_truncate
gimp_value_array_unref
+ gimp_value_dup_float_array
+ gimp_value_dup_int16_array
+ gimp_value_dup_int32_array
+ gimp_value_dup_int8_array
+ gimp_value_dup_rgb_array
+ gimp_value_dup_string_array
+ gimp_value_get_float_array
+ gimp_value_get_int16_array
+ gimp_value_get_int32_array
+ gimp_value_get_int8_array
+ gimp_value_get_rgb_array
+ gimp_value_get_string_array
+ gimp_value_set_float_array
+ gimp_value_set_int16_array
+ gimp_value_set_int32_array
+ gimp_value_set_int8_array
+ gimp_value_set_rgb_array
+ gimp_value_set_static_float_array
+ gimp_value_set_static_int16_array
+ gimp_value_set_static_int32_array
+ gimp_value_set_static_int8_array
+ gimp_value_set_static_rgb_array
+ gimp_value_set_static_string_array
+ gimp_value_set_string_array
+ gimp_value_take_float_array
+ gimp_value_take_int16_array
+ gimp_value_take_int32_array
+ gimp_value_take_int8_array
+ gimp_value_take_rgb_array
+ gimp_value_take_string_array
gimp_vectors_stroke_type_get_type
gimp_wire_clear_error
gimp_wire_destroy
diff --git a/libgimpbase/gimpbase.h b/libgimpbase/gimpbase.h
index 7db1fcfa03..1db091fb1d 100644
--- a/libgimpbase/gimpbase.h
+++ b/libgimpbase/gimpbase.h
@@ -29,6 +29,7 @@
#include <libgimpbase/gimplimits.h>
#include <libgimpbase/gimpmemsize.h>
#include <libgimpbase/gimpmetadata.h>
+#include <libgimpbase/gimpparamspecs.h>
#include <libgimpbase/gimpparasite.h>
#include <libgimpbase/gimprectangle.h>
#include <libgimpbase/gimpunit.h>
diff --git a/libgimpbase/gimpparamspecs.c b/libgimpbase/gimpparamspecs.c
new file mode 100644
index 0000000000..c03746f9d8
--- /dev/null
+++ b/libgimpbase/gimpparamspecs.c
@@ -0,0 +1,1542 @@
+/* LIBGIMP - The GIMP Library
+ * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
+ *
+ * gimpparamspecs.c
+ *
+ * This library is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gio/gio.h>
+
+#include "gimpbase.h"
+
+
+/*
+ * GIMP_TYPE_INT32
+ */
+
+GType
+gimp_int32_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info = { 0, };
+
+ type = g_type_register_static (G_TYPE_INT, "GimpInt32", &info, 0);
+ }
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT32
+ */
+
+static void gimp_param_int32_class_init (GParamSpecClass *klass);
+static void gimp_param_int32_init (GParamSpec *pspec);
+
+GType
+gimp_param_int32_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int32_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecInt32),
+ 0,
+ (GInstanceInitFunc) gimp_param_int32_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_INT,
+ "GimpParamInt32", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int32_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT32;
+}
+
+static void
+gimp_param_int32_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int32 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags)
+{
+ GParamSpecInt *ispec;
+
+ g_return_val_if_fail (minimum >= G_MININT32, NULL);
+ g_return_val_if_fail (maximum <= G_MAXINT32, NULL);
+ g_return_val_if_fail (default_value >= minimum &&
+ default_value <= maximum, NULL);
+
+ ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT32,
+ name, nick, blurb, flags);
+
+ ispec->minimum = minimum;
+ ispec->maximum = maximum;
+ ispec->default_value = default_value;
+
+ return G_PARAM_SPEC (ispec);
+}
+
+
+/*
+ * GIMP_TYPE_INT16
+ */
+
+GType
+gimp_int16_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info = { 0, };
+
+ type = g_type_register_static (G_TYPE_INT, "GimpInt16", &info, 0);
+ }
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT16
+ */
+
+static void gimp_param_int16_class_init (GParamSpecClass *klass);
+static void gimp_param_int16_init (GParamSpec *pspec);
+
+GType
+gimp_param_int16_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int16_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecInt16),
+ 0,
+ (GInstanceInitFunc) gimp_param_int16_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_INT,
+ "GimpParamInt16", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int16_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT16;
+}
+
+static void
+gimp_param_int16_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int16 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags)
+{
+ GParamSpecInt *ispec;
+
+ g_return_val_if_fail (minimum >= G_MININT16, NULL);
+ g_return_val_if_fail (maximum <= G_MAXINT16, NULL);
+ g_return_val_if_fail (default_value >= minimum &&
+ default_value <= maximum, NULL);
+
+ ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT16,
+ name, nick, blurb, flags);
+
+ ispec->minimum = minimum;
+ ispec->maximum = maximum;
+ ispec->default_value = default_value;
+
+ return G_PARAM_SPEC (ispec);
+}
+
+
+/*
+ * GIMP_TYPE_INT8
+ */
+
+GType
+gimp_int8_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info = { 0, };
+
+ type = g_type_register_static (G_TYPE_UINT, "GimpInt8", &info, 0);
+ }
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT8
+ */
+
+static void gimp_param_int8_class_init (GParamSpecClass *klass);
+static void gimp_param_int8_init (GParamSpec *pspec);
+
+GType
+gimp_param_int8_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int8_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecInt8),
+ 0,
+ (GInstanceInitFunc) gimp_param_int8_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_UINT,
+ "GimpParamInt8", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int8_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT8;
+}
+
+static void
+gimp_param_int8_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int8 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint minimum,
+ guint maximum,
+ guint default_value,
+ GParamFlags flags)
+{
+ GParamSpecInt *ispec;
+
+ g_return_val_if_fail (maximum <= G_MAXUINT8, NULL);
+ g_return_val_if_fail (default_value >= minimum &&
+ default_value <= maximum, NULL);
+
+ ispec = g_param_spec_internal (GIMP_TYPE_PARAM_INT8,
+ name, nick, blurb, flags);
+
+ ispec->minimum = minimum;
+ ispec->maximum = maximum;
+ ispec->default_value = default_value;
+
+ return G_PARAM_SPEC (ispec);
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_STRING
+ */
+
+static void gimp_param_string_class_init (GParamSpecClass *klass);
+static void gimp_param_string_init (GParamSpec *pspec);
+static gboolean gimp_param_string_validate (GParamSpec *pspec,
+ GValue *value);
+
+static GParamSpecClass * gimp_param_string_parent_class = NULL;
+
+GType
+gimp_param_string_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_string_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecString),
+ 0,
+ (GInstanceInitFunc) gimp_param_string_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_STRING,
+ "GimpParamString", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_string_class_init (GParamSpecClass *klass)
+{
+ gimp_param_string_parent_class = g_type_class_peek_parent (klass);
+
+ klass->value_type = G_TYPE_STRING;
+ klass->value_validate = gimp_param_string_validate;
+}
+
+static void
+gimp_param_string_init (GParamSpec *pspec)
+{
+ GimpParamSpecString *sspec = GIMP_PARAM_SPEC_STRING (pspec);
+
+ G_PARAM_SPEC_STRING (pspec)->ensure_non_null = TRUE;
+
+ sspec->allow_non_utf8 = FALSE;
+ sspec->non_empty = FALSE;
+}
+
+static gboolean
+gimp_param_string_validate (GParamSpec *pspec,
+ GValue *value)
+{
+ GimpParamSpecString *sspec = GIMP_PARAM_SPEC_STRING (pspec);
+ gchar *string = value->data[0].v_pointer;
+
+ if (gimp_param_string_parent_class->value_validate (pspec, value))
+ return TRUE;
+
+ if (string)
+ {
+ gchar *s;
+
+ if (sspec->non_empty && ! string[0])
+ {
+ if (!(value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS))
+ g_free (string);
+ else
+ value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
+
+ value->data[0].v_pointer = g_strdup ("none");
+ return TRUE;
+ }
+
+ if (! sspec->allow_non_utf8 &&
+ ! g_utf8_validate (string, -1, (const gchar **) &s))
+ {
+ if (value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS)
+ {
+ value->data[0].v_pointer = g_strdup (string);
+ value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
+ string = value->data[0].v_pointer;
+ }
+
+ for (s = string; *s; s++)
+ if (*s < ' ')
+ *s = '?';
+
+ return TRUE;
+ }
+ }
+ else if (sspec->non_empty)
+ {
+ value->data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
+ value->data[0].v_pointer = g_strdup ("none");
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+GParamSpec *
+gimp_param_spec_string (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gboolean allow_non_utf8,
+ gboolean null_ok,
+ gboolean non_empty,
+ const gchar *default_value,
+ GParamFlags flags)
+{
+ GimpParamSpecString *sspec;
+
+ g_return_val_if_fail (! (null_ok && non_empty), NULL);
+
+ sspec = g_param_spec_internal (GIMP_TYPE_PARAM_STRING,
+ name, nick, blurb, flags);
+
+ if (sspec)
+ {
+ g_free (G_PARAM_SPEC_STRING (sspec)->default_value);
+ G_PARAM_SPEC_STRING (sspec)->default_value = g_strdup (default_value);
+
+ G_PARAM_SPEC_STRING (sspec)->ensure_non_null = null_ok ? FALSE : TRUE;
+
+ sspec->allow_non_utf8 = allow_non_utf8 ? TRUE : FALSE;
+ sspec->non_empty = non_empty ? TRUE : FALSE;
+ }
+
+ return G_PARAM_SPEC (sspec);
+}
+
+
+/*
+ * GIMP_TYPE_ARRAY
+ */
+
+GimpArray *
+gimp_array_new (const guint8 *data,
+ gsize length,
+ gboolean static_data)
+{
+ GimpArray *array;
+
+ g_return_val_if_fail ((data == NULL && length == 0) ||
+ (data != NULL && length > 0), NULL);
+
+ array = g_slice_new0 (GimpArray);
+
+ array->data = static_data ? (guint8 *) data : g_memdup (data, length);
+ array->length = length;
+ array->static_data = static_data;
+
+ return array;
+}
+
+GimpArray *
+gimp_array_copy (const GimpArray *array)
+{
+ if (array)
+ return gimp_array_new (array->data, array->length, FALSE);
+
+ return NULL;
+}
+
+void
+gimp_array_free (GimpArray *array)
+{
+ if (array)
+ {
+ if (! array->static_data)
+ g_free (array->data);
+
+ g_slice_free (GimpArray, array);
+ }
+}
+
+GType
+gimp_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpArray",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_ARRAY
+ */
+
+static void gimp_param_array_class_init (GParamSpecClass *klass);
+static void gimp_param_array_init (GParamSpec *pspec);
+static gboolean gimp_param_array_validate (GParamSpec *pspec,
+ GValue *value);
+static gint gimp_param_array_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+
+GType
+gimp_param_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_array_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_BOXED,
+ "GimpParamArray", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_ARRAY;
+ klass->value_validate = gimp_param_array_validate;
+ klass->values_cmp = gimp_param_array_values_cmp;
+}
+
+static void
+gimp_param_array_init (GParamSpec *pspec)
+{
+}
+
+static gboolean
+gimp_param_array_validate (GParamSpec *pspec,
+ GValue *value)
+{
+ GimpArray *array = value->data[0].v_pointer;
+
+ if (array)
+ {
+ if ((array->data == NULL && array->length != 0) ||
+ (array->data != NULL && array->length == 0))
+ {
+ g_value_set_boxed (value, NULL);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static gint
+gimp_param_array_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2)
+{
+ GimpArray *array1 = value1->data[0].v_pointer;
+ GimpArray *array2 = value2->data[0].v_pointer;
+
+ /* try to return at least *something*, it's useless anyway... */
+
+ if (! array1)
+ return array2 != NULL ? -1 : 0;
+ else if (! array2)
+ return array1 != NULL ? 1 : 0;
+ else if (array1->length < array2->length)
+ return -1;
+ else if (array1->length > array2->length)
+ return 1;
+
+ return 0;
+}
+
+GParamSpec *
+gimp_param_spec_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+static const guint8 *
+gimp_value_get_array (const GValue *value)
+{
+ GimpArray *array = value->data[0].v_pointer;
+
+ if (array)
+ return array->data;
+
+ return NULL;
+}
+
+static guint8 *
+gimp_value_dup_array (const GValue *value)
+{
+ GimpArray *array = value->data[0].v_pointer;
+
+ if (array)
+ return g_memdup (array->data, array->length);
+
+ return NULL;
+}
+
+static void
+gimp_value_set_array (GValue *value,
+ const guint8 *data,
+ gsize length)
+{
+ GimpArray *array = gimp_array_new (data, length, FALSE);
+
+ g_value_take_boxed (value, array);
+}
+
+static void
+gimp_value_set_static_array (GValue *value,
+ const guint8 *data,
+ gsize length)
+{
+ GimpArray *array = gimp_array_new (data, length, TRUE);
+
+ g_value_take_boxed (value, array);
+}
+
+static void
+gimp_value_take_array (GValue *value,
+ guint8 *data,
+ gsize length)
+{
+ GimpArray *array = gimp_array_new (data, length, TRUE);
+
+ array->static_data = FALSE;
+
+ g_value_take_boxed (value, array);
+}
+
+
+/*
+ * GIMP_TYPE_INT8_ARRAY
+ */
+
+GType
+gimp_int8_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpInt8Array",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT8_ARRAY
+ */
+
+static void gimp_param_int8_array_class_init (GParamSpecClass *klass);
+static void gimp_param_int8_array_init (GParamSpec *pspec);
+
+GType
+gimp_param_int8_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int8_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_int8_array_init
+ };
+
+ type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
+ "GimpParamInt8Array", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int8_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT8_ARRAY;
+}
+
+static void
+gimp_param_int8_array_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int8_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT8_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const guint8 *
+gimp_value_get_int8_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value), NULL);
+
+ return gimp_value_get_array (value);
+}
+
+guint8 *
+gimp_value_dup_int8_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value), NULL);
+
+ return gimp_value_dup_array (value);
+}
+
+void
+gimp_value_set_int8_array (GValue *value,
+ const guint8 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
+
+ gimp_value_set_array (value, data, length);
+}
+
+void
+gimp_value_set_static_int8_array (GValue *value,
+ const guint8 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
+
+ gimp_value_set_static_array (value, data, length);
+}
+
+void
+gimp_value_take_int8_array (GValue *value,
+ guint8 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT8_ARRAY (value));
+
+ gimp_value_take_array (value, data, length);
+}
+
+
+/*
+ * GIMP_TYPE_INT16_ARRAY
+ */
+
+GType
+gimp_int16_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpInt16Array",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT16_ARRAY
+ */
+
+static void gimp_param_int16_array_class_init (GParamSpecClass *klass);
+static void gimp_param_int16_array_init (GParamSpec *pspec);
+
+GType
+gimp_param_int16_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int16_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_int16_array_init
+ };
+
+ type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
+ "GimpParamInt16Array", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int16_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT16_ARRAY;
+}
+
+static void
+gimp_param_int16_array_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int16_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT16_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const gint16 *
+gimp_value_get_int16_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value), NULL);
+
+ return (const gint16 *) gimp_value_get_array (value);
+}
+
+gint16 *
+gimp_value_dup_int16_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value), NULL);
+
+ return (gint16 *) gimp_value_dup_array (value);
+}
+
+void
+gimp_value_set_int16_array (GValue *value,
+ const gint16 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
+
+ gimp_value_set_array (value, (const guint8 *) data,
+ length * sizeof (gint16));
+}
+
+void
+gimp_value_set_static_int16_array (GValue *value,
+ const gint16 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
+
+ gimp_value_set_static_array (value, (const guint8 *) data,
+ length * sizeof (gint16));
+}
+
+void
+gimp_value_take_int16_array (GValue *value,
+ gint16 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT16_ARRAY (value));
+
+ gimp_value_take_array (value, (guint8 *) data,
+ length * sizeof (gint16));
+}
+
+
+/*
+ * GIMP_TYPE_INT32_ARRAY
+ */
+
+GType
+gimp_int32_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpInt32Array",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_INT32_ARRAY
+ */
+
+static void gimp_param_int32_array_class_init (GParamSpecClass *klass);
+static void gimp_param_int32_array_init (GParamSpec *pspec);
+
+GType
+gimp_param_int32_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_int32_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_int32_array_init
+ };
+
+ type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
+ "GimpParamInt32Array", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_int32_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_INT32_ARRAY;
+}
+
+static void
+gimp_param_int32_array_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_int32_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_INT32_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const gint32 *
+gimp_value_get_int32_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value), NULL);
+
+ return (const gint32 *) gimp_value_get_array (value);
+}
+
+gint32 *
+gimp_value_dup_int32_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value), NULL);
+
+ return (gint32 *) gimp_value_dup_array (value);
+}
+
+void
+gimp_value_set_int32_array (GValue *value,
+ const gint32 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
+
+ gimp_value_set_array (value, (const guint8 *) data,
+ length * sizeof (gint32));
+}
+
+void
+gimp_value_set_static_int32_array (GValue *value,
+ const gint32 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
+
+ gimp_value_set_static_array (value, (const guint8 *) data,
+ length * sizeof (gint32));
+}
+
+void
+gimp_value_take_int32_array (GValue *value,
+ gint32 *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_INT32_ARRAY (value));
+
+ gimp_value_take_array (value, (guint8 *) data,
+ length * sizeof (gint32));
+}
+
+
+/*
+ * GIMP_TYPE_FLOAT_ARRAY
+ */
+
+GType
+gimp_float_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpFloatArray",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_FLOAT_ARRAY
+ */
+
+static void gimp_param_float_array_class_init (GParamSpecClass *klass);
+static void gimp_param_float_array_init (GParamSpec *pspec);
+
+GType
+gimp_param_float_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_float_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_float_array_init
+ };
+
+ type = g_type_register_static (GIMP_TYPE_PARAM_ARRAY,
+ "GimpParamFloatArray", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_float_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_FLOAT_ARRAY;
+}
+
+static void
+gimp_param_float_array_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_float_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_FLOAT_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const gdouble *
+gimp_value_get_float_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value), NULL);
+
+ return (const gdouble *) gimp_value_get_array (value);
+}
+
+gdouble *
+gimp_value_dup_float_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value), NULL);
+
+ return (gdouble *) gimp_value_dup_array (value);
+}
+
+void
+gimp_value_set_float_array (GValue *value,
+ const gdouble *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
+
+ gimp_value_set_array (value, (const guint8 *) data,
+ length * sizeof (gdouble));
+}
+
+void
+gimp_value_set_static_float_array (GValue *value,
+ const gdouble *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
+
+ gimp_value_set_static_array (value, (const guint8 *) data,
+ length * sizeof (gdouble));
+}
+
+void
+gimp_value_take_float_array (GValue *value,
+ gdouble *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_FLOAT_ARRAY (value));
+
+ gimp_value_take_array (value, (guint8 *) data,
+ length * sizeof (gdouble));
+}
+
+
+/*
+ * GIMP_TYPE_STRING_ARRAY
+ */
+
+GimpArray *
+gimp_string_array_new (const gchar **data,
+ gsize length,
+ gboolean static_data)
+{
+ GimpArray *array;
+
+ g_return_val_if_fail ((data == NULL && length == 0) ||
+ (data != NULL && length > 0), NULL);
+
+ array = g_slice_new0 (GimpArray);
+
+ if (! static_data)
+ {
+ gchar **tmp = g_new (gchar *, length);
+ gint i;
+
+ for (i = 0; i < length; i++)
+ tmp[i] = g_strdup (data[i]);
+
+ array->data = (guint8 *) tmp;
+ }
+ else
+ {
+ array->data = (guint8 *) data;
+ }
+
+ array->length = length;
+ array->static_data = static_data;
+
+ return array;
+}
+
+GimpArray *
+gimp_string_array_copy (const GimpArray *array)
+{
+ if (array)
+ return gimp_string_array_new ((const gchar **) array->data,
+ array->length, FALSE);
+
+ return NULL;
+}
+
+void
+gimp_string_array_free (GimpArray *array)
+{
+ if (array)
+ {
+ if (! array->static_data)
+ {
+ gchar **tmp = (gchar **) array->data;
+ gint i;
+
+ for (i = 0; i < array->length; i++)
+ g_free (tmp[i]);
+
+ g_free (array->data);
+ }
+
+ g_slice_free (GimpArray, array);
+ }
+}
+
+GType
+gimp_string_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpStringArray",
+ (GBoxedCopyFunc) gimp_string_array_copy,
+ (GBoxedFreeFunc) gimp_string_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_STRING_ARRAY
+ */
+
+static void gimp_param_string_array_class_init (GParamSpecClass *klass);
+static void gimp_param_string_array_init (GParamSpec *pspec);
+static gboolean gimp_param_string_array_validate (GParamSpec *pspec,
+ GValue *value);
+static gint gimp_param_string_array_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+
+GType
+gimp_param_string_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_string_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_string_array_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_BOXED,
+ "GimpParamStringArray", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_string_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_STRING_ARRAY;
+ klass->value_validate = gimp_param_string_array_validate;
+ klass->values_cmp = gimp_param_string_array_values_cmp;
+}
+
+static void
+gimp_param_string_array_init (GParamSpec *pspec)
+{
+}
+
+static gboolean
+gimp_param_string_array_validate (GParamSpec *pspec,
+ GValue *value)
+{
+ GimpArray *array = value->data[0].v_pointer;
+
+ if (array)
+ {
+ if ((array->data == NULL && array->length != 0) ||
+ (array->data != NULL && array->length == 0))
+ {
+ g_value_set_boxed (value, NULL);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static gint
+gimp_param_string_array_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2)
+{
+ GimpArray *array1 = value1->data[0].v_pointer;
+ GimpArray *array2 = value2->data[0].v_pointer;
+
+ /* try to return at least *something*, it's useless anyway... */
+
+ if (! array1)
+ return array2 != NULL ? -1 : 0;
+ else if (! array2)
+ return array1 != NULL ? 1 : 0;
+ else if (array1->length < array2->length)
+ return -1;
+ else if (array1->length > array2->length)
+ return 1;
+
+ return 0;
+}
+
+GParamSpec *
+gimp_param_spec_string_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecStringArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_STRING_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const gchar **
+gimp_value_get_string_array (const GValue *value)
+{
+ GimpArray *array;
+
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value), NULL);
+
+ array = value->data[0].v_pointer;
+
+ if (array)
+ return (const gchar **) array->data;
+
+ return NULL;
+}
+
+gchar **
+gimp_value_dup_string_array (const GValue *value)
+{
+ GimpArray *array;
+
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value), NULL);
+
+ array = value->data[0].v_pointer;
+
+ if (array)
+ {
+ gchar **ret = g_memdup (array->data, array->length * sizeof (gchar *));
+ gint i;
+
+ for (i = 0; i < array->length; i++)
+ ret[i] = g_strdup (ret[i]);
+
+ return ret;
+ }
+
+ return NULL;
+}
+
+void
+gimp_value_set_string_array (GValue *value,
+ const gchar **data,
+ gsize length)
+{
+ GimpArray *array;
+
+ g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
+
+ array = gimp_string_array_new (data, length, FALSE);
+
+ g_value_take_boxed (value, array);
+}
+
+void
+gimp_value_set_static_string_array (GValue *value,
+ const gchar **data,
+ gsize length)
+{
+ GimpArray *array;
+
+ g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
+
+ array = gimp_string_array_new (data, length, TRUE);
+
+ g_value_take_boxed (value, array);
+}
+
+void
+gimp_value_take_string_array (GValue *value,
+ gchar **data,
+ gsize length)
+{
+ GimpArray *array;
+
+ g_return_if_fail (GIMP_VALUE_HOLDS_STRING_ARRAY (value));
+
+ array = gimp_string_array_new ((const gchar **) data, length, TRUE);
+ array->static_data = FALSE;
+
+ g_value_take_boxed (value, array);
+}
+
+
+/*
+ * GIMP_TYPE_RGB_ARRAY
+ */
+
+GType
+gimp_rgb_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ type = g_boxed_type_register_static ("GimpRgbArray",
+ (GBoxedCopyFunc) gimp_array_copy,
+ (GBoxedFreeFunc) gimp_array_free);
+
+ return type;
+}
+
+
+/*
+ * GIMP_TYPE_PARAM_RGB_ARRAY
+ */
+
+static void gimp_param_rgb_array_class_init (GParamSpecClass *klass);
+static void gimp_param_rgb_array_init (GParamSpec *pspec);
+
+GType
+gimp_param_rgb_array_get_type (void)
+{
+ static GType type = 0;
+
+ if (! type)
+ {
+ const GTypeInfo info =
+ {
+ sizeof (GParamSpecClass),
+ NULL, NULL,
+ (GClassInitFunc) gimp_param_rgb_array_class_init,
+ NULL, NULL,
+ sizeof (GimpParamSpecArray),
+ 0,
+ (GInstanceInitFunc) gimp_param_rgb_array_init
+ };
+
+ type = g_type_register_static (G_TYPE_PARAM_BOXED,
+ "GimpParamRGBArray", &info, 0);
+ }
+
+ return type;
+}
+
+static void
+gimp_param_rgb_array_class_init (GParamSpecClass *klass)
+{
+ klass->value_type = GIMP_TYPE_RGB_ARRAY;
+}
+
+static void
+gimp_param_rgb_array_init (GParamSpec *pspec)
+{
+}
+
+GParamSpec *
+gimp_param_spec_rgb_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags)
+{
+ GimpParamSpecRGBArray *array_spec;
+
+ array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_RGB_ARRAY,
+ name, nick, blurb, flags);
+
+ return G_PARAM_SPEC (array_spec);
+}
+
+const GimpRGB *
+gimp_value_get_rgb_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
+
+ return (const GimpRGB *) gimp_value_get_array (value);
+}
+
+GimpRGB *
+gimp_value_dup_rgb_array (const GValue *value)
+{
+ g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
+
+ return (GimpRGB *) gimp_value_dup_array (value);
+}
+
+void
+gimp_value_set_rgb_array (GValue *value,
+ const GimpRGB *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
+
+ gimp_value_set_array (value, (const guint8 *) data,
+ length * sizeof (GimpRGB));
+}
+
+void
+gimp_value_set_static_rgb_array (GValue *value,
+ const GimpRGB *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
+
+ gimp_value_set_static_array (value, (const guint8 *) data,
+ length * sizeof (GimpRGB));
+}
+
+void
+gimp_value_take_rgb_array (GValue *value,
+ GimpRGB *data,
+ gsize length)
+{
+ g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
+
+ gimp_value_take_array (value, (guint8 *) data,
+ length * sizeof (GimpRGB));
+}
diff --git a/libgimpbase/gimpparamspecs.h b/libgimpbase/gimpparamspecs.h
new file mode 100644
index 0000000000..6cb8da15c9
--- /dev/null
+++ b/libgimpbase/gimpparamspecs.h
@@ -0,0 +1,505 @@
+/* LIBGIMP - The GIMP Library
+ * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
+ *
+ * gimpparamspecs.h
+ *
+ * This library is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+
+#if !defined (__GIMP_BASE_H_INSIDE__) && !defined (GIMP_BASE_COMPILATION)
+#error "Only <libgimpbase/gimpbase.h> can be included directly."
+#endif
+
+#ifndef __GIMP_PARAM_SPECS_H__
+#define __GIMP_PARAM_SPECS_H__
+
+G_BEGIN_DECLS
+
+/* For information look into the C source or the html documentation */
+
+/*
+ * Keep in sync with libgimpconfig/gimpconfig-params.h
+ */
+#define GIMP_PARAM_NO_VALIDATE (1 << (6 + G_PARAM_USER_SHIFT))
+
+
+/*
+ * GIMP_TYPE_INT32
+ */
+
+#define GIMP_TYPE_INT32 (gimp_int32_get_type ())
+#define GIMP_VALUE_HOLDS_INT32(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
+ GIMP_TYPE_INT32))
+
+GType gimp_int32_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT32
+ */
+
+#define GIMP_TYPE_PARAM_INT32 (gimp_param_int32_get_type ())
+#define GIMP_PARAM_SPEC_INT32(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT32,
GimpParamSpecInt32))
+#define GIMP_IS_PARAM_SPEC_INT32(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT32))
+
+typedef struct _GimpParamSpecInt32 GimpParamSpecInt32;
+
+struct _GimpParamSpecInt32
+{
+ GParamSpecInt parent_instance;
+};
+
+GType gimp_param_int32_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int32 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags);
+
+
+/*
+ * GIMP_TYPE_INT16
+ */
+
+#define GIMP_TYPE_INT16 (gimp_int16_get_type ())
+#define GIMP_VALUE_HOLDS_INT16(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
+ GIMP_TYPE_INT16))
+
+GType gimp_int16_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT16
+ */
+
+#define GIMP_TYPE_PARAM_INT16 (gimp_param_int16_get_type ())
+#define GIMP_PARAM_SPEC_INT16(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT16,
GimpParamSpecInt16))
+#define GIMP_IS_PARAM_SPEC_INT16(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT16))
+
+typedef struct _GimpParamSpecInt16 GimpParamSpecInt16;
+
+struct _GimpParamSpecInt16
+{
+ GParamSpecInt parent_instance;
+};
+
+GType gimp_param_int16_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int16 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags);
+
+
+/*
+ * GIMP_TYPE_INT8
+ */
+
+#define GIMP_TYPE_INT8 (gimp_int8_get_type ())
+#define GIMP_VALUE_HOLDS_INT8(value) (G_TYPE_CHECK_VALUE_TYPE ((value),\
+ GIMP_TYPE_INT8))
+
+GType gimp_int8_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT8
+ */
+
+#define GIMP_TYPE_PARAM_INT8 (gimp_param_int8_get_type ())
+#define GIMP_PARAM_SPEC_INT8(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_INT8,
GimpParamSpecInt8))
+#define GIMP_IS_PARAM_SPEC_INT8(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_INT8))
+
+typedef struct _GimpParamSpecInt8 GimpParamSpecInt8;
+
+struct _GimpParamSpecInt8
+{
+ GParamSpecUInt parent_instance;
+};
+
+GType gimp_param_int8_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int8 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint minimum,
+ guint maximum,
+ guint default_value,
+ GParamFlags flags);
+
+
+/*
+ * GIMP_TYPE_PARAM_STRING
+ */
+
+#define GIMP_TYPE_PARAM_STRING (gimp_param_string_get_type ())
+#define GIMP_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_STRING,
GimpParamSpecString))
+#define GIMP_IS_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_STRING))
+
+typedef struct _GimpParamSpecString GimpParamSpecString;
+
+struct _GimpParamSpecString
+{
+ GParamSpecString parent_instance;
+
+ guint allow_non_utf8 : 1;
+ guint non_empty : 1;
+};
+
+GType gimp_param_string_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_string (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gboolean allow_non_utf8,
+ gboolean null_ok,
+ gboolean non_empty,
+ const gchar *default_value,
+ GParamFlags flags);
+
+
+/*
+ * GIMP_TYPE_ARRAY
+ */
+
+typedef struct _GimpArray GimpArray;
+
+struct _GimpArray
+{
+ guint8 *data;
+ gsize length;
+ gboolean static_data;
+};
+
+GimpArray * gimp_array_new (const guint8 *data,
+ gsize length,
+ gboolean static_data);
+GimpArray * gimp_array_copy (const GimpArray *array);
+void gimp_array_free (GimpArray *array);
+
+#define GIMP_TYPE_ARRAY (gimp_array_get_type ())
+#define GIMP_VALUE_HOLDS_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_ARRAY))
+
+GType gimp_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_ARRAY (gimp_param_array_get_type ())
+#define GIMP_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_ARRAY,
GimpParamSpecArray))
+#define GIMP_IS_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_ARRAY))
+
+typedef struct _GimpParamSpecArray GimpParamSpecArray;
+
+struct _GimpParamSpecArray
+{
+ GParamSpecBoxed parent_instance;
+};
+
+GType gimp_param_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+
+/*
+ * GIMP_TYPE_INT8_ARRAY
+ */
+
+#define GIMP_TYPE_INT8_ARRAY (gimp_int8_array_get_type ())
+#define GIMP_VALUE_HOLDS_INT8_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT8_ARRAY))
+
+GType gimp_int8_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT8_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_INT8_ARRAY (gimp_param_int8_array_get_type ())
+#define GIMP_PARAM_SPEC_INT8_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT8_ARRAY, GimpParamSpecInt8Array))
+#define GIMP_IS_PARAM_SPEC_INT8_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT8_ARRAY))
+
+typedef struct _GimpParamSpecInt8Array GimpParamSpecInt8Array;
+
+struct _GimpParamSpecInt8Array
+{
+ GimpParamSpecArray parent_instance;
+};
+
+GType gimp_param_int8_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int8_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const guint8 * gimp_value_get_int8_array (const GValue *value);
+guint8 * gimp_value_dup_int8_array (const GValue *value);
+void gimp_value_set_int8_array (GValue *value,
+ const guint8 *array,
+ gsize length);
+void gimp_value_set_static_int8_array (GValue *value,
+ const guint8 *array,
+ gsize length);
+void gimp_value_take_int8_array (GValue *value,
+ guint8 *array,
+ gsize length);
+
+
+/*
+ * GIMP_TYPE_INT16_ARRAY
+ */
+
+#define GIMP_TYPE_INT16_ARRAY (gimp_int16_array_get_type ())
+#define GIMP_VALUE_HOLDS_INT16_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT16_ARRAY))
+
+GType gimp_int16_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT16_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_INT16_ARRAY (gimp_param_int16_array_get_type ())
+#define GIMP_PARAM_SPEC_INT16_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT16_ARRAY, GimpParamSpecInt16Array))
+#define GIMP_IS_PARAM_SPEC_INT16_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT16_ARRAY))
+
+typedef struct _GimpParamSpecInt16Array GimpParamSpecInt16Array;
+
+struct _GimpParamSpecInt16Array
+{
+ GimpParamSpecArray parent_instance;
+};
+
+GType gimp_param_int16_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int16_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const gint16 * gimp_value_get_int16_array (const GValue *value);
+gint16 * gimp_value_dup_int16_array (const GValue *value);
+void gimp_value_set_int16_array (GValue *value,
+ const gint16 *array,
+ gsize length);
+void gimp_value_set_static_int16_array (GValue *value,
+ const gint16 *array,
+ gsize length);
+void gimp_value_take_int16_array (GValue *value,
+ gint16 *array,
+ gsize length);
+
+
+/*
+ * GIMP_TYPE_INT32_ARRAY
+ */
+
+#define GIMP_TYPE_INT32_ARRAY (gimp_int32_array_get_type ())
+#define GIMP_VALUE_HOLDS_INT32_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_INT32_ARRAY))
+
+GType gimp_int32_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_INT32_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_INT32_ARRAY (gimp_param_int32_array_get_type ())
+#define GIMP_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_INT32_ARRAY, GimpParamSpecInt32Array))
+#define GIMP_IS_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_INT32_ARRAY))
+
+typedef struct _GimpParamSpecInt32Array GimpParamSpecInt32Array;
+
+struct _GimpParamSpecInt32Array
+{
+ GimpParamSpecArray parent_instance;
+};
+
+GType gimp_param_int32_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_int32_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const gint32 * gimp_value_get_int32_array (const GValue *value);
+gint32 * gimp_value_dup_int32_array (const GValue *value);
+void gimp_value_set_int32_array (GValue *value,
+ const gint32 *array,
+ gsize length);
+void gimp_value_set_static_int32_array (GValue *value,
+ const gint32 *array,
+ gsize length);
+void gimp_value_take_int32_array (GValue *value,
+ gint32 *array,
+ gsize length);
+
+
+/*
+ * GIMP_TYPE_FLOAT_ARRAY
+ */
+
+#define GIMP_TYPE_FLOAT_ARRAY (gimp_float_array_get_type ())
+#define GIMP_VALUE_HOLDS_FLOAT_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_FLOAT_ARRAY))
+
+GType gimp_float_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_FLOAT_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_FLOAT_ARRAY (gimp_param_float_array_get_type ())
+#define GIMP_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_FLOAT_ARRAY, GimpParamSpecFloatArray))
+#define GIMP_IS_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_FLOAT_ARRAY))
+
+typedef struct _GimpParamSpecFloatArray GimpParamSpecFloatArray;
+
+struct _GimpParamSpecFloatArray
+{
+ GimpParamSpecArray parent_instance;
+};
+
+GType gimp_param_float_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_float_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const gdouble * gimp_value_get_float_array (const GValue *value);
+gdouble * gimp_value_dup_float_array (const GValue *value);
+void gimp_value_set_float_array (GValue *value,
+ const gdouble *array,
+ gsize length);
+void gimp_value_set_static_float_array (GValue *value,
+ const gdouble *array,
+ gsize length);
+void gimp_value_take_float_array (GValue *value,
+ gdouble *array,
+ gsize length);
+
+
+/*
+ * GIMP_TYPE_STRING_ARRAY
+ */
+
+GimpArray * gimp_string_array_new (const gchar **data,
+ gsize length,
+ gboolean static_data);
+GimpArray * gimp_string_array_copy (const GimpArray *array);
+void gimp_string_array_free (GimpArray *array);
+
+#define GIMP_TYPE_STRING_ARRAY (gimp_string_array_get_type ())
+#define GIMP_VALUE_HOLDS_STRING_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_STRING_ARRAY))
+
+GType gimp_string_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_STRING_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_STRING_ARRAY (gimp_param_string_array_get_type ())
+#define GIMP_PARAM_SPEC_STRING_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec),
GIMP_TYPE_PARAM_STRING_ARRAY, GimpParamSpecStringArray))
+#define GIMP_IS_PARAM_SPEC_STRING_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec),
GIMP_TYPE_PARAM_STRING_ARRAY))
+
+typedef struct _GimpParamSpecStringArray GimpParamSpecStringArray;
+
+struct _GimpParamSpecStringArray
+{
+ GParamSpecBoxed parent_instance;
+};
+
+GType gimp_param_string_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_string_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const gchar ** gimp_value_get_string_array (const GValue *value);
+gchar ** gimp_value_dup_string_array (const GValue *value);
+void gimp_value_set_string_array (GValue *value,
+ const gchar **array,
+ gsize length);
+void gimp_value_set_static_string_array (GValue *value,
+ const gchar **array,
+ gsize length);
+void gimp_value_take_string_array (GValue *value,
+ gchar **array,
+ gsize length);
+
+
+/*
+ * GIMP_TYPE_RGB_ARRAY
+ */
+
+#define GIMP_TYPE_RGB_ARRAY (gimp_rgb_array_get_type ())
+#define GIMP_VALUE_HOLDS_RGB_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_RGB_ARRAY))
+
+GType gimp_rgb_array_get_type (void) G_GNUC_CONST;
+
+
+/*
+ * GIMP_TYPE_PARAM_RGB_ARRAY
+ */
+
+#define GIMP_TYPE_PARAM_RGB_ARRAY (gimp_param_rgb_array_get_type ())
+#define GIMP_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY,
GimpParamSpecRGBArray))
+#define GIMP_IS_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY))
+
+typedef struct _GimpParamSpecRGBArray GimpParamSpecRGBArray;
+
+struct _GimpParamSpecRGBArray
+{
+ GParamSpecBoxed parent_instance;
+};
+
+GType gimp_param_rgb_array_get_type (void) G_GNUC_CONST;
+
+GParamSpec * gimp_param_spec_rgb_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+
+const GimpRGB * gimp_value_get_rgb_array (const GValue *value);
+GimpRGB * gimp_value_dup_rgb_array (const GValue *value);
+void gimp_value_set_rgb_array (GValue *value,
+ const GimpRGB *array,
+ gsize length);
+void gimp_value_set_static_rgb_array (GValue *value,
+ const GimpRGB *array,
+ gsize length);
+void gimp_value_take_rgb_array (GValue *value,
+ GimpRGB *array,
+ gsize length);
+
+
+G_END_DECLS
+
+#endif /* __GIMP_PARAM_SPECS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]