The mapping of a coordinate to a callback may be easily done
by creating a so called label image that has the following properties:

  * It has the same size as the image map being displayed
  * For each pixel it contains either 0 if there is no callback
    associated with that pixel or a callback index otherwise.

Since all GdkPixbufs are 24 bits deep it means that you have 2^24-1 
possible callbacks that you may encode in RGB, which should be more
than enough.;-). Note that the label image is never shown to the user.
(There is nothing to show really...)

Once you have the label image you just catch the click callback on the
image map, get its coordinate, lookup the rgb value of the corresponding
pixel on the label image, and then call the callback indexed by

   $r+($g<<8)+($b<<16)

Regards,
Dov

On Sat, Aug 27, 2005 at 08:58:34PM +0200, A. Pagaltzis wrote:
> * Gábor Szabó <[EMAIL PROTECTED]> [2005-08-27 18:25]:
> > Is there a way to create a clickable imagemap in GTK+
> > (preferably without Gnome so it can run on Windows as well)
> 
> Intercepting clicks on an image requires wrapping a GtkImage in
> GtkEventBox and handling the `clicked` signal of the EventBox.
> 
> If you don???t have hundreds of different clickable spots and
> they???re all rectangular, you could simply use a suitable bunch of
> GtkEventBoxes.
> 
> If you have many or non-rectangular clickable areas, you will use
> only a single EventBox covering the entire image, and then you
> must bust out the math and manually check whether the X/Y
> coordinates of the click fell into a clickable area.
> 
> There is no easier solution than this.
> 
> There should be, really, since it???s useful enough and requested
> frequently enough that having a stock tool for this in the box
> would be nice.
> 
> Regards,
> -- 
> Aristotle Pagaltzis // <http://plasmasturm.org/>
> _______________________________________________
> gtk-perl-list mailing list
> gtk-perl-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-perl-list
> 
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to