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

Reply via email to