https://bugs.kde.org/show_bug.cgi?id=392191

Dennis Ranke <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #2 from Dennis Ranke <[email protected]> ---
I did a read through the code and I /think/ I identified two issues that relate
to this bug:

1. In KisEdgeDetectionKernel::convertToNormalMap there is this code to apply
the horizontal and vertical convolution kernels:

horizPainterLR.applyMatrix(kernelHorizLeftRight, device,
                           srcTopLeft - QPoint(0, ceil(horizontalCenter)),
                           srcTopLeft - QPoint(0, ceil(horizontalCenter)),
                           rect.size() + QSize(0, 2 * ceil(horizontalCenter)),
BORDER_REPEAT);

and

verticalPainterTB.applyMatrix(kernelVerticalTopBottom, device,
                              srcTopLeft - QPoint(0, ceil(verticalCenter)),
                              srcTopLeft - QPoint(0, ceil(verticalCenter)),
                              rect.size() + QSize(0, 2 * ceil(verticalCenter)),
BORDER_REPEAT);

If you look at the QPoints and the QSize, you see that in both cases the x is
set to zero and the y to some value based on the horizontal/vertical center. I
guess that in one of the cases, probably the vertical one, the two vector
components should be flipped around.

2. The definition of BORDER_REPEAT which you pass into applyMatrix is defined
as:

BORDER_REPEAT = 1  // Use the border for the missing pixels

Which is actually a clamp, not a wrap-around. So a wrapping normal map will
have some artifacts on the borders. Ideally, the filter would gain an option to
select a newly coded BORDER_WRAP mode, although that's really more of a feature
request rather than a bug.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to