gegl r2362 - in trunk: . gegl/buffer
- From: ok svn gnome org
- To: svn-commits-list gnome org
- Subject: gegl r2362 - in trunk: . gegl/buffer
- Date: Sun, 1 Jun 2008 13:27:20 +0000 (UTC)
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]