oox/source/drawingml/color.cxx | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-)
New commits: commit 01f345134f89c0b38191de0e45d98a5cd0894b05 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Jun 28 22:55:22 2023 +0900 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Fri Aug 25 08:44:09 2023 +0200 oox: convert Excel tint value into LumOff and LumMod tint value can be converted into LumOff and LumMod values, so we don't need a special Excel case for calculating the final color. Change-Id: I0725c06f9df6a37a309ea5d17b183e4100a228f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153716 Tested-by: Tomaž Vajngerl <qui...@gmail.com> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> (cherry picked from commit ba29922dcc0a7b079fb76df445c4cd3a80102e83) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156064 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx index 63fc36541008..cb0929c4fc00 100644 --- a/oox/source/drawingml/color.cxx +++ b/oox/source/drawingml/color.cxx @@ -432,10 +432,18 @@ void Color::addChartTintTransformation( double fTint ) maTransforms.emplace_back( XML_tint, MAX_PERCENT - nValue ); } -void Color::addExcelTintTransformation( double fTint ) +void Color::addExcelTintTransformation(double fTint) { - sal_Int32 nValue = getLimitedValue< sal_Int32, double >( fTint * MAX_PERCENT + 0.5, -MAX_PERCENT, MAX_PERCENT ); - maTransforms.emplace_back( XLS_TOKEN( tint ), nValue ); + sal_Int32 nValue = std::round(std::abs(fTint) * 100'000.0); + if (fTint > 0.0) + { + maTransforms.emplace_back(XML_lumMod, 100'000 - nValue); + maTransforms.emplace_back(XML_lumOff, nValue); + } + else if (fTint < 0.0) + { + maTransforms.emplace_back(XML_lumMod, 100'000 - nValue); + } } void Color::clearTransformations() @@ -721,23 +729,6 @@ model::ComplexColor Color::getComplexColor() const mnC3 = static_cast< sal_Int32 >( MAX_PERCENT - (MAX_PERCENT - mnC3) * fFactor ); } break; - case XLS_TOKEN( tint ): - // Excel tint: move luminance relative to current value - toHsl(); - OSL_ENSURE( (-MAX_PERCENT <= transform.mnValue) && (transform.mnValue <= MAX_PERCENT), "Color::getColor - invalid tint value" ); - if( (-MAX_PERCENT <= transform.mnValue) && (transform.mnValue < 0) ) - { - // negative: luminance towards 0% (black) - lclModValue( mnC3, transform.mnValue + MAX_PERCENT ); - } - else if( (0 < transform.mnValue) && (transform.mnValue <= MAX_PERCENT) ) - { - // positive: luminance towards 100% (white) - mnC3 = MAX_PERCENT - mnC3; - lclModValue( mnC3, MAX_PERCENT - transform.mnValue ); - mnC3 = MAX_PERCENT - mnC3; - } - break; case XML_gray: // change color to gray, weighted RGB: 22% red, 72% green, 6% blue @@ -842,7 +833,7 @@ model::ComplexColor Color::createComplexColor(const GraphicHelper& /*rGraphicHel { sal_Int16 nValue = sal_Int16(aTransform.mnValue / 10); - switch(aTransform.mnToken) + switch (aTransform.mnToken) { case XML_lumMod: if (nValue != 10'000)