summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2022-04-27 20:12:52 +0200
committerMiklos Vajna <vmiklos@collabora.com>2022-04-28 08:15:54 +0200
commit30735bdb5a0a81619000fdd24b2d0fbf45687f01 (patch)
tree43a99bea091701eee066d9f1410777671d3b3b9f
parentbd568b360450b348ff0e6813862a49892df81140 (diff)
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 <vmiklos@collabora.com>
-rw-r--r--include/oox/drawingml/color.hxx4
-rw-r--r--oox/source/drawingml/color.cxx4
-rw-r--r--oox/source/drawingml/fillproperties.cxx6
-rw-r--r--oox/source/token/properties.txt2
-rw-r--r--svx/qa/unit/styles.cxx21
5 files changed, 27 insertions, 10 deletions
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(