oox/source/export/ThemeExport.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
New commits: commit 066808640afc6ea12f0fae5903ebb6ee7ae52cca Author: Caolán McNamara <[email protected]> AuthorDate: Mon Oct 13 20:11:30 2025 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Tue Oct 14 12:25:21 2025 +0200 crashtesting: assert on exporting srgbClr with alpha Change-Id: I0420aa5c4586ab187772306be9cc1db38b9a6094 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192329 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/oox/source/export/ThemeExport.cxx b/oox/source/export/ThemeExport.cxx index 400e9a09db39..14f313cb2eb3 100644 --- a/oox/source/export/ThemeExport.cxx +++ b/oox/source/export/ThemeExport.cxx @@ -889,7 +889,20 @@ bool ThemeExport::writeColorSet(model::Theme const& rTheme) model::ThemeColorType eColorType = iterator->second; Color aColor = pColorSet->getColor(eColorType); mpFS->startElementNS(XML_a, nToken); - mpFS->singleElementNS(XML_a, XML_srgbClr, XML_val, I32SHEX(sal_Int32(aColor))); + if (!aColor.IsTransparent()) + mpFS->singleElementNS(XML_a, XML_srgbClr, XML_val, + I32SHEX(sal_Int32(aColor.GetRGBColor()))); + else + { + mpFS->startElementNS(XML_a, XML_srgbClr, XML_val, + I32SHEX(sal_Int32(aColor.GetRGBColor()))); + + // drawingML alpha is a percentage on a 0..100000 scale. + sal_Int32 nAlpha = aColor.GetAlpha() * oox::drawingml::MAX_PERCENT / 255; + mpFS->singleElementNS(XML_a, XML_alpha, XML_val, OUString::number(nAlpha)); + + mpFS->endElementNS(XML_a, XML_srgbClr); + } mpFS->endElementNS(XML_a, nToken); } }
