GSoC/2021/StatusReports/Sachinjindal: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2021‎ | StatusReports
(Created page with "'''Contents''' '''Reference Images Improvement''' Krita has a Reference Image Tool to aid artists drawing with photo referencing. This project aims to improve the Reference...")
 
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Contents'''
== '''Reference Images Improvement''' ==
Krita is a professional FREE and open source painting program.
This project aims to improve the reference image tool in Krita to include some  additional features that will be helpful to the artists drawing with photo-referencing.With the addition of this new features, the tool & reference images will be more interactive and easier to use in Krita.


'''Reference Images Improvement'''  
=== '''Project Goals''' ===
Krita has a Reference Image Tool to aid artists drawing with photo referencing. This project aims to improve the Reference Image Tool  to include some  additional features that will be helpful to the artists especially for photo studies. The goal is to add new features in the Tool and make the Reference Image Tool more interactive .
* Pin Reference Image to canvas.
** Status: '''DONE'''
 
* Integrate Crop.
** Status: '''DONE'''
 
* Update & sync the reference image.
** Status: '''DONE'''


'''Project Goals'''
=== '''Mentors''' ===
* Pin Reference Image to canvas.
* Integrate the crop functionality.
* Update & sync the reference image .


'''Mentors'''
[https://invent.kde.org/woltherav Wolthera van Hövell ]
[https://invent.kde.org/woltherav Wolthera van Hövell ]
[https://invent.kde.org/tymond tiar]
 
[https://invent.kde.org/tymond Agata Cacko (tiar)]
 
[https://invent.kde.org/rempt Halla Rempt]
[https://invent.kde.org/rempt Halla Rempt]


=== Relevant Code and Technical Pre-requisites ===
=== Links ===
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901 Merge Request]
 
[https://phabricator.kde.org/T14490 Phabricator]
 
[https://drive.google.com/file/d/1Hy2HF6vFVAf-LkNINhMAn03bvLitZ0FR/view?usp=sharing Short Video]


=== '''Work Report''' ===
=== '''Work Report''' ===
====  
=== Pin Reference Images ===
Week 1 & 2 ====
 
I implemented all necessary options in the widget (UI) and integrated them with new decoration in Reference Images . So when the Crop is requested it switches the decoaration and handle for the Crop Operation.  
Goal of this feature is to provide an option to apply the canvas modifications to reference images based on the option selected in the Tool widget. This is implemented with four options position, zoom, rotate & mirror to allow them to be manipulated with canvas or image modifications .
 
Bug Request : [https://bugs.kde.org/show_bug.cgi?id=396155 Link]
 
This is a great mock-up of this feature from Bugzilla.
 
[[File:Pin.jpg|Pinned images, Un-Pinned images]]
 
=== Integrate Crop ===
 
This feature allows the reference images to be Cropped inside the Tool like the Crop Tool . Crop rectangle can be easily modified with the handles on the images and the sliders in the Tool box . So both are interconnected as well.  The final crop action is in-destructible so the image is updated with original image and can be cropped differently again .
 
Bug Request : [https://bugs.kde.org/show_bug.cgi?id=399061 Link]
 
 
[[File:Screenshot 20210818 152720.png|thumb]]
 
=== Sync Reference Images ===
This feature updates the image with latest modifications . Since references are not meant to be modified , but they can be modified like other files in Krita and uploaded with any rectifications . So this will keep track of any modifications done to them and uploads it correctly . This is done via QFileSystemWatcher class and this functionality exists in Krita for some layers already .
This is shown in the last part of the demo video in which the yellow line is shown in the reference images.
 
=== What's left ===
Documentation for the added features in Krita Manual and some minor code-style updates from the mentors code reviews.
 
==== Important Commits ====
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=643515b844088b0899e3ee20cfe80eb217239dc3 Add Pin/ Unpin options for reference images]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=ecf0c5045fd6028fd5abd77ea4201d6ca82e81e0 Fix Zoom position & Polish the UI]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=b00922e4b9d5cc735bf91cce90f457ade5fbaff2 Add Pin/unpin for Zoom]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=c296d7fa58ad50e230bf438a35ae88efecfb8823 Add crop options in RI widget]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=65ca4baac813ad1666cb3ebde1a295bc1d723e69 Implement decorations for Crop bounds]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=643df46b7da28390bdee6dc212f0bf13109ff71d Add a command to Crop image]
 
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=668944a4955cce7837cd629b1db22f7eeefcd5c5 Use mergeWith() to avoid adding same commands]


Blog [https://jindalsachin.github.io/Week-1-&-2-GSoc/ Week-1-&-2]
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=110bc653b2c19a0b38ca826dc27bf4edc555ec27 Refactor FileSytemWatcherWrapper in KisSafeDocumentLoader]


==== Week 3 & 4 ====
[https://invent.kde.org/graphics/krita/-/merge_requests/901/diffs?commit_id=2784bb19c0adf6085d0b3c76e8f81f9d0d755fff Reload & update the image]
I started implementing the Pin Reference Image features with new transformation for QPainter and mouse actions . Then i proceeded with adding an undo-able operation for Cropping Reference Images with KUndo2Command and integrating it with the widget and decoration .


== Deliverables ==
== Blogs ==
* Link to Phabricator task [https://phabricator.kde.org/T14490 T14490]
* [https://jindalsachin.github.io/GSoC-with-Krita/ Introduction]
* Merge Request [https://invent.kde.org/graphics/krita/-/merge_requests/901/commits 901]
* [https://jindalsachin.github.io/Week-1-&-2-GSoc/ Week-1 & 2]
* Blogs [[dalsachin.github.io/|here]]
* [https://jindalsachin.github.io/Phase-1/ Phase-1]

Latest revision as of 11:06, 23 August 2021

Reference Images Improvement

Krita is a professional FREE and open source painting program. This project aims to improve the reference image tool in Krita to include some additional features that will be helpful to the artists drawing with photo-referencing.With the addition of this new features, the tool & reference images will be more interactive and easier to use in Krita.

Project Goals

  • Pin Reference Image to canvas.
    • Status: DONE
  • Integrate Crop.
    • Status: DONE
  • Update & sync the reference image.
    • Status: DONE

Mentors

Wolthera van Hövell

Agata Cacko (tiar)

Halla Rempt

Links

Merge Request

Phabricator

Short Video

Work Report

Pin Reference Images

Goal of this feature is to provide an option to apply the canvas modifications to reference images based on the option selected in the Tool widget. This is implemented with four options position, zoom, rotate & mirror to allow them to be manipulated with canvas or image modifications .

Bug Request : Link

This is a great mock-up of this feature from Bugzilla.

Pinned images, Un-Pinned images

Integrate Crop

This feature allows the reference images to be Cropped inside the Tool like the Crop Tool . Crop rectangle can be easily modified with the handles on the images and the sliders in the Tool box . So both are interconnected as well. The final crop action is in-destructible so the image is updated with original image and can be cropped differently again .

Bug Request : Link


Sync Reference Images

This feature updates the image with latest modifications . Since references are not meant to be modified , but they can be modified like other files in Krita and uploaded with any rectifications . So this will keep track of any modifications done to them and uploads it correctly . This is done via QFileSystemWatcher class and this functionality exists in Krita for some layers already .

This is shown in the last part of the demo video in which the yellow line is shown in the reference images.

What's left

Documentation for the added features in Krita Manual and some minor code-style updates from the mentors code reviews.

Important Commits

Add Pin/ Unpin options for reference images

Fix Zoom position & Polish the UI

Add Pin/unpin for Zoom

Add crop options in RI widget

Implement decorations for Crop bounds

Add a command to Crop image

Use mergeWith() to avoid adding same commands

Refactor FileSytemWatcherWrapper in KisSafeDocumentLoader

Reload & update the image

Blogs