[Libreoffice-commits] core.git: 3 commits - oox/source sw/qa

Miklos Vajna vmiklos at collabora.co.uk
Mon Jan 20 03:15:56 PST 2014


 oox/source/export/drawingml.cxx                  |   14 +++++++++++++-
 oox/source/export/shapes.cxx                     |    5 ++++-
 sw/qa/extras/ooxmlexport/data/dml-textshape.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx         |   16 ++++++++++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

New commits:
commit 106c82706edc1adc2df8d39d332fd3a3452c5d78
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Jan 20 11:19:01 2014 +0100

    drawingML export: write TextShape outline properties
    
    Change-Id: I3742c960016bbe1d82b58a16d464b329d2612c10

diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index 37faad5..e55c2f3 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -936,6 +936,7 @@ ShapeExport& ShapeExport::WriteTextShape( Reference< XShape > xShape )
     WritePresetShape( "rect" );
     uno::Reference<beans::XPropertySet> xPropertySet(xShape, UNO_QUERY);
     WriteFill(xPropertySet);
+    WriteOutline(xPropertySet);
     WriteBlipFill(xPropertySet, "GraphicURL");
     pFS->endElementNS( mnXmlNamespace, XML_spPr );
 
diff --git a/sw/qa/extras/ooxmlexport/data/dml-textshape.docx b/sw/qa/extras/ooxmlexport/data/dml-textshape.docx
new file mode 100644
index 0000000..e5be42c
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/dml-textshape.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 56d6acb..8d01930 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2469,6 +2469,22 @@ DECLARE_OOXMLEXPORT_TEST(testMsoSpt180, "mso-spt180.docx")
     CPPUNIT_ASSERT_EQUAL(OUString("ooxml-borderCallout1"), aType);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testDmlTextshape, "dml-textshape.docx")
+{
+    uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> xShape(xGroup->getByIndex(1), uno::UNO_QUERY);
+    // This was drawing::FillStyle_NONE.
+    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xShape, "FillStyle"));
+    // This was drawing::LineStyle_NONE.
+    CPPUNIT_ASSERT_EQUAL(drawing::LineStyle_SOLID, getProperty<drawing::LineStyle>(xShape, "LineStyle"));
+
+    xmlDocPtr pXmlDocument = parseExport("word/document.xml");
+    if (!pXmlDocument)
+        return;
+    // This was wrap="none".
+    assertXPath(pXmlDocument, "/w:document/w:body/w:p[2]/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:inline/a:graphic/a:graphicData/wpg:wgp/wps:wsp[2]/wps:bodyPr", "wrap", "square");
+}
+
 DECLARE_OOXMLEXPORT_TEST(testShapeThemePreservation, "shape-theme-preservation.docx")
 {
     xmlDocPtr pXmlDocument = parseExport("word/document.xml");
commit 2d4f0a7d0dd3da34d054ff444e69b10ef015e260
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Jan 20 11:16:24 2014 +0100

    drawingML export: fix TextShape width for DOCX
    
    Change-Id: Ibaf29ed746076fa6ec0bad013cac26debdb2b165

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 6c03b22..2a7d11a 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1396,8 +1396,19 @@ void DrawingML::WriteText( Reference< XInterface > rXIface, bool bBodyPr, bool b
     }
 
     if (bBodyPr)
+    {
+        const char* pWrap = bHasWrap && !bWrap ? "none" : NULL;
+        if (GetDocumentType() == DOCUMENT_DOCX)
+        {
+            // In case of DOCX, if we want to have the same effect as
+            // TextShape's automatic word wrapping, then we need to set
+            // wrapping to square.
+            uno::Reference<lang::XServiceInfo> xServiceInfo(rXIface, uno::UNO_QUERY);
+            if (xServiceInfo.is() && xServiceInfo->supportsService("com.sun.star.drawing.TextShape"))
+                pWrap = "square";
+        }
         mpFS->singleElementNS( (nXmlNamespace ? nXmlNamespace : XML_a), XML_bodyPr,
-                               XML_wrap, bHasWrap && !bWrap ? "none" : NULL,
+                               XML_wrap, pWrap,
                                XML_lIns, (nLeft != DEFLRINS) ? IS( MM100toEMU( nLeft ) ) : NULL,
                                XML_rIns, (nRight != DEFLRINS) ? IS( MM100toEMU( nRight ) ) : NULL,
                                XML_tIns, (nTop != DEFTBINS) ? IS( MM100toEMU( nTop ) ) : NULL,
@@ -1406,6 +1417,7 @@ void DrawingML::WriteText( Reference< XInterface > rXIface, bool bBodyPr, bool b
                                XML_anchorCtr, bHorizontalCenter ? "1" : NULL,
                                XML_vert, sWritingMode,
                                FSEND );
+    }
 
     Reference< XEnumerationAccess > access( xXText, UNO_QUERY );
     if( !access.is() || !bText )
commit 243ce7d73acc070194ecf5bb9f97b8a7cbf87ecd
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Jan 20 10:23:29 2014 +0100

    drawingML export: write TextShape fill properties
    
    Change-Id: Ibe89e86b19d7633e9a0669ff0574173ac4b633c5

diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index cdbe0d6..37faad5 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -934,7 +934,9 @@ ShapeExport& ShapeExport::WriteTextShape( Reference< XShape > xShape )
     pFS->startElementNS( mnXmlNamespace, XML_spPr, FSEND );
     WriteShapeTransformation( xShape, XML_a,0,0,false);
     WritePresetShape( "rect" );
-    WriteBlipFill( Reference< XPropertySet >(xShape, UNO_QUERY ), "GraphicURL" );
+    uno::Reference<beans::XPropertySet> xPropertySet(xShape, UNO_QUERY);
+    WriteFill(xPropertySet);
+    WriteBlipFill(xPropertySet, "GraphicURL");
     pFS->endElementNS( mnXmlNamespace, XML_spPr );
 
     WriteTextBox( xShape, mnXmlNamespace );


More information about the Libreoffice-commits mailing list