summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
Diffstat (limited to 'oox')
-rw-r--r--oox/inc/drawingml/textcharacterproperties.hxx3
-rw-r--r--oox/source/drawingml/textcharacterproperties.cxx12
-rw-r--r--oox/source/drawingml/textcharacterpropertiescontext.cxx7
3 files changed, 19 insertions, 3 deletions
diff --git a/oox/inc/drawingml/textcharacterproperties.hxx b/oox/inc/drawingml/textcharacterproperties.hxx
index 2724af43051b..49d4125698a4 100644
--- a/oox/inc/drawingml/textcharacterproperties.hxx
+++ b/oox/inc/drawingml/textcharacterproperties.hxx
@@ -26,6 +26,7 @@
#include <drawingml/textfont.hxx>
#include <drawingml/fillproperties.hxx>
+#include <drawingml/lineproperties.hxx>
namespace oox { class PropertySet; }
@@ -57,6 +58,8 @@ struct TextCharacterProperties
OptValue< bool > moItalic;
OptValue< bool > moUnderlineLineFollowText;
OptValue< bool > moUnderlineFillFollowText;
+ OptValue<LineProperties> moTextOutlineProperties;
+
FillProperties maFillProperties;
/// Set if there was a property set that alters run visually during import
bool mbHasVisualRunProperties;
diff --git a/oox/source/drawingml/textcharacterproperties.cxx b/oox/source/drawingml/textcharacterproperties.cxx
index bd4d051a490b..9200e9666cbf 100644
--- a/oox/source/drawingml/textcharacterproperties.cxx
+++ b/oox/source/drawingml/textcharacterproperties.cxx
@@ -65,6 +65,7 @@ void TextCharacterProperties::assignUsed( const TextCharacterProperties& rSource
moItalic.assignIfUsed( rSourceProps.moItalic );
moUnderlineLineFollowText.assignIfUsed( rSourceProps.moUnderlineLineFollowText );
moUnderlineFillFollowText.assignIfUsed( rSourceProps.moUnderlineFillFollowText );
+ moTextOutlineProperties.assignIfUsed(rSourceProps.moTextOutlineProperties);
maTextEffectsProperties = rSourceProps.maTextEffectsProperties;
maFillProperties.assignUsed( rSourceProps.maFillProperties );
@@ -110,6 +111,17 @@ void TextCharacterProperties::pushToPropMap( PropertyMap& rPropMap, const XmlFil
if ( maFillProperties.moFillType.has() )
{
Color aColor = maFillProperties.getBestSolidColor();
+ // tdf#137438 Emulate text outline color/transparency.
+ // If the outline color dominates, then use it as the text color.
+ if (moTextOutlineProperties.has()
+ && moTextOutlineProperties.get().maLineFill.moFillType.has()
+ && moTextOutlineProperties.get().maLineFill.moFillType.get() != XML_noFill)
+ {
+ Color aLineColor = moTextOutlineProperties.get().maLineFill.getBestSolidColor();
+ sal_Int16 nLineTransparency = aLineColor.getTransparency();
+ if (nLineTransparency < aColor.getTransparency())
+ aColor = aLineColor;
+ }
rPropMap.setProperty(PROP_CharColor, aColor.getColor(rFilter.getGraphicHelper()));
// set color theme index
rPropMap.setProperty(PROP_CharColorTheme, aColor.getSchemeColorIndex());
diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx b/oox/source/drawingml/textcharacterpropertiescontext.cxx
index ce2ac6a4a119..31ad3bee7c9f 100644
--- a/oox/source/drawingml/textcharacterpropertiescontext.cxx
+++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx
@@ -21,6 +21,7 @@
#include <oox/helper/attributelist.hxx>
#include <drawingml/colorchoicecontext.hxx>
+#include <drawingml/linepropertiescontext.hxx>
#include <drawingml/misccontexts.hxx>
#include <drawingml/textcharacterproperties.hxx>
#include <drawingml/texteffectscontext.hxx>
@@ -113,9 +114,9 @@ ContextHandlerRef TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl
switch( aElementToken )
{
-// TODO unsupported yet
-// case A_TOKEN( ln ): // CT_LineProperties
-// return new LinePropertiesContext( getHandler(), rAttribs, maTextOutlineProperties );
+ case A_TOKEN(ln): // CT_LineProperties
+ // TODO still largely unsupported
+ return new LinePropertiesContext(*this, rAttribs, mrTextCharacterProperties.moTextOutlineProperties.use());
// EG_FillProperties
case A_TOKEN( noFill ):
case A_TOKEN( solidFill ):