diff options
| -rw-r--r-- | sd/qa/unit/data/pptx/tdf103473.pptx | bin | 0 -> 26752 bytes | |||
| -rw-r--r-- | sd/qa/unit/import-tests.cxx | 18 | ||||
| -rw-r--r-- | svx/source/svdraw/svdotext.cxx | 14 |
3 files changed, 25 insertions, 7 deletions
diff --git a/sd/qa/unit/data/pptx/tdf103473.pptx b/sd/qa/unit/data/pptx/tdf103473.pptx Binary files differnew file mode 100644 index 000000000000..5b31b761d22c --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf103473.pptx diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 93dca4cff29a..da809a278c2d 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -122,6 +122,7 @@ public: void testTdf95932(); void testTdf99030(); void testTdf49561(); + void testTdf103473(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -172,6 +173,7 @@ public: CPPUNIT_TEST(testTdf95932); CPPUNIT_TEST(testTdf99030); CPPUNIT_TEST(testTdf49561); + CPPUNIT_TEST(testTdf103473); CPPUNIT_TEST_SUITE_END(); }; @@ -1406,6 +1408,22 @@ void SdImportTest::testTdf49561() xDocShRef->DoClose(); } +void SdImportTest::testTdf103473() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf103473.pptx"), PPTX); + + const SdrPage *pPage = GetPage(1, xDocShRef); + SdrTextObj *const pObj = dynamic_cast<SdrTextObj *const>(pPage->GetObj(0)); + CPPUNIT_ASSERT(pObj); + Rectangle aRect = pObj->GetGeoRect(); + CPPUNIT_ASSERT_EQUAL(3629L, aRect.Left()); + CPPUNIT_ASSERT_EQUAL(4431L, aRect.Top()); + CPPUNIT_ASSERT_EQUAL(8353L, aRect.Right()); + CPPUNIT_ASSERT_EQUAL(9155L, aRect.Bottom()); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 151ff79730da..b7ef71a53cb8 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1703,17 +1703,17 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b double fShearX(0.0); rMatrix.decompose(aScale, aTranslate, fRotate, fShearX); - // #i75086# Old DrawingLayer (GeoStat and geometry) does not support holding negative scalings - // in X and Y which equal a 180 degree rotation. Recognize it and react accordingly - if(basegfx::fTools::less(aScale.getX(), 0.0) && basegfx::fTools::less(aScale.getY(), 0.0)) + // flip? + bool bFlipX = aScale.getX() < 0.0, + bFlipY = aScale.getY() < 0.0; + if (bFlipX) { aScale.setX(fabs(aScale.getX())); + } + if (bFlipY) + { aScale.setY(fabs(aScale.getY())); - fRotate = fmod(fRotate + F_PI, F_2PI); } - // flip? - bool bFlipX = basegfx::fTools::less(aScale.getX(), 0.0), - bFlipY = basegfx::fTools::less(aScale.getY(), 0.0); // reset object shear and rotations aGeo.nRotationAngle = 0; |
