[gegl/pippin/wip/mipmap-prerenders: 1/4] add level argument to process functions



commit b80da44a4e3f062ee24a9de26557a923506690a0
Author: Ãyvind KolÃs <pippin gimp org>
Date:   Sat Jun 4 03:42:31 2011 +0100

    add level argument to process functions
    
    Ignoring this argument should be valid, since it is added as the last argument
    to all functions where it might be used this is actually not an ABI change.

 gegl/operation/gegl-operation-composer.c        |   10 +++++-----
 gegl/operation/gegl-operation-composer.h        |    3 ++-
 gegl/operation/gegl-operation-composer3.c       |    2 +-
 gegl/operation/gegl-operation-composer3.h       |    3 ++-
 gegl/operation/gegl-operation-context.h         |    5 +++++
 gegl/operation/gegl-operation-filter.c          |    8 ++++----
 gegl/operation/gegl-operation-filter.h          |    3 ++-
 gegl/operation/gegl-operation-point-composer.c  |   21 ++++++++++++---------
 gegl/operation/gegl-operation-point-composer.h  |    4 ++--
 gegl/operation/gegl-operation-point-composer3.c |   16 +++++++++-------
 gegl/operation/gegl-operation-point-composer3.h |    4 ++--
 gegl/operation/gegl-operation-point-filter.c    |   10 ++++++----
 gegl/operation/gegl-operation-point-filter.h    |    3 ++-
 gegl/operation/gegl-operation-point-render.c    |    8 +++++---
 gegl/operation/gegl-operation-point-render.h    |    3 ++-
 gegl/operation/gegl-operation-sink.c            |    2 +-
 gegl/operation/gegl-operation-sink.h            |    3 ++-
 gegl/operation/gegl-operation-source.c          |   16 ++++++++--------
 gegl/operation/gegl-operation-source.h          |    3 ++-
 gegl/operation/gegl-operation-temporal.c        |    5 +++--
 gegl/operation/gegl-operation-temporal.h        |    3 ++-
 gegl/operation/gegl-operation.c                 |    8 ++++----
 gegl/operation/gegl-operation.h                 |    4 ++--
 gegl/process/gegl-processor.c                   |    3 +--
 operations/common/bilateral-filter.c            |    3 ++-
 operations/common/box-blur.c                    |    3 ++-
 operations/common/brightness-contrast.c         |    3 ++-
 operations/common/buffer-sink.c                 |    3 ++-
 operations/common/buffer-source.c               |    8 ++++----
 operations/common/c2g.c                         |    3 ++-
 operations/common/checkerboard.c                |    3 ++-
 operations/common/color-temperature.c           |    3 ++-
 operations/common/color.c                       |    3 ++-
 operations/common/contrast-curve.c              |    3 ++-
 operations/common/edge-laplace.c                |    3 ++-
 operations/common/edge-sobel.c                  |    3 ++-
 operations/common/fattal02.c                    |    3 ++-
 operations/common/fractal-explorer.c            |    3 ++-
 operations/common/gaussian-blur.c               |    3 ++-
 operations/common/gegl-buffer-save-op.c         |    3 ++-
 operations/common/grey.c                        |    3 ++-
 operations/common/grid.c                        |    3 ++-
 operations/common/invert.c                      |    3 ++-
 operations/common/levels.c                      |    3 ++-
 operations/common/magick-load.c                 |    8 ++++----
 operations/common/mantiuk06.c                   |    7 ++++---
 operations/common/map-absolute.c                |    3 ++-
 operations/common/map-relative.c                |    3 ++-
 operations/common/mblur.c                       |    3 ++-
 operations/common/mirrors.c                     |    3 ++-
 operations/common/mono-mixer.c                  |    3 ++-
 operations/common/motion-blur.c                 |    3 ++-
 operations/common/noise.c                       |    3 ++-
 operations/common/opacity.c                     |    3 ++-
 operations/common/open-buffer.c                 |    8 ++++----
 operations/common/over.c                        |   13 +++++++------
 operations/common/pixelise.c                    |    3 ++-
 operations/common/raw-load.c                    |    8 ++++----
 operations/common/reinhard05.c                  |    3 ++-
 operations/common/remap.c                       |    3 ++-
 operations/common/snn-mean.c                    |    3 ++-
 operations/common/stress.c                      |    3 ++-
 operations/common/stretch-contrast.c            |    8 +++++---
 operations/common/svg-huerotate.c               |    3 ++-
 operations/common/svg-luminancetoalpha.c        |    3 ++-
 operations/common/svg-matrix.c                  |    3 ++-
 operations/common/svg-saturate.c                |    3 ++-
 operations/common/threshold.c                   |    3 ++-
 operations/common/value-invert.c                |    3 ++-
 operations/common/vignette.c                    |    3 ++-
 operations/common/weighted-blend.c              |    3 ++-
 operations/common/whitebalance.c                |    3 ++-
 operations/common/write-buffer.c                |    3 ++-
 operations/core/convert-format.c                |    3 ++-
 operations/external/ff-load.c                   |    3 ++-
 operations/external/jp2-load.c                  |    3 ++-
 operations/external/jpg-load.c                  |    3 ++-
 operations/external/matting-levin.c             |    3 ++-
 operations/external/openraw.c                   |    3 ++-
 operations/external/path.c                      |    3 ++-
 operations/external/pixbuf.c                    |    3 ++-
 operations/external/png-load.c                  |    3 ++-
 operations/external/png-save.c                  |    3 ++-
 operations/external/ppm-load.c                  |    3 ++-
 operations/external/ppm-save.c                  |    3 ++-
 operations/external/rgbe-load.c                 |    3 ++-
 operations/external/rgbe-save.c                 |    3 ++-
 operations/external/save-pixbuf.c               |    3 ++-
 operations/external/sdl-display.c               |    3 ++-
 operations/external/svg-load.c                  |    3 ++-
 operations/external/text.c                      |    3 ++-
 operations/external/v4l.c                       |    3 ++-
 operations/external/vector-fill.c               |    3 ++-
 operations/external/vector-stroke.c             |    3 ++-
 operations/generated/math.rb                    |    3 ++-
 operations/generated/other-blend.rb             |    3 ++-
 operations/generated/svg-12-blend.rb            |    3 ++-
 operations/generated/svg-12-porter-duff.rb      |    3 ++-
 operations/workshop/box-max.c                   |    3 ++-
 operations/workshop/box-min.c                   |    3 ++-
 operations/workshop/box-percentile.c            |    3 ++-
 operations/workshop/color-reduction.c           |    3 ++-
 operations/workshop/demosaic-bimedian.c         |    3 ++-
 operations/workshop/demosaic-simple.c           |    3 ++-
 operations/workshop/disc-percentile.c           |    3 ++-
 operations/workshop/external/ff-save.c          |    3 ++-
 operations/workshop/external/gluas.c            |    3 ++-
 operations/workshop/external/line-profile.c     |    3 ++-
 operations/workshop/generated/blend.rb          |    3 ++-
 operations/workshop/hstack.c                    |    6 ++----
 operations/workshop/kuwahara-max.c              |    3 ++-
 operations/workshop/kuwahara-min.c              |    3 ++-
 operations/workshop/kuwahara.c                  |    3 ++-
 operations/workshop/lens-correct.c              |    3 ++-
 operations/workshop/linear-gradient.c           |    3 ++-
 operations/workshop/mandelbrot.c                |    3 ++-
 operations/workshop/max-rgb.c                   |    3 ++-
 operations/workshop/noise-spread.c              |    3 ++-
 operations/workshop/posterize.c                 |    3 ++-
 operations/workshop/radial-gradient.c           |    3 ++-
 operations/workshop/rawbayer-load.c             |   11 ++++-------
 operations/workshop/snn-percentile.c            |    3 ++-
 operations/workshop/unpremul.c                  |    3 ++-
 operations/workshop/whirl-pinch.c               |    3 ++-
 124 files changed, 306 insertions(+), 194 deletions(-)
---
diff --git a/gegl/operation/gegl-operation-composer.c b/gegl/operation/gegl-operation-composer.c
index c98281a..9391dca 100644
--- a/gegl/operation/gegl-operation-composer.c
+++ b/gegl/operation/gegl-operation-composer.c
@@ -144,10 +144,10 @@ set_property (GObject      *object,
 }
 
 static gboolean
-gegl_operation_composer_process (GeglOperation       *operation,
-                        GeglOperationContext     *context,
-                        const gchar         *output_prop,
-                        const GeglRectangle *result)
+gegl_operation_composer_process (GeglOperation        *operation,
+                                 GeglOperationContext *context,
+                                 const gchar          *output_prop,
+                                 const GeglRectangle  *result)
 {
   GeglOperationComposerClass *klass   = GEGL_OPERATION_COMPOSER_GET_CLASS (operation);
   GeglBuffer                 *input;
@@ -171,7 +171,7 @@ gegl_operation_composer_process (GeglOperation       *operation,
   if (input != NULL ||
       aux != NULL)
     {
-      success = klass->process (operation, input, aux, output, result);
+      success = klass->process (operation, input, aux, output, result, context->level);
 
       if (output == GEGL_BUFFER (operation->node->cache))
         gegl_cache_computed (operation->node->cache, result);
diff --git a/gegl/operation/gegl-operation-composer.h b/gegl/operation/gegl-operation-composer.h
index 34e8d53..efc4f03 100644
--- a/gegl/operation/gegl-operation-composer.h
+++ b/gegl/operation/gegl-operation-composer.h
@@ -50,7 +50,8 @@ struct _GeglOperationComposerClass
                         GeglBuffer          *input,
                         GeglBuffer          *aux,
                         GeglBuffer          *output,
-                        const GeglRectangle *result);
+                        const GeglRectangle *result,
+                        gint                 level);
 };
 
 GType gegl_operation_composer_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-composer3.c b/gegl/operation/gegl-operation-composer3.c
index 73bdf04..83c9155 100644
--- a/gegl/operation/gegl-operation-composer3.c
+++ b/gegl/operation/gegl-operation-composer3.c
@@ -188,7 +188,7 @@ gegl_operation_composer3_process (GeglOperation        *operation,
       aux != NULL ||
       aux2 != NULL)
     {
-      success = klass->process (operation, input, aux, aux2, output, result);
+      success = klass->process (operation, input, aux, aux2, output, result, context->level);
 
       if (output == GEGL_BUFFER (operation->node->cache))
         gegl_cache_computed (operation->node->cache, result);
diff --git a/gegl/operation/gegl-operation-composer3.h b/gegl/operation/gegl-operation-composer3.h
index c27483b..e151e9a 100644
--- a/gegl/operation/gegl-operation-composer3.h
+++ b/gegl/operation/gegl-operation-composer3.h
@@ -46,7 +46,8 @@ struct _GeglOperationComposer3Class
                         GeglBuffer          *aux,
                         GeglBuffer          *aux2,
                         GeglBuffer          *output,
-                        const GeglRectangle *result);
+                        const GeglRectangle *result,
+                        gint                 level);
 };
 
 GType gegl_operation_composer3_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-context.h b/gegl/operation/gegl-operation-context.h
index ef50e2a..0262c24 100644
--- a/gegl/operation/gegl-operation-context.h
+++ b/gegl/operation/gegl-operation-context.h
@@ -55,6 +55,11 @@ struct _GeglOperationContext
                                   incorporated into the refcount of
                                   GeglOperationContext?
                                 */
+  gint           level;         /* subdivision level to render at, 0 = 1:1,
+                                                                   1 = 1:2,
+                                                                   2 = 1:4,
+                                                                   4 = 1:8,
+                                                                   6 = 1:16 .. */
 };
 
 GeglBuffer     *gegl_operation_context_get_target      (GeglOperationContext *self,
diff --git a/gegl/operation/gegl-operation-filter.c b/gegl/operation/gegl-operation-filter.c
index 978977c..8f070fb 100644
--- a/gegl/operation/gegl-operation-filter.c
+++ b/gegl/operation/gegl-operation-filter.c
@@ -179,10 +179,10 @@ set_property (GObject      *object,
 }
 
 static gboolean
-gegl_operation_filter_process (GeglOperation   *operation,
+gegl_operation_filter_process (GeglOperation        *operation,
                                GeglOperationContext *context,
-                               const gchar     *output_prop,
-                               const GeglRectangle *result)
+                               const gchar          *output_prop,
+                               const GeglRectangle  *result)
 {
   GeglOperationFilterClass *klass;
   GeglBuffer               *input;
@@ -202,7 +202,7 @@ gegl_operation_filter_process (GeglOperation   *operation,
   input  = gegl_operation_context_get_source (context, "input");
   output = gegl_operation_context_get_target (context, "output");
 
-  success = klass->process (operation, input, output, result);
+  success = klass->process (operation, input, output, result, context->level);
 
   if (output == GEGL_BUFFER (operation->node->cache))
     gegl_cache_computed (operation->node->cache, result);
diff --git a/gegl/operation/gegl-operation-filter.h b/gegl/operation/gegl-operation-filter.h
index 207d754..6382572 100644
--- a/gegl/operation/gegl-operation-filter.h
+++ b/gegl/operation/gegl-operation-filter.h
@@ -48,7 +48,8 @@ struct _GeglOperationFilterClass
   gboolean (* process) (GeglOperation       *self,
                         GeglBuffer          *input,
                         GeglBuffer          *output,
-                        const GeglRectangle *roi);
+                        const GeglRectangle *roi,
+                        gint                 level);
 };
 
 GType gegl_operation_filter_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-point-composer.c b/gegl/operation/gegl-operation-point-composer.c
index 15f5352..a037b7c 100644
--- a/gegl/operation/gegl-operation-point-composer.c
+++ b/gegl/operation/gegl-operation-point-composer.c
@@ -34,13 +34,14 @@ static gboolean gegl_operation_point_composer_process
                                GeglBuffer          *input,
                                GeglBuffer          *aux,
                                GeglBuffer          *output,
-                               const GeglRectangle *result);
+                               const GeglRectangle *result,
+                               gint                 level);
 
 static gboolean
-gegl_operation_composer_process2 (GeglOperation       *operation,
-                        GeglOperationContext     *context,
-                        const gchar         *output_prop,
-                        const GeglRectangle *result);
+gegl_operation_composer_process2 (GeglOperation        *operation,
+                                  GeglOperationContext *context,
+                                  const gchar          *output_prop,
+                                  const GeglRectangle  *result);
 
 G_DEFINE_TYPE (GeglOperationPointComposer, gegl_operation_point_composer, GEGL_TYPE_OPERATION_COMPOSER)
 
@@ -117,7 +118,7 @@ gegl_operation_composer_process2 (GeglOperation        *operation,
       success = done;
       if (!done)
         {
-          success = klass->process (operation, input, aux, output, result);
+          success = klass->process (operation, input, aux, output, result, context->level);
 
           if (output == GEGL_BUFFER (operation->node->cache))
             gegl_cache_computed (operation->node->cache, result);
@@ -136,7 +137,8 @@ gegl_operation_point_composer_process (GeglOperation       *operation,
                                        GeglBuffer          *input,
                                        GeglBuffer          *aux,
                                        GeglBuffer          *output,
-                                       const GeglRectangle *result)
+                                       const GeglRectangle *result,
+                                       gint                 level)
 {
   GeglOperationPointComposerClass *point_composer_class = GEGL_OPERATION_POINT_COMPOSER_GET_CLASS (operation);
   const Babl *in_format  = gegl_operation_get_format (operation, "input");
@@ -153,18 +155,19 @@ gegl_operation_point_composer_process (GeglOperation       *operation,
 
       if (aux)
         {
+          /* XXX: this probably wrong when iterating on a different level */
           gint foo = gegl_buffer_iterator_add (i, aux,  result, aux_format, GEGL_BUFFER_READ);
 
           while (gegl_buffer_iterator_next (i))
             {
-               point_composer_class->process (operation, i->data[read], i->data[foo], i->data[0], i->length, &(i->roi[0]));
+               point_composer_class->process (operation, i->data[read], i->data[foo], i->data[0], i->length, &(i->roi[0]), level);
             }
         }
       else
         {
           while (gegl_buffer_iterator_next (i))
             {
-               point_composer_class->process (operation, i->data[read], NULL, i->data[0], i->length, &(i->roi[0]));
+               point_composer_class->process (operation, i->data[read], NULL, i->data[0], i->length, &(i->roi[0]), level);
             }
         }
       return TRUE;
diff --git a/gegl/operation/gegl-operation-point-composer.h b/gegl/operation/gegl-operation-point-composer.h
index 1c82248..8a28992 100644
--- a/gegl/operation/gegl-operation-point-composer.h
+++ b/gegl/operation/gegl-operation-point-composer.h
@@ -53,8 +53,8 @@ struct _GeglOperationPointComposerClass
                         void                *aux,
                         void                *out,
                         glong                samples, /* number of samples   */
-                        const GeglRectangle *roi      /* rectangular region in output buffer */
-                        );
+                        const GeglRectangle *roi,     /* rectangular region in output buffer */
+                        gint                 level);
 
 };
 
diff --git a/gegl/operation/gegl-operation-point-composer3.c b/gegl/operation/gegl-operation-point-composer3.c
index b7fe8d8..f79d2cd 100644
--- a/gegl/operation/gegl-operation-point-composer3.c
+++ b/gegl/operation/gegl-operation-point-composer3.c
@@ -35,7 +35,8 @@ static gboolean gegl_operation_point_composer3_process
                                GeglBuffer          *aux,
                                GeglBuffer          *aux2,
                                GeglBuffer          *output,
