GSoC/2020/StatusReports/AshwinDhakaita: Difference between revisions
(31 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
By the end of the project, Krita will have a new brush engine that can be used for painting with MyPaint brushes and also create and edit them. | By the end of the project, Krita will have a new brush engine that can be used for painting with MyPaint brushes and also create and edit them. | ||
=== | === Project Goals === | ||
* Implement a new brush engine in Krita | * Implement a new brush engine in Krita | ||
STATUS: Complete | |||
* Enable Krita to load installed MyPaint brushes from the system. | * Enable Krita to load installed MyPaint brushes from the system. | ||
STATUS: Complete | |||
* Implement a preset editor for editing and creating MyPaint brushes. | * Implement a preset editor for editing and creating MyPaint brushes. | ||
STATUS: Complete | |||
* Documenting the brush engine. | * Documenting the brush engine. | ||
STATUS: Complete | |||
=== Work Report === | === Work Report === | ||
==== | ==== Implement a new brush engine in Krita ==== | ||
The first step in achieving the MyPaint Brush integration in Krita was to implement a new brush engine which makes use of Libmypaint apis at the backend for painting. This brush engine will serve as a wrapper to the one provided by MyPaint and help libmypaint in interfacing with the Krita system. | |||
* '''Status -''' Complete | * '''Status -''' Complete | ||
* '''Duration -''' 25 May - 29 June | * '''Duration -''' 25 May - 29 June | ||
Line 24: | Line 31: | ||
[[File:Spray Brush.png|Spray brush]] | [[File:Spray Brush.png|Spray brush]] | ||
[[File: | [[File:Calligraphy.png|Calligraphy Brush]] | ||
[[File:Particules eraser 2.png|Particules Brush]] | |||
==== Enable Krita to load MyPaint Brushes ==== | |||
The newly available MyPaint brush engine is of no use if it can't load installed MyPaint brushes from the system. So, we want to enable Krita to load these brushes. | |||
* '''Status -''' Complete | * '''Status -''' Complete | ||
* '''Duration -''' 20 June - 29 June | * '''Duration -''' 20 June - 29 June | ||
Line 34: | Line 44: | ||
[[File:Preset Editor.png|Loaded MyPaint Brushes]] | [[File:Preset Editor.png|Loaded MyPaint Brushes]] | ||
==== | ==== Implement Preset Editor ==== | ||
This aims at creating a preset editor, pretty similar to the one preset in Krita already. This will help in creating new MyPaint brushes and modify the existing ones. Just think, what good a brush would be if we can't even change it's size or paint color . | |||
* '''Status -''' Complete | * '''Status -''' Complete | ||
* '''Duration -''' 30 June- 23 July | * '''Duration -''' 30 June- 23 July | ||
Line 40: | Line 53: | ||
[[File:Preset editor.png|MyPaint Brush Engine Preset Editor]] | [[File:Preset editor.png|MyPaint Brush Engine Preset Editor]] | ||
==== | ==== Documenting the Brush Engine ==== | ||
* '''Status -''' | |||
* '''Duration -''' - | This completed recently. Had to create a document to help users to know about the settings that MyPaint brush engine provides. This has to added in the brush engine section of Krita Manual. The only problem with this is that mypaint is pretty complex and there is no good documentation available even on MyPaint's website. So, this is still a problem that the usability of this document is a bit minimal given that the terminologies used are pretty complicated for a beginner. | ||
* '''Status -''' Complete | |||
* '''Duration -''' 24 August - 26 August | |||
[[File:Screenshot 2020-08-27 at 11.52.36 AM.png]] | |||
==== What is Complete And What is Left ==== | |||
Most of my project is complete and ready to be merged. Though there are still a few small bugs that need to be resolved. They shouldn't take more than a few days to solve. Once done, the project shall be completely ready. | |||
=== List of Commits === | === List of Commits === | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=a4a9f2c519c84e975f0281efe8bade3d47d1a51d Added libmypaint to cmake] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=744e8d4d2651f078b5161c37a213f4a883a1076c Added mypaint brush engine to paintop registry] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=bd395d20f44c15e3390bd557b5a2e1f72a0f7259 Added KisMyPaintBrush and KisMyPaintSurface classes] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=14bf4538d743bee69ea250892d54fde130c85dd3 Added cursor for MyPaintOp] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=65509baacfc3bd22401b474ef634dc09b43f4228 Implemented Load Methods for KisMyPaintBrush] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=3a02aaad385bfd4e83a6d74a9228842d00f8db66 Refactored MyPaintOpPlugin to use KisMyPaintOpFactory] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=3b90a3269362f723fbabda373259b124204cec12 Added Tests for MyPaintOp plugin] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=2be5f080c51f2d0d9c6b48b02e0955d78e794d01 Optimized draw_dab and get_color methods] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=ec2d4e934b49cbc70778cb5b8acfd0a9845bee2b Unlinked Libmypaint from libs/image] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=a1f669c899246f64e739b898cb2fffaefea46752 Fixed Eraser not working] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=68761daaec6d2ff7afeaef635a784f364bd332e0 Fixed broken build when libmypaint is not installed] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=ff81a5b213bbb020d77d7d32b26f0512779806a1 Fix for splatter-04 preset] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=b8957b8b3036e15d7152aa402bd3a7f82c12772e Added Classic mypaint brush presets in the default install] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=413988ea2e9919b087d8b83c479ec4ef241190e0 Enable brush Resizing] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=b32501ce7c8f27c57910861b5246b4136e0acd19 Converted Properties to QScopedPointers] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=6602bcbe2f010b5f74a9a1434217e532bdb9a778 Slight Change in dabrect] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=0c1ac8fc938e6d28bb3fcb1f40dce052d2ea2071 Refactor to make methods non global] | ||
* [https:// | * [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=88320134075eed51796c76bc01b30d709d885281 Fix for 1Pixel preset] | ||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=8e73a058017ba81b5e72d80d6ce06c17d181ca73 Removed unused code from draw_dab] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=b65a827c3591548f94918f3d974caed786464663 Rectified Tests for QScopedPointers] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=8610c6533cdc493d73b287624fd221598b43a1a6 Remove moc include from kis_mypaintop_test] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=ce21211071fae519beedb580c747eb23333f0900 Added Basic Settings in Preset Editor] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=0dc349f22d14a2fc3638c6a5dbc24e661067479f Added Test for Loading MyPaint Brushes] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=f8e607489b1c119b90810ca8ca36c2f10135bef7 Added Preset Editor with Advanced Settings] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=0fcc79763354c20b8536f97da79dcc9c5aa620a1 Synchronised base settings and advanced settings] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=b1330243c27b9dcadcf3cef4066f280d0d1e67ce Fixed Crash and base option sync issue] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=58dd24ecc9f736ad1eb96b51e52013ed74d9a6de Added Use of EraserMode] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=6b799080ad9082b2fef48907f286af82f603ac5a Range Changing Behaviour] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=7bc2be8c24fa8271969d2b64aaf3153d1b399d82 Added Custom Brush Option Type] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=1dcec39e047e3a574f628ce97ab119df5f9f1a15 Code Review Changes] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=3465ff4fc548807988e33a69803d20312dbf412d Use image projection instead of m_node] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=f62a0f1f7cd16bbaf9052f8fc8cd12f8dd8a95ce Added antialiasing setting] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=817028b958094303885dade91dae6758085a37cf Fixed custom input not working] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=0dd5f0510cbae3c3867243da44d57b8d504e6927 Change sensor when checkbox is clicked] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=1c81b07d89a0f4e2caa3334b18569f082f3412cb Use a separate variable for storing previous time ] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=39761870fdf07930204200c49c7505f12e1b3a69 use mypaint apis for marking start of the stroke] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=258fc93f76752fde50faefddab6445c0ed324a41 added airbrush option] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=6ece737fd1155074905d50ba294d96da1059d193 Added range checking] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=c6cf42f06982b12c0a3d929f5f5407f5ed0ca00d Add missing licenses] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=a6f08e24cdea3c0c8f7f5cc5753714be163cee76 Code Cleanup] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=c84c65e5c0c66d85c7c3406c7518c2723483f36b Change cursor outline in proportion to offset by random] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=16d3e22d5b8eb19f4123cd1d94ab5c380474963a Refactored mypaint brush option as KisDynamicSensors] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=4d78b11749124b85d303e0b568d4278c811d8643 Remove warning in libmypaint not found] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=967e9806c6a9ee65e4c75b001c55bcfe99488eba Fixed crash on smudging on scratchpad] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377/diffs?commit_id=ef6e3fc070800fb39f67dc8173fa46277bcf6512 Fixed broken reloading of MyPaint Brushes] | |||
=== Project Links === | === Project Links === | ||
[https://phabricator.kde.org/T13119 Phabricator Task] | * [https://phabricator.kde.org/T13119 Phabricator Task] | ||
* [https://invent.kde.org/graphics/krita/-/merge_requests/377 Merge Request] | |||
* [https://invent.kde.org/graphics/krita/-/merge_requests/464 Merge Request [Master Branch<nowiki>]</nowiki>] | |||
* [https://invent.kde.org/documentation/docs-krita-org/-/merge_requests/154 Merge Request [Documentation<nowiki>]</nowiki>] | |||
* [https://invent.kde.org/graphics/krita/-/tree/ashwind/T13119-mypaint-brush-engine Branch] | |||
* [https://invent.kde.org/graphics/krita/-/tree/ashwind/T13119-mypaint-brush-engine-master Branch for Krita-Master] | |||
[https:// | === Monthly Status Reports === | ||
* [https://ashwindhakaita.blogspot.com/2020/06/phase-1-evaluation-status-report.html Phase 1 Report] | |||
* [https://ashwindhakaita.blogspot.com/2020/07/mypaint-brush-engine-phase-2-report.html Phase 2 Report] | |||
Note: Phase 3 Report will be out on 31st August and will be available through my blog. All my GSoC weekly reports are also present on my blog. | |||
=== About Me === | === About Me === |
Latest revision as of 16:38, 27 August 2020
Integrating the MyPaint Brush Engine with Krita
Summary
MyPaint developers have separated out their brush engine in the form of a library, libmypaint. Artists like MyPaint brushes a lot and it would be good to integrate the same as a new brush engine within Krita brush engine subsystem.
The project has two objectives:
- To integrate the MyPaint brush engine in the form of a new brush engine in Krita, enable it to load the MyPaint brushes from system and use them for painting in Krita.
- To implement a preset editor to edit existing brushes and also create new ones.
By the end of the project, Krita will have a new brush engine that can be used for painting with MyPaint brushes and also create and edit them.
Project Goals
- Implement a new brush engine in Krita
STATUS: Complete
- Enable Krita to load installed MyPaint brushes from the system.
STATUS: Complete
- Implement a preset editor for editing and creating MyPaint brushes.
STATUS: Complete
- Documenting the brush engine.
STATUS: Complete
Work Report
Implement a new brush engine in Krita
The first step in achieving the MyPaint Brush integration in Krita was to implement a new brush engine which makes use of Libmypaint apis at the backend for painting. This brush engine will serve as a wrapper to the one provided by MyPaint and help libmypaint in interfacing with the Krita system.
- Status - Complete
- Duration - 25 May - 29 June
Enable Krita to load MyPaint Brushes
The newly available MyPaint brush engine is of no use if it can't load installed MyPaint brushes from the system. So, we want to enable Krita to load these brushes.
- Status - Complete
- Duration - 20 June - 29 June
Implement Preset Editor
This aims at creating a preset editor, pretty similar to the one preset in Krita already. This will help in creating new MyPaint brushes and modify the existing ones. Just think, what good a brush would be if we can't even change it's size or paint color .
- Status - Complete
- Duration - 30 June- 23 July
Documenting the Brush Engine
This completed recently. Had to create a document to help users to know about the settings that MyPaint brush engine provides. This has to added in the brush engine section of Krita Manual. The only problem with this is that mypaint is pretty complex and there is no good documentation available even on MyPaint's website. So, this is still a problem that the usability of this document is a bit minimal given that the terminologies used are pretty complicated for a beginner.
- Status - Complete
- Duration - 24 August - 26 August
What is Complete And What is Left
Most of my project is complete and ready to be merged. Though there are still a few small bugs that need to be resolved. They shouldn't take more than a few days to solve. Once done, the project shall be completely ready.
List of Commits
- Added libmypaint to cmake
- Added mypaint brush engine to paintop registry
- Added KisMyPaintBrush and KisMyPaintSurface classes
- Added cursor for MyPaintOp
- Implemented Load Methods for KisMyPaintBrush
- Refactored MyPaintOpPlugin to use KisMyPaintOpFactory
- Added Tests for MyPaintOp plugin
- Optimized draw_dab and get_color methods
- Unlinked Libmypaint from libs/image
- Fixed Eraser not working
- Fixed broken build when libmypaint is not installed
- Fix for splatter-04 preset
- Added Classic mypaint brush presets in the default install
- Enable brush Resizing
- Converted Properties to QScopedPointers
- Slight Change in dabrect
- Refactor to make methods non global
- Fix for 1Pixel preset
- Removed unused code from draw_dab
- Rectified Tests for QScopedPointers
- Remove moc include from kis_mypaintop_test
- Added Basic Settings in Preset Editor
- Added Test for Loading MyPaint Brushes
- Added Preset Editor with Advanced Settings
- Synchronised base settings and advanced settings
- Fixed Crash and base option sync issue
- Added Use of EraserMode
- Range Changing Behaviour
- Added Custom Brush Option Type
- Code Review Changes
- Use image projection instead of m_node
- Added antialiasing setting
- Fixed custom input not working
- Change sensor when checkbox is clicked
- Use a separate variable for storing previous time
- use mypaint apis for marking start of the stroke
- added airbrush option
- Added range checking
- Add missing licenses
- Code Cleanup
- Change cursor outline in proportion to offset by random
- Refactored mypaint brush option as KisDynamicSensors
- Remove warning in libmypaint not found
- Fixed crash on smudging on scratchpad
- Fixed broken reloading of MyPaint Brushes
Project Links
- Phabricator Task
- Merge Request
- Merge Request [Master Branch]
- Merge Request [Documentation]
- Branch
- Branch for Krita-Master
Monthly Status Reports
Note: Phase 3 Report will be out on 31st August and will be available through my blog. All my GSoC weekly reports are also present on my blog.