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!
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 gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list