gegl r2413 - in trunk: . gegl/buffer



Author: ok
Date: Wed Jun 11 16:11:31 2008
New Revision: 2413
URL: http://svn.gnome.org/viewvc/gegl?rev=2413&view=rev

Log:
* gegl/buffer/gegl-buffer-access.c: (gegl_buffer_clear): ported to use
GeglBufferIterator.


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

Modified: trunk/gegl/buffer/gegl-buffer-access.c
==============================================================================
--- trunk/gegl/buffer/gegl-buffer-access.c	(original)
+++ trunk/gegl/buffer/gegl-buffer-access.c	Wed Jun 11 16:11:31 2008
@@ -1193,13 +1193,8 @@
 gegl_buffer_clear (GeglBuffer          *dst,
                    const GeglRectangle *dst_rect)
 {
-  /* FIXME: make gegl_buffer_copy work with COW shared tiles when possible */
-
-  GeglRectangle dst_line;
-  const Babl   *format;
-  guchar       *temp;
-  guint         i;
-  gint          pxsize;
+  GeglBufferIterator *i;
+  gint                pxsize;
 
   g_return_if_fail (GEGL_IS_BUFFER (dst));
 
@@ -1209,19 +1204,14 @@
     }
 
   pxsize = dst->tile_storage->px_size;
-  format = dst->format;
-
-  dst_line = *dst_rect;
-  dst_line.height = 1;
-
-  temp = g_malloc0 (dst_line.width * pxsize);
 
-  for (i=0; i<dst_rect->height; i++)
+  i = gegl_buffer_iterator_new (dst, dst_rect, dst->format, GEGL_BUFFER_WRITE);
+  while (gegl_buffer_iterator_next (i))
     {
-      gegl_buffer_set (dst, &dst_line, format, temp, GEGL_AUTO_ROWSTRIDE);
-      dst_line.y++;
+      gint j;
+      for (j=0;j<i->length * pxsize;j++)
+        i->data[j]=0;
     }
-  g_free (temp);
 }
 
 GeglBuffer *



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