GSoC/2020/StatusReports/SaurabhKumar: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2020‎ | StatusReports
Line 105: Line 105:


=====Week 9 and 10=====
=====Week 9 and 10=====
I implemented the saving and loading of storyboards. For this I stored a <code>QVector</code> of <code>Comment</code> and a <code>StoryboardItemList</code> in <code>KisDocument</code>. This version of data is kept in sync with the version that is inside <code>CommentModel</code> and <code>StoryboardModel</code>.  
I implemented the saving and loading of storyboards. For this I stored a <code>QVector</code> of <code>Comment</code> and a <code>StoryboardItemList</code> in <code>KisDocument</code>. This version of data is kept in sync with the version that is inside <code>CommentModel</code> and <code>StoryboardModel</code>.(Commits:
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=1618913cc6012e1195b81bf857f6b7be188333e8 57]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=d7046c380650963081f5be3ecda9840918dab7b0 58]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=4e3b2935de7c1cabaa9c9a27b0782c90a7c45e0a 59]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=2c29f0e18540a4e0b9ca9ac123e2901619e30157 62])
 
I also added unit-tests for saving and loading of storyboards. These tests were added in <code>kis_kra_saver_test.cpp</code>. (Commit: [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=65b39c401b2f09b0fb67f319574297e13c0dfc09 56])
I also added unit-tests for saving and loading of storyboards. These tests were added in <code>kis_kra_saver_test.cpp</code>. (Commit: [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=65b39c401b2f09b0fb67f319574297e13c0dfc09 56])


I worked on the <code>Export dialog</code> GUI and implemented some of its functions.(Commits:
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=21b8fc7a64e8177225f0b6c2e6dc9b795602e316 63]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=f9efa36e85d56066a64616dc39a29e5a15447058 64])
Other than that I added a patch from Eoin O'Neil, fixed some changes and merged my branch with master.
(Commits :  
(Commits :  
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=5f8ba69bb9284df6c887234eb0f0886d6e1cb796 54]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=5f8ba69bb9284df6c887234eb0f0886d6e1cb796 54]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=f06282a73c985dccdb5538dfe9031e657cfc8794 55]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=f06282a73c985dccdb5538dfe9031e657cfc8794 55]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=1618913cc6012e1195b81bf857f6b7be188333e8 57]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=d7046c380650963081f5be3ecda9840918dab7b0 58]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=4e3b2935de7c1cabaa9c9a27b0782c90a7c45e0a 59]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=ecd63406e5163034794125f115e80449d645e0fe 60]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=ecd63406e5163034794125f115e80449d645e0fe 60]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=0453a2a792c296ddaa8d8fd86765d22574e433fd 61]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=0453a2a792c296ddaa8d8fd86765d22574e433fd 61]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=2c29f0e18540a4e0b9ca9ac123e2901619e30157 62]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=21b8fc7a64e8177225f0b6c2e6dc9b795602e316 63]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=f9efa36e85d56066a64616dc39a29e5a15447058 64]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=ef795a5db0f45bbd2da45e8138f4c36e2dd6c9e6 65]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=ef795a5db0f45bbd2da45e8138f4c36e2dd6c9e6 65]
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=e9c349d928ebfa03fb7ac5d6668ffdf3d1ca5750 66])
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=e9c349d928ebfa03fb7ac5d6668ffdf3d1ca5750 66])

Revision as of 14:40, 25 August 2020

Storyboard Docker For Krita

Project Overview

A storyboard is a graphic organizer that consists of illustrations and comments displayed in sequence for the purpose of pre-visualizing and planning of motion picture and animation. The project was to implement a docker in Krita that would use the existing animation API in Krita to facilitate storyboarding. Qt's MVC classes are used for storing and displaying the storyboard.

Project Goals

The requirements of the project can be broken down into the following goals:

  • Implementing the basic MVC classes for the docker.
  • Integrating relevant parts of Krita, namely the timeline docker and canvas, with the storyboard docker.
  • Implementing functionalities to export storyboard as PDF and SVG.
  • User documentation.

The mockups prepared for the project:


Relevant Code and Technical Pre-requisites

MVC classes

Talk about MVC classes, comment and storyboard.

Krita's Anamtion API

Talk about Keyframe and keyframe channels. Talk about AnimationInterface Talk about the syncing and addition of keyframes.

Work Report

Implementing the MVC classes for the docker

Week -1

I started a few weeks early, to cover up for any unprecedented events due to ongoing COVID-19 crisis. This week I added the storyboard docker to Krita's plugin system and implemented the tool-buttons at the top of the docker and the menu related to those buttons. I implemented the CommentModel class to manage the comment tool-button's menu. The members of this menu would be part of the storyboard items that would be part of the storyboard model. I also started implemented the StoryboardModel class. (Commits :1)

Blog post

Week 0

I implemented the delegate class for the CommentModel. I also added a visibility property to members of the CommentModel. This property is shown as an eye icon which can be toggled by clicking. I also implemented the StoryboardItem class that makes up the data of the StoryboardModel and implemented functions in StoryboardModel to manage that data. (Commits : 2, 6)

Also I implemented unit-tests for the CommentModel, StoryboardModel and the interactions between those classes.(Commits: 3, 4, 5)

Blog post

Week 1

(Commits : 7 8 910 11)

Week 2

(Commits : 12 13 14 15 16 17)

Week 3

(Commits : 18 19 20 21 22 23 24 25 26 27 28)

Week 4 and 5

(Commits : 29 30 31 32 33 34 35 36)

Week 6

(Commits : 37 38 39 40)

Week 7

(Commits : 41 42 43 44)

Week 8

(Commits : 45 46 47 48 49 50 51 52 53)

Week 9 and 10

I implemented the saving and loading of storyboards. For this I stored a QVector of Comment and a StoryboardItemList in KisDocument. This version of data is kept in sync with the version that is inside CommentModel and StoryboardModel.(Commits: 57 58 59 62)

I also added unit-tests for saving and loading of storyboards. These tests were added in kis_kra_saver_test.cpp. (Commit: 56)

I worked on the Export dialog GUI and implemented some of its functions.(Commits: 63 64)

Other than that I added a patch from Eoin O'Neil, fixed some changes and merged my branch with master. (Commits : 54 55 60 61 65 66)

Week 11 and 12

(Commits : 67 68 69 70 71 72 73 74 75 76 77 78 79 80)

Introduction

Storyboard docker

The storyboard docker aims to facilitate storyboarding in Krita. It allows multiple images and associated text to be organized in the form of a storyboard. The arrangement can be tweaked using the mode and view options. Also different field's visibility can be toggled. The storyboard can be rendered as pdf or svg.

Comment menu
Arrange menu


Deliverables