Kaydet (Commit) b226383a authored tarafından Mike Kaganski's avatar Mike Kaganski

tdf#116371: export rotation of SwGrfNode

Change-Id: I42620da798a35dfada67d9a9fb23d554cc20b16f
Reviewed-on: https://gerrit.libreoffice.org/66963
Tested-by: Jenkins
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst 916cfdd0
......@@ -97,6 +97,16 @@ DECLARE_OOXMLEXPORT_TEST(testInputListExport, "tdf122186_input_list.odt")
assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:t", 0);
}
DECLARE_OOXMLEXPORT_TEST(testTdf116371, "tdf116371.odt")
{
// Make sure the rotation is exported correctly, and size not distorted
auto xShape(getShape(1));
CPPUNIT_ASSERT_DOUBLES_EQUAL(4700.0, getProperty<double>(xShape, "RotateAngle"), 10);
auto frameRect = getProperty<awt::Rectangle>(xShape, "FrameRect");
CPPUNIT_ASSERT_EQUAL(sal_Int32(24070), frameRect.Height);
CPPUNIT_ASSERT_EQUAL(sal_Int32(24188), frameRect.Width);
}
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -4761,7 +4761,27 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
CharGrabBag(*pGrabBag);
}
m_rExport.SdrExporter().startDMLAnchorInline(pFrameFormat, rSize);
rtl::Reference<sax_fastparser::FastAttributeList> xFrameAttributes(
FastSerializerHelper::createAttrList());
Size aSize = rSize;
if (pGrfNode)
{
const SwAttrSet& rSet = pGrfNode->GetSwAttrSet();
MirrorGraph eMirror = rSet.Get(RES_GRFATR_MIRRORGRF).GetValue();
if (eMirror == MirrorGraph::Vertical || eMirror == MirrorGraph::Both)
// Mirror on the vertical axis is a horizontal flip.
xFrameAttributes->add(XML_flipH, "1");
// RES_GRFATR_ROTATION is sal_uInt16; use sal_uInt32 for multiplication later
if (sal_uInt32 nRot = rSet.Get(RES_GRFATR_ROTATION).GetValue())
{
// RES_GRFATR_ROTATION is in 10ths of degree; convert to 100ths for macro
sal_uInt32 mOOXMLRot = OOX_DRAWINGML_EXPORT_ROTATE_CLOCKWISIFY(nRot*10);
xFrameAttributes->add(XML_rot, OString::number(mOOXMLRot));
aSize = pGrfNode->GetTwipSize();
}
}
m_rExport.SdrExporter().startDMLAnchorInline(pFrameFormat, aSize);
// picture description (used for pic:cNvPr later too)
::sax_fastparser::FastAttributeList* docPrattrList = FastSerializerHelper::createAttrList();
......@@ -4868,25 +4888,14 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size
XML_bwMode, "auto",
FSEND );
rtl::Reference<sax_fastparser::FastAttributeList> xFrameAttributes(
FastSerializerHelper::createAttrList());
if (pGrfNode)
{
MirrorGraph eMirror = pGrfNode->GetSwAttrSet().Get(RES_GRFATR_MIRRORGRF).GetValue();
if (eMirror == MirrorGraph::Vertical || eMirror == MirrorGraph::Both)
// Mirror on the vertical axis is a horizontal flip.
xFrameAttributes->add(XML_flipH, "1");
}
m_pSerializer->startElementNS(
XML_a, XML_xfrm, uno::Reference<xml::sax::XFastAttributeList>(xFrameAttributes.get()));
m_pSerializer->singleElementNS( XML_a, XML_off,
XML_x, "0", XML_y, "0",
FSEND );
OString aWidth( OString::number( TwipsToEMU( rSize.Width() ) ) );
OString aHeight( OString::number( TwipsToEMU( rSize.Height() ) ) );
OString aWidth( OString::number( TwipsToEMU( aSize.Width() ) ) );
OString aHeight( OString::number( TwipsToEMU( aSize.Height() ) ) );
m_pSerializer->singleElementNS( XML_a, XML_ext,
XML_cx, aWidth.getStr(),
XML_cy, aHeight.getStr(),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment