writerfilter/source/dmapper/GraphicImport.cxx |    5 ++
 writerfilter/source/ooxml/model.xml           |   52 +++++++++++++++++++++++++-
 2 files changed, 55 insertions(+), 2 deletions(-)

New commits:
commit f876c8a442977454a29377a703dc1cf630158d00
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Tue Jan 28 10:34:29 2014 +0100

    DOCX import: handle wp14:sizeRelV and wp14:pctHeight for Writer TextFrames
    
    Change-Id: I1744cabf426af36483280df9ca5c09e7783fe210

diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index 3dc61ba..29300cd 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 b6b4597..c0961f4 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"/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to