diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2023-06-11 00:50:08 +0900 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2023-06-16 08:18:05 +0200 |
commit | 100a896db9f9ec29ec7e132a732afde68c4ba88f (patch) | |
tree | e8b82e5fefaf96a2f28bbe50639a9f062331d24b /writerfilter | |
parent | 7e6cfbb69356957d40775f030633edcf80ae7f1f (diff) |
ooxml: import and export char underline theme colors
This adds support to import and export char underline theme color
properties.
Change-Id: Ia8948ee5aacd20e0c2b7cbb1b2fdf97fc65c04e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152834
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
(cherry picked from commit 953ef30494661788b2e980ece84b62c653d77321)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152993
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 42 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.cxx | 1 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyIds.hxx | 1 |
3 files changed, 44 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index eecb4d220392..832bb812fd62 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -352,6 +352,48 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_COLOR, uno::Any( nIntValue ) ); } break; + case NS_ooxml::LN_CT_Underline_themeColor: + case NS_ooxml::LN_CT_Underline_themeTint: + case NS_ooxml::LN_CT_Underline_themeShade: + if (m_pImpl->GetTopContext()) + { + uno::Reference<util::XComplexColor> xComplexColor; + model::ComplexColor aComplexColor; + + PropertyMapPtr pTopContext = m_pImpl->GetTopContext(); + std::optional<PropertyMap::Property> aValue; + if (pTopContext && (aValue = pTopContext->getProperty(PROP_CHAR_UNDERLINE_COMPLEX_COLOR))) + { + aValue->second >>= xComplexColor; + if (xComplexColor.is()) + aComplexColor = model::color::getFromXComplexColor(xComplexColor); + } + + if (nName == NS_ooxml::LN_CT_Underline_themeColor) + { + auto eThemeColorType = TDefTableHandler::getThemeColorTypeIndex(nIntValue); + aComplexColor.setSchemeColor(eThemeColorType); + } + else if (nName == NS_ooxml::LN_CT_Underline_themeTint) + { + if (nIntValue > 0) + { + sal_Int16 nTransformedValue = sal_Int16((255.0 - nIntValue) * 10000.0 / 255.0); + aComplexColor.addTransformation({model::TransformationType::Tint, sal_Int16(nTransformedValue)}); + } + } + else if (nName == NS_ooxml::LN_CT_Underline_themeShade) + { + if (nIntValue > 0) + { + sal_Int16 nTransformedValue = sal_Int16((255.0 - nIntValue) * 10000.0 / 255.0); + aComplexColor.addTransformation({model::TransformationType::Shade, sal_Int16(nTransformedValue)}); + } + } + xComplexColor = model::color::createXComplexColor(aComplexColor); + m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_COMPLEX_COLOR, uno::Any(xComplexColor)); + } + break; case NS_ooxml::LN_CT_TabStop_val: if (sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_ST_TabJc_clear) diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx index 24ebfbf1b825..80fec2208122 100644 --- a/writerfilter/source/dmapper/PropertyIds.cxx +++ b/writerfilter/source/dmapper/PropertyIds.cxx @@ -36,6 +36,7 @@ const OUString & getPropertyName( PropertyIds eId ) { PROP_CHAR_RELIEF, u"CharRelief"}, { PROP_CHAR_UNDERLINE, u"CharUnderline"}, { PROP_CHAR_UNDERLINE_COLOR, u"CharUnderlineColor"}, + { PROP_CHAR_UNDERLINE_COMPLEX_COLOR, u"CharUnderlineComplexColor"}, { PROP_CHAR_UNDERLINE_HAS_COLOR, u"CharUnderlineHasColor"}, { PROP_CHAR_WORD_MODE, u"CharWordMode"}, { PROP_CHAR_ESCAPEMENT, u"CharEscapement"}, diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx index e0434413af06..8fbb87a44a16 100644 --- a/writerfilter/source/dmapper/PropertyIds.hxx +++ b/writerfilter/source/dmapper/PropertyIds.hxx @@ -124,6 +124,7 @@ enum PropertyIds ,PROP_CHAR_THEME_COLOR_TINT ,PROP_CHAR_UNDERLINE ,PROP_CHAR_UNDERLINE_COLOR + ,PROP_CHAR_UNDERLINE_COMPLEX_COLOR ,PROP_CHAR_UNDERLINE_HAS_COLOR ,PROP_CHAR_WEIGHT ,PROP_CHAR_WEIGHT_ASIAN |