-                               const GeglRectangle *result);
+                               const GeglRectangle *result,
+                               gint                 level);
 
 static gboolean
 gegl_operation_composer3_process2 (GeglOperation        *operation,
@@ -119,7 +120,7 @@ gegl_operation_composer3_process2 (GeglOperation        *operation,
       success = done;
       if (!done)
         {
-          success = klass->process (operation, input, aux, aux2, output, result);
+          success = klass->process (operation, input, aux, aux2, output, result, context->level);
 
           if (output == GEGL_BUFFER (operation->node->cache))
             gegl_cache_computed (operation->node->cache, result);
@@ -146,7 +147,8 @@ gegl_operation_point_composer3_process (GeglOperation       *operation,
                                         GeglBuffer          *aux,
                                         GeglBuffer          *aux2,
                                         GeglBuffer          *output,
-                                        const GeglRectangle *result)
+                                        const GeglRectangle *result,
+                                        gint                 level)
 {
   GeglOperationPointComposer3Class *point_composer3_class = GEGL_OPERATION_POINT_COMPOSER3_GET_CLASS (operation);
   const Babl *in_format   = gegl_operation_get_format (operation, "input");
@@ -168,14 +170,14 @@ gegl_operation_point_composer3_process (GeglOperation       *operation,
 
               while (gegl_buffer_iterator_next (i))
                 {
-                   point_composer3_class->process (operation, i->data[read], i->data[foo], i->data[bar], i->data[0], i->length, &(i->roi[0]));
+                   point_composer3_class->process (operation, i->data[read], i->data[foo], i->data[bar], i->data[0], i->length, &(i->roi[0]), level);
                 }
             }
           else
             {
               while (gegl_buffer_iterator_next (i))
                 {
-                   point_composer3_class->process (operation, i->data[read], i->data[foo], NULL, i->data[0], i->length, &(i->roi[0]));
+                   point_composer3_class->process (operation, i->data[read], i->data[foo], NULL, i->data[0], i->length, &(i->roi[0]), level);
                 }
             }
         }
@@ -186,14 +188,14 @@ gegl_operation_point_composer3_process (GeglOperation       *operation,
               gint bar = gegl_buffer_iterator_add (i, aux2,  result, aux2_format, GEGL_BUFFER_READ);
               while (gegl_buffer_iterator_next (i))
                 {
-                   point_composer3_class->process (operation, i->data[read], NULL, i->data[bar], i->data[0], i->length, &(i->roi[0]));
+                   point_composer3_class->process (operation, i->data[read], NULL, i->data[bar], i->data[0], i->length, &(i->roi[0]), level);
                 }
             }
           else
             {
               while (gegl_buffer_iterator_next (i))
                 {
-                   point_composer3_class->process (operation, i->data[read], NULL, NULL, i->data[0], i->length, &(i->roi[0]));
+                   point_composer3_class->process (operation, i->data[read], NULL, NULL, i->data[0], i->length, &(i->roi[0]), level);
                 }
             }
         }
diff --git a/gegl/operation/gegl-operation-point-composer3.h b/gegl/operation/gegl-operation-point-composer3.h
index 5fe5c01..7c19e29 100644
--- a/gegl/operation/gegl-operation-point-composer3.h
+++ b/gegl/operation/gegl-operation-point-composer3.h
@@ -49,8 +49,8 @@ struct _GeglOperationPointComposer3Class
                         void                *aux2,
                         void                *out,
                         glong                samples, /* number of samples   */
-                        const GeglRectangle *roi      /* rectangular region in output buffer */
-                        );
+                        const GeglRectangle *roi,     /* rectangular region in output buffer */
+                        gint                 level);
 
 };
 
diff --git a/gegl/operation/gegl-operation-point-filter.c b/gegl/operation/gegl-operation-point-filter.c
index b53c726..45aec1f 100644
--- a/gegl/operation/gegl-operation-point-filter.c
+++ b/gegl/operation/gegl-operation-point-filter.c
@@ -36,7 +36,8 @@ static gboolean gegl_operation_point_filter_process
                               (GeglOperation       *operation,
                                GeglBuffer          *input,
                                GeglBuffer          *output,
-                               const GeglRectangle *result);
+                               const GeglRectangle *result,
+                               gint                 level);
 
 static gboolean gegl_operation_point_filter_op_process
                               (GeglOperation       *operation,
@@ -72,7 +73,8 @@ static gboolean
 gegl_operation_point_filter_process (GeglOperation       *operation,
                                      GeglBuffer          *input,
                                      GeglBuffer          *output,
-                                     const GeglRectangle *result)
+                                     const GeglRectangle *result,
+                                     gint                 level)
 {
   const Babl *in_format  = gegl_operation_get_format (operation, "input");
   const Babl *out_format = gegl_operation_get_format (operation, "output");
@@ -90,7 +92,7 @@ gegl_operation_point_filter_process (GeglOperation       *operation,
          * readwrite indice would be sufficient
          */
           while (gegl_buffer_iterator_next (i))
-            point_filter_class->process (operation, i->data[read], i->data[0], i->length, &i->roi[0]);
+            point_filter_class->process (operation, i->data[read], i->data[0], i->length, &i->roi[0], level);
       }
     }
   return TRUE;
@@ -139,7 +141,7 @@ static gboolean gegl_operation_point_filter_op_process
       output = gegl_operation_context_get_target (context, "output");
     }
 
-  success = gegl_operation_point_filter_process (operation, input, output, roi);
+  success = gegl_operation_point_filter_process (operation, input, output, roi, context->level);
   if (output == GEGL_BUFFER (operation->node->cache))
     gegl_cache_computed (operation->node->cache, roi);
 
diff --git a/gegl/operation/gegl-operation-point-filter.h b/gegl/operation/gegl-operation-point-filter.h
index e4efba2..7486b32 100644
--- a/gegl/operation/gegl-operation-point-filter.h
+++ b/gegl/operation/gegl-operation-point-filter.h
@@ -52,10 +52,11 @@ struct _GeglOperationPointFilterClass
                         void               *in_buf,  /* input buffer      */
                         void               *out_buf, /* output buffer     */
                         glong               samples, /* number of samples */
-                        const GeglRectangle *roi);   /* rectangle out_buf spans
+                        const GeglRectangle *roi,    /* rectangle out_buf spans
                                                         in in buffer, see the
                                                         checkerboard op for
                                                         semantics */
+                        gint                 level);
 };
 
 GType gegl_operation_point_filter_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-point-render.c b/gegl/operation/gegl-operation-point-render.c
index 74ab9fb..f822e3b 100644
--- a/gegl/operation/gegl-operation-point-render.c
+++ b/gegl/operation/gegl-operation-point-render.c
@@ -35,7 +35,8 @@
 static gboolean gegl_operation_point_render_process
                               (GeglOperation       *operation,
                                GeglBuffer          *output,
-                               const GeglRectangle *result);
+                               const GeglRectangle *result,
+                               gint                 level);
 
 G_DEFINE_TYPE (GeglOperationPointRender, gegl_operation_point_render, GEGL_TYPE_OPERATION_SOURCE)
 
@@ -77,7 +78,8 @@ gegl_operation_point_render_init (GeglOperationPointRender *self)
 static gboolean
 gegl_operation_point_render_process (GeglOperation       *operation,
                                      GeglBuffer          *output,
-                                     const GeglRectangle *result)
+                                     const GeglRectangle *result,
+                                     gint                 level)
 {
   GeglPad    *pad;
   const Babl *out_format;
@@ -98,7 +100,7 @@ gegl_operation_point_render_process (GeglOperation       *operation,
       GeglBufferIterator *i = gegl_buffer_iterator_new (output, result, out_format, GEGL_BUFFER_WRITE);
 
       while (gegl_buffer_iterator_next (i))
-          point_render_class->process (operation, i->data[0], i->length, &i->roi[0]);
+          point_render_class->process (operation, i->data[0], i->length, &i->roi[0], level);
     }
   return TRUE;
 }
diff --git a/gegl/operation/gegl-operation-point-render.h b/gegl/operation/gegl-operation-point-render.h
index 9adafb3..4c1c395 100644
--- a/gegl/operation/gegl-operation-point-render.h
+++ b/gegl/operation/gegl-operation-point-render.h
@@ -44,7 +44,8 @@ struct _GeglOperationPointRenderClass
   gboolean (* process) (GeglOperation       *self,      /* for parameters    */
                         void                *out_buf,   /* output buffer     */
                         glong                samples,   /* number of samples */
-                        const GeglRectangle *roi);      /* can be used if position is of importance*/
+                        const GeglRectangle *roi,       /* can be used if position is of importance*/
+                        gint                 level);
 };
 
 GType gegl_operation_point_render_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-sink.c b/gegl/operation/gegl-operation-sink.c
