Created attachment 111634 [details] Smudging right to left from inside the image bounds to outside When smudging outside the image bounds with wrap mode enabled, the brush engine picks overwrites the image data at the brush dab rect with transparency. (see attachment) As far as I can tell, this is caused by KisPrecisePaintDeviceWrapper::readRects clamping the rects to the device extent without regard to the wrap around mode. Creating correctly wrapped rects before clamping appears to fix this issue.
Patch here: https://phabricator.kde.org/D11689
Assigning to dmitry since he will have to review the patch.
Git commit f32ac392795422d7e735181bab7664c93a4e6db2 by Dmitry Kazakov, on behalf of Dennis Ranke. Committed on 28/03/2018 at 14:32. Pushed by dkazakov into branch 'master'. fix precise paint device wrapper readRects in wrap around mode Summary: KisPrecisePaintDeviceWrapper::readRects clamped the input rects to the device extents without regard to the wrap around mode. So if a rect is passed that is outside the image bounds, it is clamped to be zero sized and nothing is read instead of reading from the wrapped position. This causes all color smudge brushes to be broken when used outside the image bounds in wrap around mode. This change adds a case for wrap around mode which correctly wraps the rect before clamping. Reviewers: #krita, dkazakov Reviewed By: #krita, dkazakov Subscribers: rempt, alvinhochun, dkazakov Differential Revision: https://phabricator.kde.org/D11689 M +14 -4 libs/image/KisPrecisePaintDeviceWrapper.cpp https://commits.kde.org/krita/f32ac392795422d7e735181bab7664c93a4e6db2
*** Bug 392489 has been marked as a duplicate of this bug. ***
Git commit 616b4d0aee8bc9ec60a59a4eabdfcbcb558abf82 by Boudewijn Rempt, on behalf of Dennis Ranke. Committed on 03/04/2018 at 11:18. Pushed by rempt into branch 'krita/4.0'. fix precise paint device wrapper readRects in wrap around mode Summary: KisPrecisePaintDeviceWrapper::readRects clamped the input rects to the device extents without regard to the wrap around mode. So if a rect is passed that is outside the image bounds, it is clamped to be zero sized and nothing is read instead of reading from the wrapped position. This causes all color smudge brushes to be broken when used outside the image bounds in wrap around mode. This change adds a case for wrap around mode which correctly wraps the rect before clamping. Reviewers: #krita, dkazakov Reviewed By: #krita, dkazakov Subscribers: rempt, alvinhochun, dkazakov Differential Revision: https://phabricator.kde.org/D11689 (cherry picked from commit f32ac392795422d7e735181bab7664c93a4e6db2) M +14 -4 libs/image/KisPrecisePaintDeviceWrapper.cpp https://commits.kde.org/krita/616b4d0aee8bc9ec60a59a4eabdfcbcb558abf82