GSoC/2019/StatusReports/Albertoefg: Difference between revisions
Albertoefg (talk | contribs) No edit summary |
Albertoefg (talk | contribs) No edit summary |
||
Line 38: | Line 38: | ||
=== Load AVB === | === Load AVB === | ||
* '''Goal''': The Animated Vector Brush file should be loaded and call the proper | * '''Goal''': The Animated Vector Brush file should be loaded and call the proper class, in this case <code>KisVectorAnimatedBrush</code>. | ||
* '''Status''': The implementation is done, the loading of the AVB by the user is using the <code>+import</code> tab. | * '''Status''': The implementation is done, the loading of the AVB by the user is using the <code>+import</code> tab. | ||
* '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c My first two weeks on Google Summer of Code] | * '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-09-my_first_two_weeks.html#org54db47c My first two weeks on Google Summer of Code] | ||
Line 47: | Line 47: | ||
=== Parse SVG === | === Parse SVG === | ||
* '''Goal''': The SVG should be parsed and transformed to KoShape as necessary, so Krita can use them to set | * '''Goal''': The SVG should be parsed and transformed to <code>KoShape</code> as necessary, so Krita can use them to set <code>brushTipImage</code>, paint dabs or change the size of the brush tip. | ||
* '''Status''': Done. | * '''Status''': Done. | ||
* '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html Basic functionality almost ready] | * '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html Basic functionality almost ready] | ||
Line 56: | Line 56: | ||
=== Render brush tips as images === | === Render brush tips as images === | ||
* '''Goal''': The KoShapes should be transformed to QImage as necessary, so Krita can use them to set | * '''Goal''': The <code>KoShapes</code> should be transformed to <code>QImage</code> as necessary, so Krita can use them to set <code>brushTipImage</code>, paint dabs or change the size of the brush tip. | ||
* '''Status''': Done. | * '''Status''': Done. | ||
* '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html Basic functionality almost ready] | * '''Related blog post''': [https://albertoefg.info/blog/2019/06/2019-06-23-the_last_two_weeks_on_krita.html Basic functionality almost ready] | ||
Line 66: | Line 66: | ||
=== Write a parasite class to hold the index === | === Write a parasite class to hold the index === | ||
* '''Goal''': Write a parasite class that will aid | * '''Goal''': Write a parasite class that will aid <code>KisVectorAnimatedBrush</code> 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. It can also be extended to add more functionality like different types of sequences: tilt, velocity, etc. | * '''Status''': In Progress. Although the majority of the class works now, there is a need for comments and cleaning. It can also be extended to add more functionality like different types of sequences: tilt, velocity, etc. | ||
* Related blog post: [https://albertoefg.info/blog/2019/07/implementing_a_derivated_class_of_kis_brushes_pipe.html Implementing a derivated class of kis_brushes_pipe] | * Related blog post: [https://albertoefg.info/blog/2019/07/implementing_a_derivated_class_of_kis_brushes_pipe.html Implementing a derivated class of kis_brushes_pipe] | ||
Line 75: | Line 75: | ||
=== Write a KisVectorAnimatedBrush class === | === Write a KisVectorAnimatedBrush class === | ||
* '''Goal''': Write a the class | * '''Goal''': Write a the class <code>KisVectorAnimatedBrush</code> that will inherit from <code>KisBrushesPipe</code> to work as a brush pipe of <code>VectorShapeObject</code> brushes, it will also have a <code>Private</code> struct to hold a <code>KisVectorHelperPipe</code> object. | ||
* '''Status''': In Progress. The class is mostly done, however it can be extended to get more functionality. | * '''Status''': In Progress. The class is mostly done, however it can be extended to get more functionality. | ||
* '''Related blog post''': To be written | * '''Related blog post''': To be written | ||
Line 84: | Line 84: | ||
=== Write a VectorShapeObject class === | === Write a VectorShapeObject class === | ||
* '''Goal''': Write a class that will work as a single brush that will hold a single | * '''Goal''': Write a class that will work as a single brush that will hold a single <code>KoShape</code> and a single <code>QImage</code>. A series of objects of this class will populate the <code>VectorAnimatedBrush</code> class, using the <code>KisVectorHelperPipe</code> class. | ||
* '''Status''': Done. | * '''Status''': Done. | ||
* '''Related blog post''': To be written | * '''Related blog post''': To be written | ||
Line 100: | Line 100: | ||
=== Change brush tip with every dab === | === Change brush tip with every dab === | ||
* '''Goal''': Change the | * '''Goal''': Change the <code>brushTipimage</code> with every dab | ||
* '''Status''': | * '''Status''': Done. | ||
* '''Related blog post''': To be written | * '''Related blog post''': To be written | ||
==== Commits and Differentials ==== | ==== Commits and Differentials ==== |
Revision as of 23:49, 22 August 2019
Krita: Animated Vector Brush
Summary
- Project Name: Animated Vector Brush for Krita
- Proposal: Google Docs Proposal
- Related blog: albertoefg.info
- 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 brush tips as images
- Write a parasite class to hold the index
- Write a VectorAnimatedBrush class
- Write a VectorShapeObject class
- Write a helper class to populate the VectorAnimatedBrush class
- Change brush tip with every dab
- Save as AVB
- 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
Commits and Differentials
Load AVB
- Goal: The Animated Vector Brush file should be loaded and call the proper class, in this case
KisVectorAnimatedBrush
. - 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
Commits and Differentials
Parse SVG
- Goal: The SVG should be parsed and transformed to
KoShape
as necessary, so Krita can use them to setbrushTipImage
, paint dabs or change the size of the brush tip. - Status: Done.
- Related blog post: Basic functionality almost ready
Commits and Differentials
Render brush tips as images
- Goal: The
KoShapes
should be transformed toQImage
as necessary, so Krita can use them to setbrushTipImage
, paint dabs or change the size of the brush tip. - Status: Done.
- Related blog post: Basic functionality almost ready
Commits and Differentials
Write a parasite class to hold the index
- Goal: Write a parasite class that will aid
KisVectorAnimatedBrush
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. It can also be extended to add more functionality like different types of sequences: tilt, velocity, etc.
- Related blog post: Implementing a derivated class of kis_brushes_pipe
Commits and Differentials
Write a KisVectorAnimatedBrush class
- Goal: Write a the class
KisVectorAnimatedBrush
that will inherit fromKisBrushesPipe
to work as a brush pipe ofVectorShapeObject
brushes, it will also have aPrivate
struct to hold aKisVectorHelperPipe
object. - Status: In Progress. The class is mostly done, however it can be extended to get more functionality.
- Related blog post: To be written
Commits and Differentials
Write a VectorShapeObject class
- Goal: Write a class that will work as a single brush that will hold a single
KoShape
and a singleQImage
. A series of objects of this class will populate theVectorAnimatedBrush
class, using theKisVectorHelperPipe
class. - Status: Done.
- Related blog post: To be written
Commits and Differentials
- Phabricator T10930
- eae68aa7: Add KisVectorHelperPipe Class Note: This class was added in the same commit as the helper pipe class.
Write a Helper Pipe class to populate the KisVectorAnimatedBrush
- Goal: Write a helper class for
KisVectorAnimatedBrush
that will aid holding a parasite object of the class written earlier, and populate the pipe brush withVectorShapeObject
brushes. - Status: Done.
- Related blog post: To be written
Commits and Differentials
Change brush tip with every dab
- Goal: Change the
brushTipimage
with every dab - Status: Done.
- Related blog post: To be written
Commits and Differentials
Save as AVB
- TODO