index 5c6dc64..cd7c373 100644
--- a/gegl/operation/gegl-operation-sink.c
+++ b/gegl/operation/gegl-operation-sink.c
@@ -132,7 +132,7 @@ gegl_operation_sink_process (GeglOperation        *operation,
   input = gegl_operation_context_get_source (context, "input");
   if (input)
     {
-      success = klass->process (operation, input, result);
+      success = klass->process (operation, input, result, context->level);
       g_object_unref (input);
     }
 
diff --git a/gegl/operation/gegl-operation-sink.h b/gegl/operation/gegl-operation-sink.h
index 05b60a9..ad48f7d 100644
--- a/gegl/operation/gegl-operation-sink.h
+++ b/gegl/operation/gegl-operation-sink.h
@@ -53,7 +53,8 @@ struct _GeglOperationSinkClass
 
   gboolean (* process) (GeglOperation       *self,
                         GeglBuffer          *input,
-                        const GeglRectangle *roi);
+                        const GeglRectangle *roi,
+                        gint                 level);
 };
 
 GType    gegl_operation_sink_get_type   (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-source.c b/gegl/operation/gegl-operation-source.c
index 5749a43..bcda9e9 100644
--- a/gegl/operation/gegl-operation-source.c
+++ b/gegl/operation/gegl-operation-source.c
@@ -44,10 +44,10 @@ static void     set_property (GObject      *gobject,
                               const GValue *value,
                               GParamSpec   *pspec);
 static gboolean gegl_operation_source_process
-                             (GeglOperation *operation,
+                             (GeglOperation        *operation,
                               GeglOperationContext *context,
-                              const gchar   *output_prop,
-                              const GeglRectangle *result);
+                              const gchar          *output_prop,
+                              const GeglRectangle  *result);
 static void     attach       (GeglOperation *operation);
 
 
@@ -120,10 +120,10 @@ set_property (GObject      *object,
 }
 
 static gboolean
-gegl_operation_source_process (GeglOperation       *operation,
-                               GeglOperationContext     *context,
-                               const gchar         *output_prop,
-                               const GeglRectangle *result)
+gegl_operation_source_process (GeglOperation        *operation,
+                               GeglOperationContext *context,
+                               const gchar          *output_prop,
+                               const GeglRectangle  *result)
 {
   GeglOperationSourceClass *klass = GEGL_OPERATION_SOURCE_GET_CLASS (operation);
   GeglBuffer               *output;
@@ -137,7 +137,7 @@ gegl_operation_source_process (GeglOperation       *operation,
 
   g_assert (klass->process);
   output = gegl_operation_context_get_target (context, "output");
-  success = klass->process (operation, output, result);
+  success = klass->process (operation, output, result, context->level);
 
   if (output == GEGL_BUFFER (operation->node->cache))
     gegl_cache_computed (operation->node->cache, result);
diff --git a/gegl/operation/gegl-operation-source.h b/gegl/operation/gegl-operation-source.h
index 1933d9e..841049d 100644
--- a/gegl/operation/gegl-operation-source.h
+++ b/gegl/operation/gegl-operation-source.h
@@ -48,7 +48,8 @@ struct _GeglOperationSourceClass
 
   gboolean (* process) (GeglOperation       *self,
                         GeglBuffer          *output,
-                        const GeglRectangle *roi);
+                        const GeglRectangle *roi,
+                        gint                 level);
 };
 
 GType gegl_operation_source_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation-temporal.c b/gegl/operation/gegl-operation-temporal.c
index ba5481d..655b6e6 100644
--- a/gegl/operation/gegl-operation-temporal.c
+++ b/gegl/operation/gegl-operation-temporal.c
@@ -89,7 +89,8 @@ gegl_operation_temporal_get_frame (GeglOperation *op,
 static gboolean gegl_operation_temporal_process (GeglOperation       *self,
                                                  GeglBuffer          *input,
                                                  GeglBuffer          *output,
-                                                 const GeglRectangle *result)
+                                                 const GeglRectangle *result,
+                                                 gint                 level)
 {
   GeglOperationTemporal *temporal = GEGL_OPERATION_TEMPORAL (self);
   GeglOperationTemporalPrivate *priv = temporal->priv;
@@ -112,7 +113,7 @@ static gboolean gegl_operation_temporal_process (GeglOperation       *self,
   }
 
  if (temporal_class->process)
-   return temporal_class->process (self, input, output, result);
+   return temporal_class->process (self, input, output, result, level);
  return FALSE;
 }
 
diff --git a/gegl/operation/gegl-operation-temporal.h b/gegl/operation/gegl-operation-temporal.h
index 3f97519..ec589e7 100644
--- a/gegl/operation/gegl-operation-temporal.h
+++ b/gegl/operation/gegl-operation-temporal.h
@@ -51,7 +51,8 @@ struct _GeglOperationTemporalClass
   gboolean (* process) (GeglOperation       *self,
                         GeglBuffer          *input,
                         GeglBuffer          *output,
-                        const GeglRectangle *roi);
+                        const GeglRectangle *roi,
+                        gint                 level);
 };
 
 GType gegl_operation_temporal_get_type (void) G_GNUC_CONST;
diff --git a/gegl/operation/gegl-operation.c b/gegl/operation/gegl-operation.c
index c327c7d..f301bb7 100644
--- a/gegl/operation/gegl-operation.c
+++ b/gegl/operation/gegl-operation.c
@@ -101,10 +101,10 @@ gegl_operation_create_pad (GeglOperation *self,
 }
 
 gboolean
-gegl_operation_process (GeglOperation       *operation,
-                        GeglOperationContext     *context,
-                        const gchar         *output_pad,
-                        const GeglRectangle *result)
+gegl_operation_process (GeglOperation        *operation,
+                        GeglOperationContext *context,
+                        const gchar          *output_pad,
+                        const GeglRectangle  *result)
 {
   GeglOperationClass  *klass;
 
diff --git a/gegl/operation/gegl-operation.h b/gegl/operation/gegl-operation.h
index f392014..c2245eb 100644
--- a/gegl/operation/gegl-operation.h
+++ b/gegl/operation/gegl-operation.h
@@ -181,8 +181,8 @@ void            gegl_operation_attach        (GeglOperation *operation,
 void            gegl_operation_prepare       (GeglOperation *operation);
 gboolean        gegl_operation_process       (GeglOperation *operation,
                                               GeglOperationContext *context,
-                                              const gchar   *output_pad,
-                                              const GeglRectangle *roi);
+                                              const gchar          *output_pad,
+                                              const GeglRectangle  *roi);
 
 /* create a pad for a specified property for this operation, this method is
  * to be called from the attach method of operations, most operations do not
diff --git a/gegl/process/gegl-processor.c b/gegl/process/gegl-processor.c
index 4bd9598..c73d43c 100644
--- a/gegl/process/gegl-processor.c
+++ b/gegl/process/gegl-processor.c
@@ -740,8 +740,7 @@ gegl_processor_work (GeglProcessor *processor,
       gegl_operation_process (processor->node->operation,
                               processor->context,
                               "output"  /* ignored output_pad */,
-                              &processor->context->result_rect
-                              );
+                              &processor->context->result_rect);
       gegl_node_remove_context (processor->node, cache);
       processor->context = NULL;
 
diff --git a/operations/common/bilateral-filter.c b/operations/common/bilateral-filter.c
index 7ee9cbb..3aa0efc 100644
--- a/operations/common/bilateral-filter.c
+++ b/operations/common/bilateral-filter.c
@@ -61,7 +61,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle compute;
diff --git a/operations/common/box-blur.c b/operations/common/box-blur.c
index 6cb3b2e..c58761b 100644
--- a/operations/common/box-blur.c
+++ b/operations/common/box-blur.c
@@ -226,7 +226,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglRectangle rect;
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
diff --git a/operations/common/brightness-contrast.c b/operations/common/brightness-contrast.c
index 81cf8e3..6f3cfb2 100644
--- a/operations/common/brightness-contrast.c
+++ b/operations/common/brightness-contrast.c
@@ -76,7 +76,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   /* Retrieve a pointer to GeglChantO structure which contains all the
    * chanted properties
diff --git a/operations/common/buffer-sink.c b/operations/common/buffer-sink.c
index c245846..841230e 100644
--- a/operations/common/buffer-sink.c
+++ b/operations/common/buffer-sink.c
@@ -37,7 +37,8 @@ gegl_chant_pointer (format, _("babl format"),
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/common/buffer-source.c b/operations/common/buffer-source.c
index eb103b0..315049b 100644
--- a/operations/common/buffer-source.c
+++ b/operations/common/buffer-source.c
@@ -55,10 +55,10 @@ get_bounding_box (GeglOperation *operation)
 }
 
 static gboolean
-process (GeglOperation       *operation,
-         GeglOperationContext     *context,
-         const gchar         *output_pad,
-         const GeglRectangle *result)
+process (GeglOperation        *operation,
+         GeglOperationContext *context,
+         const gchar          *output_pad,
+         const GeglRectangle  *result)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/common/c2g.c b/operations/common/c2g.c
index 093dbbd..ced5e98 100644
--- a/operations/common/c2g.c
+++ b/operations/common/c2g.c
@@ -150,7 +150,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle compute;
diff --git a/operations/common/checkerboard.c b/operations/common/checkerboard.c
index 0896d0e..8545683 100644
--- a/operations/common/checkerboard.c
+++ b/operations/common/checkerboard.c
@@ -57,7 +57,8 @@ static gboolean
 process (GeglOperation       *operation,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/common/color-temperature.c b/operations/common/color-temperature.c
index ec3b8ef..b48b4a7 100644
--- a/operations/common/color-temperature.c
+++ b/operations/common/color-temperature.c
@@ -141,7 +141,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO   *o         = GEGL_CHANT_PROPERTIES (op);
   gfloat       *in_pixel  = in_buf;
diff --git a/operations/common/color.c b/operations/common/color.c
index 87c7950..0517d20 100644
--- a/operations/common/color.c
+++ b/operations/common/color.c
@@ -46,7 +46,8 @@ static gboolean
 gegl_color_op_process (GeglOperation       *operation,
                        void                *out_buf,
                        glong                n_pixels,
-                       const GeglRectangle *roi)
+                       const GeglRectangle *roi,
+                       gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/common/contrast-curve.c b/operations/common/contrast-curve.c
index f2c1a3f..27fcdfb 100644
--- a/operations/common/contrast-curve.c
+++ b/operations/common/contrast-curve.c
@@ -46,7 +46,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gint        num_sampling_points;
diff --git a/operations/common/edge-laplace.c b/operations/common/edge-laplace.c
index 3475d0b..30995f9 100644
--- a/operations/common/edge-laplace.c
+++ b/operations/common/edge-laplace.c
@@ -57,7 +57,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglRectangle compute;
 
diff --git a/operations/common/edge-sobel.c b/operations/common/edge-sobel.c
index d9f5e22..a8c735d 100644
--- a/operations/common/edge-sobel.c
+++ b/operations/common/edge-sobel.c
@@ -69,7 +69,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle compute;
diff --git a/operations/common/fattal02.c b/operations/common/fattal02.c
index 9f9e9ec..2d9220f 100644
--- a/operations/common/fattal02.c
+++ b/operations/common/fattal02.c
@@ -1242,7 +1242,8 @@ static gboolean
 fattal02_process (GeglOperation       *operation,
                   GeglBuffer          *input,
                   GeglBuffer          *output,
-                  const GeglRectangle *result)
+                  const GeglRectangle *result,
+                  gint                 level)
 {
   const GeglChantO *o     = GEGL_CHANT_PROPERTIES (operation);
   gfloat            noise;
diff --git a/operations/common/fractal-explorer.c b/operations/common/fractal-explorer.c
index 6fe3af6..1371629 100644
--- a/operations/common/fractal-explorer.c
+++ b/operations/common/fractal-explorer.c
@@ -418,7 +418,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   clrmap  colormap;
diff --git a/operations/common/gaussian-blur.c b/operations/common/gaussian-blur.c
index 57b986b..4c95ded 100644
--- a/operations/common/gaussian-blur.c
+++ b/operations/common/gaussian-blur.c
@@ -417,7 +417,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglRectangle rect;
   GeglBuffer *temp;
diff --git a/operations/common/gegl-buffer-save-op.c b/operations/common/gegl-buffer-save-op.c
index 55b88ae..bc7240a 100644
--- a/operations/common/gegl-buffer-save-op.c
+++ b/operations/common/gegl-buffer-save-op.c
@@ -34,7 +34,8 @@ gegl_chant_file_path (path, _("File"), "/tmp/gegl-buffer.gegl", _("Target file p
 static gboolean
 gegl_buffer_save_op_process (GeglOperation       *operation,
                              GeglBuffer          *input,
-                             const GeglRectangle *result)
+                             const GeglRectangle *result,
+                             gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/common/grey.c b/operations/common/grey.c
index 7c61695..cf65242 100644
--- a/operations/common/grey.c
+++ b/operations/common/grey.c
@@ -46,7 +46,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   float *in = in_buf;
   float *out = out_buf;
diff --git a/operations/common/grid.c b/operations/common/grid.c
index 8fe89c2..efa177b 100644
--- a/operations/common/grid.c
+++ b/operations/common/grid.c
@@ -59,7 +59,8 @@ static gboolean
 process (GeglOperation       *operation,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/common/invert.c b/operations/common/invert.c
index 613cea0..98cab83 100644
--- a/operations/common/invert.c
+++ b/operations/common/invert.c
@@ -37,7 +37,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   glong   i;
   gfloat *in  = in_buf;
diff --git a/operations/common/levels.c b/operations/common/levels.c
index 1ff37fc..0410dc4 100644
--- a/operations/common/levels.c
+++ b/operations/common/levels.c
@@ -47,7 +47,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gfloat     *in_pixel;
diff --git a/operations/common/magick-load.c b/operations/common/magick-load.c
index c3caa22..546a94b 100644
--- a/operations/common/magick-load.c
+++ b/operations/common/magick-load.c
@@ -87,10 +87,10 @@ get_cached_region (GeglOperation *operation,
 }
 
 static gboolean
-process (GeglOperation       *operation,
-         GeglOperationContext     *context,
-         const gchar         *output_pad,
-         const GeglRectangle *result)
+process (GeglOperation         *operation,
+         GeglOperationContext  *context,
+         const gchar           *output_pad,
+         const GeglRectangle   *result)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/common/mantiuk06.c b/operations/common/mantiuk06.c
index 9dc91e8..404c624 100644
--- a/operations/common/mantiuk06.c
+++ b/operations/common/mantiuk06.c
@@ -1576,9 +1576,10 @@ mantiuk06_get_cached_region (GeglOperation        *operation,
 
 static gboolean
 mantiuk06_process (GeglOperation       *operation,
-                    GeglBuffer          *input,
-                    GeglBuffer          *output,
-                    const GeglRectangle *result)
+                   GeglBuffer          *input,
+                   GeglBuffer          *output,
+                   const GeglRectangle *result,
+                   gint                 level)
 {
   const GeglChantO *o          = GEGL_CHANT_PROPERTIES (operation);
   const gint        pix_stride = 4; /* RGBA */
diff --git a/operations/common/map-absolute.c b/operations/common/map-absolute.c
index 5b1bf26..6d151c2 100644
--- a/operations/common/map-absolute.c
+++ b/operations/common/map-absolute.c
@@ -53,7 +53,8 @@ process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *aux,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   Babl                 *format_io, *format_coords;
   GeglSampler          *sampler;
diff --git a/operations/common/map-relative.c b/operations/common/map-relative.c
index bd0c4b3..4d90d0b 100644
--- a/operations/common/map-relative.c
+++ b/operations/common/map-relative.c
@@ -59,7 +59,8 @@ process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *aux,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   Babl                 *format_io, *format_coords;
   GeglSampler          *sampler;
diff --git a/operations/common/mblur.c b/operations/common/mblur.c
index 3f4b774..e910a02 100644
--- a/operations/common/mblur.c
+++ b/operations/common/mblur.c
@@ -61,7 +61,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO          *o;
   Priv *p;
