|
Packit |
bc1512 |
/* gegl-chant contains incantations to that produce the boilerplate
|
|
Packit |
bc1512 |
* needed to write GEGL operation plug-ins. It abstracts away inheritance
|
|
Packit |
bc1512 |
* by giving a limited amount of base classes, and reduced creation of
|
|
Packit |
bc1512 |
* a properties struct and registration of properties for that structure to
|
|
Packit |
bc1512 |
* a minimum amount of code through use of the C preprocessor. You should
|
|
Packit |
bc1512 |
* look at the operations implemented using chanting (they #include this file)
|
|
Packit |
bc1512 |
* to see how it is used in practice.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* GEGL is free software; you can redistribute it and/or
|
|
Packit |
bc1512 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
bc1512 |
* License as published by the Free Software Foundation; either
|
|
Packit |
bc1512 |
* version 3 of the License, or (at your option) any later version.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* GEGL is distributed in the hope that it will be useful,
|
|
Packit |
bc1512 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
bc1512 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
bc1512 |
* Lesser General Public License for more details.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
bc1512 |
* License along with GEGL; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
bc1512 |
*
|
|
Packit |
bc1512 |
* 2006-2008 © Øyvind Kolås.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifndef GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
#error "GEGL_CHANT_C_FILE not defined"
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include <gegl-plugin.h>
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_BEGIN_DECLS
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GType gegl_chant_get_type (void);
|
|
Packit |
bc1512 |
typedef struct _GeglChantO GeglChantO;
|
|
Packit |
bc1512 |
typedef struct _GeglChant GeglChant;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void gegl_chant_register_type (GTypeModule *module);
|
|
Packit |
bc1512 |
static void gegl_chant_init_properties (GeglChant *self);
|
|
Packit |
bc1512 |
static void gegl_chant_class_intern_init (gpointer klass);
|
|
Packit |
bc1512 |
static gpointer gegl_chant_parent_class = NULL;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define GEGL_DEFINE_DYNAMIC_OPERATION(T_P) GEGL_DEFINE_DYNAMIC_OPERATION_EXTENDED (GEGL_CHANT_C_FILE, GeglChant, gegl_chant, T_P, 0, {})
|
|
Packit |
bc1512 |
#define GEGL_DEFINE_DYNAMIC_OPERATION_EXTENDED(C_FILE, TypeName, type_name, TYPE_PARENT, flags, CODE) \
|
|
Packit |
bc1512 |
static void type_name##_init (TypeName *self); \
|
|
Packit |
bc1512 |
static void type_name##_class_init (TypeName##Class *klass); \
|
|
Packit |
bc1512 |
static void type_name##_class_finalize (TypeName##Class *klass); \
|
|
Packit |
bc1512 |
static GType type_name##_type_id = 0; \
|
|
Packit |
bc1512 |
static void type_name##_class_chant_intern_init (gpointer klass) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
gegl_chant_parent_class = g_type_class_peek_parent (klass); \
|
|
Packit |
bc1512 |
type_name##_class_init ((TypeName##Class*) klass); \
|
|
Packit |
bc1512 |
gegl_chant_class_intern_init (klass); \
|
|
Packit |
bc1512 |
} \
|
|
Packit |
bc1512 |
GType \
|
|
Packit |
bc1512 |
type_name##_get_type (void) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
return type_name##_type_id; \
|
|
Packit |
bc1512 |
} \
|
|
Packit |
bc1512 |
static void \
|
|
Packit |
bc1512 |
type_name##_register_type (GTypeModule *type_module) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
gchar tempname[256]; \
|
|
Packit |
bc1512 |
gchar *p; \
|
|
Packit |
bc1512 |
const GTypeInfo g_define_type_info = \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
sizeof (TypeName##Class), \
|
|
Packit |
bc1512 |
(GBaseInitFunc) NULL, \
|
|
Packit |
bc1512 |
(GBaseFinalizeFunc) NULL, \
|
|
Packit |
bc1512 |
(GClassInitFunc) type_name##_class_chant_intern_init, \
|
|
Packit |
bc1512 |
(GClassFinalizeFunc) type_name##_class_finalize, \
|
|
Packit |
bc1512 |
NULL, /* class_data */ \
|
|
Packit |
bc1512 |
sizeof (TypeName), \
|
|
Packit |
bc1512 |
0, /* n_preallocs */ \
|
|
Packit |
bc1512 |
(GInstanceInitFunc) type_name##_init, \
|
|
Packit |
bc1512 |
NULL /* value_table */ \
|
|
Packit |
bc1512 |
}; \
|
|
Packit |
bc1512 |
g_snprintf (tempname, sizeof (tempname), \
|
|
Packit |
bc1512 |
"%s", #TypeName GEGL_CHANT_C_FILE); \
|
|
Packit |
bc1512 |
for (p = tempname; *p; p++) \
|
|
Packit |
bc1512 |
if (*p=='.') *p='_'; \
|
|
Packit |
bc1512 |
\
|
|
Packit |
bc1512 |
type_name##_type_id = g_type_module_register_type (type_module, \
|
|
Packit |
bc1512 |
TYPE_PARENT, \
|
|
Packit |
bc1512 |
tempname, \
|
|
Packit |
bc1512 |
&g_define_type_info, \
|
|
Packit |
bc1512 |
(GTypeFlags) flags); \
|
|
Packit |
bc1512 |
{ CODE ; } \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define GEGL_CHANT_PROPERTIES(op) \
|
|
Packit |
bc1512 |
((GeglChantO *) (((GeglChant *) (op))->properties))
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/****************************************************************************/
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_OPERATION
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperation parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_META
|
|
Packit |
bc1512 |
#include <operation/gegl-operation-meta.h>
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationMeta parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationMetaClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_META)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_SOURCE
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationSource parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationSourceClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_SOURCE)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_SINK
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationSink parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationSinkClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_SINK)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_FILTER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationFilter parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationFilterClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_FILTER)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_COMPOSER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationComposer parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationComposerClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_COMPOSER)
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_COMPOSER3
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationComposer3 parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationComposer3Class parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_COMPOSER3)
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_POINT_FILTER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointFilter parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointFilterClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_POINT_FILTER)
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_POINT_RENDER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointRender parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointRenderClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_POINT_RENDER)
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_TEMPORAL
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationTemporal parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationTemporalClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_TEMPORAL)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_AREA_FILTER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationAreaFilter parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationAreaFilterClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_AREA_FILTER)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_POINT_COMPOSER
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointComposer parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointComposerClass parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_POINT_COMPOSER)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#ifdef GEGL_CHANT_TYPE_POINT_COMPOSER3
|
|
Packit |
bc1512 |
struct _GeglChant
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointComposer3 parent_instance;
|
|
Packit |
bc1512 |
gpointer properties;
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
typedef struct
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglOperationPointComposer3Class parent_class;
|
|
Packit |
bc1512 |
} GeglChantClass;
|
|
Packit |
bc1512 |
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_POINT_COMPOSER3)
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define GEGL_CHANT(obj) ((GeglChant*)(obj))
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/* if GEGL_CHANT_CUSTOM is defined you have to provide the following
|
|
Packit |
bc1512 |
* code or your own implementation of it
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
#ifndef GEGL_CHANT_CUSTOM
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
gegl_chant_init (GeglChant *self)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
gegl_chant_init_properties (self);
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
gegl_chant_class_finalize (GeglChantClass *self)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static const GeglModuleInfo modinfo =
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GEGL_MODULE_ABI_VERSION
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/* prototypes added to silence warnings from gcc for -Wmissing-prototypes*/
|
|
Packit |
bc1512 |
gboolean gegl_module_register (GTypeModule *module);
|
|
Packit |
bc1512 |
const GeglModuleInfo * gegl_module_query (GTypeModule *module);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_MODULE_EXPORT const GeglModuleInfo *
|
|
Packit |
bc1512 |
gegl_module_query (GTypeModule *module)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
return &modinfo;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_MODULE_EXPORT gboolean
|
|
Packit |
bc1512 |
gegl_module_register (GTypeModule *module)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
gegl_chant_register_type (module);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
return TRUE;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#endif
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
struct _GeglChantO
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
gpointer chant_data; /* Unused by the chanting framework can be used by operations
|
|
Packit |
bc1512 |
* for storage of a private struct, (remember to clean up
|
|
Packit |
bc1512 |
* in finalize). Also serves as a filler making sure that we
|
|
Packit |
bc1512 |
* do not create an empty struct if there are no chanted properties.
|
|
Packit |
bc1512 |
*/
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb) gint name;
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) gint name;
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb) gdouble name;
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) gdouble name;
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb) gboolean name;
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) gchar *name;
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb) enum name;
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) gchar *name;
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb) gchar *name;
|
|
Packit |
bc1512 |
#define gegl_chant_object(name,nick, blurb) GObject *name;
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb) gpointer name;
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) GeglColor *name;
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) GeglCurve *name;
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) GeglPath *name;\
|
|
Packit |
bc1512 |
guint path_changed_handler;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define GEGL_CHANT_OPERATION(obj) ((Operation*)(obj))
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
enum
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
PROP_0,
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) PROP_##name,
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) PROP_##name,
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
PROP_LAST
|
|
Packit |
bc1512 |
};
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
get_property (GObject *gobject,
|
|
Packit |
bc1512 |
guint property_id,
|
|
Packit |
bc1512 |
GValue *value,
|
|
Packit |
bc1512 |
GParamSpec *pspec)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglChantO *properties;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
properties = GEGL_CHANT_PROPERTIES(gobject);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
switch (property_id)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_int (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_int (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_double(name,nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_double (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name,nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_double (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_boolean (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_string (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_enum (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_string (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_string (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_object (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_pointer (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_object (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
g_value_set_object (value, properties->name); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (!properties->name)properties->name = gegl_path_new (); /* this feels ugly */\
|
|
Packit |
bc1512 |
g_value_set_object (value, properties->name); \
|
|
Packit |
bc1512 |
break;/*XXX*/
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
default:
|
|
Packit |
bc1512 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, pspec);
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
properties ++; /* evil hack to silence gcc */
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
set_property (GObject *gobject,
|
|
Packit |
bc1512 |
guint property_id,
|
|
Packit |
bc1512 |
const GValue *value,
|
|
Packit |
bc1512 |
GParamSpec *pspec)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglChantO *properties;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
properties = GEGL_CHANT_PROPERTIES(gobject);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
switch (property_id)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_int (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_int (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_double (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_double (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_boolean (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_strdup (g_value_get_string (value)); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_enum (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_strdup (g_value_get_string (value)); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_strdup (g_value_get_string (value)); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name != NULL) \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_value_dup_object (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
properties->name = g_value_get_pointer (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name != NULL) \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_value_dup_object (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name != NULL) \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = g_value_dup_object (value); \
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) \
|
|
Packit |
bc1512 |
case PROP_##name: \
|
|
Packit |
bc1512 |
if (properties->name != NULL) \
|
|
Packit |
bc1512 |
{\
|
|
Packit |
bc1512 |
if (properties->path_changed_handler) \
|
|
Packit |
bc1512 |
g_signal_handler_disconnect (G_OBJECT (properties->name), properties->path_changed_handler);\
|
|
Packit |
bc1512 |
properties->path_changed_handler = 0;\
|
|
Packit |
bc1512 |
} \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
if (g_value_peek_pointer (value)) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
properties->name = g_value_dup_object (value); \
|
|
Packit |
bc1512 |
properties->path_changed_handler = g_signal_connect (G_OBJECT (properties->name), "changed", \
|
|
Packit |
bc1512 |
G_CALLBACK(path_changed), gobject); \
|
|
Packit |
bc1512 |
}\
|
|
Packit |
bc1512 |
break; /*XXX*/
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
default:
|
|
Packit |
bc1512 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, pspec);
|
|
Packit |
bc1512 |
break;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
properties ++; /* evil hack to silence gcc */
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void gegl_chant_destroy_notify (gpointer data)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GeglChantO *properties = GEGL_CHANT_PROPERTIES (data);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb)\
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_free (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{\
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) \
|
|
Packit |
bc1512 |
if (properties->name) \
|
|
Packit |
bc1512 |
{ \
|
|
Packit |
bc1512 |
g_object_unref (properties->name); \
|
|
Packit |
bc1512 |
properties->name = NULL; \
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
g_slice_free (GeglChantO, properties);
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static GObject *
|
|
Packit |
bc1512 |
gegl_chant_constructor (GType type,
|
|
Packit |
bc1512 |
guint n_construct_properties,
|
|
Packit |
bc1512 |
GObjectConstructParam *construct_properties)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GObject *obj;
|
|
Packit |
bc1512 |
GeglChantO *properties;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
obj = G_OBJECT_CLASS (gegl_chant_parent_class)->constructor (
|
|
Packit |
bc1512 |
type, n_construct_properties, construct_properties);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
/* create dummy colors and vectors */
|
|
Packit |
bc1512 |
properties = GEGL_CHANT_PROPERTIES (obj);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
if (properties->name == NULL) \
|
|
Packit |
bc1512 |
{properties->name = gegl_color_new(def?def:"black");}
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb)
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb)
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
g_object_set_data_full (obj, "chant-data", obj, gegl_chant_destroy_notify);
|
|
Packit |
bc1512 |
properties ++; /* evil hack to silence gcc */
|
|
Packit |
bc1512 |
return obj;
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
gegl_chant_class_intern_init (gpointer klass)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
object_class->set_property = set_property;
|
|
Packit |
bc1512 |
object_class->get_property = get_property;
|
|
Packit |
bc1512 |
object_class->constructor = gegl_chant_constructor;
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#define gegl_chant_int(name, nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_int (#name, nick, blurb, \
|
|
Packit |
bc1512 |
min, max, def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_int_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_int (#name, nick, blurb, \
|
|
Packit |
bc1512 |
min, max, def, ui_min, ui_max, ui_gamma, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_double(name, nick, min, max, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_double (#name, nick, blurb, \
|
|
Packit |
bc1512 |
min, max, def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_double_ui(name, nick, min, max, def, ui_min, ui_max, ui_gamma, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_double (#name, nick, blurb, \
|
|
Packit |
bc1512 |
min, max, def, ui_min, ui_max, ui_gamma, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_boolean(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_boolean (#name, nick, blurb, \
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_string(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_string (#name, nick, blurb, \
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_enum(name, nick, enum, type, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_enum (#name, nick, blurb, \
|
|
Packit |
bc1512 |
type, \
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_file_path(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_file_path (#name, nick, blurb, \
|
|
Packit |
bc1512 |
FALSE, FALSE, \
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_multiline(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_multiline (#name, nick, blurb, \
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_object(name, nick, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_object (#name, nick, blurb, \
|
|
Packit |
bc1512 |
G_TYPE_OBJECT, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_pointer(name, nick, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
g_param_spec_pointer (#name, nick, blurb, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE | \
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_color(name, nick, def, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_color_from_string (#name, nick, blurb,\
|
|
Packit |
bc1512 |
def, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE |\
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT | \
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_path(name, nick, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_path (#name, nick, blurb,\
|
|
Packit |
bc1512 |
NULL, \
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE |\
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT |\
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
#define gegl_chant_curve(name, nick, blurb) \
|
|
Packit |
bc1512 |
g_object_class_install_property (object_class, PROP_##name, \
|
|
Packit |
bc1512 |
gegl_param_spec_curve (#name, nick, blurb,\
|
|
Packit |
bc1512 |
gegl_curve_default_curve(),\
|
|
Packit |
bc1512 |
(GParamFlags) ( \
|
|
Packit |
bc1512 |
G_PARAM_READWRITE |\
|
|
Packit |
bc1512 |
G_PARAM_CONSTRUCT |\
|
|
Packit |
bc1512 |
GEGL_PARAM_PAD_INPUT)));
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#include GEGL_CHANT_C_FILE
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
#undef gegl_chant_int
|
|
Packit |
bc1512 |
#undef gegl_chant_int_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_double
|
|
Packit |
bc1512 |
#undef gegl_chant_double_ui
|
|
Packit |
bc1512 |
#undef gegl_chant_boolean
|
|
Packit |
bc1512 |
#undef gegl_chant_string
|
|
Packit |
bc1512 |
#undef gegl_chant_enum
|
|
Packit |
bc1512 |
#undef gegl_chant_file_path
|
|
Packit |
bc1512 |
#undef gegl_chant_multiline
|
|
Packit |
bc1512 |
#undef gegl_chant_object
|
|
Packit |
bc1512 |
#undef gegl_chant_pointer
|
|
Packit |
bc1512 |
#undef gegl_chant_color
|
|
Packit |
bc1512 |
#undef gegl_chant_curve
|
|
Packit |
bc1512 |
#undef gegl_chant_path
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
static void
|
|
Packit |
bc1512 |
gegl_chant_init_properties (GeglChant *self)
|
|
Packit |
bc1512 |
{
|
|
Packit |
bc1512 |
self->properties = g_slice_new0 (GeglChantO);
|
|
Packit |
bc1512 |
}
|
|
Packit |
bc1512 |
|
|
Packit |
bc1512 |
G_END_DECLS
|
|
Packit |
bc1512 |
/****************************************************************************/
|