gegl r2396 - in trunk: . gegl/buffer gegl/operation



Author: ok
Date: Mon Jun  9 01:04:06 2008
New Revision: 2396
URL: http://svn.gnome.org/viewvc/gegl?rev=2396&view=rev

Log:
* gegl/buffer/gegl-buffer-iterator.c:
(gegl_buffer_scan_compatible): improved test making more cases
succeed.
(gegl_buffer_iterator_add), (gegl_buffer_iterator_new):
* gegl/buffer/gegl-buffer-iterator.h: made the buffer iterator
construction functions take a const GeglRectangle * instead of passing
the rois by value.
* gegl/buffer/gegl-buffer-access.c: (gegl_buffer_copy):
* gegl/operation/gegl-operation-point-composer.c:
* gegl/operation/gegl-operation-point-filter.c:
* gegl/operation/gegl-operation-point-render.c: updated according to
API changes.


Modified:
   trunk/ChangeLog
   trunk/gegl/buffer/gegl-buffer-access.c
   trunk/gegl/buffer/gegl-buffer-iterator.c
   trunk/gegl/buffer/gegl-buffer-iterator.h
   trunk/gegl/operation/gegl-operation-point-composer.c
   trunk/gegl/operation/gegl-operation-point-filter.c
   trunk/gegl/operation/gegl-operation-point-render.c

Modified: trunk/gegl/buffer/gegl-buffer-access.c
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-access.c	(original)
+++ trunk/gegl/buffer/gegl-buffer-access.c	Mon Jun  9 01:04:06 2008
@@ -1182,8 +1182,8 @@
       dest_rect_r.width = src_rect->width;
       dest_rect_r.height = src_rect->height;
 
-      i = gegl_buffer_iterator_new (dst, dest_rect_r, dst->format, GEGL_BUFFER_WRITE);
-      read = gegl_buffer_iterator_add (i, src, *src_rect, src->format, GEGL_BUFFER_READ);
+      i = gegl_buffer_iterator_new (dst, &dest_rect_r, dst->format, GEGL_BUFFER_WRITE);
+      read = gegl_buffer_iterator_add (i, src, src_rect, src->format, GEGL_BUFFER_READ);
       while (gegl_buffer_iterator_next (i))
         babl_process (fish, i->data[read], i->data[0], i->length);
     }

Modified: trunk/gegl/buffer/gegl-buffer-iterator.c
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-iterator.c	(original)
+++ trunk/gegl/buffer/gegl-buffer-iterator.c	Mon Jun  9 01:04:06 2008
@@ -114,23 +114,11 @@
   if (bufferA->tile_storage->tile_height !=
       bufferB->tile_storage->tile_height)
     return FALSE;
-
-
-  /* FIXME: incorporate the shift with the difference below to
-   * allow some more combinations to be considered scan compatible
-   */
-
-  if (bufferA->shift_x !=
-      bufferB->shift_x)
+  if ( (abs((bufferA->shift_x+xA) - (bufferB->shift_x+xB))
+        % bufferA->tile_storage->tile_width) != 0)
     return FALSE;
-  if (bufferA->shift_y !=
-      bufferB->shift_y)
-    return FALSE;
-  if (xA!=xB || yA!=yB)
-    return FALSE;
-  if ( (abs(xA - xB) % bufferA->tile_storage->tile_width) != 0)
-    return FALSE;
-  if ( (abs(yA - yB) % bufferA->tile_storage->tile_height) != 0)
+  if ( (abs((bufferA->shift_y+yA) - (bufferB->shift_y+yB))
+        % bufferA->tile_storage->tile_height) != 0)
     return FALSE;
   return TRUE;
 }
@@ -161,10 +149,10 @@
   GeglBuffer *buffer   = i->buffer;
   gint  tile_width     = buffer->tile_storage->tile_width;
   gint  tile_height    = buffer->tile_storage->tile_height;
-  gint  buffer_shift_x = buffer->shift_x;
-  gint  buffer_shift_y = buffer->shift_y;
-  gint  buffer_x       = buffer->extent.x + buffer_shift_x/* + i->roi.x*/;
-  gint  buffer_y       = buffer->extent.y + buffer_shift_y/* + i->roi.y*/;
+  gint  buffer_shift_x = buffer->shift_x /*+ i->roi.x*/;
+  gint  buffer_shift_y = buffer->shift_y /*+ i->roi.y*/;
+  gint  buffer_x       = buffer->extent.x + buffer_shift_x;
+  gint  buffer_y       = buffer->extent.y + buffer_shift_y;
 
   if (i->roi.width == 0 || i->roi.height == 0)
     return FALSE;
@@ -243,7 +231,6 @@
         {
           goto gulp; /* return the first tile in the next row */
         }
-
       return FALSE;
     }
   return FALSE;
