diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2023-05-08 14:09:00 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2023-05-12 05:00:28 +0200 |
commit | 1df0565fb92972bd410e7db85eef1e4bec3fcc31 (patch) | |
tree | 863c5cf54a5941ca84e2d76b68c4e895159d78de /editeng | |
parent | 99a88c9e55872214ce01d89447d18708e47e956b (diff) |
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 <quikee@gmail.com>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/items/textitem.cxx | 53 | ||||
-rw-r--r-- | editeng/source/uno/unotext.cxx | 2 |
2 files changed, 21 insertions, 34 deletions
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 c6a6732ba414..6f78a4a66878 100644 --- a/editeng/source/uno/unotext.cxx +++ b/editeng/source/uno/unotext.cxx @@ -1176,7 +1176,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; |