From 9948c2ed03d227e178b9002dabc6edf34c32a5af Mon Sep 17 00:00:00 2001 From: Balazs Varga Date: Thu, 12 Dec 2024 09:23:48 +0100 Subject: [PATCH] tdf#150789 - FILEOPEN PPTX: fix text in SmartArt vertically off Calculate correctly the textbox area of upArrowCallout and downArrowCallout shapes in group shapes. In grouped list text area does not cover the whole shape but just a part of it at the top. In case of upArrowCallout and downArrowCallout the arrow size of the shape is not included in the textbox area of the full shape. Change-Id: If732305747c20da55bbd2896522c0b9c05cc4b4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178343 Tested-by: Gabor Kelemen Reviewed-by: Balazs Varga Tested-by: Jenkins --- include/svx/svdotext.hxx | 2 +- oox/source/drawingml/transform2dcontext.cxx | 33 ++++++++++++++++++++ sd/qa/unit/data/pptx/tdf150789.pptx | Bin 0 -> 40317 bytes sd/qa/unit/import-tests.cxx | 31 ++++++++++++++++++ svx/source/svdraw/svdoashp.cxx | 3 +- svx/source/svdraw/svdotext.cxx | 20 +++++++++--- 6 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 sd/qa/unit/data/pptx/tdf150789.pptx diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx index e4099dd6e2ad..c69cfee4c4d6 100644 --- a/include/svx/svdotext.hxx +++ b/include/svx/svdotext.hxx @@ -418,7 +418,7 @@ public: virtual void TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRect, bool bNoEditText, tools::Rectangle* pAnchorRect, bool bLineWidth = true ) const; // Takes writing direction into account when adjusting the rectangle - void AdjustRectToTextDistance(tools::Rectangle& rAnchorRect) const; + void AdjustRectToTextDistance(tools::Rectangle& rAnchorRect, double fExtraRot = 0.0) const; virtual void TakeTextAnchorRect(::tools::Rectangle& rAnchorRect) const; const GeoStat& GetGeoStat() const { return maGeo; } diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx index 656cb41a4b7f..63d197abb81b 100644 --- a/oox/source/drawingml/transform2dcontext.cxx +++ b/oox/source/drawingml/transform2dcontext.cxx @@ -135,6 +135,39 @@ bool ConstructPresetTextRectangle(Shape& rShape, awt::Rectangle& rRect) rRect.Height = rShape.getSize().Height; return true; } + case XML_upArrowCallout: + case XML_downArrowCallout: + { + // The identifiers here reflect the guides name value in presetShapeDefinitions.xml + sal_Int32 nWidth = rShape.getSize().Width; + sal_Int32 nHeight = rShape.getSize().Height; + if (nWidth == 0 || nHeight == 0) + return false; + // double adj1 = 25000.0; + // double adj2 = 25000.0; + double adj3 = 25000.0; // height of arrow head + double adj4 = 64977.0; // height of arrow shaft + const auto& aAdjGdList = rShape.getCustomShapeProperties()->getAdjustmentGuideList(); + if (aAdjGdList.size() == 4) + { + // adj1 = aAdjGdList[0].maFormula.toDouble(); + // adj2 = aAdjGdList[1].maFormula.toDouble(); + adj3 = aAdjGdList[2].maFormula.toDouble(); + adj4 = aAdjGdList[3].maFormula.toDouble(); + } + + double maxAdj3 = 100000.0 * nHeight / std::min(nWidth, nHeight); + adj3 = std::clamp(adj3, 0, maxAdj3); + double q2 = adj3 * std::min(nWidth, nHeight) / nHeight; + double maxAdj4 = 100000.0 - q2; + adj4 = std::clamp(adj4, 0, maxAdj4); + + rRect.X = rShape.getPosition().X; + rRect.Y = rShape.getPosition().Y; + rRect.Width = rShape.getSize().Width; + rRect.Height = nHeight * adj4 / 100000.0; + return true; + } case XML_gear6: { // The identifiers here reflect the guides name value in presetShapeDefinitions.xml diff --git a/sd/qa/unit/data/pptx/tdf150789.pptx b/sd/qa/unit/data/pptx/tdf150789.pptx new file mode 100644 index 0000000000000000000000000000000000000000..6e0a9442949cab920cb43fb70fd537c2c922823a GIT binary patch literal 40317 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 z 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.GetValue()); } +CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf150789) +{ + createSdImpressDoc("pptx/tdf150789.pptx"); + const SdrPage* pPage = GetPage(1); + + // Simulate a:ext inside dsp:txXfrm with changing the lower distance of prst="upArrowCallout" textbox + const SdrObjGroup* pGroupObj = dynamic_cast(pPage->GetObj(0)); + + const std::array nShapes = { 4, 7 }; + for (auto i : nShapes) + { + const SdrObject* pObj = pGroupObj->GetSubList()->GetObj(i); + CPPUNIT_ASSERT_MESSAGE("no object", pObj != nullptr); + + OUString sShapeType; + const SdrCustomShapeGeometryItem& rGeometryItem( + pObj->GetMergedItem(SDRATTR_CUSTOMSHAPE_GEOMETRY)); + const css::uno::Any aAny = *rGeometryItem.GetPropertyValueByName("Type"); + if (aAny.hasValue()) + aAny >>= sShapeType; + CPPUNIT_ASSERT_EQUAL(OUString("ooxml-upArrowCallout"), sShapeType); + CPPUNIT_ASSERT_EQUAL(sal_Int32(395), + pObj->GetMergedItem(SDRATTR_TEXT_UPPERDIST).GetValue()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1424), + pObj->GetMergedItem(SDRATTR_TEXT_LOWERDIST).GetValue()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(395), + pObj->GetMergedItem(SDRATTR_TEXT_RIGHTDIST).GetValue()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(395), pObj->GetMergedItem(SDRATTR_TEXT_LEFTDIST).GetValue()); + } +} + CPPUNIT_TEST_FIXTURE(SdImportTest, testCreationDate) { createSdImpressDoc("fdo71434.pptx"); diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx index 2f5e6a21a03e..996071b27e92 100644 --- a/svx/source/svdraw/svdoashp.cxx +++ b/svx/source/svdraw/svdoashp.cxx @@ -2650,7 +2650,8 @@ void SdrObjCustomShape::TakeTextAnchorRect( tools::Rectangle& rAnchorRect ) cons if ( GetTextBounds( rAnchorRect ) ) { Point aRotateRef( maSnapRect.Center() ); - AdjustRectToTextDistance(rAnchorRect); + const double fExtraTextRotation(GetExtraTextRotation()); + AdjustRectToTextDistance(rAnchorRect, fExtraTextRotation); if ( rAnchorRect.GetWidth() < 2 ) rAnchorRect.SetRight( rAnchorRect.Left() + 1 ); // minimal width is 2 diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 3b4cf6ba72eb..88def27d0d2c 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -619,7 +619,7 @@ void SdrTextObj::TakeUnrotatedSnapRect(tools::Rectangle& rRect) const } // See also: ::getTextAnchorRange in svx/source/sdr/primitive2d/sdrdecompositiontools.cxx -void SdrTextObj::AdjustRectToTextDistance(tools::Rectangle& rAnchorRect) const +void SdrTextObj::AdjustRectToTextDistance(tools::Rectangle& rAnchorRect, double fExtraRot) const { const tools::Long nLeftDist = GetTextLeftDistance(); const tools::Long nRightDist = GetTextRightDistance(); @@ -627,10 +627,20 @@ void SdrTextObj::AdjustRectToTextDistance(tools::Rectangle& rAnchorRect) const const tools::Long nLowerDist = GetTextLowerDistance(); if (!IsVerticalWriting()) { - rAnchorRect.AdjustLeft(nLeftDist); - rAnchorRect.AdjustTop(nUpperDist); - rAnchorRect.AdjustRight(-nRightDist); - rAnchorRect.AdjustBottom(-nLowerDist); + if (fExtraRot == 180.0) + { + rAnchorRect.AdjustLeft(nLeftDist); + rAnchorRect.AdjustTop(-nUpperDist); + rAnchorRect.AdjustRight(-nRightDist); + rAnchorRect.AdjustBottom(nLowerDist); + } + else + { + rAnchorRect.AdjustLeft(nLeftDist); + rAnchorRect.AdjustTop(nUpperDist); + rAnchorRect.AdjustRight(-nRightDist); + rAnchorRect.AdjustBottom(-nLowerDist); + } } else if (IsTopToBottom()) {