Commit 2ebe04cd authored by Øyvind Kolås's avatar Øyvind Kolås

Removed fast path optimizations that are unneeded now that the core

itself avoids processing nodes whose result rectangles have zero
extent.
* operations/blur/box-blur.c:
* operations/blur/gaussian-blur.c:
* operations/color/remap.c:
* operations/color/stretch-contrast.c:
* operations/workshop/bilateral-filter.c:
* operations/workshop/box-max.c:
* operations/workshop/box-min.c:
* operations/workshop/box-percentile.c:
* operations/workshop/c2g.c:
* operations/workshop/contrast-curve.c:
* operations/workshop/demosaic-simple.c:
* operations/workshop/difference-of-gaussians.c:
* operations/workshop/disc-percentile.c:
* operations/workshop/gluas.c:
* operations/workshop/grey.c:
* operations/workshop/gtk-display.c:
* operations/workshop/hstack.c:
* operations/workshop/kuwahara-max.c:
* operations/workshop/kuwahara-min.c:
* operations/workshop/kuwahara-switch.c:
* operations/workshop/kuwahara.c:
* operations/workshop/line-profile.c:
* operations/workshop/mandelbrot.c:
* operations/workshop/max-envelope.c:
* operations/workshop/mblur.c:
* operations/workshop/min-envelope.c:
* operations/workshop/mono-mixer.c:
* operations/workshop/rawbayer-load.c:
* operations/workshop/snn-mean.c:
* operations/workshop/snn-percentile.c:
* operations/workshop/stress.c:

