Hello,

I am trying to implement a lasso-type tool. I need to be able to load and
display a user-selected image and provide the "lasso" tool ability wherein
the user will be able to select a rectangular box within the image.

I've been working on this all day; and though I've come _very_ close to
solving my problem; my solution is very slow. If I load an image that is say
1.5k x 1.5k pixels and make a large selection; the performance clearly
degrades as the selection gets bigger.

My approach was to continually clear an rectangle the size of the previous
selection (L * W) and redraw the new selection--a rectangle the size of the
selection. This works well on small selections say < 500x500px but once
outside that range the performance is terrible because it's equivalent to
repainting the entire image.

I had to implement a double buffer scheme because I would get flickering. I
used a Pixmap to do this.

Are there approach where in I can reduce the run-time complexity to solve
this problem? Are there ways that I can overlay the selection box over the
original image so that I don't have to redraw the original image just clear
the selection that was made? I've been working on a solution wherein instead
of redrawing the entire rectangle composing the selection, I would only
redraw the border of the selection. That means, I only have to redraw O(2W +
2L) pixels, instead of O(W * L). Not sure if I'm headed down a dead-end road
with this one. Is GnomeCanvas something I should look at?

The solution to only clear the pixels representing the selection clearly
improves performance.

I'm just a newbie UI developer and wanted to solicit some suggestions as
this is my first day working with GTK and I would hate to overlook a
possibly simple solution to this problem.

Thanks!
_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to