gegl r2362 - in trunk: . gegl/buffer



Author: ok
Date: Sun Jun  1 13:27:20 2008
New Revision: 2362
URL: http://svn.gnome.org/viewvc/gegl?rev=2362&view=rev

Log:
* gegl/buffer/gegl-buffer-private.h: added
gegl_buffer_scan_iterator_get_rectangle to get the coordinates of the
buffer represented by a linear buffer.
* gegl/buffer/gegl-buffer-access.c: improved naming.


Modified:
   trunk/ChangeLog
   trunk/gegl/buffer/gegl-buffer-access.c
   trunk/gegl/buffer/gegl-buffer-private.h

Modified: trunk/gegl/buffer/gegl-buffer-access.c
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-access.c	(original)
+++ trunk/gegl/buffer/gegl-buffer-access.c	Sun Jun  1 13:27:20 2008
@@ -103,7 +103,8 @@
       gulp:
       if (!gegl_buffer_tile_iterator_next (tile_i))
         return FALSE;
-      i->width = tile_i->subrect.width;
+      i->length = tile_i->subrect.width;
+      i->rowstride = tile_i->subrect.width;
       i->row = 0;
     }
   /* we should now have a valid tile */
@@ -114,7 +115,8 @@
     {
       gint  px_size = tile_i->buffer->format->format.bytes_per_pixel;
       guchar *data = tile_i->data;
-      i->width = tile_i->subrect.width * tile_i->subrect.height;
+      i->length = tile_i->subrect.width * tile_i->subrect.height;
+      i->rowstride = tile_i->subrect.width;
       i->data = data + px_size * (tile_i->subrect.width * tile_i->subrect.y);
       i->row = tile_i->subrect.height;
       return TRUE;

Modified: trunk/gegl/buffer/gegl-buffer-private.h
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-private.h	(original)
+++ trunk/gegl/buffer/gegl-buffer-private.h	Sun Jun  1 13:27:20 2008
@@ -107,8 +107,8 @@
   GeglRectangle  roi;
   gint           col;
   gint           row;
-  gboolean       write; /* perhaps in a subclass struct? */
-  GeglRectangle  subrect; /* has negative x when entire tile is valid */
+  gboolean       write;   /* perhaps in a subclass struct? */
+  GeglRectangle  subrect; /* has x==-1 when entire tile is valid */
   gpointer       data;
   gpointer       sub_data;
   gint           rowstride;
@@ -116,12 +116,29 @@
 
 typedef struct GeglBufferScanIterator {
   GeglBufferTileIterator tile_iterator;
-  gint                   max_size; /*  in bytes */
-  gint                   width;
+  gint                   max_size;  /* in bytes */
+  gint                   rowstride; /* allows computing  */
+  gint                   length;
   gint                   row;
   gpointer               data;
 } GeglBufferScanIterator;
 
+#define gegl_buffer_scan_iterator_get_x(i) \
+    (((GeglBufferTileIterator*)(i))->col)
+#define gegl_buffer_scan_iterator_get_y(i) \
+    ((((GeglBufferTileIterator*)(i))->col)+ ((GeglBufferScanIterator*)(i))->row - 1)
+
+#define gegl_buffer_scan_iterator_get_rectangle(i,rect_ptr) \
+  if(i){GeglRectangle *foo = rect_ptr;\
+   if (foo) {\
+   foo->x=gegl_buffer_scan_iterator_get_x(i);\
+   foo->y=gegl_buffer_scan_iterator_get_y(i);\
+   foo->width= ((GeglBufferScanIterator*)i)->rowstride;\
+   foo->height=((GeglBufferScanIterator*)i)->length/ \
+                                       ((GeglBufferScanIterator*)i)->rowstride;\
+   }}
+
+
 gboolean                gegl_buffer_tile_iterator_next (GeglBufferTileIterator *i);
 gboolean                gegl_buffer_scan_iterator_next (GeglBufferScanIterator *i);
 GeglBufferTileIterator *gegl_buffer_tile_iterator_new  (GeglBuffer             *buffer,
@@ -136,11 +153,11 @@
                                      GeglBuffer             *buffer,
                                      GeglRectangle           roi,
                                      gboolean                write);
-GeglBufferScanIterator *gegl_buffer_scan_iterator_new (GeglBuffer             *buffer,
-                                                       GeglRectangle           roi,
-                                                       gboolean                write);
-gboolean                gegl_buffer_scan_compatible   (GeglBuffer *input,
-                                                       GeglBuffer *output);
+GeglBufferScanIterator *gegl_buffer_scan_iterator_new (GeglBuffer    *buffer,
+                                                       GeglRectangle  roi,
+                                                       gboolean       write);
+gboolean                gegl_buffer_scan_compatible   (GeglBuffer    *input,
+                                                       GeglBuffer    *output);
 
 
 #endif



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