diff options
author | Gülşah Köse <gulsah.kose@collabora.com> | 2021-02-01 17:03:33 +0300 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-02-17 09:13:32 +0100 |
commit | 363b2d374be736e713c4b8aa0f7b9fda8849335b (patch) | |
tree | 0f615b9a065f0af11f1b7fca54731929dffdf79d /sd | |
parent | 934ed8d888abe231c014ce179e5256933b0562ed (diff) |
tdf#134210 Import crop position of bitmap filled shape.
Change-Id: I6a62d68cd0f57e53934851a2f53dae05bf7d3730
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110262
Tested-by: Jenkins
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110964
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/qa/unit/data/pptx/crop-position.pptx | bin | 0 -> 175724 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml1.cxx | 29 | ||||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 16 |
3 files changed, 40 insertions, 5 deletions
diff --git a/sd/qa/unit/data/pptx/crop-position.pptx b/sd/qa/unit/data/pptx/crop-position.pptx Binary files differnew file mode 100644 index 000000000000..69507514e0b7 --- /dev/null +++ b/sd/qa/unit/data/pptx/crop-position.pptx diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx index a71952ffd413..1660e7b0c26c 100644 --- a/sd/qa/unit/export-tests-ooxml1.cxx +++ b/sd/qa/unit/export-tests-ooxml1.cxx @@ -1091,17 +1091,36 @@ void SdOOXMLExportTest1::testCustomshapeBitmapfillSrcrect() xDocShRef->DoClose(); xmlDocPtr pXmlDoc = parseExport(tempFile, "ppt/slides/slide1.xml"); - const OString sXmlPath = "//a:blipFill/a:srcRect"; + + // tdf#132680 + // We are preventing the side effect of DOCX improvement to PPTX case. // Without the accompanying fix in place, this test would have failed with: // - Expected: 1 // - Actual : 0 // - XPath '//a:blipFill/a:srcRect' number of nodes is incorrect // i.e. <a:srcRect> was exported as <a:fillRect> in <a:stretch>, which made part of the image // invisible. - double fLeftPercent = std::round(getXPath(pXmlDoc, sXmlPath, "l").toDouble() / 1000); - CPPUNIT_ASSERT_EQUAL(4.0, fLeftPercent); - double fRightPercent = std::round(getXPath(pXmlDoc, sXmlPath, "r").toDouble() / 1000); - CPPUNIT_ASSERT_EQUAL(4.0, fRightPercent); + + // tdf#134210 + // Original values of attribute of l and r in xml files: <a:srcRect l="4393" r="4393"/> + // Because of we have not core feature for cropping bitmap in custom shapes, we added cropping + // support to import filter. We modified the bitmap during import. As result the original + // image is cropped anymore (if we had the core feature for that, the original image would + // remain same, just we would see like cropped in the shape) To see the image in correct + // position in Microsoft Office too, we have to remove left right top bottom percentages + // anymore. In the future if we add core feature to LibreOffice, this test will failed with + // When we add the core feature, we should change the control value with 4393 as following. + + //const OString sXmlPath = "//a:blipFill/a:srcRect"; + //sal_Int32 nLeftPercent = getXPath(pXmlDoc, sXmlPath, "l").toInt32(); + //CPPUNIT_ASSERT_EQUAL(sal_Int32(4393), nLeftPercent); + //sal_Int32 nRightPercent = getXPath(pXmlDoc, sXmlPath, "r").toInt32(); + //CPPUNIT_ASSERT_EQUAL(sal_Int32(4393), nRightPercent); + + assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "l"); + assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "r"); + assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "t"); + assertXPathNoAttribute(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:blipFill/a:srcRect", "b"); } void SdOOXMLExportTest1::testTdf128345FullTransparentGradient() diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index d75c89185f66..e0c725031f10 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -209,6 +209,7 @@ public: void testTdf128684(); void testTdf119187(); void testMirroredGraphic(); + void testCropPositionGraphic(); bool checkPattern(sd::DrawDocShellRef const & rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected); void testPatternImport(); @@ -336,6 +337,7 @@ public: CPPUNIT_TEST(testTdf113198); CPPUNIT_TEST(testTdf119187); CPPUNIT_TEST(testMirroredGraphic); + CPPUNIT_TEST(testCropPositionGraphic); CPPUNIT_TEST_SUITE_END(); }; @@ -3238,6 +3240,20 @@ void SdImportTest::testMirroredGraphic() xDocShRef->DoClose(); } +void SdImportTest::testCropPositionGraphic() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/pptx/crop-position.pptx"), PPTX); + uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0, xDocShRef), uno::UNO_SET_THROW); + CPPUNIT_ASSERT(xShape.is()); + uno::Reference<graphic::XGraphic> xGraphic; + xShape->getPropertyValue("FillBitmap") >>= xGraphic; + CPPUNIT_ASSERT(xGraphic.is()); + Graphic aGraphic(xGraphic); + BitmapEx aBitmap(aGraphic.GetBitmapEx()); + CPPUNIT_ASSERT_EQUAL( Color(8682893), aBitmap.GetPixelColor( 0, 0 )); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |