cui/source/tabpages/tpcolor.cxx                   |    8 -
 docmodel/Library_docmodel.mk                      |    3 
 docmodel/source/color/ComplexColorJSON.cxx        |   22 ++--
 docmodel/source/theme/ColorSet.cxx                |   12 --
 docmodel/source/uno/UnoComplexColor.cxx           |   12 +-
 docmodel/source/uno/UnoThemeColor.cxx             |   40 -------
 editeng/source/items/textitem.cxx                 |   53 +++------
 editeng/source/uno/unotext.cxx                    |    2 
 include/docmodel/color/ComplexColor.hxx           |    7 +
 include/docmodel/color/ComplexColorJSON.hxx       |    9 -
 include/docmodel/theme/ColorSet.hxx               |    2 
 include/docmodel/uno/UnoComplexColor.hxx          |    5 
 include/docmodel/uno/UnoThemeColor.hxx            |   55 ----------
 include/editeng/memberids.h                       |    4 
 include/editeng/unoprnms.hxx                      |    8 -
 include/editeng/unotext.hxx                       |    4 
 include/svx/svxids.hrc                            |    2 
 include/svx/unoshprp.hxx                          |    4 
 include/svx/xcolit.hxx                            |    9 -
 include/xmloff/txtprmap.hxx                       |    2 
 include/xmloff/xmltoken.hxx                       |    4 
 include/xmloff/xmltypes.hxx                       |    2 
 offapi/UnoApi_offapi.mk                           |    1 
 offapi/com/sun/star/util/XComplexColor.idl        |    9 +
 offapi/com/sun/star/util/XThemeColor.idl          |   26 ----
 oox/qa/unit/drawingml.cxx                         |   99 ++++++++----------
 oox/qa/unit/shape.cxx                             |   15 +-
 oox/source/drawingml/fillproperties.cxx           |   20 +--
 oox/source/drawingml/lineproperties.cxx           |   21 +--
 oox/source/drawingml/textcharacterproperties.cxx  |   16 +-
 oox/source/export/drawingml.cxx                   |   27 ++--
 oox/source/token/properties.txt                   |    6 -
 sc/source/core/data/document.cxx                  |   13 +-
 sd/qa/unit/uiimpress.cxx                          |   40 +++----
 sd/source/core/stlsheet.cxx                       |   16 +-
 sd/source/ui/func/fuconstr.cxx                    |    2 
 sd/source/ui/view/drviews2.cxx                    |   10 +
 svx/qa/unit/styles.cxx                            |   32 ++---
 svx/qa/unit/xoutdev.cxx                           |   33 ++----
 svx/sdi/svxitems.sdi                              |    4 
 svx/source/dialog/ThemeColorValueSet.cxx          |    2 
 svx/source/dialog/ThemeDialog.cxx                 |    1 
 svx/source/table/cell.cxx                         |   23 ++--
 svx/source/tbxctrls/PaletteManager.cxx            |   16 +-
 svx/source/theme/ThemeColorChanger.cxx            |   52 ++++-----
 svx/source/unodraw/unoprov.cxx                    |    2 
 svx/source/unodraw/unoshap2.cxx                   |    2 
 svx/source/unodraw/unoshape.cxx                   |   17 +--
 svx/source/xoutdev/xattr.cxx                      |   63 +++++------
 sw/qa/core/theme/ThemeTest.cxx                    |   11 --
 sw/source/core/model/ThemeColorChanger.cxx        |    2 
 sw/source/core/unocore/unomap.cxx                 |    4 
 sw/source/core/unocore/unomap1.cxx                |    6 -
 sw/source/core/unocore/unomapproperties.hxx       |    6 -
 sw/source/filter/xml/xmlfmte.cxx                  |    2 
 writerfilter/source/dmapper/DomainMapper.cxx      |   14 +-
 writerfilter/source/dmapper/PropertyIds.cxx       |    2 
 writerfilter/source/dmapper/PropertyIds.hxx       |    2 
 writerfilter/source/dmapper/ThemeColorHandler.hxx |    2 
 xmloff/inc/XMLThemeColorContext.hxx               |    4 
 xmloff/inc/XMLThemeColorHandler.hxx               |   21 +--
 xmloff/inc/xmlprop.hxx                            |    4 
 xmloff/qa/unit/draw.cxx                           |  119 ++++++++++------------
 xmloff/source/core/xmltoken.cxx                   |    4 
 xmloff/source/draw/XMLShapePropertySetContext.cxx |    2 
 xmloff/source/draw/sdpropls.cxx                   |    6 -
 xmloff/source/text/XMLTextPropertySetContext.cxx  |    2 
 xmloff/source/text/XMLTextShapeStyleContext.cxx   |    2 
 xmloff/source/text/XMLThemeColorContext.cxx       |    8 -
 xmloff/source/text/XMLThemeColorExport.cxx        |   19 +--
 xmloff/source/text/txtexppr.cxx                   |    2 
 xmloff/source/text/txtprhdl.cxx                   |    4 
 xmloff/source/text/txtprmap.cxx                   |    6 -
 73 files changed, 473 insertions(+), 618 deletions(-)

New commits:
commit 0e155e7ba984262200e3589d594325fe36b0ec14
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu May 11 23:01:10 2023 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Thu Jun 1 11:19:28 2023 +0200

    change ComplexColor to show more useful properties
    
    Change-Id: Ie19f080f2faf388f9b8ba3e9a4b3c0926d5ebdd4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151674
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit ca3bfa9bded6103d4d172ace486b697beeb191be)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152238
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/docmodel/source/uno/UnoComplexColor.cxx 
b/docmodel/source/uno/UnoComplexColor.cxx
index bffa81329f70..673627bc98a4 100644
--- a/docmodel/source/uno/UnoComplexColor.cxx
+++ b/docmodel/source/uno/UnoComplexColor.cxx
@@ -13,7 +13,14 @@
 
 using namespace css;
 
-css::util::Color UnoComplexColor::getColor() { return 
css::util::Color(maColor.getRGBColor()); }
+sal_Int32 UnoComplexColor::getType() { return sal_Int32(maColor.getType()); }
+
+sal_Int32 UnoComplexColor::getSchemeColorType() { return 
sal_Int32(maColor.getSchemeType()); }
+
+util::Color UnoComplexColor::resolveColor(uno::Reference<util::XTheme> const& 
/*xTheme*/)
+{
+    return util::Color(maColor.getRGBColor());
+}
 
 namespace model::color
 {
@@ -22,8 +29,7 @@ uno::Reference<util::XComplexColor> 
createXComplexColor(model::ComplexColor cons
     return new UnoComplexColor(rColor);
 }
 
-model::ComplexColor
-getFromXComplexColor(css::uno::Reference<css::util::XComplexColor> const& 
rxColor)
+model::ComplexColor getFromXComplexColor(uno::Reference<util::XComplexColor> 
const& rxColor)
 {
     model::ComplexColor aComplexColor;
     UnoComplexColor const* pUnoComplexColor = static_cast<UnoComplexColor 
const*>(rxColor.get());
diff --git a/include/docmodel/uno/UnoComplexColor.hxx 
b/include/docmodel/uno/UnoComplexColor.hxx
index 69a0fe4e35b9..c15e53404a3b 100644
--- a/include/docmodel/uno/UnoComplexColor.hxx
+++ b/include/docmodel/uno/UnoComplexColor.hxx
@@ -36,7 +36,10 @@ public:
     model::ComplexColor const& getComplexColor() const { return maColor; }
 
     // XComplexColor
-    css::util::Color SAL_CALL getColor() override;
+    sal_Int32 SAL_CALL getType() override;
+    sal_Int32 SAL_CALL getSchemeColorType() override;
+    css::util::Color SAL_CALL
+    resolveColor(css::uno::Reference<css::util::XTheme> const& xTheme) 
override;
 };
 
 namespace model::color
diff --git a/offapi/com/sun/star/util/XComplexColor.idl 
b/offapi/com/sun/star/util/XComplexColor.idl
index 864e4b1516de..668b7b310eb2 100644
--- a/offapi/com/sun/star/util/XComplexColor.idl
+++ b/offapi/com/sun/star/util/XComplexColor.idl
@@ -17,8 +17,13 @@ module com {  module sun {  module star {  module util {
 */
 interface XComplexColor
 {
-    /** */
-    Color getColor();
+    long getType();
+
+    long getSchemeColorType();
+
+    /** resolve the color */
+    Color resolveColor([in] com::sun::star::util::XTheme xTheme);
+
 };
 
 }; }; }; };
commit b0da2f52374c04192ac92951519e0a47410d0a24
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Mon May 8 14:09:00 2023 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Thu Jun 1 11:19:17 2023 +0200

    use ComplexColor instead of ThemeColor for better OOXML compat.
    
    In OOXML a color definition includes more represenations, one of
    which is scheme color (which is what is implemented in ThemeColor
    currently), but it supports other representations too (RGB, HSL,
    System,..). ComplexColor includes all the representations, so to
    have a better compatibility with OOXML, this changes all uses of
    ThemeColor to ComplexColor.
    In many cases the usage of ComplexColor isn't the same as the
    usage of ThemeColors, but this cases will need to be changed in a
    later commit.
    
    Change-Id: I9cc8acee2ac0a1998fe9b98247bcf4a96273149a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151492
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 1df0565fb92972bd410e7db85eef1e4bec3fcc31)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152234
    Tested-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 9c0b5b457525..50019764830f 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -248,16 +248,16 @@ bool SvxColorTabPage::FillItemSet( SfxItemSet* rSet )
     model::ThemeColorType eType = 
model::convertToThemeColorType(aCurrentColor.m_nThemeIndex);
     if (eType != model::ThemeColorType::Unknown)
     {
-        aColorItem.GetThemeColor().setType(eType);
+        aColorItem.getComplexColor().setSchemeColor(eType);
     }
-    aColorItem.GetThemeColor().clearTransformations();
+    aColorItem.getComplexColor().clearTransformations();
     if (aCurrentColor.m_nLumMod != 10000)
     {
-        
aColorItem.GetThemeColor().addTransformation({model::TransformationType::LumMod,
 aCurrentColor.m_nLumMod});
+        
aColorItem.getComplexColor().addTransformation({model::TransformationType::LumMod,
 aCurrentColor.m_nLumMod});
     }
     if (aCurrentColor.m_nLumOff != 0)
     {
-        
aColorItem.GetThemeColor().addTransformation({model::TransformationType::LumOff,
 aCurrentColor.m_nLumOff});
+        
aColorItem.getComplexColor().addTransformation({model::TransformationType::LumOff,
 aCurrentColor.m_nLumOff});
     }
     rSet->Put( aColorItem );
     rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
