From 924f01fdef73af88284e6629c6d3604f33d27f24 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Wed, 7 Nov 2018 17:35:50 +0100 Subject: [PATCH] oox smartart, table list: fix too large width of children It's possible all children request 100% of space, need to scale down in that case. This means that children other than the first one is now readable in the layout result. Change-Id: I86a05cd77510bbb6686a53e33f13a60034c8e8f6 Reviewed-on: https://gerrit.libreoffice.org/63037 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- .../drawingml/diagram/diagramlayoutatoms.cxx | 61 +++++++++++++++--- sd/qa/unit/data/pptx/table-list.pptx | Bin 0 -> 52249 bytes sd/qa/unit/import-tests-smartart.cxx | 34 ++++++++++ 3 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 sd/qa/unit/data/pptx/table-list.pptx diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index 2ef5ffef2151..763eca855d91 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -36,6 +36,27 @@ using namespace ::com::sun::star::uno; using namespace ::com::sun::star::xml::sax; using namespace ::oox::core; +namespace +{ +/// Looks up the value of the rInternalName -> nProperty key in rProperties. +oox::OptValue findProperty(const oox::drawingml::LayoutPropertyMap& rProperties, + const OUString& rInternalName, sal_Int32 nProperty) +{ + oox::OptValue oRet; + + auto it = rProperties.find(rInternalName); + if (it != rProperties.end()) + { + const oox::drawingml::LayoutProperty& rProperty = it->second; + auto itProperty = rProperty.find(nProperty); + if (itProperty != rProperty.end()) + oRet = itProperty->second; + } + + return oRet; +} +} + namespace oox { namespace drawingml { IteratorAttr::IteratorAttr( ) @@ -436,24 +457,48 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, rProperty[XML_w] = rShape->getSize().Width * rConstraint.mfFactor; } + // See if children requested more than 100% space in total: scale + // down in that case. + sal_Int32 nTotalWidth = 0; + bool bSpaceFromConstraints = false; for (auto & aCurrShape : rShape->getChildren()) { - // Extract properties relevant for this shape from constraints. - oox::OptValue oWidth; - auto it = aProperties.find(aCurrShape->getInternalName()); - if (it != aProperties.end()) + oox::OptValue oWidth + = findProperty(aProperties, aCurrShape->getInternalName(), XML_w); + + awt::Size aSize = aChildSize; + if (oWidth.has()) { - LayoutProperty& rProperty = it->second; - auto itProperty = rProperty.find(XML_w); - if (itProperty != rProperty.end()) - oWidth = itProperty->second; + aSize.Width = oWidth.get(); + bSpaceFromConstraints = true; } + if (nDir == XML_fromL || nDir == XML_fromR) + nTotalWidth += aSize.Width; + } + + double fWidthScale = 1.0; + if (nTotalWidth > rShape->getSize().Width && nTotalWidth) + { + fWidthScale = rShape->getSize().Width; + fWidthScale /= nTotalWidth; + } + + // Don't add automatic space if we take space from constraints. + if (bSpaceFromConstraints) + fSpace = 0; + + for (auto& aCurrShape : rShape->getChildren()) + { + // Extract properties relevant for this shape from constraints. + oox::OptValue oWidth + = findProperty(aProperties, aCurrShape->getInternalName(), XML_w); aCurrShape->setPosition(aCurrPos); awt::Size aSize = aChildSize; if (oWidth.has()) aSize.Width = oWidth.get(); + aSize.Width *= fWidthScale; aCurrShape->setSize(aSize); aCurrShape->setChildSize(aChildSize); diff --git a/sd/qa/unit/data/pptx/table-list.pptx b/sd/qa/unit/data/pptx/table-list.pptx new file mode 100644 index 0000000000000000000000000000000000000000..bc5fe7418e02d8fee1e8b4b6fa882a46d2ae4079 GIT binary patch literal 52249 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 I)2&zk0}vnil>h($ literal 0 HcmV?d00001 diff --git a/sd/qa/unit/import-tests-smartart.cxx b/sd/qa/unit/import-tests-smartart.cxx index 223b105181d5..3e3c6c3691b2 100644 --- a/sd/qa/unit/import-tests-smartart.cxx +++ b/sd/qa/unit/import-tests-smartart.cxx @@ -42,6 +42,7 @@ public: void testBaseRtoL(); void testVertialBoxList(); void testVertialBracketList(); + void testTableList(); CPPUNIT_TEST_SUITE(SdImportTestSmartArt); @@ -68,6 +69,7 @@ public: CPPUNIT_TEST(testBaseRtoL); CPPUNIT_TEST(testVertialBoxList); CPPUNIT_TEST(testVertialBracketList); + CPPUNIT_TEST(testTableList); CPPUNIT_TEST_SUITE_END(); }; @@ -416,6 +418,38 @@ void SdImportTestSmartArt::testVertialBracketList() xDocShRef->DoClose(); } +void SdImportTestSmartArt::testTableList() +{ + sd::DrawDocShellRef xDocShRef = loadURL( + m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/table-list.pptx"), PPTX); + uno::Reference xShapeGroup(getShapeFromPage(0, 0, xDocShRef), uno::UNO_QUERY); + CPPUNIT_ASSERT(xShapeGroup.is()); + CPPUNIT_ASSERT_EQUAL(static_cast(3), xShapeGroup->getCount()); + + uno::Reference xParentText(xShapeGroup->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT(xParentText.is()); + CPPUNIT_ASSERT_EQUAL(OUString("Parent"), xParentText->getString()); + uno::Reference xParent(xParentText, uno::UNO_QUERY); + CPPUNIT_ASSERT(xParent.is()); + int nParentRight = xParent->getPosition().X + xParent->getSize().Width; + + uno::Reference xChildren(xShapeGroup->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChildren.is()); + uno::Reference xChild2Text(xChildren->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT(xChild2Text.is()); + CPPUNIT_ASSERT_EQUAL(OUString("Child 2"), xChild2Text->getString()); + uno::Reference xChild2(xChild2Text, uno::UNO_QUERY); + CPPUNIT_ASSERT(xChild2.is()); + int nChild2Right = xChild2->getPosition().X + xChild2->getSize().Width; + + // Without the accompanying fix in place, this test would have failed with + // 'Expected less than: 100, Actual : 22014', i.e. the second child was + // shifted to the right too much. + CPPUNIT_ASSERT_LESS(100, abs(nChild2Right - nParentRight)); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTestSmartArt); CPPUNIT_PLUGIN_IMPLEMENT();