svx/source/xoutdev/xtabgrdt.cxx | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-)
New commits: commit 6c0ce7f7124ea7d91eada9a544c52235770fa255 Author: Armin Le Grand (allotropia) <armin.le.grand.ext...@allotropia.de> AuthorDate: Wed Apr 19 16:24:22 2023 +0200 Commit: Armin Le Grand <armin.le.gr...@me.com> CommitDate: Thu Apr 20 13:56:22 2023 +0200 MCGR: Correct creation for Gradient-Previews Change-Id: Iafadcaa93660317d65c8f45940653273b562f37e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150651 Tested-by: Jenkins Reviewed-by: Armin Le Grand <armin.le.gr...@me.com> diff --git a/svx/source/xoutdev/xtabgrdt.cxx b/svx/source/xoutdev/xtabgrdt.cxx index 7fee511072c3..c853e69a3a44 100644 --- a/svx/source/xoutdev/xtabgrdt.cxx +++ b/svx/source/xoutdev/xtabgrdt.cxx @@ -101,24 +101,7 @@ BitmapEx XGradientList::CreateBitmap( tools::Long nIndex, const Size& rSize ) co basegfx::B2DRange(0.0, 0.0, rSize.Width(), rSize.Height()))); const XGradient& rGradient = GetGradient(nIndex)->GetGradient(); - const sal_uInt16 nStartIntens(rGradient.GetStartIntens()); - basegfx::BColor aStart(rGradient.GetColorStops().front().getStopColor()); - - if(nStartIntens != 100) - { - const basegfx::BColor aBlack; - aStart = interpolate(aBlack, aStart, static_cast<double>(nStartIntens) * 0.01); - } - - const sal_uInt16 nEndIntens(rGradient.GetEndIntens()); - basegfx::BColor aEnd(rGradient.GetColorStops().back().getStopColor()); - - if(nEndIntens != 100) - { - const basegfx::BColor aBlack; - aEnd = interpolate(aBlack, aEnd, static_cast<double>(nEndIntens) * 0.01); - } - + basegfx::ColorStops aColorStops(rGradient.GetColorStops()); drawinglayer::attribute::GradientStyle aGradientStyle(drawinglayer::attribute::GradientStyle::Rect); switch(rGradient.GetGradientStyle()) @@ -155,13 +138,23 @@ BitmapEx XGradientList::CreateBitmap( tools::Long nIndex, const Size& rSize ) co } } + if (rGradient.GetStartIntens() != 100 || rGradient.GetEndIntens() != 100) + { + // Need to do the (old, crazy) blend against black + basegfx::utils::blendColorStopsToIntensity( + aColorStops, + rGradient.GetStartIntens() * 0.01, + rGradient.GetEndIntens() * 0.01, + basegfx::BColor()); // COL_BLACK + } + drawinglayer::attribute::FillGradientAttribute aFillGradient( aGradientStyle, static_cast<double>(rGradient.GetBorder()) * 0.01, static_cast<double>(rGradient.GetXOffset()) * 0.01, static_cast<double>(rGradient.GetYOffset()) * 0.01, toRadians(rGradient.GetAngle()), - basegfx::utils::createColorStopsFromStartEndColor(aStart, aEnd)); + aColorStops); const drawinglayer::primitive2d::Primitive2DReference aGradientPrimitive( new drawinglayer::primitive2d::PolyPolygonGradientPrimitive2D(