operations/external: port to gegl-op.h

parent dfc204e0
......@@ -777,7 +777,7 @@ gegl_op_class_intern_init (gpointer klass)
gboolean G_GNUC_UNUSED ui_range_set = FALSE;
gboolean G_GNUC_UNUSED ui_steps_set = FALSE;
gboolean G_GNUC_UNUSED ui_digits_set = FALSE;
GParamFlags flags G_GNUC_UNUSED = G_PARAM_READWRITE | G_PARAM_CONSTRUCT | GEGL_PARAM_PAD_INPUT;
GParamFlags flags G_GNUC_UNUSED = (GParamFlags)(G_PARAM_READWRITE | G_PARAM_CONSTRUCT | GEGL_PARAM_PAD_INPUT);
object_class->set_property = set_property;
object_class->get_property = get_property;
......
......@@ -18,17 +18,18 @@
* Copyright 2006 Dominik Ernst <dernst@gmx.de>
*/
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, "File", "", "Path of file to load.")
property_file_path (path, "File", "")
description ("Path of file to load.")
#else
#define GEGL_CHANT_TYPE_SOURCE
#define GEGL_CHANT_C_FILE "exr-load.cpp"
#define GEGL_OP_SOURCE
#define GEGL_OP_C_FILE "exr-load.cpp"
extern "C" {
#include "gegl-chant.h"
#include "gegl-op.h"
}
#include <ImfInputFile.h>
......@@ -617,7 +618,7 @@ query_exr (const gchar *path,
static GeglRectangle
get_bounding_box (GeglOperation *operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglRectangle result = {0, 0, 10, 10};
gint w, h, ff;
gpointer format;
......@@ -638,7 +639,7 @@ process (GeglOperation *operation,
const GeglRectangle *result,
int level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
gint w,h,ff;
gpointer format;
gboolean ok;
......@@ -665,7 +666,7 @@ get_cached_region (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSourceClass *source_class;
......
......@@ -20,17 +20,21 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, _("File"), "", _("Path of video file to load"))
gegl_chant_int (frame, _("Frame"), 0, 1000000, 0, _("Frame number"))
property_file_path (path, _("File"), "")
description (_("Path of video file to load"))
property_int (frame, _("Frame number"), 0)
value_range (0, G_MAXINT)
ui_range (0, 10000)
#else
#define GEGL_CHANT_TYPE_SOURCE
#define GEGL_CHANT_C_FILE "ff-load.c"
#define GEGL_OP_SOURCE
#define GEGL_OP_C_FILE "ff-load.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <errno.h>
#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
......@@ -97,15 +101,15 @@ print_error (const char *filename, int err)
}
static void
init (GeglChantO *o)
init (GeglProperties *o)
{
static gint inited = 0; /*< this is actually meant to be static, only to be done once */
Priv *p = (Priv*)o->chant_data;
Priv *p = (Priv*)o->user_data;
if (p==NULL)
{
p = g_new0 (Priv, 1);
o->chant_data = (void*) p;
o->user_data = (void*) p;
}
p->width = 320;
......@@ -124,9 +128,9 @@ init (GeglChantO *o)
/* FIXME: probably some more stuff to free here */
static void
ff_cleanup (GeglChantO *o)
ff_cleanup (GeglProperties *o)
{
Priv *p = (Priv*)o->chant_data;
Priv *p = (Priv*)o->user_data;
if (p)
{
if (p->codec_name)
......@@ -163,8 +167,8 @@ static int
decode_frame (GeglOperation *operation,
glong frame)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
Priv *p = (Priv*)o->chant_data;
GeglProperties *o = GEGL_PROPERTIES (operation);
Priv *p = (Priv*)o->user_data;
glong prevframe = p->prevframe;
glong decodeframe; /*< frame to be requested decoded */
......@@ -252,14 +256,14 @@ decode_frame (GeglOperation *operation,
static void
prepare (GeglOperation *operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
Priv *p = (Priv*)o->chant_data;
GeglProperties *o = GEGL_PROPERTIES (operation);
Priv *p = (Priv*)o->user_data;
if (p == NULL)
init (o);
p = (Priv*)o->chant_data;
p = (Priv*)o->user_data;
g_assert (o->chant_data != NULL);
g_assert (o->user_data != NULL);
gegl_operation_set_format (operation, "output", babl_format ("R'G'B'A u8"));
......@@ -355,7 +359,7 @@ static GeglRectangle
get_bounding_box (GeglOperation *operation)
{
GeglRectangle result = {0,0,320,200};
Priv *p = (Priv*)GEGL_CHANT_PROPERTIES (operation)->chant_data;
Priv *p = (Priv*)GEGL_PROPERTIES (operation)->user_data;
result.width = p->width;
result.height = p->height;
return result;
......@@ -367,8 +371,8 @@ process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
Priv *p = (Priv*)o->chant_data;
GeglProperties *o = GEGL_PROPERTIES (operation);
Priv *p = (Priv*)o->user_data;
{
if (p->ic && !decode_frame (operation, o->frame))
......@@ -425,21 +429,21 @@ process (GeglOperation *operation,
static void
finalize (GObject *object)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (object);
GeglProperties *o = GEGL_PROPERTIES (object);
if (o->chant_data)
if (o->user_data)
{
Priv *p = (Priv*)o->chant_data;
Priv *p = (Priv*)o->user_data;
g_free (p->loadedfilename);
g_free (p->fourcc);
g_free (p->codec_name);
g_free (o->chant_data);
o->chant_data = NULL;
g_free (o->user_data);
o->user_data = NULL;
}
G_OBJECT_CLASS (gegl_chant_parent_class)->finalize (object);
G_OBJECT_CLASS (gegl_op_parent_class)->finalize (object);
}
static GeglRectangle
......@@ -450,7 +454,7 @@ get_cached_region (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSourceClass *source_class;
......
......@@ -20,16 +20,17 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, _("File"), "", _("Path of file to load"))
property_file_path (path, _("File"), "")
description (_("Path of file to load"))
#else
#define GEGL_CHANT_TYPE_SOURCE
#define GEGL_CHANT_C_FILE "jp2-load.c"
#define GEGL_OP_SOURCE
#define GEGL_OP_C_FILE "jp2-load.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <stdio.h>
#include <jasper/jasper.h>
......@@ -170,7 +171,7 @@ process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglRectangle rect = {0,0,0,0};
jas_image_t *image;
gint width, height, depth;
......@@ -339,7 +340,7 @@ process (GeglOperation *operation,
static GeglRectangle
get_bounding_box (GeglOperation * operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglRectangle result = { 0, 0, 0, 0 };
gint width, height, depth;
......@@ -378,7 +379,7 @@ get_cached_region (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSourceClass *source_class;
......
......@@ -20,16 +20,17 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, _("File"), "", _("Path of file to load"))
property_file_path (path, _("File"), "")
description (_("Path of file to load"))
#else
#define GEGL_CHANT_TYPE_SOURCE
#define GEGL_CHANT_C_FILE "jpg-load.c"
#define GEGL_OP_SOURCE
#define GEGL_OP_C_FILE "jpg-load.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <stdio.h>
#include <jpeglib.h>
......@@ -141,7 +142,7 @@ gegl_jpg_load_buffer_import_jpg (GeglBuffer *gegl_buffer,
static GeglRectangle
gegl_jpg_load_get_bounding_box (GeglOperation *operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
gint width, height, components;
gint status;
status = gegl_jpg_load_query_jpg (o->path, &width, &height, &components);
......@@ -168,7 +169,7 @@ gegl_jpg_load_process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
if (gegl_jpg_load_buffer_import_jpg (output, o->path, 0, 0))
{
......@@ -189,7 +190,7 @@ gegl_jpg_load_get_cached_region (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSourceClass *source_class;
......
......@@ -20,27 +20,32 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
gegl_chant_file_path (path, _("File"), "",
_("Target path and filename, use '-' for stdout"))
gegl_chant_int (quality, _("Quality"), 1, 100, 90,
_("JPEG compression quality (between 1 and 100)"))
gegl_chant_int (smoothing, _("Smoothing"),
0, 100, 0, _("Smoothing factor from 1 to 100; 0 disables smoothing"))
gegl_chant_boolean (optimize, _("Optimize"), TRUE,
_("Use optimized huffman tables"))
gegl_chant_boolean (progressive, _("Progressive"), TRUE,
_("Create progressive JPEG images"))
gegl_chant_boolean (grayscale, _("Grayscale"), FALSE,
_("Create a grayscale (monochrome) image"))
#ifdef GEGL_PROPERTIES
property_file_path (path, _("File"), "")
description (_("Target path and filename, use '-' for stdout"))
property_int (quality, _("Quality"), 90)
description (_("JPEG compression quality (between 1 and 100)"))
value_range (1, 100)
property_int (smoothing, _("Smoothing"), 0)
description(_("Smoothing factor from 1 to 100; 0 disables smoothing"))
value_range (0, 100)
property_boolean (optimize, _("Optimize"), TRUE)
description (_("Use optimized huffman tables"))
property_boolean (progressive, _("Progressive"), TRUE)
description (_("Create progressive JPEG images"))
property_boolean (grayscale, _("Grayscale"), FALSE)
description (_("Create a grayscale (monochrome) image"))
#else
#define GEGL_CHANT_TYPE_SINK
#define GEGL_CHANT_C_FILE "jpg-save.c"
#define GEGL_OP_SINK
#define GEGL_OP_C_FILE "jpg-save.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <stdio.h>
#include <jpeglib.h>
......@@ -163,7 +168,7 @@ gegl_jpg_save_process (GeglOperation *operation,
const GeglRectangle *result,
int level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
gegl_buffer_export_jpg (input, o->path, o->quality, o->smoothing,
o->optimize, o->progressive, o->grayscale,
......@@ -174,7 +179,7 @@ gegl_jpg_save_process (GeglOperation *operation,
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSinkClass *sink_class;
......
......@@ -19,35 +19,36 @@
#include "config.h"
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_pointer (src_profile, _("Source Profile"),
property_pointer (src_profile, _("Source Profile"),
_("The cmsHPROFILE corresponding to the icc profile for "
"the input data."))
/* These are positioned so their values match up with the LCMS enum */
gegl_chant_register_enum (gegl_rendering_intent)
enum_start (gegl_rendering_intent)
enum_value (GEGL_RENDERING_INTENT_PERCEPTUAL, "Perceptual")
enum_value (GEGL_RENDERING_INTENT_RELATIVE_COLORIMETRIC, "Relative Colorimetric")
enum_value (GEGL_RENDERING_INTENT_SATURATION, "Saturation")
enum_value (GEGL_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC, "Absolute Colorimetric")
/* TODO: Add the K_ONLY and K_PLANE intents */
gegl_chant_register_enum_end (GeglRenderingIntent)
enum_end (GeglRenderingIntent)
gegl_chant_enum (intent, _("Rendering Intent"),
property_enum (intent, _("Rendering Intent"),
GeglRenderingIntent, gegl_rendering_intent,
GEGL_RENDERING_INTENT_PERCEPTUAL,
_("The rendering intent to use in the conversion."))
GEGL_RENDERING_INTENT_PERCEPTUAL)
description(_("The rendering intent to use in the conversion."))
gegl_chant_boolean (black_point_compensation, _("Black Point Compensation"),
FALSE, _("Convert using black point compensation."))
property_boolean (black_point_compensation, _("Black Point Compensation"),
FALSE)
description (_("Convert using black point compensation."))
#else
#define GEGL_CHANT_TYPE_FILTER
#define GEGL_CHANT_C_FILE "lcms-from-profile.c"
#define GEGL_OP_FILTER
#define GEGL_OP_C_FILE "lcms-from-profile.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <lcms2.h>
static void prepare (GeglOperation *operation)
......@@ -128,7 +129,7 @@ process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
cmsHTRANSFORM transform;
const Babl *in_format, *out_format;
......@@ -200,10 +201,10 @@ operation_process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglOperationClass *operation_class;
operation_class = GEGL_OPERATION_CLASS (gegl_chant_parent_class);
operation_class = GEGL_OPERATION_CLASS (gegl_op_parent_class);
/* If the profile is NULL, simply become a nop */
if (!o->src_profile)
......@@ -219,7 +220,7 @@ operation_process (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationFilterClass *filter_class;
......
......@@ -21,30 +21,30 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
gegl_chant_int (epsilon, _("Epsilon"),
#ifdef GEGL_PROPERTIES
property_int (epsilon, _("Epsilon"),
-9, -1, -6,
_("Log of the error weighting"))
gegl_chant_int (radius, _("Radius"),
property_int (radius, _("Radius"),
1, 3, 1,
_("Radius of the processing window"))
gegl_chant_double (threshold, _("Threshold"),
property_double (threshold, _("Threshold"),
0.0, 0.1, 0.02,
_("Alpha threshold for multilevel processing"))
gegl_chant_double (lambda, _("Lambda"),
property_double (lambda, _("Lambda"),
0.0, 100.0, 100.0, _("Trimap influence factor"))
gegl_chant_int (levels, _("Levels"),
property_int (levels, _("Levels"),
0, 8, 4,
_("Number of downsampled levels to use"))
gegl_chant_int (active_levels, _("Active Levels"),
property_int (active_levels, _("Active Levels"),
0, 8, 2,
_("Number of levels to perform solving"))
#else
#define GEGL_CHANT_TYPE_COMPOSER
#define GEGL_CHANT_C_FILE "matting-levin.c"
#define GEGL_OP_COMPOSER
#define GEGL_OP_C_FILE "matting-levin.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include "gegl-debug.h"
#include <stdlib.h>
......@@ -1387,7 +1387,7 @@ matting_process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
const GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
const GeglProperties *o = GEGL_PROPERTIES (operation);
gdouble *input = NULL,
*trimap = NULL;
gdouble *output = NULL;
......@@ -1427,7 +1427,7 @@ matting_process (GeglOperation *operation,
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationComposerClass *composer_class;
......
......@@ -26,17 +26,17 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, _("File"), "",
_("Target path and filename, use '-' for stdout."))
property_file_path (path, _("File"), "")
description (_("Target path and filename, use '-' for stdout."))
#else
#define GEGL_CHANT_TYPE_SINK
#define GEGL_CHANT_C_FILE "npy-save.c"
#define GEGL_OP_SINK
#define GEGL_OP_C_FILE "npy-save.c"
#include "gegl-chant.h"
#include "gegl-op.h"
#include <stdio.h>
static int npywrite_header(FILE *fp, int width, int height, int num_channels)
......@@ -71,7 +71,7 @@ process (GeglOperation *operation,
const GeglRectangle *rect,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
FILE *fp;
guchar *data;
......@@ -126,7 +126,7 @@ process (GeglOperation *operation,
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
GeglOperationClass *operation_class;
GeglOperationSinkClass *sink_class;
......
......@@ -18,15 +18,17 @@
*/
#include "config.h"
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
gegl_chant_file_path (path, "File", "", "Path of file to load.")
property_file_path (path, "File", "")
description (_("Path of file to load."))
#else
#include "gegl-plugin.h"
struct _GeglChant
struct _GeglOp
{
GeglOperationSource parent_instance;
gpointer properties;
......@@ -37,10 +39,10 @@ struct _GeglChant
typedef struct
{
GeglOperationSourceClass parent_class;
} GeglChantClass;
} GeglOpClass;
#define GEGL_CHANT_C_FILE "openraw.c"
#include "gegl-chant.h"
#define GEGL_OP_C_FILE "openraw.c"
#include "gegl-op.h"
GEGL_DEFINE_DYNAMIC_OPERATION(GEGL_TYPE_OPERATION_SOURCE)
#include <stdio.h>
......@@ -60,14 +62,14 @@ destroy_rawdata (void * rawdata)
static void
free_buffer (GeglOperation * operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglChant *self = GEGL_CHANT(operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglOp *self = GEGL_OP(operation);
if (o->chant_data)
if (o->user_data)
{
g_assert (self->cached_path);
g_object_unref (o->chant_data);
o->chant_data = NULL;
g_object_unref (o->user_data);
o->user_data = NULL;
}
if (self->cached_path)
......@@ -85,8 +87,8 @@ free_buffer (GeglOperation * operation)
static GeglBuffer *
load_buffer (GeglOperation *operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglChant *self = GEGL_CHANT(operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
GeglOp *self = GEGL_OP(operation);
ORRawDataRef rawdata;
ORRawFileRef rawfile;
......@@ -97,9 +99,9 @@ load_buffer (GeglOperation *operation)
free_buffer(operation);
}
if (o->chant_data)
if (o->user_data)
{
return o->chant_data;
return o->user_data;
}
g_assert (self->cached_path == NULL);
......@@ -132,8 +134,8 @@ load_buffer (GeglOperation *operation)
extent.width = width;
extent.height = height;
g_assert (o->chant_data == NULL);
o->chant_data = gegl_buffer_linear_new_from_data(data,
g_assert (o->user_data == NULL);
o->user_data = gegl_buffer_linear_new_from_data(data,
babl_format ("Y u16"),
&extent,
GEGL_AUTO_ROWSTRIDE,
......@@ -146,7 +148,7 @@ load_buffer (GeglOperation *operation)
clean_file:
or_rawfile_release(rawfile);
return o->chant_data;
return o->user_data;
}
......@@ -160,14 +162,14 @@ prepare (GeglOperation *operation)
static GeglRectangle
get_bounding_box (GeglOperation *operation)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
if (!load_buffer (operation))
{
GeglRectangle nullrect = { 0, 0, 0, 0 };
return nullrect;
}
return *gegl_buffer_get_extent (o->chant_data);
return *gegl_buffer_get_extent (o->user_data);
}
......@@ -186,7 +188,7 @@ process (GeglOperation *operation,
const GeglRectangle *result,
gint level)
{
GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
GeglProperties *o = GEGL_PROPERTIES (operation);
g_assert (g_str_equal (output_pad, "output"));
if (!load_buffer (operation))
......@@ -199,9 +201,9 @@ process (GeglOperation *operation,
* we continue to service metadata calls after giving the object to the
* context.
*/
g_assert(o->chant_data);
gegl_operation_context_take_object (context, "output", G_OBJECT (o->chant_data));
g_object_ref (G_OBJECT (o->chant_data));
g_assert(o->user_data);
gegl_operation_context_take_object (context, "output", G_OBJECT (o->user_data));
g_object_ref (G_OBJECT (o->user_data));
return TRUE;
}
......@@ -214,12 +216,12 @@ finalize (GObject *object)
{
free_buffer (GEGL_OPERATION (object));
G_OBJECT_CLASS (gegl_chant_parent_class)->finalize (object);
G_OBJECT_CLASS (gegl_op_parent_class)->finalize (object);
}
static void
gegl_chant_class_init (GeglChantClass *klass)
gegl_op_class_init (GeglOpClass *klass)
{
static gboolean done = FALSE;
......
......@@ -21,39 +21,43 @@
#include <glib/gi18n-lib.h>
#ifdef GEGL_CHANT_PROPERTIES
#ifdef GEGL_PROPERTIES
property_color (fill, _("Fill Color"), "rgba(0.0,0.0,0.0,0.6)")
description(_("Color of paint to use for filling, use 0 opacity to disable filling"))
gegl_chant_color (fill, _("Fill Color"), "rgba(0.0,0.0,0.0,0.6)",
_("Color of paint to use for filling, use 0 opacity to disable filling"))
gegl_chant_color (stroke, _("Stroke Color"), "rgba(0.0,0.0,0.0,0.0)",
_("Color of paint to use for stroking"))
property_color (stroke, _("Stroke Color"), "rgba(0.0,0.0,0.0,0.0)")
description(_("Color of paint to use for stroking"))
gegl_chant_double (stroke_width,_("Stroke width"), 0.0, 200.0, 2.0,
_("The width of the brush used to stroke the path"))
property_double (stroke_width,_("Stroke width"), 2.0)
description (_("The width of the brush used to stroke the path"))
value_range (0.0, 200.0)
gegl_chant_double (stroke_opacity, _("Stroke opacity"), -2.0, 2.0, 1.0,
_("Opacity of stroke, note, does not behave like SVG since at the moment stroking is done using an airbrush tool"))
property_double (stroke_opacity, _("Stroke opacity"), 1.0)
description (_("Opacity of stroke, note, does not behave like SVG since at the moment stroking is done using an airbrush tool"))
value_range (-2.0, 2.0)
gegl_chant_double (stroke_hardness, _("Hardness"), 0.0, 1.0, 0.6,