[Libreoffice-commits] core.git: sw/qa sw/source
Miklos Vajna
vmiklos at collabora.co.uk
Thu Feb 6 09:38:33 PST 2014
dev/null |binary
sw/qa/extras/inc/swmodeltestbase.hxx | 9 ++++++++
sw/qa/extras/ooxmlexport/data/pagerelsize.docx |binary
sw/qa/extras/ooxmlexport/data/rel-size-round.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 20 +++++++++++++++++++
sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 19 ------------------
sw/source/filter/ww8/docxsdrexport.cxx | 23 ++++++++++++++++++++++
7 files changed, 52 insertions(+), 19 deletions(-)
New commits:
commit 62b63d9f4b99713d10021c068005f74694299302
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Thu Feb 6 17:54:01 2014 +0100
DOCX export: write wp14:sizeRelH and wp14:sizeRelV for Writer TextFrames
Change-Id: I16ee2682b6fa8c7b194e442d6dbe1437e7743c60
diff --git a/sw/qa/extras/inc/swmodeltestbase.hxx b/sw/qa/extras/inc/swmodeltestbase.hxx
index d6f7134..7a6f951 100644
--- a/sw/qa/extras/inc/swmodeltestbase.hxx
+++ b/sw/qa/extras/inc/swmodeltestbase.hxx
@@ -408,6 +408,15 @@ protected:
return xShape;
}
+ /// Get TextFrame by name
+ uno::Reference<drawing::XShape> getTextFrameByName(OUString aName)
+ {
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xNameAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xShape(xNameAccess->getByName(aName), uno::UNO_QUERY);
+ return xShape;
+ }
+
void header()
{
std::cout << "File tested,Execution Time (ms)" << std::endl;
diff --git a/sw/qa/extras/ooxmlimport/data/pagerelsize.docx b/sw/qa/extras/ooxmlexport/data/pagerelsize.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/pagerelsize.docx
rename to sw/qa/extras/ooxmlexport/data/pagerelsize.docx
diff --git a/sw/qa/extras/ooxmlimport/data/rel-size-round.docx b/sw/qa/extras/ooxmlexport/data/rel-size-round.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/rel-size-round.docx
rename to sw/qa/extras/ooxmlexport/data/rel-size-round.docx
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index a1cfd4c..3c1d9d8 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2524,6 +2524,26 @@ DECLARE_OOXMLEXPORT_TEST(testDrawinglayerPicPos, "drawinglayer-pic-pos.docx")
// This was 1828800.
assertXPath(pXmlDocument, aXPath, "y", "0");
}
+
+DECLARE_OOXMLEXPORT_TEST(testPageRelSize, "pagerelsize.docx")
+{
+ // First textframe: width is relative from page, but not height.
+ uno::Reference<drawing::XShape> xTextFrame = getTextFrameByName("Frame1");
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
+
+ // Second textframe: height is relative from page, but not height.
+ xTextFrame = getTextFrameByName("Text Box 2");
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
+}
+
+DECLARE_OOXMLEXPORT_TEST(testRelSizeRound, "rel-size-round.docx")
+{
+ // This was 9: 9.8 was imported as 9 instead of being rounded to 10.
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(10), getProperty<sal_Int16>(getShape(1), "RelativeHeight"));
+}
+
DECLARE_OOXMLEXPORT_TEST(testShapeThemePreservation, "shape-theme-preservation.docx")
{
xmlDocPtr pXmlDocument = parseExport("word/document.xml");
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 3fbf9ee..91c5ede 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1756,25 +1756,6 @@ DECLARE_OOXMLIMPORT_TEST(testDMLGroupshapeSdt, "dml-groupshape-sdt.docx")
CPPUNIT_ASSERT_EQUAL(OUString("sdt and sdtContent inside groupshape"), uno::Reference<text::XTextRange>(xGroupShape->getByIndex(1), uno::UNO_QUERY)->getString());
}
-DECLARE_OOXMLIMPORT_TEST(testPageRelSize, "pagerelsize.docx")
-{
- // First textframe: width is relative from page, but not height.
- uno::Reference<drawing::XShape> xTextFrame = getShape(1);
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
-
- // Second textframe: height is relative from page, but not height.
- xTextFrame = getShape(2);
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
- CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
-}
-
-DECLARE_OOXMLIMPORT_TEST(testRelSizeRound, "rel-size-round.docx")
-{
- // This was 9: 9.8 was imported as 9 instead of being rounded to 10.
- CPPUNIT_ASSERT_EQUAL(sal_Int16(10), getProperty<sal_Int16>(getShape(1), "RelativeHeight"));
-}
-
DECLARE_OOXMLIMPORT_TEST(testDMLGroupShapeCapitalization, "dml-groupshape-capitalization.docx")
{
// Capitalization inside a group shape was not imported
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index d0deeb5..cd2bd55 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -907,6 +907,29 @@ void DocxSdrExport::writeDMLTextFrame(sw::Frame* pParentFrame, int nAnchorId)
pFS->endElementNS(XML_wps, XML_wsp);
pFS->endElementNS(XML_a, XML_graphicData);
pFS->endElementNS(XML_a, XML_graphic);
+
+ // Relative size of the Text Frame.
+ if (rSize.GetWidthPercent())
+ {
+ pFS->startElementNS(XML_wp14, XML_sizeRelH,
+ XML_relativeFrom, (rSize.GetWidthPercentRelation() == text::RelOrientation::PAGE_FRAME ? "page" : "margin"),
+ FSEND);
+ pFS->startElementNS(XML_wp14, XML_pctWidth, FSEND);
+ pFS->writeEscaped(OUString::number(rSize.GetWidthPercent() * oox::drawingml::PER_PERCENT));
+ pFS->endElementNS(XML_wp14, XML_pctWidth);
+ pFS->endElementNS(XML_wp14, XML_sizeRelH);
+ }
+ if (rSize.GetHeightPercent())
+ {
+ pFS->startElementNS(XML_wp14, XML_sizeRelV,
+ XML_relativeFrom, (rSize.GetHeightPercentRelation() == text::RelOrientation::PAGE_FRAME ? "page" : "margin"),
+ FSEND);
+ pFS->startElementNS(XML_wp14, XML_pctHeight, FSEND);
+ pFS->writeEscaped(OUString::number(rSize.GetHeightPercent() * oox::drawingml::PER_PERCENT));
+ pFS->endElementNS(XML_wp14, XML_pctHeight);
+ pFS->endElementNS(XML_wp14, XML_sizeRelV);
+ }
+
endDMLAnchorInline(&rFrmFmt);
}
More information about the Libreoffice-commits
mailing list