Posts

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 ASAP. The advan…

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.


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.

 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.

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.

This week I shall focus on this and will try to add as much settings as possible in the widget.
Till then, Good Bye :)

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 =]



Loading MyPaint Brushes This was the second most important thing in my TODO. The mypaint brush engine would be of no use if it can load the insta…

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 line. So, I had to impl…

The MyPaint Brush Engine is now working

Image
It has been more than 2 weeks since the coding period began and I didn't post much because the project was just begun and there was no big progress. Coming to the project, the MyPaint brush engine plugin has been integrated into Krita and is working. Though, it is very rudimentary as of now, we can't customize it, we can't load/save brushes and there is no settings widget. All we can do as of now is just use the default settings for painting. The rest of the things will be taken care of during this summer.
Work Done: Over the last two weeks, I worked on the KisMyPaintBrush, KisMyPaintSurface, MyPaintopPlugin classes.  Last week I solely worked on draw_dab and get_color methods which are responsible for painting the dabs over the canvas. Those methods occupied most of the week.



                        Bubble brush



                        AirBrush Stroke


                        Spray Brush

These were loaded from the system for testing purposes and are obviously not the defa…