GSoC/2020/StatusReports/AshwinDhakaita: Difference between revisions
(13 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
=== Project Goals === | === 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 === | ||
Line 42: | Line 46: | ||
==== Implement Preset Editor ==== | ==== 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. | 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 | ||
Line 48: | Line 52: | ||
[[File:Preset editor.png|MyPaint Brush Engine Preset Editor]] | [[File:Preset editor.png|MyPaint Brush Engine Preset Editor]] | ||
==== 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 | |||
[[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=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=b65a827c3591548f94918f3d974caed786464663 Rectified Tests for QScopedPointers] | ||
Line 98: | Line 115: | ||
=== 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 | * [https://invent.kde.org/graphics/krita/-/merge_requests/377 Merge Request] | ||
* [https://invent.kde.org/graphics/krita/-/merge_requests/464 | * [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] | |||
=== Monthly Status Reports === | === Monthly Status Reports === | ||
* [https://ashwindhakaita.blogspot.com/2020/06/phase-1-evaluation-status-report.html Phase 1 Report] | * [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] | * [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.