summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-01-28 10:34:29 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-01-28 10:49:00 +0100
commitf876c8a442977454a29377a703dc1cf630158d00 (patch)
treed5339937f79059a4b48e3f315bce9849e5a94bb2 /writerfilter/source
parent0583c889c3af30e7f569127827cdb77b6c4770bd (diff)
DOCX import: handle wp14:sizeRelV and wp14:pctHeight for Writer TextFrames
Change-Id: I1744cabf426af36483280df9ca5c09e7783fe210
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx5
-rw-r--r--writerfilter/source/ooxml/model.xml52
2 files changed, 55 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 3dc61baef0c5..29300cd4116b 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -824,6 +824,7 @@ void GraphicImport::lcl_sprm(Sprm & rSprm)
case NS_ooxml::LN_wps_wsp:
case NS_ooxml::LN_wpg_wgp:
case NS_ooxml::LN_sizeRelH_sizeRelH:
+ case NS_ooxml::LN_sizeRelV_sizeRelV:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
@@ -886,6 +887,7 @@ void GraphicImport::lcl_sprm(Sprm & rSprm)
}
break;
case NS_ooxml::LN_CT_SizeRelH_pctWidth:
+ case NS_ooxml::LN_CT_SizeRelV_pctHeight:
if (m_xShape.is() && !m_pImpl->m_rPositivePercentages.empty())
{
sal_Int16 nPositivePercentage = m_pImpl->m_rPositivePercentages.front().toInt32() / 1000;
@@ -895,7 +897,8 @@ void GraphicImport::lcl_sprm(Sprm & rSprm)
if (xServiceInfo->supportsService("com.sun.star.text.TextFrame"))
{
uno::Reference<beans::XPropertySet> xPropertySet(m_xShape, uno::UNO_QUERY);
- xPropertySet->setPropertyValue("RelativeWidth", uno::makeAny(nPositivePercentage));
+ OUString aProperty = nSprmId == NS_ooxml::LN_CT_SizeRelH_pctWidth ? OUString("RelativeWidth") : OUString("RelativeHeight");
+ xPropertySet->setPropertyValue(aProperty, uno::makeAny(nPositivePercentage));
}
}
break;
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index b6b4597b9dc1..c0961f4c30f9 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -5234,6 +5234,7 @@
</namespace>
<namespace name="wp14">
<start name="sizeRelH"/>
+ <start name="sizeRelV"/>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="ST_SizeRelFromH">
<choice>
@@ -5245,6 +5246,16 @@
<value>outsideMargin</value>
</choice>
</define>
+ <define name="ST_SizeRelFromV">
+ <choice>
+ <value>margin</value>
+ <value>page</value>
+ <value>topMargin</value>
+ <value>bottomMargin</value>
+ <value>insideMargin</value>
+ <value>outsideMargin</value>
+ </choice>
+ </define>
<define name="CT_SizeRelH">
<element name="pctWidth">
<ref name="ST_PositivePercentage"/>
@@ -5253,11 +5264,24 @@
<ref name="ST_SizeRelFromH"/>
</attribute>
</define>
+ <define name="CT_SizeRelV">
+ <element name="pctHeight">
+ <ref name="ST_PositivePercentage"/>
+ </element>
+ <attribute name="relativeFrom">
+ <ref name="ST_SizeRelFromV"/>
+ </attribute>
+ </define>
<define name="sizeRelH">
<element name="sizeRelH">
<ref name="CT_SizeRelH"/>
</element>
</define>
+ <define name="sizeRelV">
+ <element name="sizeRelV">
+ <ref name="CT_SizeRelV"/>
+ </element>
+ </define>
</grammar>
<resource name="ST_SizeRelFromH" resource="List" generated="yes">
<value name="margin" tokenid="ooxml:ST_SizeRelFromH_margin">margin</value>
@@ -5267,13 +5291,28 @@
<value name="insideMargin" tokenid="ooxml:ST_SizeRelFromH_insideMargin">insideMargin</value>
<value name="outsideMargin" tokenid="ooxml:ST_SizeRelFromH_outsideMargin">outsideMargin</value>
</resource>
+ <resource name="ST_SizeRelFromV" resource="List" generated="yes">
+ <value name="margin" tokenid="ooxml:ST_SizeRelFromV_margin">margin</value>
+ <value name="page" tokenid="ooxml:ST_SizeRelFromV_page">page</value>
+ <value name="topMargin" tokenid="ooxml:ST_SizeRelFromV_topMargin">topMargin</value>
+ <value name="bottomMargin" tokenid="ooxml:ST_SizeRelFromV_bottomMargin">bottomMargin</value>
+ <value name="insideMargin" tokenid="ooxml:ST_SizeRelFromV_insideMargin">insideMargin</value>
+ <value name="outsideMargin" tokenid="ooxml:ST_SizeRelFromV_outsideMargin">outsideMargin</value>
+ </resource>
<resource name="CT_SizeRelH" resource="Properties" tag="shape">
<element name="pctWidth" tokenid="ooxml:CT_SizeRelH_pctWidth"/>
<attribute name="relativeFrom" tokenid="ooxml:CT_SizeRelH_relativeFrom"/>
</resource>
+ <resource name="CT_SizeRelV" resource="Properties" tag="shape">
+ <element name="pctHeight" tokenid="ooxml:CT_SizeRelV_pctHeight"/>
+ <attribute name="relativeFrom" tokenid="ooxml:CT_SizeRelV_relativeFrom"/>
+ </resource>
<resource name="sizeRelH" resource="Properties" tag="shape">
<element name="sizeRelH" tokenid="ooxml:sizeRelH_sizeRelH"/>
</resource>
+ <resource name="sizeRelV" resource="Properties" tag="shape">
+ <element name="sizeRelV" tokenid="ooxml:sizeRelV_sizeRelV"/>
+ </resource>
</namespace>
<namespace name="dml-shapeGeometry" file="dml-shapeGeometry.rng" todo="ignore">
<grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
@@ -6461,6 +6500,11 @@
<ref name="BUILT_IN_ANY_TYPE"/>
</element>
</optional>
+ <optional>
+ <element name="wp14:sizeRelV">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
</group>
<optional>
<attribute name="distT">
@@ -6789,6 +6833,11 @@
<ref name="BUILT_IN_ANY_TYPE"/>
</element>
</optional>
+ <optional>
+ <element name="wp14:sizeRelV">
+ <ref name="BUILT_IN_ANY_TYPE"/>
+ </element>
+ </optional>
</group>
<optional>
<attribute name="distT">
@@ -6884,6 +6933,7 @@
<element name="cNvGraphicFramePr" tokenid="ooxml:CT_Inline_cNvGraphicFramePr"/>
<element name="a:graphic" tokenid="ooxml:CT_Inline_a_graphic"/>
<element name="wp14:sizeRelH" tokenid="ooxml:CT_Inline_wp14_sizeRelH"/>
+ <element name="wp14:sizeRelV" tokenid="ooxml:CT_Inline_wp14_sizeRelV"/>
<attribute name="distT" tokenid="ooxml:CT_Inline_distT"/>
<attribute name="distB" tokenid="ooxml:CT_Inline_distB"/>
<attribute name="distL" tokenid="ooxml:CT_Inline_distL"/>
@@ -6981,7 +7031,7 @@
<element name="docPr" tokenid="ooxml:CT_Anchor_docPr"/>
<element name="cNvGraphicFramePr" tokenid="ooxml:CT_Anchor_cNvGraphicFramePr"/>
<element name="a:graphic" tokenid="ooxml:CT_Anchor_a_graphic"/>
- <element name="wp14:sizeRelH" tokenid="ooxml:CT_Anchor_wp14_sizeRelH"/>
+ <element name="wp14:sizeRelV" tokenid="ooxml:CT_Anchor_wp14_sizeRelV"/>
<attribute name="distT" tokenid="ooxml:CT_Anchor_distT"/>
<attribute name="distB" tokenid="ooxml:CT_Anchor_distB"/>
<attribute name="distL" tokenid="ooxml:CT_Anchor_distL"/>