svn path=/trunk/; revision=1498
parent c0028dbb
2007-05-23 Øyvind Kolås <pippin@gimp.org>
Removed fast path optimizations that are unneeded now that the core
itself avoids processing nodes whose result rectangles have zero
extent.
* operations/blur/box-blur.c:
* operations/blur/gaussian-blur.c:
* operations/color/remap.c:
* operations/color/stretch-contrast.c:
* operations/workshop/bilateral-filter.c:
* operations/workshop/box-max.c:
* operations/workshop/box-min.c:
* operations/workshop/box-percentile.c:
* operations/workshop/c2g.c:
* operations/workshop/contrast-curve.c:
* operations/workshop/demosaic-simple.c:
* operations/workshop/difference-of-gaussians.c:
* operations/workshop/disc-percentile.c:
* operations/workshop/gluas.c:
* operations/workshop/grey.c:
* operations/workshop/gtk-display.c:
* operations/workshop/hstack.c:
* operations/workshop/kuwahara-max.c:
* operations/workshop/kuwahara-min.c:
* operations/workshop/kuwahara-switch.c:
* operations/workshop/kuwahara.c:
* operations/workshop/line-profile.c:
* operations/workshop/mandelbrot.c:
* operations/workshop/max-envelope.c:
* operations/workshop/mblur.c:
* operations/workshop/min-envelope.c:
* operations/workshop/mono-mixer.c:
* operations/workshop/rawbayer-load.c:
* operations/workshop/snn-mean.c:
* operations/workshop/snn-percentile.c:
* operations/workshop/stress.c:
2007-05-22 Øyvind Kolås <pippin@gimp.org>
* gegl/gegl-operation.c: (gegl_operation_process): bail out early if
......
......@@ -24,12 +24,14 @@ gegl_chant_double (radius, 0.0, 200.0, 4.0,
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME box_blur
#define GEGL_CHANT_DESCRIPTION "Performs an averaging of a square box of pixels."
#define GEGL_CHANT_SELF "box-blur.c"
#define GEGL_CHANT_DESCRIPTION "Performs an averaging of a square box of pixels."
#define GEGL_CHANT_CATEGORIES "blur"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
static void hor_blur (GeglBuffer *src,
......@@ -62,8 +64,7 @@ process (GeglOperation *operation,
GeglBuffer *temp_in;
GeglBuffer *temp;
if (result->width ==0 ||
result->height==0)
if (self->radius < 0.5)
{
output = g_object_ref (input);
}
......
......@@ -34,11 +34,12 @@ gegl_chant_string (filter, NULL,
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME gaussian_blur
#define GEGL_CHANT_DESCRIPTION "Performs an averaging of neighbouring pixels with the normal distribution as weighting."
#define GEGL_CHANT_SELF "gaussian-blur.c"
#define GEGL_CHANT_DESCRIPTION "Performs an averaging of neighbouring pixels with the normal distribution as weighting."
#define GEGL_CHANT_CATEGORIES "blur"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
......@@ -100,7 +101,7 @@ process (GeglOperation *operation,
GeglRectangle need = get_source_rect (operation, context_id);
if (result->width ==0 || result->height ==0 || (!self->std_dev_x && !self->std_dev_y))
if (self->std_dev_x<0.00001 && self->std_dev_y<0.00001)
{
output = g_object_ref (input);
}
......
......@@ -154,53 +154,43 @@ process (GeglOperation *operation,
{
GeglRectangle *result = gegl_operation_result_rect (operation, context_id);
gfloat *buf;
gfloat *min;
gfloat *max;
gint pixels = result->width * result->height;
gint i;
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
gegl_operation_set_data (operation, context_id, "output", G_OBJECT (output));
}
else
{
gfloat *buf;
gfloat *min;
gfloat *max;
gint pixels = result->width * result->height;
gint i;
buf = g_malloc (pixels * sizeof (gfloat) * 4);
min = g_malloc (pixels * sizeof (gfloat) * 3);
max = g_malloc (pixels * sizeof (gfloat) * 3);
buf = g_malloc (pixels * sizeof (gfloat) * 4);
min = g_malloc (pixels * sizeof (gfloat) * 3);
max = g_malloc (pixels * sizeof (gfloat) * 3);
gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"), buf);
gegl_buffer_get (low, result, 1.0, babl_format ("RGB float"), min);
gegl_buffer_get (high, result, 1.0, babl_format ("RGB float"), max);
gegl_buffer_get (input, result, 1.0, babl_format ("RGBA float"), buf);
gegl_buffer_get (low, result, 1.0, babl_format ("RGB float"), min);
gegl_buffer_get (high, result, 1.0, babl_format ("RGB float"), max);
output = GEGL_BUFFER (gegl_operation_get_target (operation, context_id, "output"));
output = GEGL_BUFFER (gegl_operation_get_target (operation, context_id, "output"));
for (i=0;i<pixels;i++)
for (i=0;i<pixels;i++)
{
gint c;
for (c=0;c<3;c++)
{
gint c;
for (c=0;c<3;c++)
gfloat delta = max[i*3+c]-min[i*3+c];
if (delta > 0.0001 || delta < -0.0001)
{
gfloat delta = max[i*3+c]-min[i*3+c];
if (delta > 0.0001 || delta < -0.0001)
{
buf[i*4+c] = (buf[i*4+c]-min[i*3+c]) / delta;
}
/*else
buf[i*4+c] = buf[i*4+c];*/
}
}
gegl_buffer_set (output, result, babl_format ("RGBA float"), buf);
g_free (buf);
g_free (min);
g_free (max);
buf[i*4+c] = (buf[i*4+c]-min[i*3+c]) / delta;
}
/*else
buf[i*4+c] = buf[i*4+c];*/
}
}
gegl_buffer_set (output, result, babl_format ("RGBA float"), buf);
g_free (buf);
g_free (min);
g_free (max);
}
return TRUE;
}
......
......@@ -94,13 +94,6 @@ process (GeglOperation *operation,
result = gegl_operation_get_requested_region (operation, context_id);
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
return TRUE;
}
buffer_get_min_max (input, &min, &max);
output = GEGL_BUFFER (gegl_operation_get_target (operation, context_id, "output"));
......
......@@ -28,11 +28,12 @@ gegl_chant_double (edge_preservation, 0.0, 70.0, 8.0, "Amount of edge preservati
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME bilateral_filter
#define GEGL_CHANT_DESCRIPTION "An edge preserving blur filter that can be used for noise reduction. It is a gaussian blur where the contribution of neighbourhood pixels are weighted by the color difference from the center pixel."
#define GEGL_CHANT_SELF "bilateral-filter.c"
#define GEGL_CHANT_DESCRIPTION "An edge preserving blur filter that can be used for noise reduction. It is a gaussian blur where the contribution of neighbourhood pixels are weighted by the color difference from the center pixel."
#define GEGL_CHANT_CATEGORIES "misc"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
#include <math.h>
......@@ -72,9 +73,7 @@ process (GeglOperation *operation,
need.width +=self->blur_radius*2;
need.height +=self->blur_radius*2;
if (result->width == 0 ||
result->height== 0 ||
self->blur_radius < 1.0)
if (self->blur_radius < 1.0)
{
output = g_object_ref (input);
}
......
......@@ -24,11 +24,12 @@ gegl_chant_double (radius, 0.0, 200.0, 4.0,
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME box_max
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the value of the maximum value in a box surrounding the pixel."
#define GEGL_CHANT_SELF "box-max.c"
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the value of the maximum value in a box surrounding the pixel."
#define GEGL_CHANT_CATEGORIES "misc"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
......@@ -70,41 +71,34 @@ process (GeglOperation *operation,
need.width +=self->radius*2;
need.height +=self->radius*2;
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
}
else
{
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
temp = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
hor_max (temp_in, temp, self->radius);
ver_max (temp, output, self->radius);
g_object_unref (temp);
g_object_unref (temp_in);
}
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
temp = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
hor_max (temp_in, temp, self->radius);
ver_max (temp, output, self->radius);
g_object_unref (temp);
g_object_unref (temp_in);
{
GeglBuffer *cropped = g_object_new (GEGL_TYPE_BUFFER,
......
......@@ -24,12 +24,14 @@ gegl_chant_double (radius, 0.0, 200.0, 4.0,
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME box_min
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the value of the minimum value in a box surrounding the pixel."
#define GEGL_CHANT_SELF "box-min.c"
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the value of the minimum value in a box surrounding the pixel."
#define GEGL_CHANT_CATEGORIES "misc"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
static void hor_min (GeglBuffer *src,
......@@ -70,41 +72,34 @@ process (GeglOperation *operation,
need.width +=self->radius*2;
need.height +=self->radius*2;
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
}
else
{
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
temp = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
hor_min (temp_in, temp, self->radius);
ver_min (temp, output, self->radius);
g_object_unref (temp);
g_object_unref (temp_in);
}
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
temp = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
hor_min (temp_in, temp, self->radius);
ver_min (temp, output, self->radius);
g_object_unref (temp);
g_object_unref (temp_in);
{
GeglBuffer *cropped = g_object_new (GEGL_TYPE_BUFFER,
......
......@@ -28,12 +28,14 @@ gegl_chant_double (percentile, 0.0, 100.0, 50, "The percentile to compute, defau
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME box_percentile
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the color corresponding to a given percentile when colors are sorted by luminance."
#define GEGL_CHANT_SELF "box-percentile.c"
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the color corresponding to a given percentile when colors are sorted by luminance."
#define GEGL_CHANT_CATEGORIES "misc"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
static void median (GeglBuffer *src,
......@@ -70,9 +72,7 @@ process (GeglOperation *operation,
need.width +=self->radius*2;
need.height +=self->radius*2;
if (result->width == 0 ||
result->height== 0 ||
self->radius < 1.0)
if (self->radius < 1.0)
{
output = g_object_ref (input);
}
......
......@@ -28,12 +28,14 @@ gegl_chant_double (strength, -8, 8, 0.5, "how much the local optimum separatio
gegl_chant_double (gamma, 0.0, 10.0, 1.6, "post correction gamma.")
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME c2g
#define GEGL_CHANT_DESCRIPTION "Color to grayscale conversion that uses, spatial color differences to perform local grayscale contrast enhancement."
#define GEGL_CHANT_SELF "c2g.c"
#define GEGL_CHANT_DESCRIPTION "Color to grayscale conversion that uses, spatial color differences to perform local grayscale contrast enhancement."
#define GEGL_CHANT_CATEGORIES "enhance"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
#include <math.h>
#define sq(a) ((a)*(a))
......@@ -77,33 +79,26 @@ process (GeglOperation *operation,
need.width +=self->radius*2;
need.height +=self->radius*2;
if (result->width == 0 ||
result->height== 0 ||
self->radius < 1.0)
{
output = g_object_ref (input);
}
else
{
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width,
"height", need.height,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width,
"height", need.height,
NULL);
c2g (temp_in, output, self->radius, self->samples, self->iterations, self->strength, self->gamma);
g_object_unref (temp_in);
}
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width,
"height", need.height,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", need.x,
"y", need.y,
"width", need.width,
"height", need.height,
NULL);
c2g (temp_in, output, self->radius, self->samples, self->iterations, self->strength, self->gamma);
g_object_unref (temp_in);
{
GeglBuffer *cropped = g_object_new (GEGL_TYPE_BUFFER,
......
......@@ -24,12 +24,14 @@
#else
#define GEGL_CHANT_POINT_FILTER
#define GEGL_CHANT_NAME contrast_curve
#define GEGL_CHANT_DESCRIPTION "Adjusts the contrast of the image according to a curve."
#define GEGL_CHANT_SELF "contrast-curve.c"
#define GEGL_CHANT_DESCRIPTION "Adjusts the contrast of the image according to a curve."
#define GEGL_CHANT_CATEGORIES "color"
#define GEGL_CHANT_POINT_FILTER
#define GEGL_CHANT_PREPARE
#include "gegl-chant.h"
static void prepare (GeglOperation *operation,
......
......@@ -23,12 +23,14 @@ gegl_chant_int (pattern, 0, 3, 0, "Bayer pattern used, 0 seems to work for some
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME demosaic_simple
#define GEGL_CHANT_DESCRIPTION "Performs a naive grayscale2color demosaicing of an image, no interpolation."
#define GEGL_CHANT_SELF "demosaic-simple.c"
#define GEGL_CHANT_DESCRIPTION "Performs a naive grayscale2color demosaicing of an image, no interpolation."
#define GEGL_CHANT_CATEGORIES "blur"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
static GeglRectangle get_source_rect (GeglOperation *self,
......@@ -59,32 +61,26 @@ process (GeglOperation *operation,
GeglRectangle need = get_source_rect (operation, context_id);
GeglBuffer *temp_in;
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
}
else
{
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGB float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
demosaic (self, temp_in, output);
g_object_unref (temp_in);
}
temp_in = g_object_new (GEGL_TYPE_BUFFER,
"source", input,
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGB float"),
"x", need.x,
"y", need.y,
"width", need.width ,
"height", need.height ,
NULL);
demosaic (self, temp_in, output);
g_object_unref (temp_in);
{
GeglBuffer *cropped = g_object_new (GEGL_TYPE_BUFFER,
......
......@@ -24,12 +24,14 @@ gegl_chant_double(radius2, 0.0, 10.0, 2.0, "Radius")
#else
#define GEGL_CHANT_META
#define GEGL_CHANT_NAME difference_of_gaussians
#define GEGL_CHANT_DESCRIPTION "does an edge detection based on the differnece of two gaussian blurs."
#define GEGL_CHANT_SELF "difference-of-gaussians.c"
#define GEGL_CHANT_DESCRIPTION "does an edge detection based on the differnece of two gaussian blurs."
#define GEGL_CHANT_CATEGORIES "meta:edge"
#define GEGL_CHANT_META
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
typedef struct _Priv Priv;
......
......@@ -28,11 +28,12 @@ gegl_chant_double (percentile, 0.0, 100.0, 50, "The percentile to compute, defau
#else
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_NAME disc_percentile
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the color corresponding to a given percentile when colors are sorted by luminance."
#define GEGL_CHANT_SELF "disc-percentile.c"
#define GEGL_CHANT_DESCRIPTION "Sets the target pixel to the color corresponding to a given percentile when colors are sorted by luminance."
#define GEGL_CHANT_CATEGORIES "misc"
#define GEGL_CHANT_FILTER
#define GEGL_CHANT_CLASS_INIT
#include "gegl-chant.h"
......@@ -70,9 +71,7 @@ process (GeglOperation *operation,
need.width +=self->radius*2;
need.height +=self->radius*2;
if (result->width == 0 ||
result->height== 0 ||
self->radius < 1.0)
if (self->radius < 1.0)
{
output = g_object_ref (input);
}
......
......@@ -40,13 +40,16 @@ gegl_chant_double (user_value, -1000.0, 1000.0, 1.0, "(appears in the global var
#else
#define GEGL_CHANT_COMPOSER
#define GEGL_CHANT_NAME gluas
#define GEGL_CHANT_DESCRIPTION "A general purpose filter/composer implementation proxy for the lua programming language."
#define GEGL_CHANT_SELF "gluas.c"
#define GEGL_CHANT_DESCRIPTION "A general purpose filter/composer implementation proxy for the lua programming language."
#define GEGL_CHANT_CATEGORIES "script"
#define GEGL_CHANT_COMPOSER
#define GEGL_CHANT_INIT
#define GEGL_CHANT_CLASS_INIT
#define GEGL_CHANT_PREPARE
#include "gegl-chant.h"
#include <lua.h>
......@@ -90,39 +93,24 @@ process (GeglOperation *operation,
GeglChantOperation *self;
GeglBuffer *input;
GeglBuffer *output;
GeglRectangle *result;
result = gegl_operation_result_rect (operation, context_id);
self = GEGL_CHANT_OPERATION (operation);
input = GEGL_BUFFER (gegl_operation_get_data (operation, context_id, "input"));
self = GEGL_CHANT_OPERATION (operation);
input = GEGL_BUFFER (gegl_operation_get_data (operation, context_id, "input"));
output = GEGL_BUFFER (gegl_operation_get_target (operation, context_id, "output"));
if (self->file && g_file_test (self->file, G_FILE_TEST_IS_REGULAR))
{
GeglRectangle *result = gegl_operation_result_rect (operation, context_id);
if (result->width ==0 ||
result->height==0)
{
output = g_object_ref (input);
}
else
{
output = g_object_new (GEGL_TYPE_BUFFER,
"format", babl_format ("RGBA float"),
"x", input->x,
"y", input->y,
"width", input->width,
"height", input->height,
NULL);
if (self->file && g_file_test (self->file, G_FILE_TEST_IS_REGULAR))
{
drawable_lua_process (self, input, output, result, self->file, NULL, self->user_value);
}
else
{
drawable_lua_process (self, input, output, result, NULL, self->script, self->user_value);
}
}
gegl_operation_set_data (operation, context_id, "output", G_OBJECT (output));
drawable_lua_process (self, input, output, result, self->file, NULL, self->user_value);
}
else
{
drawable_lua_process (self, input, output, result, NULL, self->script, self->user_value);
}
gegl_operation_set_data (operation, context_id, "output", G_OBJECT (output));
return TRUE;
}
......@@ -1050,4 +1038,14 @@ static int l_get_hsv (lua_State * lua)
return 3;
}
static void
prepare (GeglOperation *operation,
gpointer context_id)
{
gegl_operation_set_format (operation, "input", babl_format ("RGBA float"));
gegl_operation_set_format (operation, "aux", babl_format ("RGBA float"));
gegl_operation_set_format (operation, "output", babl_format ("RGBA float"));
}
#endif
......@@ -21,12 +21,14 @@
/* no properties */
#else
#define GEGL_CHANT_POINT_FILTER
#define GEGL_CHANT_NAME grey
#define GEGL_CHANT_DESCRIPTION "turns the image greyscale"
#define GEGL_CHANT_SELF "grey.c"
#define GEGL_CHANT_DESCRIPTION "turns the image greyscale"
#define GEGL_CHANT_CATEGORIES "color"
#define GEGL_CHANT_POINT_FILTER
#define GEGL_CHANT_PREPARE
#include "gegl-chant.h"