Jump to content

GSoC/2019/StatusReports/Albertoefg: Difference between revisions

From KDE Community Wiki
Created page with "==Krita: Animated Vector Brush== === Summary === * '''Project Name:''' Animated Vector Brush for Krita * '''Proposal:''' [https://docs.google.com/document/d/1SwIBNFthJ5Qg3N7D..."
 
No edit summary
Line 1: Line 1:
==Krita: Animated Vector Brush==
==Krita: Animated Vector Brush==


=== Summary ===
==Summary==
* '''Project Name:''' Animated Vector Brush for Krita
- Project Name: Animated Vector Brush for Krita
* '''Proposal:''' [https://docs.google.com/document/d/1SwIBNFthJ5Qg3N7DBgzMKMrW-rn5hB_NPxuf8EuMr2w/edit?usp=sharing Google Docs Proposal]
- Proposal: Google Docs Proposal
* '''Abstract:''' This projects aims to implement an Animated Vector Brush for Krita, which uses SVG as a source file for the brush tips.  
- Abstract: This projects aims to implement an Animated Vector Brush for Krita, which uses SVG as a source file for the brush tips. The purpose of an animated brush is to change the brush tips automatically with every dab on the canvas. This allows for a quick way to paint different images, create random and fun designs, and explore new ways to paint that are not easy in physical world. In the other hand, using SVG as a source makes it easy to share the brush tips as they are saved as plain text, as opposed to raster image brushes.


=== Project Goals ===
==Project Goals==
===Technical goals===
- Write documentation for end users as per the Krita Contribution Guide.
1. Write the proper documentation for end users as per the Krita Contribution Guide.
- Define the structure of the SVG file containing the source tips for the Animated Vector Brush
2. Write unit tests, comments, and documentation for better maintainability.
- Load AVB
3. Define the structure of the SVG file containing the source tips for the Animated Vector Brush
- Parse SVG
4. Write the code for the Animated Vector Brush, which uses that uses an SVG library a source.
- Render SVG as images
5. Create the User Interface for loading, configuring and saving the Animated Vector Brush, which should be done in accordance with the KDE Human Interface Guidelines.
- Write a helper parasite class
- Change brush tip with every dab
- Save AVB


===Soft goals===
==Project related links==
1. Bond, learn, and become an important member of the Krita and KDE communities.
- Phabricator https://phabricator.kde.org/T10930
2. Get user and artist feedback for the implementation of the project.  
- Personal Blog https://albertoefg.info/blog/kde.html
3. Learn about the KDE Human Interface Guidelines (HIG), Community Identity Guidelines (CIG) and Accessibility Guidelines (AG.)
4. Learn about the testing libraries and guidelines used by Krita and KDE.
5. Have fun!! 😄


==Implementations Status==
=== Write documentation ===
- *Goal:* The documentation should be written for end users as per the Krita Contribution Guide, it should also be sufficient for the users to understand and use the brush.
- *Status:* The documentation is mostly done, it is only necessary to add the proper screenshots and update in case of changes.
- *TODO:* Add screenshots.
- Related blog post:
  + My first two weeks on Google Summer of Code https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + e9dbd91f: Added Tutorial for Animated Vector Brushes. https://invent.kde.org/albertofl/docs-krita-org/commit/e9dbd91fff1754ad6fc9e215d9bd16ee5a43116f
    + 378b759a: Added small description for AVB https://invent.kde.org/albertofl/docs-krita-org/commit/378b759a4c849f3c3feb50c2000920f9a7e63a3a
    + 1aa98e85: Created documentation for avb  https://invent.kde.org/albertofl/docs-krita-org/commit/1aa98e85589b0786b2b8e67d64513272663d99bb
== Load AVB ==
- *Goal:* The Animated Vector Brush file should be loaded and call the proper Class, in this case ~kis_vectoranimated_brush~
- *Status:* The implementation is done, the loading of the AVB by the user is using the +import tab.
- Related blog post:
  + My first two weeks on Google Summer of Code https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + bd654077: Added vectorAnimatedBrush to brush server https://invent.kde.org/albertofl/krita/commit/bd654077f29b2f50cdb0ea9c93766a57295bbdb1
    + ddee5b98: Load Vector Animated Brush https://invent.kde.org/albertofl/krita/commit/ddee5b98b3aacf2cbed764f3c650167243e17a29


=== Project related links ===
== Parse SVG ==
* [https://phabricator.kde.org/T10930 Phabricator]
- *Goal:* The SVG should be parsed and transformed to KoShape as necessary, so Krita can use them to set ~brushTipImage~, paint dabs or change the size of the brush tip.
* [https://albertoefg.info/blog/kde.html Personal Blog]
- *Status:* Done.
- Related blog post:
  + Basic functionality almost ready https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + 7ed4b9c1:  Use SvgParser to loadFromDevice  https://invent.kde.org/albertofl/krita/commit/7ed4b9c13c86c4b1b3347528c739cd733c163354
    + cffe647e: Set brushTipImage from the KoShapePainter https://invent.kde.org/albertofl/krita/commit/cffe647e8064117fb7ab70c9147ec0ad67c48120


== Render brush tips as images. ==
- *Goal:* The KoShapes should be transformed to QImage as necessary, so Krita can use them to set ~brushTipImage~, paint dabs or change the size of the brush tip.
- *Status:* Done.
- Related blog post:
  + Basic functionality almost ready https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + 7ed4b9c1:  Use SvgParser to loadFromDevice  https://invent.kde.org/albertofl/krita/commit/7ed4b9c13c86c4b1b3347528c739cd733c163354
    + cffe647e: Set brushTipImage from the KoShapePainter https://invent.kde.org/albertofl/krita/commit/cffe647e8064117fb7ab70c9147ec0ad67c48120
    + b024e4fb: Render QImages only once https://invent.kde.org/albertofl/krita/commit/b024e4fb08ce78d438a0f9b081ad1a1dc3d0c548


== Implementations Status ==
Status report on each goal implementation.


'''Goal:''' Write Documentation
== Write a helper parasite class ==
'''Current Status''' Mostly done.
- *Goal:* Write a class that will aid the ~kis_vectoranimatedbrush~ class, holding the values of the Index and related data.
- *Status:* In Progress. Although the majority of the class works now, there is a need for comments and cleaning.
- Related blog post:
  + Implementing a derivated class of kis_brushes_pipe https://albertoefg.info/blog/2019/07/implementing_a_derivated_class_of_kis_brushes_pipe.html
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + 065ac9ba: Added a parasite helper class https://invent.kde.org/albertofl/krita/commit/065ac9ba9ce8c037f8ffeedb0ce4081bf4716bcf
    + 4d3fbd9b: Fix the segmentation fault https://invent.kde.org/albertofl/krita/commit/4d3fbd9b40260b21f138e6df30495fe0c6b3c4f3
  +


'''TODO''' Add Screenshots.
== Change brush tip with every dab. ==
- *Goal:* Change the ~brushTipimage~ with every dab
- *Status:* In Progress. As of right now the images are being changed with every dab but it could be done in a faster way, not using ~prepareForSeqNo~ or limiting the amount of times it runs.
- Related blog post:
  To be written
*** Commits and Differentials
- Phabricator T10930: https://phabricator.kde.org/T10930
    + 2ed1c1d5 · Fix iteration of shapesToimages : https://invent.kde.org/albertofl/krita/commit/2ed1c1d5acd7e5098a85f4948893ff52cfd52ac9


==== Related blog posts ====
** Save as AVB.
* [TODO]
- TODO
 
 
==== Commits and Differentials ====
 
* [https://invent.kde.org/albertofl/docs-krita-org/commit/e9dbd91fff1754ad6fc9e215d9bd16ee5a43116f#note_6492 Documentation]

Revision as of 17:56, 3 August 2019

Krita: Animated Vector Brush

Summary

- Project Name: Animated Vector Brush for Krita - Proposal: Google Docs Proposal - Abstract: This projects aims to implement an Animated Vector Brush for Krita, which uses SVG as a source file for the brush tips. The purpose of an animated brush is to change the brush tips automatically with every dab on the canvas. This allows for a quick way to paint different images, create random and fun designs, and explore new ways to paint that are not easy in physical world. In the other hand, using SVG as a source makes it easy to share the brush tips as they are saved as plain text, as opposed to raster image brushes.

Project Goals

- Write documentation for end users as per the Krita Contribution Guide. - Define the structure of the SVG file containing the source tips for the Animated Vector Brush - Load AVB - Parse SVG - Render SVG as images - Write a helper parasite class - Change brush tip with every dab - Save AVB

Project related links

- Phabricator https://phabricator.kde.org/T10930 - Personal Blog https://albertoefg.info/blog/kde.html

Implementations Status

Write documentation

- *Goal:* The documentation should be written for end users as per the Krita Contribution Guide, it should also be sufficient for the users to understand and use the brush. - *Status:* The documentation is mostly done, it is only necessary to add the proper screenshots and update in case of changes. - *TODO:* Add screenshots. - Related blog post:

 + My first two weeks on Google Summer of Code https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + e9dbd91f: Added Tutorial for Animated Vector Brushes. https://invent.kde.org/albertofl/docs-krita-org/commit/e9dbd91fff1754ad6fc9e215d9bd16ee5a43116f
   + 378b759a: Added small description for AVB https://invent.kde.org/albertofl/docs-krita-org/commit/378b759a4c849f3c3feb50c2000920f9a7e63a3a
   + 1aa98e85: Created documentation for avb  https://invent.kde.org/albertofl/docs-krita-org/commit/1aa98e85589b0786b2b8e67d64513272663d99bb

Load AVB

- *Goal:* The Animated Vector Brush file should be loaded and call the proper Class, in this case ~kis_vectoranimated_brush~ - *Status:* The implementation is done, the loading of the AVB by the user is using the +import tab. - Related blog post:

 + My first two weeks on Google Summer of Code https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + bd654077: Added vectorAnimatedBrush to brush server https://invent.kde.org/albertofl/krita/commit/bd654077f29b2f50cdb0ea9c93766a57295bbdb1
   + ddee5b98: Load Vector Animated Brush https://invent.kde.org/albertofl/krita/commit/ddee5b98b3aacf2cbed764f3c650167243e17a29

Parse SVG

- *Goal:* The SVG should be parsed and transformed to KoShape as necessary, so Krita can use them to set ~brushTipImage~, paint dabs or change the size of the brush tip. - *Status:* Done. - Related blog post:

 + Basic functionality almost ready https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + 7ed4b9c1:  Use SvgParser to loadFromDevice  https://invent.kde.org/albertofl/krita/commit/7ed4b9c13c86c4b1b3347528c739cd733c163354
   + cffe647e: Set brushTipImage from the KoShapePainter https://invent.kde.org/albertofl/krita/commit/cffe647e8064117fb7ab70c9147ec0ad67c48120

Render brush tips as images.

- *Goal:* The KoShapes should be transformed to QImage as necessary, so Krita can use them to set ~brushTipImage~, paint dabs or change the size of the brush tip. - *Status:* Done. - Related blog post:

 + Basic functionality almost ready https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + 7ed4b9c1:  Use SvgParser to loadFromDevice  https://invent.kde.org/albertofl/krita/commit/7ed4b9c13c86c4b1b3347528c739cd733c163354
   + cffe647e: Set brushTipImage from the KoShapePainter https://invent.kde.org/albertofl/krita/commit/cffe647e8064117fb7ab70c9147ec0ad67c48120
   + b024e4fb: Render QImages only once https://invent.kde.org/albertofl/krita/commit/b024e4fb08ce78d438a0f9b081ad1a1dc3d0c548


Write a helper parasite class

- *Goal:* Write a class that will aid the ~kis_vectoranimatedbrush~ class, holding the values of the Index and related data. - *Status:* In Progress. Although the majority of the class works now, there is a need for comments and cleaning. - Related blog post:

 + Implementing a derivated class of kis_brushes_pipe https://albertoefg.info/blog/2019/07/implementing_a_derivated_class_of_kis_brushes_pipe.html
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + 065ac9ba: Added a parasite helper class https://invent.kde.org/albertofl/krita/commit/065ac9ba9ce8c037f8ffeedb0ce4081bf4716bcf
   + 4d3fbd9b: Fix the segmentation fault https://invent.kde.org/albertofl/krita/commit/4d3fbd9b40260b21f138e6df30495fe0c6b3c4f3
  + 

Change brush tip with every dab.

- *Goal:* Change the ~brushTipimage~ with every dab - *Status:* In Progress. As of right now the images are being changed with every dab but it could be done in a faster way, not using ~prepareForSeqNo~ or limiting the amount of times it runs. - Related blog post:

  To be written
      • Commits and Differentials

- Phabricator T10930: https://phabricator.kde.org/T10930

   + 2ed1c1d5 · Fix iteration of shapesToimages : https://invent.kde.org/albertofl/krita/commit/2ed1c1d5acd7e5098a85f4948893ff52cfd52ac9
    • Save as AVB.

- TODO