Re: [Gimp-developer] PixelRegions?

2006-06-17 Thread Nathan Summers

On 6/16/06, Frédéric [EMAIL PROTECTED] wrote:

On Friday 16 June 2006 21:41, Michael Thaler wrote:

 Can someone explain to me why the code iterates over all pixels in a
 region and then over all regions and not just over all pixels in a
 layer? What are PixelRegions actually, what are they used for and why
 they are needed here? (I had a look at
 http://developer.gimp.org/api/2.0/app/app-pixel-region.html but this
 doesn't explain what they are for)

As far as I understand, a region can be what you want; it can cover a
entire layer, or just a small part (like the preview for plug-ins. Have a
look here:

http://developer.gimp.org/writing-a-plug-in/2/index.html

When you have initialized a region, you can access it pixel by pixel, row
by row, or tile by tile, depending what you want to do (I guess each
method has advantages, according to the filter you want to write).


I think it's important to mention that if your algorithm supports it,
using pixel_regions_process () or the new gimp_rgn_iterate() functions
is by far the easiest and best performing way to use pixel regions.
If you use them on more than one pixel region, the regions are
registered such that through each iteration, all of the regions are
pointing to the same part.  This makes operations like copying from
one layer to another a snap to write.  You might want to look at
tile.c or threshold_alpha.c in the plug-ins/common directory for some
examples.

Rockwalrus
___
Gimp-developer mailing list
Gimp-developer@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer


[Gimp-developer] PixelRegions?

2006-06-16 Thread Michael Thaler
Hello,

I am trying to understand the siox-tool code. While looking at the code, I 
discovered the following:

static inline void threshold_mask (TileManager *mask, gint x, gint y, gint 
width, gint height)
{
  PixelRegion region;
  gpointerpr;
  gintrow, col;

  pixel_region_init (region, mask, x, y, width, height, TRUE);

  for (pr = pixel_regions_register (1, region);
   pr != NULL; pr = pixel_regions_process (pr))
{
Iterate over all pixels in the region and do something...
}
}

Can someone explain to me why the code iterates over all pixels in a region 
and then over all regions and not just over all pixels in a layer? What are 
PixelRegions actually, what are they used for and why they are needed here? 
(I had a look at http://developer.gimp.org/api/2.0/app/app-pixel-region.html 
but this doesn't explain what they are for)

Thank you very much in advance,
Michael
___
Gimp-developer mailing list
Gimp-developer@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer


Re: [Gimp-developer] PixelRegions?

2006-06-16 Thread Frédéric
On Friday 16 June 2006 21:41, Michael Thaler wrote:

 Can someone explain to me why the code iterates over all pixels in a
 region and then over all regions and not just over all pixels in a
 layer? What are PixelRegions actually, what are they used for and why
 they are needed here? (I had a look at
 http://developer.gimp.org/api/2.0/app/app-pixel-region.html but this
 doesn't explain what they are for)

As far as I understand, a region can be what you want; it can cover a 
entire layer, or just a small part (like the preview for plug-ins. Have a 
look here:

http://developer.gimp.org/writing-a-plug-in/2/index.html

When you have initialized a region, you can access it pixel by pixel, row 
by row, or tile by tile, depending what you want to do (I guess each 
method has advantages, according to the filter you want to write).

-- 
   Frédéric

   http://www.gbiloba.org


pgpGo27X5Db7N.pgp
Description: PGP signature
___
Gimp-developer mailing list
Gimp-developer@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer