UPDATE #1 . 12-6-2019
I implemented a basic re-sizable feature to the old cloning tool. It still needs fine-tuning for user-friendliness but It does work as expected. I merged that into my git branch. Using "+" and "-" , you can zoom-in and out. Using "m" you can drag the image around to reach the specific part you wish to heal. I still need to add some UI bars and stuff to have both GUI and keyboard inputs but that's easy.
Also note to self : For now, when I zoom-in the image a scrollbar doesn't appear. This is not a problem as anyway I can drag the image itself and this seems the more natural and userfriendly solution anyway not the scrollbar, but I will keep that in mind for later modification.
I will also experiment a little to know which key & mouse combination are more friendly for dragging, zooming, and so on.
Update 2 : 24-6-2019
I added some more features, following my timeline.
-> I made the cloning more user-friendly, using more keyboard shortcuts. Pressing "S" key will switch to "set a cloning-start point", letting you chose where to start cloning. The cursor will change into a Red circle indicating we are in the "set" mode. -> Pressing "M" will switch the cursor color to "yellow", indicating we are in the "move" or "drag" mode. -> I also implemented a UI for zooming in and out using a side-bar.
This video shows all my modifications in action, along with a comparison with my timeline so far. https://www.youtube.com/watch?v=a6TpXO_B2g8&feature=youtu.be
Next task (I) (to be finished before 27-6) : I found some issues in the old implementation. For example, if you do some healing and resize the canvas without explicitly saving the image using the "save" button, you healing is removed and you need to start overagain. I will fix this issue in the following days.
Next task (II) ( to be finished before 30-6) : Add more user-friendliness to the brush-resizing feature.
Update 3 : 28-6-2019
I solved the reset-after-resize issue I talked about in the previous update. I created a slotReclone function that gets called after every resize event, that re-draws all necessary pixels, taking into consideration the difference in scaling factors. It works now perfectly as expected.
Now to task (II) from the previous updates, in addition to some UI modifications that my mentor requested during his first evaluation of my work.
minor update 1 [ Mentor requested ] : changed the move cursor to openhand - closedhand, and for movement now you need to press and grab not just move. minor update 2 [Mentor requested] : Zooming in and out can now be performed using mouse scroll and laptop touchpad using two fingers, in addition to the previous plus/minus buttons.
Second Evaluation Update ! [21-7-2019]
Major Update : I implemented my "Lasso and Polygon select tool" for the healing clone tool. The same tool can be used as lasso select or polygon select, and it completely works as expected now. In the healing tool window, press "L". the cursor will change yellow. you can select discrete points as you like and the polygon edges will be drawn, or you can press and move your mouse to have lasso region drawn. You don't have to draw all the region in one mouse press. when you press "L" again, the polygon/Lasso will close on itself. Now only cloning inside this region happens, cloning outside the region will be ignored, unless you press L twice again without drawing any polygon/Lasso , signaling you want to de-activate the lasso mode. once you do that, you can clone anywhere in the screen as usual. Minor Update : I made the brush resize up and down using right bracket " ] " and left bracket "[" respectively, giving more user-friendliness instead of going to the right bar every time.
Please see those updates in action in the following video : https://www.youtube.com/watch?v=_pfslHmTLf4&feature=youtu.be
-- I am looking forward for comments and improvement suggestions.
Third Evaluation Update ::
Here is my work for the third evaluation :
- I performed a lot of code refactoring, removing duplicates, and replacing flags with readable enumerators.
- I implemented UNDO/REDO functionality for the cloning tool. you can undo/redo using GUI buttons I added, or keyboard shortcuts like CTRL-Z for undo / (CTRL-Y or CTRL-shift-Z) for redo. Those combinations might change depending on your platform, I am depending on qt to decide the correct sequence given the platform.
- I added nice GUI icons for different clone functionalites, like source selection , lasso selection, , moving the image , UNDO, and REDO.
- I implemented some user-friendly shortcuts. double clicking completes lasso polygon, and escape removes lasso boundary.
- changed cursor shapes to nicer icons
- fixed a lot of minor issues related to user-experience after my mentor pointed out