include/oox/drawingml/color.hxx         |    4 ++--
 oox/source/drawingml/color.cxx          |    4 ++--
 oox/source/drawingml/fillproperties.cxx |    6 ++++++
 oox/source/token/properties.txt         |    2 ++
 svx/qa/unit/styles.cxx                  |   21 +++++++++++++++------
 5 files changed, 27 insertions(+), 10 deletions(-)

New commits:
commit 30735bdb5a0a81619000fdd24b2d0fbf45687f01
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Wed Apr 27 20:12:52 2022 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Apr 28 08:15:54 2022 +0200

    sd theme: add PPTX import for shape fill color effects
    
    This is always direct formatting, so FillProperties::pushToPropMap()
    always has the needed info at hand.
    
    Change-Id: I3317b618e0e8bb7688d0f0fbfe4546e2e8b4e947
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133525
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/include/oox/drawingml/color.hxx b/include/oox/drawingml/color.hxx
index c0dd8d67a31c..cc65c1346720 100644
--- a/include/oox/drawingml/color.hxx
+++ b/include/oox/drawingml/color.hxx
@@ -100,8 +100,8 @@ public:
     const OUString&     getSchemeColorName() const { return msSchemeName; }
     sal_Int16           getSchemeColorIndex() const;
     sal_Int16           getTintOrShade();
-    sal_Int16           getLumMod();
-    sal_Int16           getLumOff();
+    sal_Int16           getLumMod() const;
+    sal_Int16           getLumOff() const;
 
     /** Returns the unaltered list of transformations for interoperability 
purposes */
     const css::uno::Sequence< css::beans::PropertyValue >& 
getTransformations() const { return maInteropTransformations;}
diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
index ee854a761fa2..982b77ff4831 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -496,7 +496,7 @@ sal_Int16 Color::getTintOrShade()
     return 0;
 }
 
-sal_Int16 Color::getLumMod()
+sal_Int16 Color::getLumMod() const
 {
     for (const auto& rTransform : maTransforms)
     {
@@ -512,7 +512,7 @@ sal_Int16 Color::getLumMod()
     return 10000;
 }
 
-sal_Int16 Color::getLumOff()
+sal_Int16 Color::getLumOff() const
 {
     for (const auto& rTransform : maTransforms)
     {
diff --git a/oox/source/drawingml/fillproperties.cxx 
b/oox/source/drawingml/fillproperties.cxx
index 5555a6d5250f..2d85bf807e1a 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -397,6 +397,12 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                 {
                     rPropMap.setProperty(PROP_FillColorTheme, nPhClrTheme);
                 }
+                else
+                {
+                    rPropMap.setProperty(PROP_FillColorTheme, 
maFillColor.getSchemeColorIndex());
+                    rPropMap.setProperty(PROP_FillColorLumMod, 
maFillColor.getLumMod());
+                    rPropMap.setProperty(PROP_FillColorLumOff, 
maFillColor.getLumOff());
+                }
 
                 eFillStyle = FillStyle_SOLID;
             }
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index e318e0038ecb..8467d3683875 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -177,6 +177,8 @@ FillBitmapSizeY
 FillBitmap
 FillColor
 FillColorTheme
+FillColorLumMod
+FillColorLumOff
 FillGradient
 FillGradientName
 FillHatch
diff --git a/svx/qa/unit/styles.cxx b/svx/qa/unit/styles.cxx
index ce9a039ce453..dd27e24f02ae 100644
--- a/svx/qa/unit/styles.cxx
+++ b/svx/qa/unit/styles.cxx
@@ -94,17 +94,26 @@ CPPUNIT_TEST_FIXTURE(Test, testThemeChange)
     // Blue.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0x4472c4), 
GetShapeFillColor(xShape4));
     // The theme index of this filled shape is set by the PPTX import:
-    sal_Int32 nColorTheme = -1;
+    sal_Int16 nColorTheme = -1;
     xShape4->getPropertyValue("FillColorTheme") >>= nColorTheme;
     // 4 means accent1, this was -1 without the PPTX import bit in place.
-    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4), nColorTheme);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(4), nColorTheme);
     uno::Reference<beans::XPropertySet> 
xShape5(xDrawPageShapes->getByIndex(5), uno::UNO_QUERY);
     // Blue, lighter.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xb4c7e7), 
GetShapeFillColor(xShape5));
-    // Set theme index to accent 1 & effects till PPTX import is missing.
-    xShape5->setPropertyValue("FillColorTheme", 
uno::makeAny(static_cast<sal_Int16>(4)));
-    xShape5->setPropertyValue("FillColorLumMod", 
uno::makeAny(static_cast<sal_Int16>(4000)));
-    xShape5->setPropertyValue("FillColorLumOff", 
uno::makeAny(static_cast<sal_Int16>(6000)));
+    // The theme index, and effects (lum mod, lum off) are set by the PPTX 
import:
+    nColorTheme = -1;
+    xShape5->getPropertyValue("FillColorTheme") >>= nColorTheme;
+    // 4 means accent1, this was -1 without the PPTX import bit in place.
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(4), nColorTheme);
+    sal_Int16 nColorLumMod = 10000;
+    xShape5->getPropertyValue("FillColorLumMod") >>= nColorLumMod;
+    // This was 10000 without the PPTX import bit in place.
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(4000), nColorLumMod);
+    sal_Int16 nColorLumOff = 0;
+    xShape5->getPropertyValue("FillColorLumOff") >>= nColorLumOff;
+    // This was 0 without the PPTX import bit in place.
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(6000), nColorLumOff);
 
     // When changing the master slide of slide 1 to use the theme of the 
second master slide:
     uno::Reference<drawing::XMasterPageTarget> xDrawPage2(

Reply via email to