After digging for around a month and a half, I can finally do some selections with the Magnetic Lasso tool, which I wrote with utter laziness as I would say. Though it still demands a lot of work to be done, so it will be just polishing the existing code into perfection for the next one and half month.

What did I do?

  • Implemented a checkpoint based edge calculation, obviously if you know the edge points from A to B and you need to find out the edge points between A to C, you don't need to recalculate the whole thing, saving a lot of computation.
  • Filtering and copying happens while initializing, so the tool would definitely be slow to start on bigger canvases, but once that is done, there is no such drop in performance.
  • And yes, we can complete the selection by clicking on the starting point and use them.

What is left to be done?

  • Paint the checkpoints while making the selection, honestly I already tried to do it, probably missed something.
  • Delete checkpoints on right click, this also seems trivial to implement, but yet to try, so no idea what kind of challenge it would be.
  • Working on the algorithm, one thing I notice was the accuracy got down as soon as I started copying the stuff, need to take a look at it.
  • An options dialog to mess with the parameters.

And as boud says, I got to add some spaces to the code. 😆

That should be enough for the week, :wq for now.