GSoC/2019/StatusReports/hellozee: Difference between revisions
(Created page with "== Title of your project == The Magnetic Lasso was lost during the port from Qt3 to Qt4, this project tries to continue the working to port the tool to the current version of...") |
|||
(25 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | == Porting Magnetic Lasso to Krita == | ||
The Magnetic Lasso was lost during the port from Qt3 to Qt4, this project tries to continue the working to port the tool to the current version of Krita | === Summary === | ||
* '''Project Name:''' Porting Magnetic Lasso to Krita | |||
* '''Proposal:''' [https://docs.google.com/document/d/1AF1U1Qb8JKS6Ky8pC_daDgeMDBrzVU8C7ulK_-0kg28/edit?usp=sharing View Proposal] | |||
* '''Abstract:''' The Magnetic Lasso was lost during the port from Qt3 to Qt4, this project tries to continue the working to port the tool to the current version of Krita | |||
=== Project Goals === | |||
* Add the Magnetic Lasso Selection Tool in Krita. | |||
* The tool when used should stick to the edges found in the picture. | |||
* Starts after user left clicks and makes an anchor, edges are scanned from the anchor point. | |||
* After the mouse moves a fixed amount of distance the tool automatically places another anchor point and uses it as a reference. | |||
* The user can also manually set an anchor point, him/herself. | |||
* The search radius which is used to determine, upto what area the tool would search for an edge as well as the frequency of anchors can be adjusted by the user. | |||
* The above-mentioned parameters as well as the threshold for determining edges can be adjusted using the tool options widget. | |||
=== Project related links === | |||
* [https://phabricator.kde.org/T10894 Phabricator Task] | |||
* [https://hellozee.dev Personal Blog] | |||
== Implementations Status == | |||
Status report on each goal implementation. | |||
=== KisMagneticWorker === | |||
'''Goal:''' Implement the worker for the algorithm and the corresponding unit test. | |||
'''Current Status''' Done | |||
==== Related blog posts ==== | |||
* [https://hellozee.github.io/summer-is-coming/ Initial Post] | |||
* [https://hellozee.github.io/boost_astar/ Understanding boost::astar_search] | |||
* [https://hellozee.github.io/another_week_with_boost/ Another week with boost] | |||
* [https://hellozee.github.io/done_with_boost/ Done with boost] | |||
* [https://hellozee.github.io/deliverable_one_checked/ Deliverable 1 : [✓]] | |||
==== Commits and Differentials ==== | |||
* [https://invent.kde.org/kde/krita/commit/afcb9243c0a249b427780c1d17537a8f8fcf4d0c Adding an initial framework for the test] | |||
* [https://invent.kde.org/kde/krita/commit/d4b3b07f4dcdbaa3ee33281582c52b7578a92405 Applying Laplacian of Gaussian on KisPaintDevice] | |||
* [https://invent.kde.org/kde/krita/commit/3b86ab524e6934766503bdc883f6fb14346c6a7b Added the heuristic function for the boost::astar_search] | |||
* [https://invent.kde.org/kde/krita/commit/d8e844a362c6194f62d08b5ed75992b213b977ff Implemented boost::graph interface for KisPaintDevice] | |||
* [https://invent.kde.org/kde/krita/commit/a900a5fce7b8612e4482a56d446e1d36df06ba91Added an intesity function to the graph for reading threshold] | |||
* [https://invent.kde.org/kde/krita/commit/09c77df3cce019ac9dfaf6d02202e1ed4f4bf132 Implemented boost::astar_search using the KisMagneticGraph wrapper] | |||
* [https://invent.kde.org/kde/krita/commit/51e0986a4748e8d9abf1302cb5024bc91854eaa1Distance heuristic function takes threshold into account now] | |||
* [https://invent.kde.org/kde/krita/commit/1ca04c3f8b3c13f83f2492661dc39194ac268842 Fixed the intensity function] | |||
* [https://invent.kde.org/kde/krita/commit/463a9b1891503f6eb46d00067db56af929789c75 Finished the Algorithm] | |||
* [https://invent.kde.org/kde/krita/commit/58c2ab7acc3e67531a3f75e5d00873a1dbee076e Added docs and completed the test] | |||
=== KisToolSelectMagnetic === | |||
'''Goal:''' Implement the frontend required for the tool | |||
'''Current Status''' Done | |||
==== Related blog posts ==== | |||
* [https://hellozee.github.io/topsy_turvy_5th_week/ Topsy-turvy 5th Week] | |||
* [https://hellozee.github.io/it_coming_alive/ It is coming alive] | |||
* [https://www.hellozee.dev/a_few_more_steps/ A few more steps] | |||
* [https://www.hellozee.dev/somewhat_usable/ Somewhat Usable] | |||
==== Commits and Differentials ==== | |||
* [https://invent.kde.org/kde/krita/commit/3f74df11d69443f9244a805f8e26ba0973695c51 Initial take on the UI] | |||
* [https://invent.kde.org/kde/krita/commit/b64a646d303a9e7ce3f46acb32ce859d95246a5e Reduced the number of calls KisPaintDevice::exactBounds() is called] | |||
* [https://invent.kde.org/kde/krita/commit/7b53f2e4659dfccbb2a12a2bda9101f43a586728 Creates a bouding rectangle before searching ] | |||
* [https://invent.kde.org/kde/krita/commit/79aeb7826c2c739ed9497653b931ea2e1be9065e LoG now runs on tool activation] | |||
* [https://invent.kde.org/kde/krita/commit/70b167f41b9ffdacbd5279ff121852871d7cb362 Optimized the algorithm, implemented checkpoints] | |||
* [https://invent.kde.org/kde/krita/commit/b44404ee9bc6195b99f2d418e328b17212f48535 Selection can be done with the Magnetic Lasso] | |||
* [https://invent.kde.org/kde/krita/commit/56600569da672c67a332c0f6f03e18131c110841 Anchor points are saved now] | |||
* [https://invent.kde.org/kde/krita/commit/da0cf17c6c97d6e75968e2d8125a17987f4372e6 Selection works as expected] | |||
* [https://invent.kde.org/kde/krita/commit/1615e9129bcd31b21b3bde6d44e3d4d76a1e159e Checkpoints are drawn now, :)] | |||
* [https://invent.kde.org/kde/krita/commit/34386d2f7ea0ca09fad2ca7ca904575769d77025 Implemented dual checkpoint procedure, somewhat like PS] | |||
* [https://invent.kde.org/kde/krita/commit/faa1e5597cd0d98ed8d400eca3e38b42932566a8 Selection can be canceled on the fly now] | |||
* [https://invent.kde.org/kde/krita/commit/6a3c01182d3298977599d763ae3b51a433467ce4 Fixed crashing while completing the selection, can finish selection] | |||
* [https://invent.kde.org/kde/krita/commit/f430367d54d15bd6f76d7bcd449d89ebf0a3045d Reimplemented the frequency-based checkpoint procedure] | |||
* [https://invent.kde.org/kde/krita/commit/0e5e553f34d70c8430940f8cc342d91cfaf5c50e Updated the cursor and adjusted the checkpoint procedure] | |||
=== KisToolSelectMagneticOptionsWidget === | |||
'''Goal:''' Implement Options Widget required for adjusting the factors | |||
'''Current Status''' Kind of done, :3 | |||
==== Related blog posts ==== | |||
* [https://www.hellozee.dev/sprint_is_here/ Sprint ahoy] | |||
* [https://www.hellozee.dev/krita_sprint_2019/ Krita Sprint 2019] | |||
* [https://www.hellozee.dev/magnetic_lasso_is_here/ Magnetic Lasso for Krita is here] | |||
==== Commits and Differentials ==== | |||
* [https://invent.kde.org/kde/krita/commit/739f1f59ff68a2a8f1e0846e8479f72878393573 Overriden the createOptionWidget method] | |||
* [https://invent.kde.org/kde/krita/commit/4b9df12df56d2da200eca8842955b5db30fbdcb8 Added the radius and threshold options to Options Widget] | |||
* [https://invent.kde.org/kde/krita/commit/1ed2c3fbfefd177805e0801ca692afec7120fc53 Fixed crash on paint, suppressed warnings] | |||
* [https://invent.kde.org/kde/krita/commit/8a5b9cb4f918c907d40617642ab2f001982dbf17 Fixed the checkpoint procedure] | |||
* [https://invent.kde.org/kde/krita/commit/4e3e6d891686250d0bcbd4db0c05984eced0b4b9 Frequency is now based on-screen distance] | |||
* [https://invent.kde.org/kde/krita/commit/8a08cc46676eaceaa1060f1a8725f5e89fce184c Frequency controls the bounding box, radius the kernel size] | |||
* [https://invent.kde.org/kde/krita/commit/78b3171c62c2898fcdef8178ea03d2ce8e3930d3 Changed handle style for drawing anchorpoints] | |||
* [https://invent.kde.org/kde/krita/commit/3c16c6d8c7ad952041f0388ed67a80e2989d0a85 Takes relative distance into account instead of absolute distance] | |||
* [https://invent.kde.org/kde/krita/commit/c74b40e3bed55b72e2d431fd2b93b294d69360f6 Updated the Tool Options widget to reflect the quantities better] | |||
* [https://invent.kde.org/kde/krita/commit/5cf36cfc285dd6f6b8eecedc13baa25d670130e3 Can discover multiple anchors in a single event] | |||
* [https://invent.kde.org/kde/krita/commit/9109e9b74d59dfd79debd791cca40a3b38f22266 Fixed the length calculation algorithm] | |||
* [https://invent.kde.org/kde/krita/commit/97f25734381defaea3cd05a3870ba983a6411fa9 Minimum radius increased] | |||
* [https://invent.kde.org/kde/krita/commit/3b31fd7029eebcf8b71af8235a8e244eb01769ce Added some documentation about the checkpoint procedure] | |||
* [https://invent.kde.org/kde/krita/commit/82404413e56670059b42f45a214f63495ab04bd0 Added tool tips to the options widget] | |||
* [https://invent.kde.org/kde/krita/commit/350d28074b014e9f0eb6d816e52db238c2632a42 Added Shift+Z to undo points] | |||
* [https://invent.kde.org/kde/krita/commit/dcbe9cc0e521a4da883eebdd9b55388e53f06e79 Changed the cursors for the magnetic lasso] | |||
* [https://invent.kde.org/kde/krita/commit/ffaaa4a4cbd2bb70cda4832769ce2bd934201175 First anchor is highlighted when the loop can be completed] | |||
* [https://invent.kde.org/kde/krita/commit/a21e2acb03797eb7e25bdc023dd7ab5a4eb59f53 Anchor Gap is now based on image distance] | |||
* [https://invent.kde.org/kde/krita/commit/c8f6f91425b95b8e20726e300e05eda8344266f9 Added signal compressor for radius change and mouse hover events] |
Latest revision as of 19:14, 21 August 2019
Porting Magnetic Lasso to Krita
Summary
- Project Name: Porting Magnetic Lasso to Krita
- Proposal: View Proposal
- Abstract: The Magnetic Lasso was lost during the port from Qt3 to Qt4, this project tries to continue the working to port the tool to the current version of Krita
Project Goals
- Add the Magnetic Lasso Selection Tool in Krita.
- The tool when used should stick to the edges found in the picture.
- Starts after user left clicks and makes an anchor, edges are scanned from the anchor point.
- After the mouse moves a fixed amount of distance the tool automatically places another anchor point and uses it as a reference.
- The user can also manually set an anchor point, him/herself.
- The search radius which is used to determine, upto what area the tool would search for an edge as well as the frequency of anchors can be adjusted by the user.
- The above-mentioned parameters as well as the threshold for determining edges can be adjusted using the tool options widget.
Implementations Status
Status report on each goal implementation.
KisMagneticWorker
Goal: Implement the worker for the algorithm and the corresponding unit test.
Current Status Done
Related blog posts
- Initial Post
- Understanding boost::astar_search
- Another week with boost
- Done with boost
- Deliverable 1 : [✓]
Commits and Differentials
- Adding an initial framework for the test
- Applying Laplacian of Gaussian on KisPaintDevice
- Added the heuristic function for the boost::astar_search
- Implemented boost::graph interface for KisPaintDevice
- an intesity function to the graph for reading threshold
- Implemented boost::astar_search using the KisMagneticGraph wrapper
- heuristic function takes threshold into account now
- Fixed the intensity function
- Finished the Algorithm
- Added docs and completed the test
KisToolSelectMagnetic
Goal: Implement the frontend required for the tool
Current Status Done
Related blog posts
Commits and Differentials
- Initial take on the UI
- Reduced the number of calls KisPaintDevice::exactBounds() is called
- Creates a bouding rectangle before searching
- LoG now runs on tool activation
- Optimized the algorithm, implemented checkpoints
- Selection can be done with the Magnetic Lasso
- Anchor points are saved now
- Selection works as expected
- Checkpoints are drawn now, :)
- Implemented dual checkpoint procedure, somewhat like PS
- Selection can be canceled on the fly now
- Fixed crashing while completing the selection, can finish selection
- Reimplemented the frequency-based checkpoint procedure
- Updated the cursor and adjusted the checkpoint procedure
KisToolSelectMagneticOptionsWidget
Goal: Implement Options Widget required for adjusting the factors
Current Status Kind of done, :3
Related blog posts
Commits and Differentials
- Overriden the createOptionWidget method
- Added the radius and threshold options to Options Widget
- Fixed crash on paint, suppressed warnings
- Fixed the checkpoint procedure
- Frequency is now based on-screen distance
- Frequency controls the bounding box, radius the kernel size
- Changed handle style for drawing anchorpoints
- Takes relative distance into account instead of absolute distance
- Updated the Tool Options widget to reflect the quantities better
- Can discover multiple anchors in a single event
- Fixed the length calculation algorithm
- Minimum radius increased
- Added some documentation about the checkpoint procedure
- Added tool tips to the options widget
- Added Shift+Z to undo points
- Changed the cursors for the magnetic lasso
- First anchor is highlighted when the loop can be completed
- Anchor Gap is now based on image distance
- Added signal compressor for radius change and mouse hover events