sw/qa/extras/rtfexport/data/relsize.rtf | 42 ++++++++++++++++++++++++++++ sw/qa/extras/rtfexport/rtfexport.cxx | 9 ++++++ sw/qa/extras/rtfimport/data/relsize.rtf | 42 ---------------------------- sw/qa/extras/rtfimport/rtfimport.cxx | 9 ------ sw/source/filter/ww8/rtfattributeoutput.cxx | 40 ++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 51 deletions(-)
New commits: commit ddecc215614de485ab1b64812cb1b51644cad280 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Mar 27 08:23:18 2014 +0100 RTF export: handle Relative{Height,Width}{,Relation} Change-Id: I16bef12840f45b269de18fdac4c3718ed904e1be diff --git a/sw/qa/extras/rtfimport/data/relsize.rtf b/sw/qa/extras/rtfexport/data/relsize.rtf similarity index 100% rename from sw/qa/extras/rtfimport/data/relsize.rtf rename to sw/qa/extras/rtfexport/data/relsize.rtf diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index 02b2ebb..9251a89 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -602,6 +602,15 @@ DECLARE_RTFEXPORT_TEST(testFdo74709, "fdo74709.rtf") CPPUNIT_ASSERT_EQUAL(sal_Int32(TWIP_TO_MM100(360)), getProperty<sal_Int32>(xCell, "RightBorderDistance")); } +DECLARE_RTFEXPORT_TEST(testRelsize, "relsize.rtf") +{ + uno::Reference<drawing::XShape> xShape = getShape(1); + CPPUNIT_ASSERT_EQUAL(sal_Int16(40), getProperty<sal_Int16>(xShape, "RelativeWidth")); + CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "RelativeWidthRelation")); + CPPUNIT_ASSERT_EQUAL(sal_Int16(20), getProperty<sal_Int16>(xShape, "RelativeHeight")); + CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xShape, "RelativeHeightRelation")); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index 738d1e2..cb19476 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -1619,15 +1619,6 @@ DECLARE_RTFIMPORT_TEST(testDprectAnchor, "dprect-anchor.rtf") CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER, getProperty<text::TextContentAnchorType>(getShape(1), "AnchorType")); } -DECLARE_RTFIMPORT_TEST(testRelsize, "relsize.rtf") -{ - uno::Reference<drawing::XShape> xShape = getShape(1); - CPPUNIT_ASSERT_EQUAL(sal_Int16(40), getProperty<sal_Int16>(xShape, "RelativeWidth")); - CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "RelativeWidthRelation")); - CPPUNIT_ASSERT_EQUAL(sal_Int16(20), getProperty<sal_Int16>(xShape, "RelativeHeight")); - CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xShape, "RelativeHeightRelation")); -} - CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index f9b8e71..2074a06 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -1576,6 +1576,45 @@ void lcl_TextFrameShadow(std::vector< std::pair<OString, OString> >& rFlyPropert rFlyProperties.push_back(std::make_pair<OString, OString>("shadowOffsetY", OString(aOffsetY))); } +void lcl_TextFrameRelativeSize(std::vector< std::pair<OString, OString> >& rFlyProperties, const SwFrmFmt& rFrmFmt) +{ + const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize(); + + // Relative size of the Text Frame. + if (rSize.GetWidthPercent()) + { + rFlyProperties.push_back(std::make_pair<OString, OString>("pctHoriz", OString::number(rSize.GetWidthPercent() * 10))); + + OString aRelation; + switch (rSize.GetWidthPercentRelation()) + { + case text::RelOrientation::PAGE_FRAME: + aRelation = "1"; // page + break; + default: + aRelation = "0"; // margin + break; + } + rFlyProperties.push_back(std::make_pair("sizerelh", aRelation)); + } + if (rSize.GetHeightPercent()) + { + rFlyProperties.push_back(std::make_pair<OString, OString>("pctVert", OString::number(rSize.GetHeightPercent() * 10))); + + OString aRelation; + switch (rSize.GetHeightPercentRelation()) + { + case text::RelOrientation::PAGE_FRAME: + aRelation = "1"; // page + break; + default: + aRelation = "0"; // margin + break; + } + rFlyProperties.push_back(std::make_pair("sizerelv", aRelation)); + } +} + void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const Point& /*rNdTopLeft*/ ) { SAL_INFO("sw.rtf", OSL_THIS_FUNC); @@ -1610,6 +1649,7 @@ void RtfAttributeOutput::OutputFlyFrame_Impl( const sw::Frame& rFrame, const Poi const SwFrmFmt& rFrmFmt = rFrame.GetFrmFmt(); lcl_TextFrameShadow(m_aFlyProperties, rFrmFmt); + lcl_TextFrameRelativeSize(m_aFlyProperties, rFrmFmt); for (size_t i = 0; i < m_aFlyProperties.size(); ++i) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits