From c9b1fd63452325ee5cb6d003e9fc8315d1ca104e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolnai=20Tam=C3=A1s?= Date: Tue, 18 Feb 2014 17:28:05 +0100 Subject: [PATCH] drawingML import: fix position of cildren in shape groups Translate component of parent shapes' transformation have to be applied to children when there is no explicit child transformation. Note. Export also use this concept. Change-Id: I51bd3325fb53ee250402326ee361c8f07038ed07 --- oox/source/drawingml/shape.cxx | 13 ++++++++++-- oox/source/drawingml/shapegroupcontext.cxx | 2 ++ oox/source/shape/WpgContext.cxx | 4 +--- .../data/dml-groupshape-childposition.docx | Bin 0 -> 17609 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 19 ++++++++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 sw/qa/extras/ooxmlexport/data/dml-groupshape-childposition.docx diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index fb17f5de4e93..b3020107a9ff 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -348,10 +348,19 @@ void Shape::addChildren( aChildTransformation.scale(1/(maChSize.Width ? maChSize.Width : 1.0), 1/(maChSize.Height ? maChSize.Height : 1.0)); // Child position and size is typically non-zero, but it's allowed to have - // it like that, and in that case Word ignores the parent transformation, it - // seems. + // it like that, and in that case Word ignores the parent transformation + // (excluding translate component). if (!mbWps || maChPosition.X || maChPosition.Y || maChSize.Width || maChSize.Height) + { aChildTransformation *= aTransformation; + } + else + { + basegfx::B2DVector aScale, aTranslate; + double fRotate, fShearX; + aTransformation.decompose(aScale, aTranslate, fRotate, fShearX); + aChildTransformation.translate(aTranslate.getX(), aTranslate.getY()); + } SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "parent matrix:\n" << aChildTransformation.get(0, 0) << " " diff --git a/oox/source/drawingml/shapegroupcontext.cxx b/oox/source/drawingml/shapegroupcontext.cxx index 10e419f7edf9..d5eb50379404 100644 --- a/oox/source/drawingml/shapegroupcontext.cxx +++ b/oox/source/drawingml/shapegroupcontext.cxx @@ -45,6 +45,8 @@ ShapeGroupContext::ShapeGroupContext( ContextHandler2Helper& rParent, ShapePtr p , mpGroupShapePtr( pGroupShapePtr ) , mpMasterShapePtr( pMasterShapePtr ) { + if( pMasterShapePtr ) + mpGroupShapePtr->setWps(pMasterShapePtr->getWps()); } ShapeGroupContext::~ShapeGroupContext() diff --git a/oox/source/shape/WpgContext.cxx b/oox/source/shape/WpgContext.cxx index 6e3161269971..254d72fc812b 100644 --- a/oox/source/shape/WpgContext.cxx +++ b/oox/source/shape/WpgContext.cxx @@ -60,9 +60,7 @@ oox::core::ContextHandlerRef WpgContext::onCreateContext(sal_Int32 nElementToken break; case XML_grpSp: { - oox::drawingml::ShapePtr pShape(new oox::drawingml::Shape("com.sun.star.drawing.GroupShape")); - pShape->setWps(true); - return new oox::drawingml::ShapeGroupContext(*this, mpShape, pShape); + return new oox::drawingml::ShapeGroupContext(*this, mpShape, oox::drawingml::ShapePtr(new oox::drawingml::Shape("com.sun.star.drawing.GroupShape"))); } break; default: diff --git a/sw/qa/extras/ooxmlexport/data/dml-groupshape-childposition.docx b/sw/qa/extras/ooxmlexport/data/dml-groupshape-childposition.docx new file mode 100644 index 0000000000000000000000000000000000000000..a5c6bf99a1862650ec3542af3d901dc1aa00a1cb GIT binary patch literal 17609 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 UDA)%R!ut=$d!(rY&&OZ?57b?Y&j0`b literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 60e0f4f22014..a588ce0dee70 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3300,6 +3300,25 @@ DECLARE_OOXMLEXPORT_TEST(testFloatingTablePosition, "floating-table-position.doc CPPUNIT_ASSERT_EQUAL(sal_Int32(8133), getProperty(xFrame, "VertOrientPosition")); } +DECLARE_OOXMLEXPORT_TEST(testDMLGroupShapeChildPosition, "dml-groupshape-childposition.docx") +{ + // Problem was parent transformation was ingnored fully, but translate component + // which specify the position must be also applied for children of the group. + + uno::Reference xGroup(getShape(1), uno::UNO_QUERY); + uno::Reference xChildGroup(xGroup->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? -2119 : -2121), xChildGroup->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? 11338 : 11335), xChildGroup->getPosition().Y); + + xGroup.set(xChildGroup, uno::UNO_QUERY); + xChildGroup.set(xGroup->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? -1856 : -1858), xChildGroup->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? 11338 : 11335), xChildGroup->getPosition().Y); + + xChildGroup.set(xGroup->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? -2119 : -2121), xChildGroup->getPosition().X); + CPPUNIT_ASSERT_EQUAL(sal_Int32(m_bExported ? 14028 : 14025), xChildGroup->getPosition().Y); +} #endif CPPUNIT_PLUGIN_IMPLEMENT();