Posts

MyPaint Brush Engine Phase #3 Report

 Today is the last day of google summer of code 2020.  This month, I have completed the following tasks: Refactorizing MyPaint plugin for master: I started the month, working on refactorization of the MyPaint brush engine for master branch. This is functional. Though I will have to add the newly committed changes in this branch as well. Refactorizing the MyPaint curve option code with normal curve option code: I had rewritten the curve option widget code due to some clashes with enums, while the ideal way should have been to share this with the existing code. I spent the next week completing this. Documenting the brush engine was already in my todo. I had to create a page for MyPaint brush engine in Krita manual, in its brush engine section. The merge request got approved yesterday. Support for higher bit depths and other color models: Given that MyPaint is an RGB editor it can't work properly for other color models. So I need to disable it for other color models. This is stil...

MyPaint Brush Engine [Final Phase]

We are in the final phase of GSoC. I don't even remember how quickly the last two months flew by.  Coming to my project, it is almost complete apart from some finalisation related stuff that still is remaining. Perhaps, some review changes that my mentors shall give me once my current patch has been reviewed are also remaining. This month, (20 days remaining before the final submissions start actually) I need to complete two items: Refactorizing the plugin for master branch: There were a lot of changes in master due to the complete resource-rewrite. Because of this, I need to change my way of handling mypaint brush files (.myb files) in master. This requires a bit of refactorization. I am afraid its been a while since I have seen the master and don't what changes I need to do to make this plugin work in master. I just hope it does not turn out to be something complex. User Documentation: Apart from refactorization, I need to start with writing user documentation ASA...

MyPaint Brush Engine Phase #2 Report

Image
This is the last week before the phase 2 in Google Summer Code ends. This phase my area of focus was the preset editor, which would enable the user for modifying existing and creating new MyPaint brushes. I went on to extend the same than the one mentioned in my proposal to include more diverse variety of options and settings so that the editor gives us the provision to make much larger scale of changes and exercise complete customization control over the brush engine. It later on became a bit more complicated than I had expected it to be initially which led to a lot of bugs and crashes. It works fine now, mostly:) There is still one last bug that I need to eliminate, though. Basic Options Preset Editor Overall, this was a good month :) 

Week #6 Progress [MyPaint Engine]

Image
Last week my prime focus was to add more and more settings in the preset editor and so as to make mypaint brushes a bit more customizable. I used KisCurveOptionWidget class which Krita already has and modified it so that it can accomodate the settings and dynamic mypaint brush options. This went on to become a lot more complicated than I anticipated. Although, it works fine there are still a lot of bugs and finishing required to mark this as complete. Preset Editor  This is the layout of how the preset editor looks like and it is still far from complete. I need to categorise all the settings in the form of a tree view. I am also quite sceptical about the way of handling mypaint settings internally. I will check if that is right or some alternative approach would be a better fit and make the required changes. I will look at all those things this week. If everything goes fine this would be complete by this week's end. Till then, Good Bye :)

Week #5 Status Report [Preset Editor MyPaint Engine]

Image
The second month of Google Summer of Code has been started. This month my prime focus would be to improve the mypaint brush engine, fix some issues and also I aim to add a better preset editor than the one provided by other painting applications. Last week I worked solely on the preset editor for the newly available MyPaint brush engine in Krita. This was in accordance to the mockup as was presented in the proposal and contained only the very basic 3-4 settings for the engine. All most all of the applications with MyPaint integration just provide some 3-4 basic settings for the engine. Though the library does provide api to add all of the mentioned settings. Preset Editor This week I will look at how shall I add more settings and customization options to it. I have some thing like this in mind. Though as per the standard procedure will discuss it with Boud first. Mockup for Preset Editor with All the Settings This week I shall focus on this and will try to ad...

Phase 1 Evaluation Status Report

Image
It has been over a month since the start of GSoC. Phase #1 evaluations will start today. This post is to summarise all the work done by me during phase #1 Implementing the MyPaint Brush engine This involved writing the core brush engine classes like KisMyPaintBrush, KisMyPaintSurface, MyPaintOpPlugin, KisMyPaintOp and KisMyPaintOpFactory. At a very high level, all I had to do was override the draw_dab and get_color methods of MyPaintBrushSurface with my own version to draw over a Krita Paintdevice (Krita Surface class). While working on this, I faced a problem related to lagging that I have discussed in the previous posts. With the help of my mentors, I was able to solve this and bring the lag under acceptable limits. Then, I went on to fix some bugs, which occurred in using some specific presets. The brush engine seems to work fine mostly =] Particules Calligraphy                             ...

Week #3 Status Report

This was the third week since the commencement of official coding period on 1st June. In the last three weeks a lot of work is done and a lot of work still remains. The phase 1 evaluation submissions shall begin from monday next week, so now just 7 days are remaining. This week was mostly spent on accommodating review changes by my mentors and writing some unit tests. Work Done: Tests:  I started my week writing some unit tests for the draw_dab and get_color methods that I had implemented previous to previous week. Refactoring:  Boud suggested me to do some refactoring as the design decisions of my previous approach were not that good. I had linked libmypaint to other component responsible for preset management in the code which was not the right thing to do as a good design would be to have all the dependencies that belong to a plugin contained in the plugin itself. Ideally, a plugin should be removable from the entire system by deleting or commenting a single li...