summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-10-01 12:53:27 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-10-01 13:02:47 +0200
commit5bab5aae165158621dcf740be9bee9fca808aa9d (patch)
tree97410b7f35c937fb3a89db6394750f864324fb04 /oox
parent66df16469a56e0cae78ce768b2d4873f33223cec (diff)
DOCX drawingML import: handle char color from theme for shape text
When we import table styles, we apply that as direct formatting, in case there is no real direct formatting, see lcl_ApplyCellProperties() in the sw UNO implementation. We can do the same here: in case there is no other formatting, then apply the char color from the WPS theme, that will give us the expected result. Change-Id: Ic8e6afc09167f7924a11ab0b445351075f16738e
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/shape.cxx12
-rw-r--r--oox/source/shape/WpsContext.cxx13
2 files changed, 24 insertions, 1 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 96b9129d3536..1aa23f78a08e 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1013,10 +1013,10 @@ Reference< XShape > Shape::createAndInsert(
else if( getTextBody() )
getTextBody()->getTextProperties().pushVertSimulation();
+ PropertySet aPropertySet(mxShape);
if ( !bUseRotationTransform && mnRotation != 0 )
{
// use the same logic for rotation from VML exporter (SimpleShape::implConvertAndInsert at vmlshape.cxx)
- PropertySet aPropertySet( mxShape );
aPropertySet.setAnyProperty( PROP_RotateAngle, makeAny( sal_Int32( NormAngle360( mnRotation / -600 ) ) ) );
aPropertySet.setAnyProperty( PROP_HoriOrientPosition, makeAny( maPosition.X ) );
aPropertySet.setAnyProperty( PROP_VertOrientPosition, makeAny( maPosition.Y ) );
@@ -1042,6 +1042,16 @@ Reference< XShape > Shape::createAndInsert(
getTextBody()->insertAt( rFilterBase, xText, xAt, aCharStyleProperties, mpMasterTextListStyle );
}
}
+ else if (mbTextBox)
+ {
+ // No drawingML text, but WPS text is expected: save the theme
+ // character color on the shape, then.
+ if(const ShapeStyleRef* pFontRef = getShapeStyleRef(XML_fontRef))
+ {
+ sal_Int32 nCharColor = pFontRef->maPhClr.getColor(rGraphicHelper);
+ aPropertySet.setAnyProperty(PROP_CharColor, uno::makeAny(nCharColor));
+ }
+ }
}
if( mxShape.is() )
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index 4d5863873fd5..9e3218e5bfbc 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -111,6 +111,19 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
drawing::TextVerticalAdjust eAdjust = drawingml::GetTextVerticalAdjust(rAttribs.getToken(XML_anchor, XML_t));
xPropertySet->setPropertyValue("TextVerticalAdjust", uno::makeAny(eAdjust));
}
+
+ // Apply character color of the shape to the shape's textbox.
+ uno::Reference<text::XText> xText(mxShape, uno::UNO_QUERY);
+ uno::Reference<text::XTextCursor> xTextCursor = xText->createTextCursor();
+ xTextCursor->gotoStart(false);
+ xTextCursor->gotoEnd(true);
+ const uno::Reference<beans::XPropertyState> xPropertyState(xTextCursor, uno::UNO_QUERY);
+ const beans::PropertyState ePropertyState = xPropertyState->getPropertyState("CharColor");
+ if (ePropertyState == beans::PropertyState_DEFAULT_VALUE)
+ {
+ uno::Reference<beans::XPropertySet> xTextBoxPropertySet(xTextCursor, uno::UNO_QUERY);
+ xTextBoxPropertySet->setPropertyValue("CharColor", xPropertySet->getPropertyValue("CharColor"));
+ }
return this;
}
break;