diff --git a/operations/common/mirrors.c b/operations/common/mirrors.c
index 259f90c..d5a4b21 100644
--- a/operations/common/mirrors.c
+++ b/operations/common/mirrors.c
@@ -349,7 +349,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle boundary = gegl_operation_get_bounding_box (operation);
diff --git a/operations/common/mono-mixer.c b/operations/common/mono-mixer.c
index 6b29003..0e4e20d 100644
--- a/operations/common/mono-mixer.c
+++ b/operations/common/mono-mixer.c
@@ -45,7 +45,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat      red   = o->red;
diff --git a/operations/common/motion-blur.c b/operations/common/motion-blur.c
index 9afb30b..1117696 100644
--- a/operations/common/motion-blur.c
+++ b/operations/common/motion-blur.c
@@ -72,7 +72,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglRectangle src_rect;
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
diff --git a/operations/common/noise.c b/operations/common/noise.c
index 26b5f65..a5cedc1 100644
--- a/operations/common/noise.c
+++ b/operations/common/noise.c
@@ -54,7 +54,8 @@ static gboolean
 process (GeglOperation       *operation,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/common/opacity.c b/operations/common/opacity.c
index a63d22f..9562e26 100644
--- a/operations/common/opacity.c
+++ b/operations/common/opacity.c
@@ -45,7 +45,8 @@ process (GeglOperation       *op,
          void                *aux_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat *in = in_buf;
   gfloat *out = out_buf;
diff --git a/operations/common/open-buffer.c b/operations/common/open-buffer.c
index e75105a..2293ece 100644
--- a/operations/common/open-buffer.c
+++ b/operations/common/open-buffer.c
@@ -73,10 +73,10 @@ get_cached_region (GeglOperation       *self,
 }
 
 static gboolean
-process (GeglOperation       *operation,
-         GeglOperationContext     *context,
-         const gchar         *output_pad,
-         const GeglRectangle *result)
+process (GeglOperation           *operation,
+         GeglOperationContext  *context,
+         const gchar           *output_pad,
+         const GeglRectangle   *result)
 {
   GeglBuffer *buffer = ensure_buffer (operation);
 
diff --git a/operations/common/over.c b/operations/common/over.c
index 1519ec2..d1ea0b4 100644
--- a/operations/common/over.c
+++ b/operations/common/over.c
@@ -41,12 +41,13 @@ static void prepare (GeglOperation *operation)
 }
 
 static gboolean
-process (GeglOperation        *op,
-          void                *in_buf,
-          void                *aux_buf,
-          void                *out_buf,
-          glong                n_pixels,
-          const GeglRectangle *roi)
+process (GeglOperation       *op,
+         void                *in_buf,
+         void                *aux_buf,
+         void                *out_buf,
+         glong                n_pixels,
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gint i;
   gfloat * GEGL_ALIGNED in = in_buf;
diff --git a/operations/common/pixelise.c b/operations/common/pixelise.c
index 21ef88f..85865ef 100644
--- a/operations/common/pixelise.c
+++ b/operations/common/pixelise.c
@@ -134,7 +134,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglRectangle src_rect;
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
diff --git a/operations/common/raw-load.c b/operations/common/raw-load.c
index 334a041..4690bc2 100644
--- a/operations/common/raw-load.c
+++ b/operations/common/raw-load.c
@@ -124,10 +124,10 @@ get_bounding_box (GeglOperation *operation)
 }
 
 static gboolean
-process (GeglOperation       *operation,
-         GeglOperationContext     *context,
-         const gchar         *output_pad,
-         const GeglRectangle *result)
+process (GeglOperation         *operation,
+         GeglOperationContext  *context,
+         const gchar           *output_pad,
+         const GeglRectangle   *result)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer *output;
diff --git a/operations/common/reinhard05.c b/operations/common/reinhard05.c
index 7b6931e..271dd34 100644
--- a/operations/common/reinhard05.c
+++ b/operations/common/reinhard05.c
@@ -120,7 +120,8 @@ static gboolean
 reinhard05_process (GeglOperation       *operation,
                     GeglBuffer          *input,
                     GeglBuffer          *output,
-                    const GeglRectangle *result)
+                    const GeglRectangle *result,
+                    gint                 level)
 {
   const GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/common/remap.c b/operations/common/remap.c
index e24af5c..3064c65 100644
--- a/operations/common/remap.c
+++ b/operations/common/remap.c
@@ -48,7 +48,8 @@ process (GeglOperation        *op,
           void                *max_buf,
           void                *out_buf,
           glong                n_pixels,
-          const GeglRectangle *roi)
+          const GeglRectangle *roi,
+          gint                 level)
 {
   gint i;
   gfloat *in = in_buf;
diff --git a/operations/common/snn-mean.c b/operations/common/snn-mean.c
index 6d8c57d..45cd96e 100644
--- a/operations/common/snn-mean.c
+++ b/operations/common/snn-mean.c
@@ -58,7 +58,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO          *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer          *temp_in;
diff --git a/operations/common/stress.c b/operations/common/stress.c
index cd840d4..cfa16b1 100644
--- a/operations/common/stress.c
+++ b/operations/common/stress.c
@@ -149,7 +149,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle compute;
diff --git a/operations/common/stretch-contrast.c b/operations/common/stretch-contrast.c
index 78e25de..c769010 100644
--- a/operations/common/stretch-contrast.c
+++ b/operations/common/stretch-contrast.c
@@ -33,7 +33,8 @@ static gboolean
 inner_process (gdouble  min,
                gdouble  max,
                gfloat  *buf,
-               gint     n_pixels)
+               gint     n_pixels,
+               gint     level)
 {
   gint o;
 
@@ -100,7 +101,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   gdouble  min, max;
 
@@ -124,7 +126,7 @@ process (GeglOperation       *operation,
         line.height = chunk;
 
         gegl_buffer_get (input, 1.0, &line, babl_format ("RGBA float"), buf, GEGL_AUTO_ROWSTRIDE);
-        inner_process (min, max, buf, result->width  * chunk);
+        inner_process (min, max, buf, result->width  * chunk, level);
         gegl_buffer_set (output, &line, babl_format ("RGBA float"), buf,
                          GEGL_AUTO_ROWSTRIDE);
         consumed+=chunk;
diff --git a/operations/common/svg-huerotate.c b/operations/common/svg-huerotate.c
index 23b759e..558fc5a 100644
--- a/operations/common/svg-huerotate.c
+++ b/operations/common/svg-huerotate.c
@@ -48,7 +48,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o   = GEGL_CHANT_PROPERTIES (op);
   gfloat     *in  = in_buf;
diff --git a/operations/common/svg-luminancetoalpha.c b/operations/common/svg-luminancetoalpha.c
index 39ac955..c2b5f56 100644
--- a/operations/common/svg-luminancetoalpha.c
+++ b/operations/common/svg-luminancetoalpha.c
@@ -48,7 +48,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat      *in = in_buf;
   gfloat      *out = out_buf;
diff --git a/operations/common/svg-matrix.c b/operations/common/svg-matrix.c
index 9deada1..73bd469 100644
--- a/operations/common/svg-matrix.c
+++ b/operations/common/svg-matrix.c
@@ -48,7 +48,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gfloat     *in = in_buf;
diff --git a/operations/common/svg-saturate.c b/operations/common/svg-saturate.c
index b7359ff..bf79dad 100644
--- a/operations/common/svg-saturate.c
+++ b/operations/common/svg-saturate.c
@@ -48,7 +48,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gfloat     *in = in_buf;
diff --git a/operations/common/threshold.c b/operations/common/threshold.c
index cef4057..43f44f7 100644
--- a/operations/common/threshold.c
+++ b/operations/common/threshold.c
@@ -45,7 +45,8 @@ process (GeglOperation       *op,
          void                *aux_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat *in = in_buf;
   gfloat *out = out_buf;
diff --git a/operations/common/value-invert.c b/operations/common/value-invert.c
index f359f44..7e26666 100644
--- a/operations/common/value-invert.c
+++ b/operations/common/value-invert.c
@@ -51,7 +51,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   glong   j;
   gfloat *src  = in_buf;
diff --git a/operations/common/vignette.c b/operations/common/vignette.c
index 399aa05..d21a979 100644
--- a/operations/common/vignette.c
+++ b/operations/common/vignette.c
@@ -84,7 +84,8 @@ process (GeglOperation       *operation,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *in_pixel =  in_buf;
diff --git a/operations/common/weighted-blend.c b/operations/common/weighted-blend.c
index d787810..bdad234 100644
--- a/operations/common/weighted-blend.c
+++ b/operations/common/weighted-blend.c
@@ -46,7 +46,8 @@ process (GeglOperation       *op,
          void                *aux_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat *in  = in_buf;
   gfloat *out = out_buf;
diff --git a/operations/common/whitebalance.c b/operations/common/whitebalance.c
index 0b20ce6..275c2e7 100644
--- a/operations/common/whitebalance.c
+++ b/operations/common/whitebalance.c
@@ -50,7 +50,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gfloat     *in_pixel;
diff --git a/operations/common/write-buffer.c b/operations/common/write-buffer.c
index 364804f..f6ea536 100644
--- a/operations/common/write-buffer.c
+++ b/operations/common/write-buffer.c
@@ -35,7 +35,8 @@ gegl_chant_object (buffer, _("Buffer location"),
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/core/convert-format.c b/operations/core/convert-format.c
index f8853e6..ac3b4df 100644
--- a/operations/core/convert-format.c
+++ b/operations/core/convert-format.c
@@ -54,7 +54,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
 	int bpp = babl_format_get_bytes_per_pixel (gegl_operation_get_format (op, "output"));
 	memcpy(out_buf, in_buf, samples * bpp);
diff --git a/operations/external/ff-load.c b/operations/external/ff-load.c
index 37c6aa4..7426329 100644
--- a/operations/external/ff-load.c
+++ b/operations/external/ff-load.c
@@ -352,7 +352,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   Priv       *p = (Priv*)o->chant_data;
diff --git a/operations/external/jp2-load.c b/operations/external/jp2-load.c
index 9af77ba..4eb1a5f 100644
--- a/operations/external/jp2-load.c
+++ b/operations/external/jp2-load.c
@@ -167,7 +167,8 @@ prepare (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle rect = {0,0,0,0};
diff --git a/operations/external/jpg-load.c b/operations/external/jpg-load.c
index e429708..c6624b1 100644
--- a/operations/external/jpg-load.c
+++ b/operations/external/jpg-load.c
@@ -161,7 +161,8 @@ gegl_jpg_load_get_bounding_box (GeglOperation *operation)
 static gboolean
 gegl_jpg_load_process (GeglOperation       *operation,
                        GeglBuffer          *output,
-                       const GeglRectangle *result)
+                       const GeglRectangle *result,
+                       gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle        rect={0,0};
diff --git a/operations/external/matting-levin.c b/operations/external/matting-levin.c
index d448897..acece62 100644
--- a/operations/external/matting-levin.c
+++ b/operations/external/matting-levin.c
@@ -1363,7 +1363,8 @@ matting_process (GeglOperation       *operation,
                  GeglBuffer          *input_buf,
                  GeglBuffer          *aux_buf,
                  GeglBuffer          *output_buf,
-                 const GeglRectangle *result)
+                 const GeglRectangle *result,
+                 gint                 level)
 {
   const GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gdouble          *input   = NULL,
diff --git a/operations/external/openraw.c b/operations/external/openraw.c
index 4ad1964..277fc7b 100644
--- a/operations/external/openraw.c
+++ b/operations/external/openraw.c
@@ -183,7 +183,8 @@ static gboolean
 process (GeglOperation          *operation,
          GeglOperationContext   *context,
          const gchar            *output_pad,
-         const GeglRectangle    *result)
+         const GeglRectangle    *result,
+         gint                    level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   g_assert (g_str_equal (output_pad, "output"));
diff --git a/operations/external/path.c b/operations/external/path.c
index c88642a..f8c151f 100644
--- a/operations/external/path.c
+++ b/operations/external/path.c
@@ -358,7 +358,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/external/pixbuf.c b/operations/external/pixbuf.c
index ef99a2b..b873738 100644
--- a/operations/external/pixbuf.c
+++ b/operations/external/pixbuf.c
@@ -61,7 +61,8 @@ static void prepare (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/external/png-load.c b/operations/external/png-load.c
index 2278a8c..dcf622e 100644
--- a/operations/external/png-load.c
+++ b/operations/external/png-load.c
@@ -391,7 +391,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gint        problem;
diff --git a/operations/external/png-save.c b/operations/external/png-save.c
index 432d3b0..adbf1a4 100644
--- a/operations/external/png-save.c
+++ b/operations/external/png-save.c
@@ -179,7 +179,8 @@ gegl_buffer_export_png (GeglBuffer  *gegl_buffer,
 static gboolean
 gegl_png_save_process (GeglOperation       *operation,
                        GeglBuffer          *input,
-                       const GeglRectangle *result)
+                       const GeglRectangle *result,
+                       gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c
index 5f92486..f3b8700 100644
--- a/operations/external/ppm-load.c
+++ b/operations/external/ppm-load.c
@@ -213,7 +213,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   FILE         *fp;
diff --git a/operations/external/ppm-save.c b/operations/external/ppm-save.c
index 34fce87..4e05d8e 100644
--- a/operations/external/ppm-save.c
+++ b/operations/external/ppm-save.c
@@ -113,7 +113,8 @@ ppm_save_write(FILE    *fp,
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *rect)
+         const GeglRectangle *rect,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/external/rgbe-load.c b/operations/external/rgbe-load.c
index c06e71c..ddb9f16 100644
--- a/operations/external/rgbe-load.c
+++ b/operations/external/rgbe-load.c
@@ -72,7 +72,8 @@ cleanup:
 static gboolean
 gegl_rgbe_load_process (GeglOperation       *operation,
                         GeglBuffer          *output,
-                        const GeglRectangle *result)
+                        const GeglRectangle *result,
+                        gint                 level)
 {
   GeglChantO       *o       = GEGL_CHANT_PROPERTIES (operation);
   gboolean          success = FALSE;
diff --git a/operations/external/rgbe-save.c b/operations/external/rgbe-save.c
index 2f65077..27234d3 100644
--- a/operations/external/rgbe-save.c
+++ b/operations/external/rgbe-save.c
@@ -41,7 +41,8 @@ static const gchar *FORMAT = "RGB float";
 static gboolean
 gegl_rgbe_save_process (GeglOperation       *operation,
                         GeglBuffer          *input,
-                        const GeglRectangle *rect)
+                        const GeglRectangle *rect,
+                        gint                 level)
 {
   GeglChantO *o       = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *pixels  = NULL;
diff --git a/operations/external/save-pixbuf.c b/operations/external/save-pixbuf.c
index cfadc5e..20848e7 100644
--- a/operations/external/save-pixbuf.c
+++ b/operations/external/save-pixbuf.c
@@ -39,7 +39,8 @@ gegl_chant_pointer (pixbuf, _("Pixbuf location"),
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/external/sdl-display.c b/operations/external/sdl-display.c
index dfde21f..0b850e3 100644
--- a/operations/external/sdl-display.c
+++ b/operations/external/sdl-display.c
@@ -81,7 +81,8 @@ static guint handle = 0;
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *source;
diff --git a/operations/external/svg-load.c b/operations/external/svg-load.c
index 75888e3..9511c1d 100644
--- a/operations/external/svg-load.c
+++ b/operations/external/svg-load.c
@@ -196,7 +196,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result_foo)
+         const GeglRectangle *result_foo,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gint        result;
diff --git a/operations/external/text.c b/operations/external/text.c
index 5489589..b09cb55 100644
--- a/operations/external/text.c
+++ b/operations/external/text.c
@@ -170,7 +170,8 @@ static void text_layout_text (GeglChant *self,
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChant *self = GEGL_CHANT (operation);
 
diff --git a/operations/external/v4l.c b/operations/external/v4l.c
index 62f7b44..528ad29 100644
--- a/operations/external/v4l.c
+++ b/operations/external/v4l.c
@@ -203,7 +203,8 @@ static gboolean update (gpointer operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   Priv       *p = (Priv*)o->chant_data;
diff --git a/operations/external/vector-fill.c b/operations/external/vector-fill.c
index 9f71166..60a5abf 100644
--- a/operations/external/vector-fill.c
+++ b/operations/external/vector-fill.c
@@ -116,7 +116,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gboolean need_fill = FALSE;
diff --git a/operations/external/vector-stroke.c b/operations/external/vector-stroke.c
index 29e7a04..fcbdeb3 100644
--- a/operations/external/vector-stroke.c
+++ b/operations/external/vector-stroke.c
@@ -143,7 +143,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gboolean need_stroke = FALSE;
diff --git a/operations/generated/math.rb b/operations/generated/math.rb
index 0d37c8c..544dcf5 100755
--- a/operations/generated/math.rb
+++ b/operations/generated/math.rb
@@ -85,7 +85,8 @@ process (GeglOperation        *op,
           void                *aux_buf,
           void                *out_buf,
           glong                n_pixels,
-          const GeglRectangle *roi)
+          const GeglRectangle *roi,
+          gint                 level)
 {
   gfloat * GEGL_ALIGNED in = in_buf;
   gfloat * GEGL_ALIGNED out = out_buf;
diff --git a/operations/generated/other-blend.rb b/operations/generated/other-blend.rb
index e866a40..f056517 100755
--- a/operations/generated/other-blend.rb
+++ b/operations/generated/other-blend.rb
@@ -68,7 +68,8 @@ process (GeglOperation        *op,
           void                *aux_buf,
           void                *out_buf,
           glong                n_pixels,
-          const GeglRectangle *roi)
+          const GeglRectangle *roi,
+          gint                 level)
 {
   gint i;
   gfloat * GEGL_ALIGNED in = in_buf;
diff --git a/operations/generated/svg-12-blend.rb b/operations/generated/svg-12-blend.rb
index fcb337c..ef2cd1e 100755
--- a/operations/generated/svg-12-blend.rb
+++ b/operations/generated/svg-12-blend.rb
@@ -97,7 +97,8 @@ process (GeglOperation       *op,
          void                *aux_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat * GEGL_ALIGNED in = in_buf;
   gfloat * GEGL_ALIGNED aux = aux_buf;
diff --git a/operations/generated/svg-12-porter-duff.rb b/operations/generated/svg-12-porter-duff.rb
index 204d082..01b21f8 100755
--- a/operations/generated/svg-12-porter-duff.rb
+++ b/operations/generated/svg-12-porter-duff.rb
@@ -88,7 +88,8 @@ process (GeglOperation        *op,
           void                *aux_buf,
           void                *out_buf,
           glong                n_pixels,
-          const GeglRectangle *roi)
+          const GeglRectangle *roi,
+          gint                 level)
 {
   gint i;
   gfloat * GEGL_ALIGNED in = in_buf;
diff --git a/operations/workshop/box-max.c b/operations/workshop/box-max.c
index 6d3af64..f4b08ce 100644
--- a/operations/workshop/box-max.c
+++ b/operations/workshop/box-max.c
@@ -164,7 +164,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle input_rect = gegl_operation_get_required_for_output (operation, "input", result);
diff --git a/operations/workshop/box-min.c b/operations/workshop/box-min.c
index 78f197c..8b4a9ba 100644
--- a/operations/workshop/box-min.c
+++ b/operations/workshop/box-min.c
@@ -164,7 +164,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle input_rect = gegl_operation_get_required_for_output (operation, "input", result);
diff --git a/operations/workshop/box-percentile.c b/operations/workshop/box-percentile.c
index bed6768..192bd79 100644
--- a/operations/workshop/box-percentile.c
+++ b/operations/workshop/box-percentile.c
@@ -59,7 +59,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/color-reduction.c b/operations/workshop/color-reduction.c
index b9a5146..4c47ac0 100644
--- a/operations/workshop/color-reduction.c
+++ b/operations/workshop/color-reduction.c
@@ -416,7 +416,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   guint       channel_bits [4];
diff --git a/operations/workshop/demosaic-bimedian.c b/operations/workshop/demosaic-bimedian.c
index 7841092..f8eb4b0 100644
--- a/operations/workshop/demosaic-bimedian.c
+++ b/operations/workshop/demosaic-bimedian.c
@@ -189,7 +189,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle src_rect = gegl_operation_get_required_for_output (operation, "input", result);
diff --git a/operations/workshop/demosaic-simple.c b/operations/workshop/demosaic-simple.c
index d570e22..561a687 100644
--- a/operations/workshop/demosaic-simple.c
+++ b/operations/workshop/demosaic-simple.c
@@ -120,7 +120,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle compute = gegl_operation_get_required_for_output (operation, "input", result);
diff --git a/operations/workshop/disc-percentile.c b/operations/workshop/disc-percentile.c
index 85db564..bb3b5bd 100644
--- a/operations/workshop/disc-percentile.c
+++ b/operations/workshop/disc-percentile.c
@@ -190,7 +190,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/external/ff-save.c b/operations/workshop/external/ff-save.c
index 68acf53..cedf3bf 100644
--- a/operations/workshop/external/ff-save.c
+++ b/operations/workshop/external/ff-save.c
@@ -805,7 +805,8 @@ filechanged (GeglChantOperation *op, const char *att)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   static gint inited = 0;
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
diff --git a/operations/workshop/external/gluas.c b/operations/workshop/external/gluas.c
index 0fe7e91..e927d44 100644
--- a/operations/workshop/external/gluas.c
+++ b/operations/workshop/external/gluas.c
@@ -937,7 +937,8 @@ process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *aux,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/workshop/external/line-profile.c b/operations/workshop/external/line-profile.c
index 583c11b..dfcfe4f 100644
--- a/operations/workshop/external/line-profile.c
+++ b/operations/workshop/external/line-profile.c
@@ -56,7 +56,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gint        width = MAX(MAX (o->width, o->x0), o->x1);
diff --git a/operations/workshop/generated/blend.rb b/operations/workshop/generated/blend.rb
index 08193d9..bf4850b 100755
--- a/operations/workshop/generated/blend.rb
+++ b/operations/workshop/generated/blend.rb
@@ -92,7 +92,8 @@ process (GeglOperation       *op,
          void                *aux_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   gfloat *in  = in_buf;
   gfloat *aux = aux_buf;
diff --git a/operations/workshop/hstack.c b/operations/workshop/hstack.c
index 084336c..2f2d47a 100644
--- a/operations/workshop/hstack.c
+++ b/operations/workshop/hstack.c
@@ -106,14 +106,12 @@ process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *aux,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
-  GeglOperationComposer *composer;
   GeglBuffer            *temp_in;
   GeglBuffer            *temp_aux;
 
-  composer = GEGL_OPERATION_COMPOSER (operation);
-
   /* FIXME: just pass the originals buffers if the result rectangle does not
    * include both input buffers
    */
diff --git a/operations/workshop/kuwahara-max.c b/operations/workshop/kuwahara-max.c
index a00bc4f..5adbe31 100644
--- a/operations/workshop/kuwahara-max.c
+++ b/operations/workshop/kuwahara-max.c
@@ -208,7 +208,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/kuwahara-min.c b/operations/workshop/kuwahara-min.c
index 520df23..64e5157 100644
--- a/operations/workshop/kuwahara-min.c
+++ b/operations/workshop/kuwahara-min.c
@@ -208,7 +208,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/kuwahara.c b/operations/workshop/kuwahara.c
index 7d0baa7..ca279a4 100644
--- a/operations/workshop/kuwahara.c
+++ b/operations/workshop/kuwahara.c
@@ -208,7 +208,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/lens-correct.c b/operations/workshop/lens-correct.c
index 163004f..2794b30 100644
--- a/operations/workshop/lens-correct.c
+++ b/operations/workshop/lens-correct.c
@@ -374,7 +374,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 
diff --git a/operations/workshop/linear-gradient.c b/operations/workshop/linear-gradient.c
index 4fe71d9..6bc289d 100644
--- a/operations/workshop/linear-gradient.c
+++ b/operations/workshop/linear-gradient.c
@@ -61,7 +61,8 @@ static gboolean
 process (GeglOperation       *operation,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/workshop/mandelbrot.c b/operations/workshop/mandelbrot.c
index e5df9d7..a84d654 100644
--- a/operations/workshop/mandelbrot.c
+++ b/operations/workshop/mandelbrot.c
@@ -82,7 +82,8 @@ get_bounding_box (GeglOperation *operation)
 static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *buf;
diff --git a/operations/workshop/max-rgb.c b/operations/workshop/max-rgb.c
index a8a952e..802cbec 100644
--- a/operations/workshop/max-rgb.c
+++ b/operations/workshop/max-rgb.c
@@ -49,7 +49,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (op);
   gfloat     * GEGL_ALIGNED in_pixel;
diff --git a/operations/workshop/noise-spread.c b/operations/workshop/noise-spread.c
index c2e12af..a0b757f 100644
--- a/operations/workshop/noise-spread.c
+++ b/operations/workshop/noise-spread.c
@@ -133,7 +133,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle boundary = gegl_operation_get_bounding_box (operation);
diff --git a/operations/workshop/posterize.c b/operations/workshop/posterize.c
index bd16361..d97dc07 100644
--- a/operations/workshop/posterize.c
+++ b/operations/workshop/posterize.c
@@ -42,7 +42,8 @@ static gboolean process (GeglOperation       *operation,
                          void                *in_buf,
                          void                *out_buf,
                          glong                samples,
-                         const GeglRectangle *roi)
+                         const GeglRectangle *roi,
+                         gint                 level)
 {
   GeglChantO *o      = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *src    = in_buf;
diff --git a/operations/workshop/radial-gradient.c b/operations/workshop/radial-gradient.c
index a23045f..5713836 100644
--- a/operations/workshop/radial-gradient.c
+++ b/operations/workshop/radial-gradient.c
@@ -61,7 +61,8 @@ static gboolean
 process (GeglOperation       *operation,
          void                *out_buf,
          glong                n_pixels,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   gfloat     *out_pixel = out_buf;
diff --git a/operations/workshop/rawbayer-load.c b/operations/workshop/rawbayer-load.c
index 8a95adc..49c7a16 100644
--- a/operations/workshop/rawbayer-load.c
+++ b/operations/workshop/rawbayer-load.c
@@ -109,11 +109,10 @@ get_bounding_box (GeglOperation *operation)
 }
 
 static gboolean
-process (GeglOperation       *operation,
-         GeglOperationContext     *context,
-         const gchar         *output_pad,
-         const GeglRectangle *result)
-
+process (GeglOperation        *operation,
+         GeglOperationContext *context,
+         const gchar          *output_pad,
+         const GeglRectangle  *result)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
 #if 1
@@ -140,10 +139,8 @@ static void
 gegl_chant_class_init (GeglChantClass *klass)
 {
   GeglOperationClass       *operation_class;
-  GeglOperationSourceClass *source_class;
 
   operation_class = GEGL_OPERATION_CLASS (klass);
-  source_class    = GEGL_OPERATION_SOURCE_CLASS (klass);
 
   operation_class->process = process;
   operation_class->get_bounding_box = get_bounding_box;
diff --git a/operations/workshop/snn-percentile.c b/operations/workshop/snn-percentile.c
index cafe0bf..4a0e088 100644
--- a/operations/workshop/snn-percentile.c
+++ b/operations/workshop/snn-percentile.c
@@ -229,7 +229,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO   *o = GEGL_CHANT_PROPERTIES (operation);
   GeglBuffer   *temp_in;
diff --git a/operations/workshop/unpremul.c b/operations/workshop/unpremul.c
index 6d6883b..e463286 100644
--- a/operations/workshop/unpremul.c
+++ b/operations/workshop/unpremul.c
@@ -33,7 +33,8 @@ process (GeglOperation       *op,
          void                *in_buf,
          void                *out_buf,
          glong                samples,
-         const GeglRectangle *roi)
+         const GeglRectangle *roi,
+         gint                 level)
 {
   glong   i;
   gfloat *in  = in_buf;
diff --git a/operations/workshop/whirl-pinch.c b/operations/workshop/whirl-pinch.c
index 7f2104f..7385b5c 100644
--- a/operations/workshop/whirl-pinch.c
+++ b/operations/workshop/whirl-pinch.c
@@ -215,7 +215,8 @@ static gboolean
 process (GeglOperation       *operation,
          GeglBuffer          *input,
          GeglBuffer          *output,
-         const GeglRectangle *result)
+         const GeglRectangle *result,
+         gint                 level)
 {
   GeglChantO *o = GEGL_CHANT_PROPERTIES (operation);
   GeglRectangle boundary = gegl_operation_get_bounding_box (operation);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]