GSoC/2020/StatusReports/AshwinDhakaita
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
- Enable Krita to load installed MyPaint brushes from the system.
- Implement a preset editor for editing and creating MyPaint brushes.
- Documenting the brush engine.
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
- Status - Complete
- Duration - 30 June- 23 July
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
- MyPaint Brush Engine Merge Request
- MyPaint Brush Engine Merge Request [Master Branch]