drawinglayer/source/texture/texture.cxx |   20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

New commits:
commit 81e77bcc7c454d79b302df7ad545e7da16b64ae0
Author:     Armin Le Grand (allotropia) <armin.le.grand.ext...@allotropia.de>
AuthorDate: Tue May 9 12:29:30 2023 +0200
Commit:     Armin Le Grand <armin.le.gr...@me.com>
CommitDate: Tue May 9 15:03:11 2023 +0200

    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.gr...@me.com>

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))));
                 }
             }
 

Reply via email to