@@ -328,7 +315,7 @@
 gint
 gegl_buffer_iterator_add (GeglBufferIterator  *iterator,
                           GeglBuffer          *buffer,
-                          GeglRectangle        roi,
+                          const GeglRectangle *roi,
                           const Babl          *format,
                           guint                flags)
 {
@@ -346,7 +333,8 @@
 
   self = i->iterators++;
 
-  i->rect[self]=roi;
+  /* FIXME: handle roi == NULL, by copying from where it makes sense */
+  i->rect[self]=*roi;
   i->buffer[self]=buffer;
   if (format)
     i->format[self]=format;
@@ -508,7 +496,7 @@
 }
 
 GeglBufferIterator *gegl_buffer_iterator_new (GeglBuffer          *buffer,
-                                              GeglRectangle        roi, 
+                                              const GeglRectangle *roi, 
                                               const Babl          *format,
                                               guint                flags)
 {

Modified: trunk/gegl/buffer/gegl-buffer-iterator.h
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-iterator.h	(original)
+++ trunk/gegl/buffer/gegl-buffer-iterator.h	Mon Jun  9 01:04:06 2008
@@ -51,10 +51,10 @@
  * Returns: a new buffer iterator that can be used to iterate through the
  * buffers pixels.
  */
-GeglBufferIterator * gegl_buffer_iterator_new  (GeglBuffer         *buffer,
-                                                GeglRectangle       roi, 
-                                                const Babl         *format,
-                                                guint               flags);
+GeglBufferIterator * gegl_buffer_iterator_new  (GeglBuffer          *buffer,
+                                                const GeglRectangle *roi, 
+                                                const Babl          *format,
+                                                guint                flags);
 
 /**
  * gegl_buffer_iterator_add:
@@ -72,11 +72,11 @@
  * Returns: an integer handle refering to the indice in the iterator structure
  * of the added buffer.
  */
-gint                 gegl_buffer_iterator_add  (GeglBufferIterator *iterator,
-                                                GeglBuffer         *buffer,
-                                                GeglRectangle       roi, 
-                                                const Babl         *format,
-                                                guint               flags);
+gint                 gegl_buffer_iterator_add  (GeglBufferIterator  *iterator,
+                                                GeglBuffer          *buffer,
+                                                const GeglRectangle *roi, 
+                                                const Babl          *format,
+                                                guint                flags);
 
 
 /**

Modified: trunk/gegl/operation/gegl-operation-point-composer.c
==============================================================================
--- trunk/gegl/operation/gegl-operation-point-composer.c	(original)
+++ trunk/gegl/operation/gegl-operation-point-composer.c	Mon Jun  9 01:04:06 2008
@@ -200,12 +200,12 @@
 
   if ((result->width > 0) && (result->height > 0))
     {
-      GeglBufferIterator *i = gegl_buffer_iterator_new (output, *result, out_format, GEGL_BUFFER_WRITE);
-      gint read  = gegl_buffer_iterator_add (i, input,  *result, in_format, GEGL_BUFFER_READ);
+      GeglBufferIterator *i = gegl_buffer_iterator_new (output, result, out_format, GEGL_BUFFER_WRITE);
+      gint read  = gegl_buffer_iterator_add (i, input,  result, in_format, GEGL_BUFFER_READ);
 
       if (aux)
         {
-          gint foo = gegl_buffer_iterator_add (i, aux,  *result, aux_format, GEGL_BUFFER_READ);
+          gint foo = gegl_buffer_iterator_add (i, aux,  result, aux_format, GEGL_BUFFER_READ);
 
           while (gegl_buffer_iterator_next (i))
             {

Modified: trunk/gegl/operation/gegl-operation-point-filter.c
==============================================================================
--- trunk/gegl/operation/gegl-operation-point-filter.c	(original)
+++ trunk/gegl/operation/gegl-operation-point-filter.c	Mon Jun  9 01:04:06 2008
@@ -75,8 +75,8 @@
 
   if ((result->width > 0) && (result->height > 0))
     {
-      GeglBufferIterator *i = gegl_buffer_iterator_new (output, *result, out_format, GEGL_BUFFER_WRITE);
-      gint read  = gegl_buffer_iterator_add (i, input,  *result, in_format, GEGL_BUFFER_READ);
+      GeglBufferIterator *i = gegl_buffer_iterator_new (output, result, out_format, GEGL_BUFFER_WRITE);
+      gint read  = gegl_buffer_iterator_add (i, input,  result, in_format, GEGL_BUFFER_READ);
       while (gegl_buffer_iterator_next (i))
            point_filter_class->process (operation, i->data[read], i->data[0], i->length, &i->roi[0]);
 

Modified: trunk/gegl/operation/gegl-operation-point-render.c
==============================================================================
--- trunk/gegl/operation/gegl-operation-point-render.c	(original)
+++ trunk/gegl/operation/gegl-operation-point-render.c	Mon Jun  9 01:04:06 2008
@@ -94,10 +94,10 @@
 
   if ((result->width > 0) && (result->height > 0))
     {
-      GeglBufferIterator *i = gegl_buffer_iterator_new (output, *result, out_format, GEGL_BUFFER_WRITE);      
+      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]);
     }
   return TRUE;
-}
\ No newline at end of file
+}



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