Bug 427831 - Mirroring tool allows for subpixel placement without supporting it
Summary: Mirroring tool allows for subpixel placement without supporting it
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tools (other bugs)
Version First Reported In: 4.4.0
Platform: Mint (Ubuntu based) Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-10-16 19:21 UTC by Tiar
Modified: 2021-08-09 18:06 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
Screenshot showing the mirroring tool effects for different brushes (129.44 KB, image/png)
2020-10-16 19:21 UTC, Tiar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2020-10-16 19:21:55 UTC
Created attachment 132441 [details]
Screenshot showing the mirroring tool effects for different brushes

SUMMARY
Right now Mirroring Tool allows you to set up the mirror line with subpixel precision, however the tool itself doesn't work with subpixel precision. It effectively either works as if it was placed before or after the pixel, depending on where exactly it's placed.

STEPS TO REPRODUCE
1. Try to move the mirroring tool into 1/4 and later 3/4 of the pixel.
2. Try to paint (you can use Pixel Art brushes or any Pixel Brush; Quick Brush Engine will work in a different way).

OBSERVED RESULT
Mirroring tool does allow for subpixel placement, but it doesn't take that placement into account and still uses imaginary placement between pixels.

EXPECTED RESULT
Mirroring tool snaps to placements between pixels, showing that subpixel precision is not possible.

ADDITIONAL INFORMATION
When fixing this bug, please take a note of bug 427829 which is a wish to make mirroring tool work with specifically half-pixel precision (not all subpixel, just half).


SOFTWARE/OS VERSIONS
Krita

 Version: 4.4.0
 Languages: en_US, en, en_US, en, en_US, en, pl_PL, pl, pl_PL, pl
 Hidpi: true

Qt

  Version (compiled): 5.12.9
  Version (loaded): 5.12.9
Comment 1 romopua 2021-06-10 10:10:36 UTC
Hello, I often use this mirroring function. Any idea when it will be solved?

How will I know when it has been fixed? Will I receive a notice through this thread?
Comment 2 Tiar 2021-06-10 11:02:04 UTC
romopua@gmail.com by commenting, you added yourself to the CC list (you can also do that without commenting by adding yourself to the CC on top of the bug report), so you will get an email about any comment and change of the status of the bug report.

No idea when it will be solved, I would like to fix that but I don't have time now, still working on resources.
Comment 3 Tiar 2021-08-09 18:05:44 UTC
Git commit 6daaab5efe1356f72510dc8535d1c387e16a8d5c by Agata Cacko.
Committed on 09/08/2021 at 17:52.
Pushed by tymond into branch 'master'.

Add KritaUtils::mirrorX for QPointF precision

Before this commit, KritaUtils only had functions to mirror
with the axis having only integer precision.
This commit adds functions that can mirror with the point
with float precision. That allows using them for mirroring
axis in the middle of the pixel.

M  +41   -0    libs/image/krita_utils.cpp
M  +4    -0    libs/image/krita_utils.h

https://invent.kde.org/graphics/krita/commit/6daaab5efe1356f72510dc8535d1c387e16a8d5c
Comment 4 Tiar 2021-08-09 18:05:52 UTC
Git commit 9a9e1c61b5acf5afa21901a71cd710bd8732e9c3 by Agata Cacko.
Committed on 09/08/2021 at 17:56.
Pushed by tymond into branch 'master'.

Implement 0.5 pixel mirror precision for KisPainter

Before this commit, brush engines using the KisPainter,
would only use mirroring with integer/non-subpixel precision.
This commit ensures they use the subpixel precision, which allows
to use them with half-pixel precision.

M  +5    -5    libs/image/kis_painter.cc

https://invent.kde.org/graphics/krita/commit/9a9e1c61b5acf5afa21901a71cd710bd8732e9c3
Comment 5 Tiar 2021-08-09 18:06:00 UTC
Git commit 25469219a1ad834de5bde169aca1f0527efa5db1 by Agata Cacko.
Committed on 09/08/2021 at 17:58.
Pushed by tymond into branch 'master'.

Fix mirroring of Quick Engine brushes

Before this commit, the mirroring of Quick Engine brushes
was incorrect (different from how other brushes behaved).
That was because of the -0.5 pixel fix to align the outline
with the result. It was added before the mirrored points
were calculated, resulting in a wrong points.
This commit ensures that the -0.5 fix is applied only when
painting, which fixes the mirroring.

M  +12   -6    plugins/paintops/roundmarker/kis_roundmarkerop.cpp

https://invent.kde.org/graphics/krita/commit/25469219a1ad834de5bde169aca1f0527efa5db1