diff options
author | Armin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de> | 2023-05-09 12:29:30 +0200 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@me.com> | 2023-05-09 15:03:11 +0200 |
commit | 81e77bcc7c454d79b302df7ad545e7da16b64ae0 (patch) | |
tree | 48e7d91d04cd25a0952f0a6464257c3183f03317 /drawinglayer | |
parent | 9585ce0e6a1075597943268ef72ccd859b6c8065 (diff) |
MCGR: Correct interpolate TextureMap due to possible zero value
Change-Id: I5b2fe354077bea659f522e5b5c839be1f4cae1c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151568
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/texture/texture.cxx | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/drawinglayer/source/texture/texture.cxx b/drawinglayer/source/texture/texture.cxx index aeeb5b61bb05..eb9df6469225 100644 --- a/drawinglayer/source/texture/texture.cxx +++ b/drawinglayer/source/texture/texture.cxx @@ -244,11 +244,7 @@ namespace drawinglayer::texture // set and add at target aCallback( maGradientInfo.getTextureTransform() * aNew, - interpolate( - aCStart, aCEnd, - nSteps == 1 - ? std::numeric_limits<double>::infinity() - : double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } @@ -372,7 +368,7 @@ namespace drawinglayer::texture // set and add at target aCallback( maGradientInfo.getTextureTransform() * aNew, - interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } @@ -467,11 +463,7 @@ namespace drawinglayer::texture // set and add at target aCallback( maGradientInfo.getTextureTransform() * basegfx::utils::createScaleB2DHomMatrix(fSize, fSize), - interpolate( - aCStart, aCEnd, - nSteps == 1 - ? std::numeric_limits<double>::infinity() - : double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } @@ -572,7 +564,7 @@ namespace drawinglayer::texture * basegfx::utils::createScaleB2DHomMatrix( 1.0 - (bMTO ? fSize / fAR : fSize), 1.0 - (bMTO ? fSize : fSize * fAR)), - interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } @@ -666,7 +658,7 @@ namespace drawinglayer::texture // set and add at target aCallback( maGradientInfo.getTextureTransform() * basegfx::utils::createScaleB2DHomMatrix(fSize, fSize), - interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } @@ -767,7 +759,7 @@ namespace drawinglayer::texture * basegfx::utils::createScaleB2DHomMatrix( 1.0 - (bMTO ? fSize / fAR : fSize), 1.0 - (bMTO ? fSize : fSize * fAR)), - interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1))); + 1 == nSteps ? aCStart : basegfx::BColor(interpolate(aCStart, aCEnd, double(innerLoop) / double(nSteps - 1)))); } } |