From fa8d00560bbfededec7f2c328f04eb2b369c00e2 Mon Sep 17 00:00:00 2001 From: Regina Henschel Date: Sun, 14 Mar 2021 16:26:22 +0100 Subject: [PATCH] tdf#141021 Correct sign in Origin in Extrusion North This is about customs shapes in 3D mode using direction floater. Shapes, which were created with older versions, keep their values until the direction is newly assigned. So the change will not automatically change existing documents. Change-Id: Ib1ce511de0f524bf59279fb4e976f66ed65bc080 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112474 Tested-by: Jenkins Reviewed-by: Regina Henschel --- svx/CppunitTest_svx_unit.mk | 1 + svx/qa/unit/customshapes.cxx | 37 ++++++++++++++++++ svx/qa/unit/data/tdf141021_ExtrusionNorth.odp | Bin 0 -> 14261 bytes svx/source/toolbars/extrusionbar.cxx | 2 +- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 svx/qa/unit/data/tdf141021_ExtrusionNorth.odp diff --git a/svx/CppunitTest_svx_unit.mk b/svx/CppunitTest_svx_unit.mk index 892490265261..598d788392b4 100644 --- a/svx/CppunitTest_svx_unit.mk +++ b/svx/CppunitTest_svx_unit.mk @@ -39,6 +39,7 @@ $(eval $(call gb_CppunitTest_use_libraries,svx_unit, \ editeng \ sal \ sfx \ + svl \ svxcore \ svx \ tl \ diff --git a/svx/qa/unit/customshapes.cxx b/svx/qa/unit/customshapes.cxx index 271a7aad6f19..4e3f76db74ec 100644 --- a/svx/qa/unit/customshapes.cxx +++ b/svx/qa/unit/customshapes.cxx @@ -18,9 +18,16 @@ #include #include #include +#include +#include +#include +#include #include +#include #include #include +#include +#include #include #include #include @@ -120,6 +127,36 @@ void lcl_AssertRectEqualWithTolerance(std::string_view sInfo, const tools::Recta std::abs(rExpected.GetHeight() - rActual.GetHeight()) <= nTolerance); } +CPPUNIT_TEST_FIXTURE(CustomshapesTest, testTdf141021ExtrusionNorth) +{ + // tdf#141021 Setting extrusion direction in projection method 'perspective' to + // 'Extrusion North' had used a wrong origin for the ViewPoint and thus the + // side faces were wrong calculated. + + // Load document and get shape. It is a custom shape in 3D mode. + OUString aURL = m_directories.getURLFromSrc(sDataDirectory) + "tdf141021_ExtrusionNorth.odp"; + mxComponent = loadFromDesktop(aURL, "com.sun.star.comp.presentation.PresentationDocument"); + CPPUNIT_ASSERT_MESSAGE("Could not load document", mxComponent.is()); + uno::Reference xShape(getShape(0)); + SdrObjCustomShape& rSdrCustomShape( + static_cast(*GetSdrObjectFromXShape(xShape))); + + // Mark Object + SfxViewShell* pViewShell = SfxViewShell::Current(); + SdrView* pSdrView = pViewShell->GetDrawView(); + pSdrView->MarkObj(&rSdrCustomShape, pSdrView->GetSdrPageView()); + + // Set direction + SfxRequest aReq(pViewShell->GetViewFrame(), SID_EXTRUSION_DIRECTION); + SfxInt32Item aItem(SID_EXTRUSION_DIRECTION, 90); + aReq.AppendItem(aItem); + svx::ExtrusionBar::execute(pSdrView, aReq, SfxViewFrame::Current()->GetBindings()); + + // Verify height. Without the fix in place the height would 4001. + tools::Rectangle aBoundRect(rSdrCustomShape.GetCurrentBoundRect()); + CPPUNIT_ASSERT_EQUAL(tools::Long(5895), aBoundRect.GetHeight()); +} + CPPUNIT_TEST_FIXTURE(CustomshapesTest, testResizeRotatedShape) { // tdf#138945 Setting width or height for a rotated or sheared shape in the Position&Size dialog diff --git a/svx/qa/unit/data/tdf141021_ExtrusionNorth.odp b/svx/qa/unit/data/tdf141021_ExtrusionNorth.odp new file mode 100644 index 0000000000000000000000000000000000000000..559b2c0d58e0e26e6468ed2ed8bee64de345fda8 GIT binary patch literal 14261 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