diff --git a/docmodel/Library_docmodel.mk b/docmodel/Library_docmodel.mk
index 7f0623bcbeda..2e474eb4f0b8 100644
--- a/docmodel/Library_docmodel.mk
+++ b/docmodel/Library_docmodel.mk
@@ -11,11 +11,10 @@ $(eval $(call gb_Library_Library,docmodel))
 
 $(eval $(call gb_Library_add_exception_objects,docmodel,\
     docmodel/source/uno/UnoComplexColor \
-    docmodel/source/uno/UnoThemeColor \
     docmodel/source/uno/UnoTheme \
     docmodel/source/theme/ColorSet \
     docmodel/source/theme/Theme \
-    docmodel/source/theme/ThemeColorJSON \
+    docmodel/source/color/ComplexColorJSON \
 ))
 
 $(eval $(call gb_Library_set_include,docmodel,\
diff --git a/docmodel/source/theme/ThemeColorJSON.cxx 
b/docmodel/source/color/ComplexColorJSON.cxx
similarity index 81%
rename from docmodel/source/theme/ThemeColorJSON.cxx
rename to docmodel/source/color/ComplexColorJSON.cxx
index 6b2293ca1f64..2bfdf9c0761c 100644
--- a/docmodel/source/theme/ThemeColorJSON.cxx
+++ b/docmodel/source/color/ComplexColorJSON.cxx
@@ -8,18 +8,18 @@
  *
  */
 
-#include <docmodel/theme/ThemeColorJSON.hxx>
+#include <docmodel/color/ComplexColorJSON.hxx>
 #include <sstream>
 #include <utility>
 #include <sal/log.hxx>
 #include <boost/property_tree/json_parser.hpp>
 
-namespace model::theme
+namespace model::color
 {
-bool convertFromJSON(OString const& rJsonString, model::ThemeColor& 
rThemeColor)
+bool convertFromJSON(OString const& rJsonString, model::ComplexColor& 
rComplexColor)
 {
-    model::ThemeColor aThemeColor;
-    std::stringstream aStream(rJsonString.getStr());
+    model::ComplexColor aComplexColor;
+    std::stringstream aStream((std::string(rJsonString)));
     boost::property_tree::ptree aRootTree;
     try
     {
@@ -31,7 +31,7 @@ bool convertFromJSON(OString const& rJsonString, 
model::ThemeColor& rThemeColor)
     }
 
     sal_Int32 nThemeType = aRootTree.get<sal_Int32>("ThemeIndex", -1);
-    aThemeColor.setType(model::convertToThemeColorType(nThemeType));
+    aComplexColor.setSchemeColor(model::convertToThemeColorType(nThemeType));
     boost::property_tree::ptree aTransformTree = 
aRootTree.get_child("Transformations");
     for (const auto& rEachTransformationNode :
          boost::make_iterator_range(aTransformTree.equal_range("")))
@@ -51,19 +51,19 @@ bool convertFromJSON(OString const& rJsonString, 
model::ThemeColor& rThemeColor)
             eType = model::TransformationType::Shade;
 
         if (eType != model::TransformationType::Undefined)
-            aThemeColor.addTransformation({ eType, nValue });
+            aComplexColor.addTransformation({ eType, nValue });
     }
-    rThemeColor = aThemeColor;
+    rComplexColor = aComplexColor;
     return true;
 }
 
-OString convertToJSON(model::ThemeColor const& rThemeColor)
+OString convertToJSON(model::ComplexColor const& rComplexColor)
 {
     boost::property_tree::ptree aTree;
-    aTree.put("ThemeIndex", sal_Int16(rThemeColor.getType()));
+    aTree.put("ThemeIndex", sal_Int16(rComplexColor.getSchemeType()));
 
     boost::property_tree::ptree aTransformationsList;
-    for (auto const& rTransformation : rThemeColor.getTransformations())
+    for (auto const& rTransformation : rComplexColor.getTransformations())
     {
         std::string aType;
         switch (rTransformation.meType)
diff --git a/docmodel/source/theme/ColorSet.cxx 
b/docmodel/source/theme/ColorSet.cxx
index 44cd5bdc6c4f..71b928b9f2a7 100644
--- a/docmodel/source/theme/ColorSet.cxx
+++ b/docmodel/source/theme/ColorSet.cxx
@@ -38,18 +38,6 @@ Color ColorSet::getColor(model::ThemeColorType eType) const
     return maColors[size_t(eType)];
 }
 
-Color ColorSet::resolveColor(model::ThemeColor const& rThemeColor) const
-{
-    auto eType = rThemeColor.getType();
-    if (eType == model::ThemeColorType::Unknown)
-    {
-        SAL_WARN("svx", "ColorSet::resolveColor with ThemeColorType::Unknown");
-        return COL_AUTO;
-    }
-    Color aColor = getColor(eType);
-    return rThemeColor.applyTransformations(aColor);
-}
-
 Color ColorSet::resolveColor(model::ComplexColor const& rComplexColor) const
 {
     auto eSchemeType = rComplexColor.meSchemeType;
diff --git a/docmodel/source/uno/UnoThemeColor.cxx 
b/docmodel/source/uno/UnoThemeColor.cxx
deleted file mode 100644
index f6374b54933b..000000000000
--- a/docmodel/source/uno/UnoThemeColor.cxx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- */
-
-#include <docmodel/uno/UnoThemeColor.hxx>
-#include <cppuhelper/queryinterface.hxx>
-
-using namespace css;
-
-// css::lang::XUnoTunnel
-UNO3_GETIMPLEMENTATION_IMPL(UnoThemeColor);
-
-sal_Int16 UnoThemeColor::getType() { return 
sal_uInt16(maThemeColor.getType()); }
-
-namespace model::theme
-{
-uno::Reference<util::XThemeColor> createXThemeColor(model::ThemeColor const& 
rThemeColor)
-{
-    return new UnoThemeColor(rThemeColor);
-}
-
-void setFromXThemeColor(model::ThemeColor& rThemeColor,
-                        uno::Reference<util::XThemeColor> const& rxColorTheme)
-{
-    UnoThemeColor* pUnoThemeColor = 
comphelper::getFromUnoTunnel<UnoThemeColor>(rxColorTheme);
-    if (pUnoThemeColor)
-    {
-        rThemeColor = pUnoThemeColor->getThemeColor();
-    }
-}
-
-} // end model::theme
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/editeng/source/items/textitem.cxx 
b/editeng/source/items/textitem.cxx
index 153319ae8e75..1112bcf1a548 100644
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@ -77,8 +77,9 @@
 #include <editeng/charreliefitem.hxx>
 #include <editeng/itemtype.hxx>
 #include <editeng/eerdll.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
-#include <docmodel/theme/ThemeColorJSON.hxx>
+#include <docmodel/color/ComplexColorJSON.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
+#include <docmodel/color/ComplexColor.hxx>
 #include <libxml/xmlwriter.h>
 
 using namespace ::com::sun::star;
@@ -1444,17 +1445,15 @@ bool SvxColorItem::QueryValue( uno::Any& rVal, 
sal_uInt8 nMemberId ) const
             rVal <<= nValue;
             break;
         }
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR_JSON:
         {
-            model::ThemeColor aThemeColor = maComplexColor.createThemeColor();
-            auto xThemeColor = model::theme::createXThemeColor(aThemeColor);
-            rVal <<= xThemeColor;
+            rVal <<= 
OStringToOUString(model::color::convertToJSON(maComplexColor), 
RTL_TEXTENCODING_UTF8);
             break;
         }
-        case MID_COLOR_THEME_REFERENCE_JSON:
+        case MID_COMPLEX_COLOR:
         {
-            model::ThemeColor aThemeColor = maComplexColor.createThemeColor();
-            rVal <<= 
OStringToOUString(model::theme::convertToJSON(aThemeColor), 
RTL_TEXTENCODING_UTF8);
+            auto xComplexColor = 
model::color::createXComplexColor(maComplexColor);
+            rVal <<= xComplexColor;
             break;
         }
         case MID_COLOR_RGB:
@@ -1532,42 +1531,30 @@ bool SvxColorItem::PutValue( const uno::Any& rVal, 
sal_uInt8 nMemberId )
             
maComplexColor.addTransformation({model::TransformationType::LumOff, nLumOff});
         }
         break;
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR_JSON:
         {
-            css::uno::Reference<css::util::XThemeColor> xThemeColor;
-            if (!(rVal >>= xThemeColor))
+            OUString sComplexColorJson;
+            if (!(rVal >>= sComplexColorJson))
                 return false;
 
-            if (xThemeColor.is())
+            if (sComplexColorJson.isEmpty())
             {
-                model::ThemeColor aThemeColor;
-                model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-                maComplexColor = model::ComplexColor();
-                maComplexColor.setSchemeColor(aThemeColor.getType());
-                
maComplexColor.setTransformations(aThemeColor.getTransformations());
+                return false;
             }
+            OString aJSON = OUStringToOString(sComplexColorJson, 
RTL_TEXTENCODING_ASCII_US);
+            model::color::convertFromJSON(aJSON, maComplexColor);
         }
         break;
-
-        case MID_COLOR_THEME_REFERENCE_JSON:
+        case MID_COMPLEX_COLOR:
         {
-            OUString sThemeJson;
-            if (!(rVal >>= sThemeJson))
+            css::uno::Reference<css::util::XComplexColor> xComplexColor;
+            if (!(rVal >>= xComplexColor))
                 return false;
 
-            if (sThemeJson.isEmpty())
-            {
-                return false;
-            }
-            OString aJSON = OUStringToOString(sThemeJson, 
RTL_TEXTENCODING_ASCII_US);
-            model::ThemeColor aThemeColor;
-            model::theme::convertFromJSON(aJSON, aThemeColor);
-            maComplexColor = model::ComplexColor();
-            maComplexColor.setSchemeColor(aThemeColor.getType());
-            
maComplexColor.setTransformations(aThemeColor.getTransformations());
+            if (xComplexColor.is())
+                maComplexColor = 
model::color::getFromXComplexColor(xComplexColor);
         }
         break;
-
         case MID_COLOR_RGB:
         default:
         {
diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 3209ad6fd7c4..9d7493389fdd 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -1175,7 +1175,7 @@ bool SvxUnoTextRangeBase::_getOnePropertyStates(const 
SfxItemSet* pSet, const Sf
                     }
                     break;
                 }
-                case MID_COLOR_THEME_REFERENCE:
+                case MID_COMPLEX_COLOR:
                     if (pColor->getComplexColor().meType == 
model::ColorType::Unused)
                     {
                         eItemState = SfxItemState::DEFAULT;
diff --git a/include/docmodel/color/ComplexColor.hxx 
b/include/docmodel/color/ComplexColor.hxx
index f5dd37c2e901..471c6b30e4d1 100644
--- a/include/docmodel/color/ComplexColor.hxx
+++ b/include/docmodel/color/ComplexColor.hxx
@@ -89,6 +89,11 @@ public:
     ThemeColorType meSchemeType = ThemeColorType::Unknown;
     std::vector<Transformation> maTransformations;
 
+public:
+    ColorType getType() const { return meType; }
+
+    ThemeColorType getSchemeType() const { return meSchemeType; }
+
     Color getRGBColor() const { return Color(mnComponent1, mnComponent2, 
mnComponent3); }
 
     std::vector<Transformation> const& getTransformations() const { return 
maTransformations; }
@@ -112,6 +117,8 @@ public:
                                 maTransformations.end());
     }
 
+    void clearTransformations() { maTransformations.clear(); }
+
     void setCRGB(sal_Int32 nR, sal_Int32 nG, sal_Int32 nB)
     {
         mnComponent1 = nR;
diff --git a/include/docmodel/theme/ThemeColorJSON.hxx 
b/include/docmodel/color/ComplexColorJSON.hxx
similarity index 69%
rename from include/docmodel/theme/ThemeColorJSON.hxx
rename to include/docmodel/color/ComplexColorJSON.hxx
index 008850730e99..bf23e4f0565a 100644
--- a/include/docmodel/theme/ThemeColorJSON.hxx
+++ b/include/docmodel/color/ComplexColorJSON.hxx
@@ -11,12 +11,13 @@
 #pragma once
 
 #include <docmodel/dllapi.h>
-#include <docmodel/theme/ThemeColor.hxx>
+#include <docmodel/color/ComplexColor.hxx>
 
-namespace model::theme
+namespace model::color
 {
-DOCMODEL_DLLPUBLIC OString convertToJSON(model::ThemeColor const& rThemeColor);
-DOCMODEL_DLLPUBLIC bool convertFromJSON(OString const& rJsonString, 
model::ThemeColor& rThemeColor);
+DOCMODEL_DLLPUBLIC OString convertToJSON(model::ComplexColor const& 
rComplexColor);
+DOCMODEL_DLLPUBLIC bool convertFromJSON(OString const& rJsonString,
+                                        model::ComplexColor& rComplexColor);
 
 } // end of namespace model
 
diff --git a/include/docmodel/theme/ColorSet.hxx 
b/include/docmodel/theme/ColorSet.hxx
index 0b7a8a6efdd6..4309c4719a64 100644
--- a/include/docmodel/theme/ColorSet.hxx
+++ b/include/docmodel/theme/ColorSet.hxx
@@ -36,8 +36,6 @@ public:
 
     const OUString& getName() const { return maName; }
 
-    Color resolveColor(model::ThemeColor const& rThemeColor) const;
-
     Color resolveColor(model::ComplexColor const& rComplexColor) const;
 
     Color getColor(model::ThemeColorType eType) const;
diff --git a/include/docmodel/uno/UnoThemeColor.hxx 
b/include/docmodel/uno/UnoThemeColor.hxx
deleted file mode 100644
index 50063ab981dd..000000000000
--- a/include/docmodel/uno/UnoThemeColor.hxx
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-#pragma once
-
-#include <cppuhelper/implbase.hxx>
-#include <cppuhelper/supportsservice.hxx>
-#include <comphelper/servicehelper.hxx>
-
-#include <com/sun/star/util/Color.hpp>
-#include <com/sun/star/util/XThemeColor.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-
-#include <utility>
-#include <docmodel/dllapi.h>
-#include <docmodel/theme/ThemeColor.hxx>
-
-class DOCMODEL_DLLPUBLIC UnoThemeColor final
-    : public cppu::WeakImplHelper<css::util::XThemeColor, 
css::lang::XUnoTunnel>
-{
-private:
-    model::ThemeColor maThemeColor;
-
-public:
-    UnoThemeColor(model::ThemeColor const& rThemeColor)
-        : maThemeColor(rThemeColor)
-    {
-    }
-
-    model::ThemeColor const& getThemeColor() const { return maThemeColor; }
-
-    // XThemeColor
-    sal_Int16 SAL_CALL getType() override;
-
-    UNO3_GETIMPLEMENTATION_DECL(UnoThemeColor)
-};
-
-namespace model::theme
-{
-DOCMODEL_DLLPUBLIC css::uno::Reference<css::util::XThemeColor>
-createXThemeColor(model::ThemeColor const& rThemeColor);
-
-DOCMODEL_DLLPUBLIC void
-setFromXThemeColor(model::ThemeColor& rThemeColor,
-                   css::uno::Reference<css::util::XThemeColor> const& 
rxThemeColor);
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/editeng/memberids.h b/include/editeng/memberids.h
index 0db3c27d0128..e5f1f075290a 100644
--- a/include/editeng/memberids.h
+++ b/include/editeng/memberids.h
@@ -189,8 +189,8 @@
 #define MID_COLOR_TINT_OR_SHADE 5
 #define MID_COLOR_LUM_MOD       6
 #define MID_COLOR_LUM_OFF       7
-#define MID_COLOR_THEME_REFERENCE 8
-#define MID_COLOR_THEME_REFERENCE_JSON 9
+#define MID_COMPLEX_COLOR_JSON  8
+#define MID_COMPLEX_COLOR       9
 
 
 #endif
diff --git a/include/editeng/unoprnms.hxx b/include/editeng/unoprnms.hxx
index 63d52d7537a6..e9fedb92d611 100644
--- a/include/editeng/unoprnms.hxx
+++ b/include/editeng/unoprnms.hxx
@@ -23,7 +23,7 @@
 inline constexpr OUStringLiteral UNO_NAME_CHAR_COLOR = u"CharColor";
 inline constexpr OUStringLiteral UNO_NAME_CHAR_COLOR_THEME = u"CharColorTheme";
 inline constexpr OUStringLiteral UNO_NAME_CHAR_COLOR_TINT_OR_SHADE = 
u"CharColorTintOrShade";
-inline constexpr OUStringLiteral UNO_NAME_CHAR_COLOR_THEME_REFERENCE = 
u"CharColorThemeReference";
+inline constexpr OUStringLiteral UNO_NAME_CHAR_COMPLEX_COLOR = 
u"CharComplexColor";
 inline constexpr OUStringLiteral UNO_NAME_CHAR_HEIGHT = u"CharHeight";
 inline constexpr OUStringLiteral UNO_NAME_CHAR_POSTURE = u"CharPosture";
 inline constexpr OUStringLiteral UNO_NAME_CHAR_SHADOWED = u"CharShadowed";
@@ -35,7 +35,7 @@ inline constexpr OUStringLiteral UNO_NAME_FILLCOLOR = 
u"FillColor";
 inline constexpr OUStringLiteral UNO_NAME_FILLCOLOR_THEME = u"FillColorTheme";
 inline constexpr OUStringLiteral UNO_NAME_FILLCOLOR_LUM_MOD = 
u"FillColorLumMod";
 inline constexpr OUStringLiteral UNO_NAME_FILLCOLOR_LUM_OFF = 
u"FillColorLumOff";
-inline constexpr OUStringLiteral UNO_NAME_FILLCOLOR_THEME_REFERENCE = 
u"FillColorThemeReference";
+inline constexpr OUStringLiteral UNO_NAME_FILL_COMPLEX_COLOR = 
u"FillComplexColor";
 inline constexpr OUStringLiteral UNO_NAME_FILLGRADIENT = u"FillGradient";
 inline constexpr OUStringLiteral UNO_NAME_FILLGRADIENTNAME = 
u"FillGradientName";
 inline constexpr OUStringLiteral UNO_NAME_FILLHATCH = u"FillHatch";
@@ -77,7 +77,7 @@ inline constexpr OUStringLiteral UNO_NAME_LINESTYLE = 
u"LineStyle";
 inline constexpr OUStringLiteral UNO_NAME_LINEDASH = u"LineDash";
 inline constexpr OUStringLiteral UNO_NAME_LINEWIDTH = u"LineWidth";
 inline constexpr OUStringLiteral UNO_NAME_LINECOLOR = u"LineColor";
-inline constexpr OUStringLiteral UNO_NAME_LINECOLOR_THEME_REFERENCE = 
u"LineColorThemeReference";
+inline constexpr OUStringLiteral UNO_NAME_LINE_COMPLEX_COLOR = 
u"LineComplexColor";
 inline constexpr OUStringLiteral UNO_NAME_LINEJOINT = u"LineJoint";
 inline constexpr OUStringLiteral UNO_NAME_LINESTART = u"LineStart";
 inline constexpr OUStringLiteral UNO_NAME_LINEEND = u"LineEnd";
@@ -340,7 +340,7 @@ inline constexpr OUStringLiteral 
UNO_NAME_EDIT_CHAR_COLOR_THEME = u"CharColorThe
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_COLOR_TINT_OR_SHADE = 
u"CharColorTintOrShade";
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_COLOR_LUM_MOD = 
u"CharColorLumMod";
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_COLOR_LUM_OFF = 
u"CharColorLumOff";
-inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE = 
u"CharColorThemeReference";
+inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_COMPLEX_COLOR = 
u"CharComplexColor";
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_TRANSPARENCE = 
u"CharTransparence";
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_CROSSEDOUT = 
u"CharCrossedOut";
 inline constexpr OUStringLiteral UNO_NAME_EDIT_CHAR_STRIKEOUT = 
u"CharStrikeout";
diff --git a/include/editeng/unotext.hxx b/include/editeng/unotext.hxx
index 8fb6710cb2e8..79cbb92a3770 100644
--- a/include/editeng/unotext.hxx
+++ b/include/editeng/unotext.hxx
@@ -41,7 +41,7 @@
 #include <com/sun/star/style/LineSpacing.hpp>
 #include <com/sun/star/style/TabStop.hpp>
 #include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/util/XThemeColor.hpp>
+#include <com/sun/star/util/XComplexColor.hpp>
 #include <comphelper/interfacecontainer4.hxx>
 #include <cppuhelper/implbase1.hxx>
 #include <cppuhelper/weakagg.hxx>
@@ -92,7 +92,7 @@ struct SfxItemPropertyMapEntry;
     { UNO_NAME_EDIT_CHAR_COLOR_TINT_OR_SHADE, EE_CHAR_COLOR, 
::cppu::UnoType<sal_Int16>::get(),     0, MID_COLOR_TINT_OR_SHADE }, \
     { UNO_NAME_EDIT_CHAR_COLOR_LUM_MOD,       EE_CHAR_COLOR, 
::cppu::UnoType<sal_Int16>::get(),     0, MID_COLOR_LUM_MOD }, \
     { UNO_NAME_EDIT_CHAR_COLOR_LUM_OFF,       EE_CHAR_COLOR, 
::cppu::UnoType<sal_Int16>::get(),     0, MID_COLOR_LUM_OFF }, \
-    { UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE, EE_CHAR_COLOR,    
::cppu::UnoType<css::util::XThemeColor>::get(), 0, MID_COLOR_THEME_REFERENCE }, 
\
+    { UNO_NAME_EDIT_CHAR_COMPLEX_COLOR, EE_CHAR_COLOR,    
::cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_COMPLEX_COLOR }, \
     { u"CharBackColor",                EE_CHAR_BKGCOLOR,   
::cppu::UnoType<sal_Int32>::get(),        0, 0 }, \
     { u"CharBackTransparent",          EE_CHAR_BKGCOLOR,   
::cppu::UnoType<bool>::get(),             0, MID_GRAPHIC_TRANSPARENT }, \
     { UNO_NAME_EDIT_CHAR_ESCAPEMENT,  EE_CHAR_ESCAPEMENT, 
::cppu::UnoType<sal_Int16>::get(),        0, MID_ESC }, \
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index d3da901a09ce..90aae09d2c69 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -449,7 +449,7 @@ class XFillGradientItem;
 #define SID_ATTR_TEXTCOLUMNS_NUMBER                     ( SID_SVX_START + 340 )
 #define SID_ATTR_TEXTCOLUMNS_SPACING                    ( SID_SVX_START + 341 )
 
-#define SID_ATTR_COLOR_THEME_REFERENCE                  
TypedWhichId<SvxColorItem>( SID_SVX_START + 342 )
+// FREE                                                 ( SID_SVX_START + 342 )
 #define SID_ATTR_COLOR_THEME_INDEX                      
TypedWhichId<SfxInt16Item>( SID_SVX_START + 343 )
 #define SID_ATTR_COLOR_LUM_MOD                          
TypedWhichId<SfxInt16Item>( SID_SVX_START + 344 )
 #define SID_ATTR_COLOR_LUM_OFF                          
TypedWhichId<SfxInt16Item>( SID_SVX_START + 345 )
diff --git a/include/svx/unoshprp.hxx b/include/svx/unoshprp.hxx
index 828e02771e4b..6c60eac60933 100644
--- a/include/svx/unoshprp.hxx
+++ b/include/svx/unoshprp.hxx
@@ -237,7 +237,7 @@
 #define LINE_PROPERTIES_DEFAULTS\
     { UNO_NAME_LINECAP,           XATTR_LINECAP,          
::cppu::UnoType<css::drawing::LineCap>::get(),     0,     0}, \
     { UNO_NAME_LINECOLOR,         XATTR_LINECOLOR,        
::cppu::UnoType<sal_Int32>::get() ,           0,     0}, \
-    { UNO_NAME_LINECOLOR_THEME_REFERENCE, XATTR_LINECOLOR, 
::cppu::UnoType<css::util::XThemeColor>::get() ,           0, 
MID_COLOR_THEME_REFERENCE}, \
+    { UNO_NAME_LINE_COMPLEX_COLOR, XATTR_LINECOLOR, 
::cppu::UnoType<css::util::XComplexColor>::get() ,           0, 
MID_COMPLEX_COLOR}, \
     { UNO_NAME_LINEENDCENTER,     XATTR_LINEENDCENTER,    
cppu::UnoType<bool>::get() ,           0,     0}, \
     { UNO_NAME_LINEENDWIDTH,      XATTR_LINEENDWIDTH,     
::cppu::UnoType<sal_Int32>::get() ,           0,     0, 
PropertyMoreFlags::METRIC_ITEM}, \
     { UNO_NAME_LINEJOINT,         XATTR_LINEJOINT,        
::cppu::UnoType<css::drawing::LineJoint>::get(),     0,     0}, \
@@ -294,7 +294,7 @@
     { UNO_NAME_FILLCOLOR_THEME,   XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_THEME_INDEX}, \
     { UNO_NAME_FILLCOLOR_LUM_MOD, XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_LUM_MOD}, \
     { UNO_NAME_FILLCOLOR_LUM_OFF, XATTR_FILLCOLOR, 
::cppu::UnoType<sal_Int16>::get(),          0,     MID_COLOR_LUM_OFF}, \
-    { UNO_NAME_FILLCOLOR_THEME_REFERENCE,   XATTR_FILLCOLOR, 
::cppu::UnoType<css::util::XThemeColor>::get(),          0,     
MID_COLOR_THEME_REFERENCE}, \
+    { UNO_NAME_FILL_COMPLEX_COLOR,   XATTR_FILLCOLOR, 
::cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_COMPLEX_COLOR}, \
     { UNO_NAME_GRAPHIC_GRAPHICCROP, SDRATTR_GRAFCROP      , 
::cppu::UnoType<css::text::GraphicCrop>::get(), 0, 0 }, \
     { UNO_NAME_FILLUSESLIDEBACKGROUND, XATTR_FILLUSESLIDEBACKGROUND, 
cppu::UnoType<bool>::get(), 0,   0},
 
diff --git a/include/svx/xcolit.hxx b/include/svx/xcolit.hxx
index 3ece0ef3b52b..965d10195146 100644
--- a/include/svx/xcolit.hxx
+++ b/include/svx/xcolit.hxx
@@ -22,7 +22,7 @@
 
 #include <tools/color.hxx>
 #include <editeng/colritem.hxx>
-#include <docmodel/theme/ThemeColor.hxx>
+#include <docmodel/color/ComplexColor.hxx>
 
 #include <svx/svxdllapi.h>
 #include <svx/xit.hxx>
@@ -32,7 +32,7 @@ class XColorList;
 class SVXCORE_DLLPUBLIC XColorItem : public NameOrIndex
 {
     Color   aColor;
-    model::ThemeColor maThemeColor;
+    model::ComplexColor maComplexColor;
 
 public:
             static SfxPoolItem* CreateDefault();
@@ -50,8 +50,9 @@ public:
     const Color&    GetColorValue() const;
     void            SetColorValue(const Color& rNew) { aColor = rNew; 
Detach(); }
 
-    model::ThemeColor& GetThemeColor() { return maThemeColor; }
-    const model::ThemeColor& GetThemeColor() const { return maThemeColor; }
+    void setComplexColor(model::ComplexColor const& rComplexColor) { 
maComplexColor = rComplexColor; }
+    const model::ComplexColor& getComplexColor() const { return 
maComplexColor; }
+    model::ComplexColor& getComplexColor() { return maComplexColor; }
 
     virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
 };
diff --git a/include/xmloff/txtprmap.hxx b/include/xmloff/txtprmap.hxx
index 986bbd007d8a..53b2a36edfa0 100644
--- a/include/xmloff/txtprmap.hxx
+++ b/include/xmloff/txtprmap.hxx
@@ -202,7 +202,7 @@
 #define CTF_FILLSTYLE                       (XML_TEXT_CTF_START + 173)
 #define CTF_FILLCOLOR                       (XML_TEXT_CTF_START + 174)
 #define CTF_PAGENUMBEROFFSET                (XML_TEXT_CTF_START + 175)
-#define CTF_THEME_COLOR                     (XML_TEXT_CTF_START + 176)
+#define CTF_COMPLEX_COLOR                   (XML_TEXT_CTF_START + 176)
 
 enum class TextPropMap {
     TEXT = 0,
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 5ea72f7df658..4a9472a4f3e6 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -3486,8 +3486,8 @@ namespace xmloff::token {
         XML_LINKED_STYLE_NAME,
 
         XML_THEME,
-        XML_CHAR_COLOR_THEME_REFERENCE,
-        XML_FILL_COLOR_THEME_REFERENCE,
+        XML_CHAR_COMPLEX_COLOR,
+        XML_FILL_COMPLEX_COLOR,
         XML_DK1,
         XML_LT1,
         XML_DK2,
diff --git a/include/xmloff/xmltypes.hxx b/include/xmloff/xmltypes.hxx
index 4dbf2081db1b..8c9b001b061d 100644
--- a/include/xmloff/xmltypes.hxx
+++ b/include/xmloff/xmltypes.hxx
@@ -295,7 +295,7 @@
 #define XML_TYPE_GRAPHIC                (XML_TEXT_TYPES_START + 127)
 #define XML_SW_TYPE_PRESPAGE_BACKSIZE   (XML_TEXT_TYPES_START + 128)
 #define XML_SW_TYPE_RTLGUTTER           (XML_TEXT_TYPES_START + 129)
-#define XML_TYPE_THEME_COLOR            (XML_TEXT_TYPES_START + 130)
+#define XML_TYPE_COMPLEX_COLOR          (XML_TEXT_TYPES_START + 130)
 
 #endif // INCLUDED_XMLOFF_XMLTYPES_HXX
 
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 68982f35ae5d..5c8b8e4aad2b 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -4179,7 +4179,6 @@ $(eval $(call 
gb_UnoApi_add_idlfiles,offapi,com/sun/star/util,\
        XCloseable \
        XComplexColor \
        XTheme \
-       XThemeColor \
        XDataEditor \
        XDataEditorListener \
        XFlushListener \
diff --git a/offapi/com/sun/star/util/XThemeColor.idl 
b/offapi/com/sun/star/util/XThemeColor.idl
deleted file mode 100644
index 7da38c4850a2..000000000000
--- a/offapi/com/sun/star/util/XThemeColor.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-
-module com {  module sun {  module star {  module util {
-
-
-/** Theme Color interface
-
-    @since LibreOffice 7.6
-*/
-interface XThemeColor
-{
-    /** Type of the theme color */
-    short getType();
-};
-
-}; }; }; };
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx
index 77628aa4bfd4..b9a699f35bd4 100644
--- a/oox/qa/unit/drawingml.cxx
+++ b/oox/qa/unit/drawingml.cxx
@@ -30,7 +30,7 @@
 #include <com/sun/star/table/XCellRange.hpp>
 #include <com/sun/star/util/XTheme.hpp>
 
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <docmodel/uno/UnoTheme.hxx>
 #include <docmodel/theme/Theme.hxx>
 
@@ -415,18 +415,17 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testPptxTheme)
 
     // Check the theme colors are as expected
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xPortion->getPropertyValue("CharColorThemeReference") 
>>= xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xPortion->getPropertyValue("CharComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod,
-                             aThemeColor.getTransformations()[0].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aThemeColor.getTransformations()[0].mnValue);
+                             aComplexColor.getTransformations()[0].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aComplexColor.getTransformations()[0].mnValue);
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumOff,
-                             aThemeColor.getTransformations()[1].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aThemeColor.getTransformations()[1].mnValue);
+                             aComplexColor.getTransformations()[1].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aComplexColor.getTransformations()[1].mnValue);
     }
 }
 
@@ -471,28 +470,26 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, 
testThemeColorTint_Table)
 
     // check theme color
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xA1->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xA1->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(0), rTrans.size());
         }
     }
 
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
         uno::Reference<beans::XPropertySet> xA2(xTable->getCellByPosition(0, 
1), uno::UNO_QUERY);
-        CPPUNIT_ASSERT(xA2->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xA2->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(1), rTrans.size());
             CPPUNIT_ASSERT_EQUAL(model::TransformationType::Tint, 
rTrans[0].meType);
             CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), rTrans[0].mnValue);
