summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2023-06-11 00:50:08 +0900
committerMiklos Vajna <vmiklos@collabora.com>2023-06-16 08:18:05 +0200
commit100a896db9f9ec29ec7e132a732afde68c4ba88f (patch)
treee8b82e5fefaf96a2f28bbe50639a9f062331d24b /writerfilter
parent7e6cfbb69356957d40775f030633edcf80ae7f1f (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.cxx42
-rw-r--r--writerfilter/source/dmapper/PropertyIds.cxx1
-rw-r--r--writerfilter/source/dmapper/PropertyIds.hxx1
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