Regarding the gtk-list subscription, see: http://mail.gnome.org/mailman/listinfo/gtk-list
for details. About the strange colors, it is most likely that your pixbuf has an alpha channel, which is different from my tutorial example where I hardcoded the assumption that GtkImageViewer always passes a 24-bit pixbuf in the annotate signal. If you use alpha channel, then you should use cairo_image_surface_create_for_data with CAIRO_FORMAT_ARGB32 instead. I'm not sure whether it is enough for to switch R and B in such a case though. Check the documentation or just check if it works. Regards, Dov 2009/4/12 Eduardo J. Andres <eduardoj.and...@gmail.com> > Hello Dov, > > Thanks fo the answer. > I am trying to know how to reply you by the gtk-list, but even I have done > my suscription to it, I do not know yet how to do it, therefore, I write you > again to same "gmail". Would you be able to explain me how to reply you > there. > > I shall look to the giv code, but in the meantime, I have seen that it is > not an issue with your software/widget, it is the same with GtkImageView, > for example. I would like to note you at that point that I am doing all my > testing under XP. > > So, if you have a pixbuf on a widget (whatever the widget may be), and you > make a cairo_surfacet_t from that pixbuf, when you draw with cairo to the > surface, you alway lose the color and get a line or arc with strange > effects. > > That´s what I would like to know, why?? > > Best regards > Eduardo > > 2009/4/12 Dov Grobgeld <dov.grobg...@gmail.com> > > Hello Eduardo, >> >> Thanks for the feedback. >> >> Regarding the drawing of polygons, I have had the same problem and the >> solution I made is outside the GtkImageViewer. Please download my program >> giv at giv.sf.net and have a look at the the pair of files >> giv_backstore.[ch] that provide a way of quickly storing all the information >> under a line and then restoring it. By tieing it to the button press and >> motion events it is possible to get a rubberband effect with only minimal >> flicker. (I'm considering a rewrite that eliminates flicker all together). >> See giv's use of it for details. (I agree it is also worthy of a tutorial. >> We'll see if I'll get around to it.) >> >> Once you have a fixed line of the polygon, I add it to the lines drawn by >> the annotate callback, since update time is no longer an issue. >> >> Regarding why your example doesn't work, I don't know, but it might have >> to do with the fact that you fix the pixbuf format to RGB24 without checking >> whether your pixbuf has an alpha channel. >> >> Good luck! >> >> Also, next time, please send the questions to the gtk-list. I take the >> freedom of CC:ing it. >> >> Regards, >> Dov >> >> 2009/4/10 Eduardo J. Andres <eduardoj.and...@gmail.com> >> >> Dear Dov >>> >>> I have been working with the widget during last days and have had not >>> success to get my requirement. >>> >>> It is to draw with cairo and the mouse poligons and lines as overlay of >>> the image pixbuf. Poligons will have a lot of points so the best aproach I >>> have seen is to draw them on the pixbuf an draw the new pixbuf to the image. >>> But it is so slow doing it on the "image_annotate" handler. >>> >>> I have seen a number of issues at that point, for example the idea to >>> get the cairo surface from your tutorial >>> >>> int img_width = gdk_pixbuf_get_width(pixbuf); >>> >>> >>> >>> int img_height = gdk_pixbuf_get_height(pixbuf); >>> >>> >>> >>> cairo_surface_t *surface >>> = cairo_image_surface_create_for_data(gdk_pixbuf_get_pixels(pixbuf), >>> >>> >>> >>> CAIRO_FORMAT_RGB24, >>> img_width, >>> img_height, >>> >>> >>> >>> gdk_pixbuf_get_rowstride(pixbuf)); >>> >>> >>> >>> cairo_t *cr = cairo_create (surface); >>> >>> >>> >>> cairo_translate(cr, -shift_x, -shift_y); >>> >>> >>> >>> cairo_scale(cr, scale_x, scale_y); >>> >>> >>> >>> // Now do any cairo commands you want, but you have to swap >>> // R and B in set_source_rgba() commands because of cairo and >>> >>> >>> >>> // pixbuf incompabilitities. >>> cairo_set_source_rgba (cr, 0,0,1.0,0.5); >>> >>> >>> >>> cairo_arc(cr, >>> -1, 0, >>> >>> >>> >>> 3, 0.0, 2*G_PI); >>> >>> >>> >>> cairo_fill(cr); >>> >>> cairo_set_source_rgba (cr, 1.0,0,0,0.5); >>> >>> only works when you do inside the image annotate. In any other situation, >>> the cairo drawing does not get the color. I have got, for example, the cairo >>> surface from the pixbuf inside the gtk_image_viewer_new() function and draw >>> directly there , but it gets a wrong color. It doesn´t matter the swapping >>> in betweem the R and B colors. On the attached image, the rect line is has >>> been drawn direcly with the code above, inside the the new() function. The >>> symbol, drawnd on the GtkImageViewer->window, inside >>> gtk_image_viever_expose(). >>> >>> Would you be kind to indicate me any sugesstion how to do it. >>> >>> Thanks >>> Eduardo >>> >> >> >
_______________________________________________ gtk-list mailing list gtk-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-list