@@ -513,16 +510,15 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, 
testThemeColor_Shape)
 
     // check line and fill theme color of shape1
     {
-        model::ThemeColor aThemeColor;
-        uno::Reference<util::XThemeColor> xThemeColor;
         uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), 
uno::UNO_QUERY);
-
-        CPPUNIT_ASSERT(xShape->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent6, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xShape->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto aComplexColor = 
model::color::getFromXComplexColor(xComplexColor);
+            CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent6, 
aComplexColor.getSchemeType());
+
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(2), rTrans.size());
             CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod, 
rTrans[0].meType);
             CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), rTrans[0].mnValue);
@@ -530,12 +526,13 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, 
testThemeColor_Shape)
             CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), rTrans[1].mnValue);
         }
 
-        CPPUNIT_ASSERT(xShape->getPropertyValue("LineColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent6, 
aThemeColor.getType());
+        CPPUNIT_ASSERT(xShape->getPropertyValue("LineComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto aComplexColor = 
model::color::getFromXComplexColor(xComplexColor);
+            CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent6, 
aComplexColor.getSchemeType());
+
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(1), rTrans.size());
             CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod, 
rTrans[0].meType);
             CPPUNIT_ASSERT_EQUAL(sal_Int16(5000), rTrans[0].mnValue);
