include/editeng/unoprnms.hxx |    2 ++
 include/svx/unoshprp.hxx     |    2 ++
 svx/qa/unit/xoutdev.cxx      |   14 ++++++++++++++
 svx/source/xoutdev/xattr.cxx |   26 ++++++++++++++++++++++++++
 4 files changed, 44 insertions(+)

New commits:
commit 4f0edb0885acbf56974e32e260d21c93082ae4a3
Author:     Miklos Vajna <[email protected]>
AuthorDate: Tue Apr 12 20:22:22 2022 +0200
Commit:     Miklos Vajna <[email protected]>
CommitDate: Fri Jul 1 11:41:20 2022 +0200

    sd theme: add UNO API for shape fill color effects
    
    XColorItem::maThemeColor already provided the document model for this.
    
    (cherry picked from commit c7970e3204f7e2d958d213c42a9f0db232578a62)
    
    Conflicts:
            include/editeng/unoprnms.hxx
            include/svx/unoshprp.hxx
    
    Change-Id: Iefbd0aeaa37a813bb4c86386801e0116e8fae40d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136714
    Tested-by: Miklos Vajna <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/include/editeng/unoprnms.hxx b/include/editeng/unoprnms.hxx
index aab1262dda84..c981d2baaf33 100644
--- a/include/editeng/unoprnms.hxx
+++ b/include/editeng/unoprnms.hxx
@@ -33,6 +33,8 @@
 #define UNO_NAME_FILLSTYLE                      "FillStyle"
 #define UNO_NAME_FILLCOLOR                      "FillColor"
 #define UNO_NAME_FILLCOLOR_THEME                "FillColorTheme"
+#define UNO_NAME_FILLCOLOR_LUM_MOD              "FillColorLumMod"
+#define UNO_NAME_FILLCOLOR_LUM_OFF              "FillColorLumOff"
 #define UNO_NAME_FILLGRADIENT                   "FillGradient"
 #define UNO_NAME_FILLGRADIENTNAME               "FillGradientName"
 #define UNO_NAME_FILLHATCH                      "FillHatch"
diff --git a/include/svx/unoshprp.hxx b/include/svx/unoshprp.hxx
index f557dd5f3ff8..102b87b97553 100644
--- a/include/svx/unoshprp.hxx
+++ b/include/svx/unoshprp.hxx
@@ -290,6 +290,8 @@
     { u"" UNO_NAME_FILLTRANSPARENCEGRADIENTNAME, XATTR_FILLFLOATTRANSPARENCE, 
::cppu::UnoType<OUString>::get(), 0, MID_NAME }, \
     { u"" UNO_NAME_FILLCOLOR_2,       XATTR_SECONDARYFILLCOLOR, 
::cppu::UnoType<sal_Int32>::get(),          0,     0}, \
     { u"" UNO_NAME_FILLCOLOR_THEME,   XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_THEME_INDEX}, \
+    { u"" UNO_NAME_FILLCOLOR_LUM_MOD, XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_LUM_MOD}, \
+    { u"" UNO_NAME_FILLCOLOR_LUM_OFF, XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_LUM_OFF}, \
     { u"" UNO_NAME_GRAPHIC_GRAPHICCROP, SDRATTR_GRAFCROP      , 
::cppu::UnoType<css::text::GraphicCrop>::get(), 0, 0 },
 
 #define EDGERADIUS_PROPERTIES \
diff --git a/svx/qa/unit/xoutdev.cxx b/svx/qa/unit/xoutdev.cxx
index ed5b75189c3a..78af484555de 100644
--- a/svx/qa/unit/xoutdev.cxx
+++ b/svx/qa/unit/xoutdev.cxx
@@ -129,6 +129,12 @@ CPPUNIT_TEST_FIXTURE(XOutdevTest, testFillColorThemeUnoApi)
     sal_Int16 nExpected = 4; // Accent 1
     xShape->setPropertyValue("FillColorTheme", uno::makeAny(nExpected));
 
+    // 80% lighter
+    sal_Int16 nExpectedLumMod = 2000;
+    xShape->setPropertyValue("FillColorLumMod", uno::makeAny(nExpectedLumMod));
+    sal_Int16 nExpectedLumOff = 8000;
+    xShape->setPropertyValue("FillColorLumOff", uno::makeAny(nExpectedLumOff));
+
     // Then make sure the value we read back is the expected one:
     sal_Int16 nActual = -1;
     xShape->getPropertyValue("FillColorTheme") >>= nActual;
@@ -137,6 +143,14 @@ CPPUNIT_TEST_FIXTURE(XOutdevTest, testFillColorThemeUnoApi)
     // - Actual  : -1
     // i.e. setting the value was broken.
     CPPUNIT_ASSERT_EQUAL(nExpected, nActual);
+    xShape->getPropertyValue("FillColorLumMod") >>= nActual;
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: 2000
+    // - Actual  : 8000
+    // i.e. FillColorLumOff was set as FillColor, then getting FillColorLumMod 
returned FillColor.
+    CPPUNIT_ASSERT_EQUAL(nExpectedLumMod, nActual);
+    xShape->getPropertyValue("FillColorLumOff") >>= nActual;
+    CPPUNIT_ASSERT_EQUAL(nExpectedLumOff, nActual);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx
index b53cd8a25d21..9b4227ae458d 100644
--- a/svx/source/xoutdev/xattr.cxx
+++ b/svx/source/xoutdev/xattr.cxx
@@ -1910,6 +1910,16 @@ bool XFillColorItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 nMemberId ) cons
             rVal <<= GetThemeColor().GetThemeIndex();
             break;
         }
+        case MID_COLOR_LUM_MOD:
+        {
+            rVal <<= GetThemeColor().GetLumMod();
+            break;
+        }
+        case MID_COLOR_LUM_OFF:
+        {
+            rVal <<= GetThemeColor().GetLumOff();
+            break;
+        }
         default:
         {
             rVal <<= GetColorValue().GetRGBColor();
@@ -1933,6 +1943,22 @@ bool XFillColorItem::PutValue( const css::uno::Any& 
rVal, sal_uInt8 nMemberId )
             GetThemeColor().SetThemeIndex(nIndex);
             break;
         }
+        case MID_COLOR_LUM_MOD:
+        {
+            sal_Int16 nLumMod = -1;
+            if (!(rVal >>= nLumMod))
+                return false;
+            GetThemeColor().SetLumMod(nLumMod);
+        }
+        break;
+        case MID_COLOR_LUM_OFF:
+        {
+            sal_Int16 nLumOff = -1;
+            if (!(rVal >>= nLumOff))
+                return false;
+            GetThemeColor().SetLumOff(nLumOff);
+        }
+        break;
         default:
         {
             Color nValue;

Reply via email to