Bug 289915 - Krita's Canvas produces subtle artifacts on incremental updates
Summary: Krita's Canvas produces subtle artifacts on incremental updates
Status: RESOLVED UNMAINTAINED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-27 11:22 UTC by Dmitry Kazakov
Modified: 2015-06-15 11:57 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Before transparent painting (203.68 KB, image/png)
2012-01-03 17:26 UTC, Dmitry Kazakov
Details
After painting (205.62 KB, image/png)
2012-01-03 17:27 UTC, Dmitry Kazakov
Details
After painting (with marks, pointing to the artifacts) (215.25 KB, image/png)
2012-01-03 17:28 UTC, Dmitry Kazakov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Kazakov 2011-12-27 11:22:08 UTC
Way to reproduce:
1) Open quite contrast image, e.g. lena.png
2) Set the Opacity of the brush to 0%
3) Paint with such a brush on a canvas (it just triggers updates of it)
4) You'll see the small changes of pixels on the border of your brush

It happens on all zoom-levels. It we disable QImage pre-scaling, the effect is much less, but still present.
Comment 1 Dmitry Kazakov 2011-12-27 11:25:26 UTC
No such thing happens in Gimp
Comment 2 Halla Rempt 2011-12-27 11:27:59 UTC
Can you attach a screenshot?
Comment 3 Dmitry Kazakov 2011-12-27 16:31:59 UTC
Git commit ace38fcf7c62bbd3a0db6d21118cb7695ff20c99 by Dmitry Kazakov.
Committed on 27/12/2011 at 18:22.
Pushed by dkazakov into branch 'master'.

KisPrescaleProjection::updateCache should not depend on ant UI data

So now it doesn't fill in the KisUpadteInfo fully, it just saves the
dirty image rect in it and fetches the data. All the UI related actions
are performed in KisPrescaleProjection::recalculateCache.

Added some unittests for KisPrescaleProjection, including the testcase
for bug 289915.
Related: bug 289790
Related: bug 289915

M  +28   -0    krita/sdk/tests/testutil.h
M  +2    -2    krita/ui/canvas/kis_image_pyramid.cpp
M  +1    -1    krita/ui/canvas/kis_image_pyramid.h
M  +30   -23   krita/ui/canvas/kis_prescaled_projection.cpp
M  +23   -4    krita/ui/canvas/kis_prescaled_projection.h
M  +1    -1    krita/ui/canvas/kis_projection_backend.h
A  +-    --    krita/ui/tests/data/prescaled_projection_test/testScrollingZoom50/testScrollingZoom50_initial.png
A  +-    --    krita/ui/tests/data/prescaled_projection_test/testScrollingZoom50/testScrollingZoom50_zoom50.png
A  +-    --    krita/ui/tests/data/prescaled_projection_test/testScrollingZoom50/testScrollingZoom50_zoom50_moved50.png
A  +-    --    krita/ui/tests/data/prescaled_projection_test/testUpdates/testUpdates_cleared.png
A  +-    --    krita/ui/tests/data/prescaled_projection_test/testUpdates/testUpdates_zoom50.png
M  +128  -30   krita/ui/tests/kis_prescaled_projection_test.cpp
M  +3    -1    krita/ui/tests/kis_prescaled_projection_test.h

http://commits.kde.org/calligra/ace38fcf7c62bbd3a0db6d21118cb7695ff20c99
Comment 4 Halla Rempt 2012-01-03 12:06:36 UTC
Isn't this now fixed?
Comment 5 Dmitry Kazakov 2012-01-03 17:26:41 UTC
Created attachment 67402 [details]
Before transparent painting
Comment 6 Dmitry Kazakov 2012-01-03 17:27:00 UTC
Created attachment 67403 [details]
After painting
Comment 7 Dmitry Kazakov 2012-01-03 17:28:19 UTC
Created attachment 67404 [details]
After painting (with marks, pointing to the artifacts)

Please see the screenshots in detailed zoom to see the difference
Comment 8 Dmitry Kazakov 2012-01-03 17:30:17 UTC
The patch above adds a testcase for this bug. See KisPrescaledProjectionTest::testUpdates(). Currently, it is marked as QEXPECT_FAIL, but it can be used for reproducing the bug.
Comment 9 Halla Rempt 2012-06-28 13:10:23 UTC
This looks related to 302664 	on Windows.
Comment 10 Halla Rempt 2013-06-22 13:19:38 UTC

*** This bug has been marked as a duplicate of bug 313502 ***
Comment 11 Dmitry Kazakov 2013-11-04 14:12:16 UTC
This bug is still present in master
Comment 12 Dmitry Kazakov 2015-06-15 11:57:13 UTC
We now use openGL canvas as the mainstream engine. There are no plans to make QPainter Canvas fast and hi-quality. It is mostly a fallback solution. So let's close this bug as UNMAINTAINED :(