@@ -543,25 +540,25 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, 
testThemeColor_Shape)
     }
     // check line and fill theme color of shape2
     {
-        model::ThemeColor aThemeColor;
-        uno::Reference<util::XThemeColor> xThemeColor;
+        uno::Reference<util::XComplexColor> xComplexColor;
         uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(1), 
uno::UNO_QUERY);
-
-        CPPUNIT_ASSERT(xShape->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        CPPUNIT_ASSERT(xShape->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto aComplexColor = 
model::color::getFromXComplexColor(xComplexColor);
+            CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
+
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(0), rTrans.size());
         }
 
-        CPPUNIT_ASSERT(xShape->getPropertyValue("LineColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        CPPUNIT_ASSERT(xShape->getPropertyValue("LineComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
         {
-            auto const& rTrans = aThemeColor.getTransformations();
+            auto aComplexColor = 
model::color::getFromXComplexColor(xComplexColor);
+            CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
+
+            auto const& rTrans = aComplexColor.getTransformations();
             CPPUNIT_ASSERT_EQUAL(size_t(1), rTrans.size());
             CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod, 
rTrans[0].meType);
             CPPUNIT_ASSERT_EQUAL(sal_Int16(7500), rTrans[0].mnValue);
diff --git a/oox/qa/unit/shape.cxx b/oox/qa/unit/shape.cxx
index f267c43c797f..97bec7121e2d 100644
--- a/oox/qa/unit/shape.cxx
+++ b/oox/qa/unit/shape.cxx
@@ -24,7 +24,7 @@
 #include <rtl/math.hxx>
 #include <svx/svdoashp.hxx>
 #include <tools/color.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 
 using namespace ::com::sun::star;
 
@@ -300,15 +300,14 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, 
testTdf54095_SmartArtThemeTextColor)
     // - Actual  : 16777215 (0xFFFFFF), that is text was white
     CPPUNIT_ASSERT_EQUAL(sal_Int32(0x1F497D), nActualColor);
 
-    // clrScheme. For map between name in docx and index from 
CharColorThemeReference see
+    // clrScheme. For map between name in docx and index from CharComplexColor 
see
     // oox::drawingml::Color::getSchemeColorIndex()
     // Without fix the color scheme was "lt1" (1) but should be "dk2" (2).
-    uno::Reference<util::XThemeColor> xThemeColor;
-    CPPUNIT_ASSERT(xPortion->getPropertyValue("CharColorThemeReference") >>= 
xThemeColor);
-    CPPUNIT_ASSERT(xThemeColor.is());
-    model::ThemeColor aThemeColor;
-    model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-    CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Dark2, aThemeColor.getType());
+    uno::Reference<util::XComplexColor> xComplexColor;
+    xPortion->getPropertyValue("CharComplexColor") >>= xComplexColor;
+    CPPUNIT_ASSERT(xComplexColor.is());
+    auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+    CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Dark2, 
aComplexColor.getSchemeType());
 
     if (!bUseGroup)
     {
diff --git a/oox/source/drawingml/fillproperties.cxx 
b/oox/source/drawingml/fillproperties.cxx
index c29a518d8e55..d8cfc19beff3 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -26,7 +26,7 @@
 #include <vcl/graph.hxx>
 #include <vcl/BitmapFilter.hxx>
 #include <vcl/BitmapMonochromeFilter.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <basegfx/utils/gradienttools.hxx>
 
 #include <com/sun/star/beans/XPropertySet.hpp>
@@ -426,27 +426,27 @@ void FillProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
                 if( maFillColor.hasTransparency() )
                     rPropMap.setProperty( ShapeProperty::FillTransparency, 
maFillColor.getTransparency() );
 
-                model::ThemeColor aThemeColor;
+                model::ComplexColor aComplexColor;
                 if (aFillColor == nPhClr)
                 {
-                    
aThemeColor.setType(model::convertToThemeColorType(nPhClrTheme));
-                    rPropMap.setProperty(PROP_FillColorThemeReference, 
model::theme::createXThemeColor(aThemeColor));
+                    
aComplexColor.setSchemeColor(model::convertToThemeColorType(nPhClrTheme));
+                    rPropMap.setProperty(PROP_FillComplexColor, 
model::color::createXComplexColor(aComplexColor));
                 }
                 else
                 {
-                    
aThemeColor.setType(model::convertToThemeColorType(maFillColor.getSchemeColorIndex()));
+                    
aComplexColor.setSchemeColor(model::convertToThemeColorType(maFillColor.getSchemeColorIndex()));
                     if (maFillColor.getLumMod() != 10000)
-                        
aThemeColor.addTransformation({model::TransformationType::LumMod, 
maFillColor.getLumMod()});
+                        
aComplexColor.addTransformation({model::TransformationType::LumMod, 
maFillColor.getLumMod()});
                     if (maFillColor.getLumOff() != 0)
-                        
aThemeColor.addTransformation({model::TransformationType::LumOff, 
maFillColor.getLumOff()});
+                        
aComplexColor.addTransformation({model::TransformationType::LumOff, 
maFillColor.getLumOff()});
                     if (maFillColor.getTintOrShade() > 0)
-                        
aThemeColor.addTransformation({model::TransformationType::Tint, 
maFillColor.getTintOrShade()});
+                        
aComplexColor.addTransformation({model::TransformationType::Tint, 
maFillColor.getTintOrShade()});
                     if (maFillColor.getTintOrShade() < 0)
                     {
                         sal_Int16 nShade = 
o3tl::narrowing<sal_Int16>(-maFillColor.getTintOrShade());
-                        
aThemeColor.addTransformation({model::TransformationType::Shade, nShade});
+                        
aComplexColor.addTransformation({model::TransformationType::Shade, nShade});
                     }
-                    rPropMap.setProperty(PROP_FillColorThemeReference, 
model::theme::createXThemeColor(aThemeColor));
+                    rPropMap.setProperty(PROP_FillComplexColor, 
model::color::createXComplexColor(aComplexColor));
                 }
 
                 eFillStyle = FillStyle_SOLID;
diff --git a/oox/source/drawingml/lineproperties.cxx 
b/oox/source/drawingml/lineproperties.cxx
index 8e9d676de800..277e1bf9da3d 100644
--- a/oox/source/drawingml/lineproperties.cxx
+++ b/oox/source/drawingml/lineproperties.cxx
@@ -34,8 +34,7 @@
 #include <oox/helper/graphichelper.hxx>
 #include <oox/token/tokens.hxx>
 #include <oox/token/properties.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
-
+#include <docmodel/uno/UnoComplexColor.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::beans;
@@ -501,28 +500,28 @@ void LineProperties::pushToPropMap( ShapePropertyMap& 
rPropMap,
         if( aLineColor.hasTransparency() )
             rPropMap.setProperty( ShapeProperty::LineTransparency, 
aLineColor.getTransparency() );
 
-        model::ThemeColor aThemeColor;
+        model::ComplexColor aComplexColor;
 
         if (aColor == nPhClr)
         {
-            aThemeColor.setType(model::convertToThemeColorType(nPhClrTheme));
-            rPropMap.setProperty(PROP_LineColorThemeReference, 
model::theme::createXThemeColor(aThemeColor));
+            
aComplexColor.setSchemeColor(model::convertToThemeColorType(nPhClrTheme));
+            rPropMap.setProperty(PROP_LineComplexColor, 
model::color::createXComplexColor(aComplexColor));
         }
         else
         {
-            
aThemeColor.setType(model::convertToThemeColorType(aLineColor.getSchemeColorIndex()));
+            
aComplexColor.setSchemeColor(model::convertToThemeColorType(aLineColor.getSchemeColorIndex()));
             if (aLineColor.getLumMod() != 10000)
-                
aThemeColor.addTransformation({model::TransformationType::LumMod, 
aLineColor.getLumMod()});
+                
aComplexColor.addTransformation({model::TransformationType::LumMod, 
aLineColor.getLumMod()});
             if (aLineColor.getLumOff() != 0)
-                
aThemeColor.addTransformation({model::TransformationType::LumOff, 
aLineColor.getLumOff()});
+                
aComplexColor.addTransformation({model::TransformationType::LumOff, 
aLineColor.getLumOff()});
             if (aLineColor.getTintOrShade() > 0)
-                
aThemeColor.addTransformation({model::TransformationType::Tint, 
aLineColor.getTintOrShade()});
+                
aComplexColor.addTransformation({model::TransformationType::Tint, 
aLineColor.getTintOrShade()});
             if (aLineColor.getTintOrShade() < 0)
             {
                 sal_Int16 nShade = 
o3tl::narrowing<sal_Int16>(-aLineColor.getTintOrShade());
-                
aThemeColor.addTransformation({model::TransformationType::Shade, nShade});
+                
aComplexColor.addTransformation({model::TransformationType::Shade, nShade});
             }
-            rPropMap.setProperty(PROP_LineColorThemeReference, 
model::theme::createXThemeColor(aThemeColor));
+            rPropMap.setProperty(PROP_LineComplexColor, 
model::color::createXComplexColor(aComplexColor));
         }
     }
 
diff --git a/oox/source/drawingml/textcharacterproperties.cxx 
b/oox/source/drawingml/textcharacterproperties.cxx
index a22606ef106c..7d3dda284680 100644
--- a/oox/source/drawingml/textcharacterproperties.cxx
+++ b/oox/source/drawingml/textcharacterproperties.cxx
@@ -26,7 +26,7 @@
 #include <i18nlangtag/languagetag.hxx>
 #include <i18nlangtag/mslangid.hxx>
 #include <editeng/escapementitem.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <oox/helper/helper.hxx>
 #include <oox/helper/propertyset.hxx>
 #include <oox/core/xmlfilterbase.hxx>
@@ -136,21 +136,21 @@ void TextCharacterProperties::pushToPropMap( PropertyMap& 
rPropMap, const XmlFil
         rPropMap.setProperty(PROP_CharColor, 
aColor.getColor(rFilter.getGraphicHelper()));
 
         // set theme color
-        model::ThemeColor aThemeColor;
-        
aThemeColor.setType(model::convertToThemeColorType(aColor.getSchemeColorIndex()));
+        model::ComplexColor aComplexColor;
+        
aComplexColor.setSchemeColor(model::convertToThemeColorType(aColor.getSchemeColorIndex()));
         if (aColor.getTintOrShade() > 0)
-            aThemeColor.addTransformation({model::TransformationType::Tint, 
aColor.getTintOrShade()});
+            aComplexColor.addTransformation({model::TransformationType::Tint, 
aColor.getTintOrShade()});
         if (aColor.getTintOrShade() < 0)
         {
             sal_Int16 nShade = 
o3tl::narrowing<sal_Int16>(-aColor.getTintOrShade());
-            aThemeColor.addTransformation({model::TransformationType::Shade, 
nShade});
+            aComplexColor.addTransformation({model::TransformationType::Shade, 
nShade});
         }
         if (aColor.getLumMod() != 10000)
-            aThemeColor.addTransformation({model::TransformationType::LumMod, 
aColor.getLumMod()});
+            
aComplexColor.addTransformation({model::TransformationType::LumMod, 
aColor.getLumMod()});
         if (aColor.getLumOff() != 0)
-            aThemeColor.addTransformation({model::TransformationType::LumOff, 
aColor.getLumOff()});
+            
aComplexColor.addTransformation({model::TransformationType::LumOff, 
aColor.getLumOff()});
 
-        rPropMap.setProperty(PROP_CharColorThemeReference, 
model::theme::createXThemeColor(aThemeColor));
+        rPropMap.setProperty(PROP_CharComplexColor, 
model::color::createXComplexColor(aComplexColor));
         rPropMap.setProperty(PROP_CharContoured, bContoured);
 
         if (aColor.hasTransparency())
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 8646b056ff66..7048b17fb596 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -127,7 +127,7 @@
 #include <editeng/flditem.hxx>
 #include <editeng/escapementitem.hxx>
 #include <editeng/unonrule.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <svx/svdoashp.hxx>
 #include <svx/svdomedia.hxx>
 #include <svx/svdtrans.hxx>
@@ -500,7 +500,7 @@ void DrawingML::WriteSolidFill( const Reference< 
XPropertySet >& rXPropSet )
     else if ( nFillColor != nOriginalColor )
     {
         // the user has set a different color for the shape
-        if (!WriteSchemeColor(u"FillColorThemeReference", rXPropSet))
+        if (!WriteSchemeColor(u"FillComplexColor", rXPropSet))
         {
             WriteSolidFill(::Color(ColorTransparency, nFillColor & 0xffffff), 
nAlpha);
         }
@@ -524,19 +524,18 @@ bool DrawingML::WriteSchemeColor(OUString const& 
rPropertyName, const uno::Refer
     if (!xPropertySet->getPropertySetInfo()->hasPropertyByName(rPropertyName))
         return false;
 
-    uno::Reference<util::XThemeColor> xThemeColor;
-    xPropertySet->getPropertyValue(rPropertyName) >>= xThemeColor;
-    if (!xThemeColor.is())
+    uno::Reference<util::XComplexColor> xComplexColor;
+    xPropertySet->getPropertyValue(rPropertyName) >>= xComplexColor;
+    if (!xComplexColor.is())
         return false;
 
-    model::ThemeColor aThemeColor;
-    model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-    if (aThemeColor.getType() == model::ThemeColorType::Unknown)
+    auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+    if (aComplexColor.getSchemeType() == model::ThemeColorType::Unknown)
         return false;
-    const char* pColorName = 
g_aPredefinedClrNames[sal_Int16(aThemeColor.getType())];
+    const char* pColorName = 
g_aPredefinedClrNames[sal_Int16(aComplexColor.getSchemeType())];
     mpFS->startElementNS(XML_a, XML_solidFill);
     mpFS->startElementNS(XML_a, XML_schemeClr, XML_val, pColorName);
-    for (auto const& rTransform : aThemeColor.getTransformations())
+    for (auto const& rTransform : aComplexColor.getTransformations())
     {
         switch (rTransform.meType)
         {
@@ -1083,8 +1082,8 @@ void DrawingML::WriteOutline( const 
Reference<XPropertySet>& rXPropSet, Referenc
         if( nColor != nOriginalColor )
         {
             // the user has set a different color for the line
-            if (!WriteSchemeColor(u"LineColorThemeReference", rXPropSet))
-                    WriteSolidFill(nColor, nColorAlpha);
+            if (!WriteSchemeColor(u"LineComplexColor", rXPropSet))
+                WriteSolidFill(nColor, nColorAlpha);
         }
         else if( !sColorFillScheme.isEmpty() )
         {
@@ -2521,7 +2520,7 @@ void DrawingML::WriteRunProperties( const Reference< 
XPropertySet >& rRun, bool
                 else
                 {
                     color.SetAlpha(255);
-                    if (!WriteSchemeColor(u"CharColorThemeReference", 
rXPropSet))
+                    if (!WriteSchemeColor(u"CharComplexColor", rXPropSet))
                         WriteSolidFill(color, nTransparency);
                 }
                 mpFS->endElementNS(XML_a, XML_ln);
@@ -2534,7 +2533,7 @@ void DrawingML::WriteRunProperties( const Reference< 
XPropertySet >& rRun, bool
             {
                 color.SetAlpha(255);
                 // TODO: special handle embossed/engraved
-                if (!WriteSchemeColor(u"CharColorThemeReference", rXPropSet))
+                if (!WriteSchemeColor(u"CharComplexColor", rXPropSet))
                 {
                     WriteSolidFill(color, nTransparency);
                 }
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index 0b6e5437b883..cf8b8781af23 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -53,12 +53,12 @@ Change
 CharBackColor
 CharCaseMap
 CharColor
-CharColorThemeReference
 CharContoured
 CharColorTheme
 CharColorTintOrShade
 CharColorLumMod
 CharColorLumOff
+CharComplexColor
 CharEscapement
 CharEscapementHeight
 CharFontCharSet
@@ -177,7 +177,7 @@ FillColor
 FillColorTheme
 FillColorLumMod
 FillColorLumOff
-FillColorThemeReference
+FillComplexColor
 FillGradient
 FillGradientName
 FillHatch
@@ -316,7 +316,7 @@ LeftPageHeaderContent
 LegacyFragment
 LineCap
 LineColor
-LineColorThemeReference
+LineComplexColor
 LineCount
 LineDash
 LineDashName
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 79ce684d87be..4721bfeba70a 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5061,11 +5061,12 @@ void ScDocument::StyleSheetChanged( const 
SfxStyleSheetBase* pStyleSheet, bool b
                                     double nPPTX, double nPPTY,
                                     const Fraction& rZoomX, const Fraction& 
rZoomY )
 {
-    for (const auto& a : maTabs)
+    for (const auto& rTab : maTabs)
     {
-        if (a)
-            a->StyleSheetChanged
-                ( pStyleSheet, bRemoved, pDev, nPPTX, nPPTY, rZoomX, rZoomY );
+        if (rTab)
+        {
+            rTab->StyleSheetChanged(pStyleSheet, bRemoved, pDev, nPPTX, nPPTY, 
rZoomX, rZoomY);
+        }
     }
 
     if ( pStyleSheet && pStyleSheet->GetName() == 
ScResId(STR_STYLENAME_STANDARD) )
@@ -5093,9 +5094,9 @@ bool ScDocument::IsStyleSheetUsed( const ScStyleSheet& 
rStyle ) const
 
         bool bIsUsed = false;
 
-        for (const auto& a : maTabs)
+        for (const auto& rTab : maTabs)
         {
-            if (a && a->IsStyleSheetUsed( rStyle ) )
+            if (rTab && rTab->IsStyleSheetUsed( rStyle ) )
                 bIsUsed = true;
         }
 
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx
index 08c7f0766017..c1a53d493797 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -42,7 +42,7 @@
 #include <svl/stritem.hxx>
 #include <undo/undomanager.hxx>
 #include <vcl/scheduler.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <comphelper/propertyvalue.hxx>
 #include <comphelper/sequenceashashmap.hxx>
 #include <docmodel/uno/UnoTheme.hxx>
@@ -1030,18 +1030,17 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, 
testCharColorTheme)
     uno::Reference<beans::XPropertySet> 
xPortion(xPara->createEnumeration()->nextElement(),
                                                  uno::UNO_QUERY);
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xPortion->getPropertyValue("CharColorThemeReference") 
>>= xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xPortion->getPropertyValue("CharComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod,
-                             aThemeColor.getTransformations()[0].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(2000), 
aThemeColor.getTransformations()[0].mnValue);
+                             aComplexColor.getTransformations()[0].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(2000), 
aComplexColor.getTransformations()[0].mnValue);
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumOff,
-                             aThemeColor.getTransformations()[1].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(8000), 
aThemeColor.getTransformations()[1].mnValue);
+                             aComplexColor.getTransformations()[1].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(8000), 
aComplexColor.getTransformations()[1].mnValue);
     }
 }
 
@@ -1070,18 +1069,17 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, 
testFillColorTheme)
 
     // Then make sure the theme index is not lost when the sidebar sets it:
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xShape->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xShape->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod,
-                             aThemeColor.getTransformations()[0].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aThemeColor.getTransformations()[0].mnValue);
+                             aComplexColor.getTransformations()[0].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aComplexColor.getTransformations()[0].mnValue);
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumOff,
-                             aThemeColor.getTransformations()[1].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aThemeColor.getTransformations()[1].mnValue);
+                             aComplexColor.getTransformations()[1].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aComplexColor.getTransformations()[1].mnValue);
     }
 }
 
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index 96850f5b107e..466ef37b7d22 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -1359,7 +1359,7 @@ PropertyState SAL_CALL SdStyleSheet::getPropertyState( 
const OUString& PropertyN
                 if (pEntry->nMemberId == MID_COLOR_THEME_INDEX)
                 {
                     const XFillColorItem* pColor = 
rStyleSet.GetItem<XFillColorItem>(pEntry->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    if (pColor->getComplexColor().getSchemeType() == 
model::ThemeColorType::Unknown)
                     {
                         eState = PropertyState_DEFAULT_VALUE;
                     }
@@ -1368,7 +1368,7 @@ PropertyState SAL_CALL SdStyleSheet::getPropertyState( 
const OUString& PropertyN
                 {
                     const XFillColorItem* pColor = 
rStyleSet.GetItem<XFillColorItem>(pEntry->nWID);
                     sal_Int16 nLumMod = 10000;
-                    for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                    for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                     {
                         if (rTransform.meType == 
model::TransformationType::LumMod)
                             nLumMod = rTransform.mnValue;
@@ -1382,7 +1382,7 @@ PropertyState SAL_CALL SdStyleSheet::getPropertyState( 
const OUString& PropertyN
                 {
                     const XFillColorItem* pColor = 
rStyleSet.GetItem<XFillColorItem>(pEntry->nWID);
                     sal_Int16 nLumOff = 0;
-                    for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                    for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                     {
                         if (rTransform.meType == 
model::TransformationType::LumOff)
                             nLumOff = rTransform.mnValue;
@@ -1392,20 +1392,20 @@ PropertyState SAL_CALL SdStyleSheet::getPropertyState( 
const OUString& PropertyN
                         eState = PropertyState_DEFAULT_VALUE;
                     }
                 }
-                else if (pEntry->nMemberId == MID_COLOR_THEME_REFERENCE)
+                else if (pEntry->nMemberId == MID_COMPLEX_COLOR)
                 {
-                    const XFillColorItem* pColor = 
rStyleSet.GetItem<XFillColorItem>(pEntry->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    auto const* pColor = 
rStyleSet.GetItem<XFillColorItem>(pEntry->nWID);
+                    if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                     {
                         eState = PropertyState_DEFAULT_VALUE;
                     }
                 }
                 break;
             case XATTR_LINECOLOR:
-                if (pEntry->nMemberId == MID_COLOR_THEME_REFERENCE)
+                if (pEntry->nMemberId == MID_COMPLEX_COLOR)
                 {
                     auto const* pColor = 
rStyleSet.GetItem<XLineColorItem>(pEntry->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                     {
                         eState = PropertyState_DEFAULT_VALUE;
                     }
diff --git a/sd/source/ui/func/fuconstr.cxx b/sd/source/ui/func/fuconstr.cxx
index 3f3085b60d20..4db1f4042dc9 100644
--- a/sd/source/ui/func/fuconstr.cxx
+++ b/sd/source/ui/func/fuconstr.cxx
@@ -393,7 +393,7 @@ void FuConstruct::SetStyleSheet( SfxItemSet& rAttr, 
SdrObject* pObj,
                 model::ThemeColorType eColorType = 
model::ThemeColorType::Accent1;
                 Color aColor = pTheme->GetColor(eColorType);
                 XFillColorItem aFillColorItem("", aColor);
-                aFillColorItem.GetThemeColor().setType(eColorType);
+                aFillColorItem.getComplexColor().setSchemeColor(eColorType);
                 aAttr.Put(aFillColorItem);
 
                 aAttr.Put(XLineStyleItem(css::drawing::LineStyle_SOLID));
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 6e3d664c708f..9d41ea6d8c5f 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -602,22 +602,24 @@ public:
             if (pColorItem)
             {
                 XFillColorItem aColorItem(*pColorItem);
-                aColorItem.GetThemeColor().clearTransformations();
+                model::ComplexColor aComplexColor = 
aColorItem.getComplexColor();
+
                 if (pArgs->GetItemState(SID_ATTR_COLOR_THEME_INDEX, false, 
&pItem) == SfxItemState::SET)
                 {
                     auto pIntItem = static_cast<const SfxInt16Item*>(pItem);
-                    
aColorItem.GetThemeColor().setType(model::convertToThemeColorType(pIntItem->GetValue()));
+                    
aComplexColor.setSchemeColor(model::convertToThemeColorType(pIntItem->GetValue()));
                 }
                 if (pArgs->GetItemState(SID_ATTR_COLOR_LUM_MOD, false, &pItem) 
== SfxItemState::SET)
                 {
                     auto pIntItem = static_cast<const SfxInt16Item*>(pItem);
-                    
aColorItem.GetThemeColor().addTransformation({model::TransformationType::LumMod,
 pIntItem->GetValue()});
+                    
aComplexColor.addTransformation({model::TransformationType::LumMod, 
pIntItem->GetValue()});
                 }
                 if (pArgs->GetItemState(SID_ATTR_COLOR_LUM_OFF, false, &pItem) 
== SfxItemState::SET)
                 {
                     auto pIntItem = static_cast<const SfxInt16Item*>(pItem);
-                    
aColorItem.GetThemeColor().addTransformation({model::TransformationType::LumOff,
 pIntItem->GetValue()});
+                    
aComplexColor.addTransformation({model::TransformationType::LumOff, 
pIntItem->GetValue()});
                 }
+                aColorItem.setComplexColor(aComplexColor);
                 pArgs->Put(aColorItem);
             }
         }
diff --git a/svx/qa/unit/styles.cxx b/svx/qa/unit/styles.cxx
index 3a4aff375fc7..de118bf2da39 100644
--- a/svx/qa/unit/styles.cxx
+++ b/svx/qa/unit/styles.cxx
@@ -13,7 +13,7 @@
 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
 #include <com/sun/star/drawing/XMasterPageTarget.hpp>
 #include <com/sun/star/text/XTextRange.hpp>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 
 using namespace ::com::sun::star;
 
@@ -75,30 +75,28 @@ CPPUNIT_TEST_FIXTURE(Test, testThemeChange)
 
     // The theme color of this filled shape is set by the PPTX import:
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xShape4->getPropertyValue("FillColorThemeReference") 
>>= xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xShape4->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
     }
     uno::Reference<beans::XPropertySet> 
xShape5(xDrawPageShapes->getByIndex(5), uno::UNO_QUERY);
     // Blue, lighter.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0xb4c7e7), 
GetShapeFillColor(xShape5));
     // The theme index, and effects (lum mod, lum off) are set by the PPTX 
import:
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xShape5->getPropertyValue("FillColorThemeReference") 
>>= xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xShape5->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod,
-                             aThemeColor.getTransformations()[0].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aThemeColor.getTransformations()[0].mnValue);
+                             aComplexColor.getTransformations()[0].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(4000), 
aComplexColor.getTransformations()[0].mnValue);
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumOff,
-                             aThemeColor.getTransformations()[1].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aThemeColor.getTransformations()[1].mnValue);
+                             aComplexColor.getTransformations()[1].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(6000), 
aComplexColor.getTransformations()[1].mnValue);
     }
     // When changing the master slide of slide 1 to use the theme of the 
second master slide:
     uno::Reference<drawing::XMasterPageTarget> xDrawPage2(
diff --git a/svx/qa/unit/xoutdev.cxx b/svx/qa/unit/xoutdev.cxx
index 6cd68a0c8172..800c709770de 100644
--- a/svx/qa/unit/xoutdev.cxx
+++ b/svx/qa/unit/xoutdev.cxx
@@ -19,7 +19,7 @@
 #include <vcl/graphicfilter.hxx>
 #include <svx/xoutbmp.hxx>
 #include <vcl/filter/PDFiumLibrary.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 
 using namespace com::sun::star;
 
@@ -103,28 +103,27 @@ CPPUNIT_TEST_FIXTURE(XOutdevTest, 
testFillColorThemeUnoApi)
     uno::Reference<beans::XPropertySet> xShape(xPage->getByIndex(0), 
uno::UNO_QUERY);
     // Set theme color
     {
-        model::ThemeColor aThemeColor;
-        aThemeColor.setType(model::ThemeColorType::Accent1);
-        aThemeColor.addTransformation({ model::TransformationType::LumMod, 
2000 });
-        aThemeColor.addTransformation({ model::TransformationType::LumOff, 
8000 });
-        xShape->setPropertyValue("FillColorThemeReference",
-                                 
uno::Any(model::theme::createXThemeColor(aThemeColor)));
+        model::ComplexColor aComplexColor;
+        aComplexColor.setSchemeColor(model::ThemeColorType::Accent1);
+        aComplexColor.addTransformation({ model::TransformationType::LumMod, 
2000 });
+        aComplexColor.addTransformation({ model::TransformationType::LumOff, 
8000 });
+        xShape->setPropertyValue("FillComplexColor",
+                                 
uno::Any(model::color::createXComplexColor(aComplexColor)));
     }
 
     // Then make sure the value we read back is the expected one:
     {
-        uno::Reference<util::XThemeColor> xThemeColor;
-        CPPUNIT_ASSERT(xShape->getPropertyValue("FillColorThemeReference") >>= 
xThemeColor);
-        CPPUNIT_ASSERT(xThemeColor.is());
-        model::ThemeColor aThemeColor;
-        model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
-        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aThemeColor.getType());
+        uno::Reference<util::XComplexColor> xComplexColor;
+        CPPUNIT_ASSERT(xShape->getPropertyValue("FillComplexColor") >>= 
xComplexColor);
+        CPPUNIT_ASSERT(xComplexColor.is());
+        auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
+        CPPUNIT_ASSERT_EQUAL(model::ThemeColorType::Accent1, 
aComplexColor.getSchemeType());
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumMod,
-                             aThemeColor.getTransformations()[0].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(2000), 
aThemeColor.getTransformations()[0].mnValue);
+                             aComplexColor.getTransformations()[0].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(2000), 
aComplexColor.getTransformations()[0].mnValue);
         CPPUNIT_ASSERT_EQUAL(model::TransformationType::LumOff,
-                             aThemeColor.getTransformations()[1].meType);
-        CPPUNIT_ASSERT_EQUAL(sal_Int16(8000), 
aThemeColor.getTransformations()[1].mnValue);
+                             aComplexColor.getTransformations()[1].meType);
+        CPPUNIT_ASSERT_EQUAL(sal_Int16(8000), 
aComplexColor.getTransformations()[1].mnValue);
     }
 }
 
