Hello all,
        I've just started writing my first gimp plugin, so I'm very new at
this.  Hope nobody minds my stupid questions ;-)

So what I'm trying to do is make a plugin that selects certain regions of
an image (the regions selected will depend on what's in the image).  I've
already managed to make it so that it can select a pre-defined
(i.e. defined in the source) area, but now I need to make that area depend
on the contents of the image.

I thought about using some kind of "double tile iterator" to do this, e.g:

  gimp_pixel_rgn_init (&image_rgn, image_drawable,
                        x1, y1, (x2 - x1), (y2 - y1), TRUE, TRUE);
  gimp_pixel_rgn_init (&select_rgn, select_drawable,
                        x1, y1, (x2 - x1), (y2 - y1), TRUE, TRUE);
  for (p1 = gimp_pixel_rgns_register (1, &image_rgn),
         p2 = gimp_pixel_rgns_register (1, &select_rgn);
       (p1 != NULL) && (p2 != NULL);
       p1 = gimp_pixel_rgns_process (p1),
         p2 = gimp_pixel_rgns_process (p2))
        /* Interesting stuff goes in here!            */
        /* Set some of the pixels in select_drawable  */
        /* depending on the pixels in image_drawable. */

but then it occurred to me that the tiles that get iterated over will not
necessarily be of the same size for the image_drawable and select_drawable
which would cause this loop to go horribly wrong!

Can anyone suggest what the Right Thing to do here is?  I know it's
possible to look at image_drawable on a pixel-by-pixel basis (rather
than tile-by-tile), but from what I've read this will make things *very*
slow and obviously I don't want that ;-)

Thanks for any help.
Best wishes,
Gimp-developer mailing list

Reply via email to