diff --git a/svx/sdi/svxitems.sdi b/svx/sdi/svxitems.sdi
index f21f977384c7..eabb753f647a 100644
--- a/svx/sdi/svxitems.sdi
+++ b/svx/sdi/svxitems.sdi
@@ -172,8 +172,8 @@ item BOOL                   SvxAutoKernItem;
 
 struct SvxColor
 {
-    INT32  Color              MID_COLOR_RGB;
-    String ThemeReferenceJSON MID_COLOR_THEME_REFERENCE_JSON;
+    INT32  Color            MID_COLOR_RGB;
+    String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
 };
 item SvxColor SvxColorItem;
 
diff --git a/svx/source/dialog/ThemeColorValueSet.cxx 
b/svx/source/dialog/ThemeColorValueSet.cxx
index aa0abe0bad66..d33e2fbc85e1 100644
--- a/svx/source/dialog/ThemeColorValueSet.cxx
+++ b/svx/source/dialog/ThemeColorValueSet.cxx
@@ -8,7 +8,7 @@
  */
 
 #include <svx/dialog/ThemeColorValueSet.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <vcl/event.hxx>
 
 namespace svx
diff --git a/svx/source/dialog/ThemeDialog.cxx 
b/svx/source/dialog/ThemeDialog.cxx
index 68e2eceeee1c..ce88b2ef4b79 100644
--- a/svx/source/dialog/ThemeDialog.cxx
+++ b/svx/source/dialog/ThemeDialog.cxx
@@ -9,7 +9,6 @@
 
 #include <svx/dialog/ThemeDialog.hxx>
 #include <svx/dialog/ThemeColorEditDialog.hxx>
-#include <docmodel/theme/ThemeColor.hxx>
 #include <docmodel/theme/ColorSet.hxx>
 #include <docmodel/theme/Theme.hxx>
 #include <svx/ColorSets.hxx>
diff --git a/svx/source/table/cell.cxx b/svx/source/table/cell.cxx
index d1dbd0f8088f..8c0d63e64e43 100644
--- a/svx/source/table/cell.cxx
+++ b/svx/source/table/cell.cxx
@@ -1474,17 +1474,18 @@ PropertyState SAL_CALL Cell::getPropertyState( const 
OUString& PropertyName )
                 case XATTR_FILLCOLOR:
                     if (pMap->nMemberId == MID_COLOR_THEME_INDEX)
                     {
-                        const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
-                        if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                        auto const* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
+                        if (pColor->getComplexColor().getType() == 
model::ColorType::Unused ||
+                            pColor->getComplexColor().getSchemeType() == 
model::ThemeColorType::Unknown)
                         {
                             eState = PropertyState_DEFAULT_VALUE;
                         }
                     }
                     else if (pMap->nMemberId == MID_COLOR_LUM_MOD)
                     {
-                        const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
+                        auto const* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
                         sal_Int16 nLumMod = 10000;
-                        for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                        for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                         {
                             if (rTransform.meType == 
model::TransformationType::LumMod)
                                 nLumMod = rTransform.mnValue;
@@ -1496,9 +1497,9 @@ PropertyState SAL_CALL Cell::getPropertyState( const 
OUString& PropertyName )
                     }
                     else if (pMap->nMemberId == MID_COLOR_LUM_OFF)
                     {
-                        const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
+                        auto const* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
                         sal_Int16 nLumOff = 0;
-                        for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                        for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                         {
                             if (rTransform.meType == 
model::TransformationType::LumOff)
                                 nLumOff = rTransform.mnValue;
@@ -1508,20 +1509,20 @@ PropertyState SAL_CALL Cell::getPropertyState( const 
OUString& PropertyName )
                             eState = PropertyState_DEFAULT_VALUE;
                         }
                     }
-                    else if (pMap->nMemberId == MID_COLOR_THEME_REFERENCE)
+                    else if (pMap->nMemberId == MID_COMPLEX_COLOR)
                     {
-                        const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
-                        if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                        auto const* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
+                        if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                         {
                             eState = PropertyState_DEFAULT_VALUE;
                         }
                     }
                     break;
                 case XATTR_LINECOLOR:
-                    if (pMap->nMemberId == MID_COLOR_THEME_REFERENCE)
+                    if (pMap->nMemberId == MID_COMPLEX_COLOR)
                     {
                         auto const* pColor = 
rSet.GetItem<XLineColorItem>(pMap->nWID);
-                        if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                        if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                         {
                             eState = PropertyState_DEFAULT_VALUE;
                         }
diff --git a/svx/source/tbxctrls/PaletteManager.cxx 
b/svx/source/tbxctrls/PaletteManager.cxx
index 314814e9dc7e..a6c489fffda0 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -41,8 +41,8 @@
 #include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/util/XURLTransformer.hpp>
 #include <com/sun/star/util/URLTransformer.hpp>
-#include <docmodel/theme/ThemeColor.hxx>
-#include <docmodel/theme/ThemeColorJSON.hxx>
+#include <docmodel/color/ComplexColor.hxx>
+#include <docmodel/color/ComplexColorJSON.hxx>
 #include <editeng/colritem.hxx>
 #include <svx/svxids.hrc>
 #include <editeng/memberids.h>
@@ -446,17 +446,17 @@ void PaletteManager::DispatchColorCommand(const OUString& 
aCommand, const svx::N
 
     if (rColor.m_nThemeIndex != -1)
     {
-        model::ThemeColor aThemeColor;
-        
aThemeColor.setType(model::convertToThemeColorType(rColor.m_nThemeIndex));
+        model::ComplexColor aComplexColor;
+        
aComplexColor.setSchemeColor(model::convertToThemeColorType(rColor.m_nThemeIndex));
         if (rColor.m_nLumMod != 10000)
-            aThemeColor.addTransformation({model::TransformationType::LumMod, 
rColor.m_nLumMod});
+            
aComplexColor.addTransformation({model::TransformationType::LumMod, 
rColor.m_nLumMod});
         if (rColor.m_nLumMod != 0)
-            aThemeColor.addTransformation({model::TransformationType::LumOff, 
rColor.m_nLumOff});
+            
aComplexColor.addTransformation({model::TransformationType::LumOff, 
rColor.m_nLumOff});
 
         uno::Any aAny;
-        aAny <<= OStringToOUString(model::theme::convertToJSON(aThemeColor), 
RTL_TEXTENCODING_UTF8);
+        aAny <<= OStringToOUString(model::color::convertToJSON(aComplexColor), 
RTL_TEXTENCODING_UTF8);
 
-        aArgs.push_back(comphelper::makePropertyValue(aObj.GetURLPath() + 
".ThemeReferenceJSON", aAny));
+        aArgs.push_back(comphelper::makePropertyValue(aObj.GetURLPath() + 
".ComplexColorJSON", aAny));
     }
 
     URL aTargetURL;
diff --git a/svx/source/theme/ThemeColorChanger.cxx 
b/svx/source/theme/ThemeColorChanger.cxx
index 792f85d3bda9..06d199cc3896 100644
--- a/svx/source/theme/ThemeColorChanger.cxx
+++ b/svx/source/theme/ThemeColorChanger.cxx
@@ -13,14 +13,14 @@
 #include <svx/svdpage.hxx>
 #include <svx/svditer.hxx>
 #include <editeng/unoprnms.hxx>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <docmodel/theme/ColorSet.hxx>
 
 #include <com/sun/star/text/XTextRange.hpp>
 #include <com/sun/star/container/XEnumerationAccess.hpp>
 #include <com/sun/star/container/XEnumeration.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/util/XThemeColor.hpp>
+#include <com/sun/star/util/XComplexColor.hpp>
 
 using namespace css;
 
@@ -34,22 +34,22 @@ namespace
 void updateTextPortionColorSet(model::ColorSet const& rColorSet,
                                const uno::Reference<beans::XPropertySet>& 
xPortion)
 {
-    if (!xPortion->getPropertySetInfo()->hasPropertyByName(
-            UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE))
+    if 
(!xPortion->getPropertySetInfo()->hasPropertyByName(UNO_NAME_EDIT_CHAR_COMPLEX_COLOR))
+    {
         return;
+    }
 
-    uno::Reference<util::XThemeColor> xThemeColor;
-    xPortion->getPropertyValue(UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE) >>= 
xThemeColor;
-    if (!xThemeColor.is())
+    uno::Reference<util::XComplexColor> xComplexColor;
+    xPortion->getPropertyValue(UNO_NAME_EDIT_CHAR_COMPLEX_COLOR) >>= 
xComplexColor;
+    if (!xComplexColor.is())
         return;
 
-    model::ThemeColor aThemeColor;
-    model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
+    auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
 
-    if (aThemeColor.getType() == model::ThemeColorType::Unknown)
+    if (aComplexColor.getSchemeType() == model::ThemeColorType::Unknown)
         return;
 
-    Color aColor = rColorSet.resolveColor(aThemeColor);
+    Color aColor = rColorSet.resolveColor(aComplexColor);
     xPortion->setPropertyValue(UNO_NAME_EDIT_CHAR_COLOR, 
uno::Any(static_cast<sal_Int32>(aColor)));
 }
 
@@ -57,21 +57,20 @@ void updateTextPortionColorSet(model::ColorSet const& 
rColorSet,
 void updateFillColorSet(model::ColorSet const& rColorSet,
                         const uno::Reference<beans::XPropertySet>& xShape)
 {
-    if 
(!xShape->getPropertySetInfo()->hasPropertyByName(UNO_NAME_FILLCOLOR_THEME_REFERENCE))
+    if 
(!xShape->getPropertySetInfo()->hasPropertyByName(UNO_NAME_FILL_COMPLEX_COLOR))
         return;
 
-    uno::Reference<util::XThemeColor> xThemeColor;
-    xShape->getPropertyValue(UNO_NAME_FILLCOLOR_THEME_REFERENCE) >>= 
xThemeColor;
-    if (!xThemeColor.is())
+    uno::Reference<util::XComplexColor> xComplexColor;
+    xShape->getPropertyValue(UNO_NAME_FILL_COMPLEX_COLOR) >>= xComplexColor;
+    if (!xComplexColor.is())
         return;
 
-    model::ThemeColor aThemeColor;
-    model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
+    auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
 
-    if (aThemeColor.getType() == model::ThemeColorType::Unknown)
+    if (aComplexColor.getSchemeType() == model::ThemeColorType::Unknown)
         return;
 
-    Color aColor = rColorSet.resolveColor(aThemeColor);
+    Color aColor = rColorSet.resolveColor(aComplexColor);
     xShape->setPropertyValue(UNO_NAME_FILLCOLOR, 
uno::Any(static_cast<sal_Int32>(aColor)));
 }
 
@@ -79,21 +78,20 @@ void updateFillColorSet(model::ColorSet const& rColorSet,
 void updateLineColorSet(model::ColorSet const& rColorSet,
                         const uno::Reference<beans::XPropertySet>& xShape)
 {
-    if 
(!xShape->getPropertySetInfo()->hasPropertyByName(UNO_NAME_LINECOLOR_THEME_REFERENCE))
+    if 
(!xShape->getPropertySetInfo()->hasPropertyByName(UNO_NAME_LINE_COMPLEX_COLOR))
         return;
 
-    uno::Reference<util::XThemeColor> xThemeColor;
-    xShape->getPropertyValue(UNO_NAME_LINECOLOR_THEME_REFERENCE) >>= 
xThemeColor;
-    if (!xThemeColor.is())
+    uno::Reference<util::XComplexColor> xComplexColor;
+    xShape->getPropertyValue(UNO_NAME_LINE_COMPLEX_COLOR) >>= xComplexColor;
+    if (!xComplexColor.is())
         return;
 
-    model::ThemeColor aThemeColor;
-    model::theme::setFromXThemeColor(aThemeColor, xThemeColor);
+    auto aComplexColor = model::color::getFromXComplexColor(xComplexColor);
 
-    if (aThemeColor.getType() == model::ThemeColorType::Unknown)
+    if (aComplexColor.getSchemeType() == model::ThemeColorType::Unknown)
         return;
 
-    Color aColor = rColorSet.resolveColor(aThemeColor);
+    Color aColor = rColorSet.resolveColor(aComplexColor);
     xShape->setPropertyValue(UNO_NAME_LINECOLOR, 
uno::Any(static_cast<sal_Int32>(aColor)));
 }
 
diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx
index 00a48d272b22..8e1eb6e66597 100644
--- a/svx/source/unodraw/unoprov.cxx
+++ b/svx/source/unodraw/unoprov.cxx
@@ -566,7 +566,7 @@ static o3tl::span<SfxItemPropertyMapEntry const> 
ImplGetSvxControlShapePropertyM
         { UNO_NAME_EDIT_CHAR_COLOR,           0,  
cppu::UnoType<sal_Int32>::get(),        0, MID_COLOR_RGB },
         { UNO_NAME_EDIT_CHAR_COLOR_THEME,     0,  
cppu::UnoType<sal_Int16>::get(),        0, MID_COLOR_THEME_INDEX },
         { UNO_NAME_EDIT_CHAR_COLOR_TINT_OR_SHADE, 0, 
cppu::UnoType<sal_Int16>::get(),     0, MID_COLOR_TINT_OR_SHADE },
-        { UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE, 0,  
cppu::UnoType<css::util::XThemeColor>::get(), 0, MID_COLOR_THEME_REFERENCE },
+        { UNO_NAME_EDIT_CHAR_COMPLEX_COLOR,    0,  
cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_COMPLEX_COLOR },
         { u"CharBackColor",                    0,  
cppu::UnoType<sal_Int32>::get(),        0, 0 },
         { u"CharBackTransparent",              0,  cppu::UnoType<bool>::get(), 
            0, 0 },
         { u"CharRelief",                       0,  
cppu::UnoType<sal_Int16>::get(),        0, 0 },
diff --git a/svx/source/unodraw/unoshap2.cxx b/svx/source/unodraw/unoshap2.cxx
index e4ff92bc3bed..5b33307e80b8 100644
--- a/svx/source/unodraw/unoshap2.cxx
+++ b/svx/source/unodraw/unoshap2.cxx
@@ -608,7 +608,7 @@ const SvxShapeControlPropertyMapping[] =
     { "CharCaseMap", "CharCaseMap" },
     { "CharColorTheme", "CharColorTheme" },
     { "CharColorTintOrShade", "CharColorTintOrShade" },
-    { UNO_NAME_EDIT_CHAR_COLOR_THEME_REFERENCE, "CharColorThemeReference" },
+    { UNO_NAME_EDIT_CHAR_COMPLEX_COLOR, "CharComplexColor" },
 };
 
 namespace
diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx
index 9f6a0418b603..4a7679fb7615 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -1958,7 +1958,8 @@ beans::PropertyState SvxShape::_getPropertyState( const 
OUString& PropertyName )
                 if (pMap->nMemberId == MID_COLOR_THEME_INDEX)
                 {
                     const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    if (pColor->getComplexColor().getType() == 
model::ColorType::Unused ||
+                        pColor->getComplexColor().getSchemeType() == 
model::ThemeColorType::Unknown)
                     {
                         eState = beans::PropertyState_DEFAULT_VALUE;
                     }
@@ -1967,7 +1968,7 @@ beans::PropertyState SvxShape::_getPropertyState( const 
OUString& PropertyName )
                 {
                     const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
                     sal_Int16 nLumMod = 10000;
-                    for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                    for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                     {
                         if (rTransform.meType == 
model::TransformationType::LumMod)
                             nLumMod = rTransform.mnValue;
@@ -1981,7 +1982,7 @@ beans::PropertyState SvxShape::_getPropertyState( const 
OUString& PropertyName )
                 {
                     const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
                     sal_Int16 nLumOff = 0;
-                    for (auto const& rTransform : 
pColor->GetThemeColor().getTransformations())
+                    for (auto const& rTransform : 
pColor->getComplexColor().getTransformations())
                     {
                         if (rTransform.meType == 
model::TransformationType::LumOff)
                             nLumOff = rTransform.mnValue;
@@ -1991,20 +1992,20 @@ beans::PropertyState SvxShape::_getPropertyState( const 
OUString& PropertyName )
                         eState = beans::PropertyState_DEFAULT_VALUE;
                     }
                 }
-                else if (pMap->nMemberId == MID_COLOR_THEME_REFERENCE)
+                else if (pMap->nMemberId == MID_COMPLEX_COLOR)
                 {
-                    const XFillColorItem* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    auto const* pColor = 
rSet.GetItem<XFillColorItem>(pMap->nWID);
+                    if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                     {
                         eState = beans::PropertyState_DEFAULT_VALUE;
                     }
                 }
                 break;
             case XATTR_LINECOLOR:
-                if (pMap->nMemberId == MID_COLOR_THEME_REFERENCE)
+                if (pMap->nMemberId == MID_COMPLEX_COLOR)
                 {
                     auto const* pColor = 
rSet.GetItem<XLineColorItem>(pMap->nWID);
-                    if (pColor->GetThemeColor().getType() == 
model::ThemeColorType::Unknown)
+                    if (pColor->getComplexColor().getType() == 
model::ColorType::Unused)
                     {
                         eState = beans::PropertyState_DEFAULT_VALUE;
                     }
diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx
index 24807388535f..9a3567430278 100644
--- a/svx/source/xoutdev/xattr.cxx
+++ b/svx/source/xoutdev/xattr.cxx
@@ -36,7 +36,7 @@
 #include <o3tl/any.hxx>
 #include <svl/itempool.hxx>
 #include <editeng/memberids.h>
-#include <docmodel/uno/UnoThemeColor.hxx>
+#include <docmodel/uno/UnoComplexColor.hxx>
 #include <tools/mapunit.hxx>
 #include <tools/UnitConversion.hxx>
 #include <osl/diagnose.h>
@@ -282,7 +282,7 @@ XColorItem::XColorItem(TypedWhichId<XColorItem> _nWhich, 
const Color& rTheColor)
 XColorItem::XColorItem(const XColorItem& rItem) :
     NameOrIndex(rItem),
     aColor(rItem.aColor),
-    maThemeColor(rItem.maThemeColor)
+    maComplexColor(rItem.maComplexColor)
 {
 }
 
@@ -295,7 +295,7 @@ bool XColorItem::operator==(const SfxPoolItem& rItem) const
 {
     return ( NameOrIndex::operator==(rItem) &&
             static_cast<const XColorItem&>(rItem).aColor == aColor ) &&
-            static_cast<const XColorItem&>(rItem).maThemeColor == maThemeColor;
+            static_cast<const XColorItem&>(rItem).maComplexColor == 
maComplexColor;
 }
 
 const Color& XColorItem::GetColorValue() const
@@ -336,12 +336,12 @@ void XColorItem::dumpAsXml(xmlTextWriterPtr pWriter) const
 
     NameOrIndex::dumpAsXml(pWriter);
 
-    (void)xmlTextWriterStartElement(pWriter, BAD_CAST("theme-color"));
+    (void)xmlTextWriterStartElement(pWriter, BAD_CAST("complex-color"));
 
-    (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("theme-index"),
-                                      
BAD_CAST(OString::number(sal_Int16(maThemeColor.getType())).getStr()));
+    (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("scheme-index"),
+                                      
BAD_CAST(OString::number(sal_Int16(maComplexColor.getSchemeType())).getStr()));
 
-    for (auto const& rTransform : maThemeColor.getTransformations())
+    for (auto const& rTransform : maComplexColor.getTransformations())
     {
         (void)xmlTextWriterStartElement(pWriter, BAD_CAST("transformation"));
         (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("type"),
@@ -996,10 +996,10 @@ bool XLineColorItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 nMemberId) const
     nMemberId &= ~CONVERT_TWIPS;
     switch (nMemberId)
     {
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR:
         {
-            auto xThemeColor = 
model::theme::createXThemeColor(GetThemeColor());
-            rVal <<= xThemeColor;
+            auto xComplexColor = 
model::color::createXComplexColor(getComplexColor());
+            rVal <<= xComplexColor;
             break;
         }
         default:
@@ -1016,12 +1016,12 @@ bool XLineColorItem::PutValue( const css::uno::Any& 
rVal, sal_uInt8 nMemberId)
     nMemberId &= ~CONVERT_TWIPS;
     switch(nMemberId)
     {
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR:
         {
-            css::uno::Reference<css::util::XThemeColor> xThemeColor;
-            if (!(rVal >>= xThemeColor))
+            css::uno::Reference<css::util::XComplexColor> xComplexColor;
+            if (!(rVal >>= xComplexColor))
                 return false;
-            model::theme::setFromXThemeColor(GetThemeColor(), xThemeColor);
+            setComplexColor(model::color::getFromXComplexColor(xComplexColor));
         }
         break;
         default:
@@ -1954,13 +1954,13 @@ bool XFillColorItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 nMemberId ) cons
     {
         case MID_COLOR_THEME_INDEX:
         {
-            rVal <<= sal_Int16(GetThemeColor().getType());
+            rVal <<= sal_Int16(getComplexColor().getSchemeType());
             break;
         }
         case MID_COLOR_LUM_MOD:
         {
             sal_Int16 nValue = 10000;
-            for (auto const& rTransform : GetThemeColor().getTransformations())
+            for (auto const& rTransform : 
getComplexColor().getTransformations())
             {
                 if (rTransform.meType == model::TransformationType::LumMod)
                     nValue = rTransform.mnValue;
@@ -1971,7 +1971,7 @@ bool XFillColorItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 nMemberId ) cons
         case MID_COLOR_LUM_OFF:
         {
             sal_Int16 nValue = 0;
-            for (auto const& rTransform : GetThemeColor().getTransformations())
+            for (auto const& rTransform : 
getComplexColor().getTransformations())
             {
                 if (rTransform.meType == model::TransformationType::LumOff)
                     nValue = rTransform.mnValue;
@@ -1979,10 +1979,10 @@ bool XFillColorItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 nMemberId ) cons
             rVal <<= nValue;
             break;
         }
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR:
         {
-            auto xThemeColor = 
model::theme::createXThemeColor(GetThemeColor());
-            rVal <<= xThemeColor;
+            auto xComplexColor = 
model::color::createXComplexColor(getComplexColor());
+            rVal <<= xComplexColor;
             break;
         }
         default:
@@ -2005,16 +2005,16 @@ bool XFillColorItem::PutValue( const css::uno::Any& 
rVal, sal_uInt8 nMemberId )
             sal_Int16 nIndex = -1;
             if (!(rVal >>= nIndex))
                 return false;
-            GetThemeColor().setType(model::convertToThemeColorType(nIndex));
-            break;
+            
getComplexColor().setSchemeColor(model::convertToThemeColorType(nIndex));
         }
+        break;
         case MID_COLOR_LUM_MOD:
         {
             sal_Int16 nLumMod = 10000;
             if (!(rVal >>= nLumMod))
                 return false;
-            
GetThemeColor().removeTransformations(model::TransformationType::LumMod);
-            
GetThemeColor().addTransformation({model::TransformationType::LumMod, nLumMod});
+            
getComplexColor().removeTransformations(model::TransformationType::LumMod);
+            
getComplexColor().addTransformation({model::TransformationType::LumMod, 
nLumMod});
         }
         break;
         case MID_COLOR_LUM_OFF:
@@ -2022,16 +2022,16 @@ bool XFillColorItem::PutValue( const css::uno::Any& 
rVal, sal_uInt8 nMemberId )
             sal_Int16 nLumOff = 0;
             if (!(rVal >>= nLumOff))
                 return false;
-            
GetThemeColor().removeTransformations(model::TransformationType::LumOff);
-            
GetThemeColor().addTransformation({model::TransformationType::LumOff, nLumOff});
+            
getComplexColor().removeTransformations(model::TransformationType::LumOff);
+            
getComplexColor().addTransformation({model::TransformationType::LumOff, 
nLumOff});
         }
         break;
-        case MID_COLOR_THEME_REFERENCE:
+        case MID_COMPLEX_COLOR:
         {
-            css::uno::Reference<css::util::XThemeColor> xThemeColor;
-            if (!(rVal >>= xThemeColor))
+            css::uno::Reference<css::util::XComplexColor> xComplexColor;
+            if (!(rVal >>= xComplexColor))
                 return false;
-            model::theme::setFromXThemeColor(GetThemeColor(), xThemeColor);
+            setComplexColor(model::color::getFromXComplexColor(xComplexColor));
         }
         break;
         default:
@@ -2041,8 +2041,9 @@ bool XFillColorItem::PutValue( const css::uno::Any& rVal, 
sal_uInt8 nMemberId )
                 return false;
 
             SetColorValue( nValue );
-            break;
+
         }
+        break;
     }
     return true;
 }
diff --git a/sw/qa/core/theme/ThemeTest.cxx b/sw/qa/core/theme/ThemeTest.cxx
index f76460eb6b98..832dc11dc267 100644
--- a/sw/qa/core/theme/ThemeTest.cxx
+++ b/sw/qa/core/theme/ThemeTest.cxx
@@ -16,7 +16,7 @@
 #include <drawdoc.hxx>

... etc. - the rest is truncated

Reply via email to