summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2024-09-05 14:26:07 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2024-09-05 16:17:57 +0200
commit295e1039649de030babf3ac9235cc80f9b9ca33c (patch)
tree9cf1b12f0af8d57d7e8db943eda034c6266e76d5 /svx
parent0255283974894f5ad9ba92c3a52912657ed4bdf6 (diff)
tdf#161724: Revert "tdf#153008 svx: impl crop for stretched bitmap fill"
This reverts commit c30c1d12f283e75fdcc5bb508a79a9d33a431d28. it even broke the original sample file reported in tdf#153008 See https://bug-attachments.documentfoundation.org/attachment.cgi?id=196248 The original issue was reported in tdf#95165 but it doesn't work in all cases, making it much worse in some cases where images become very stretched Reverting for now, specially towards libreoffice-24-8 and libreoffice-24-8-1 Change-Id: Ib94d2784d701d37853ce9b17135b36f26a5c084b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172913 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'svx')
-rw-r--r--svx/qa/unit/data/tdf153008_crop_stretched_bitmap.pptxbin37834 -> 0 bytes
-rw-r--r--svx/qa/unit/svdraw.cxx68
-rw-r--r--svx/source/customshapes/EnhancedCustomShape2d.cxx27
3 files changed, 3 insertions, 92 deletions
diff --git a/svx/qa/unit/data/tdf153008_crop_stretched_bitmap.pptx b/svx/qa/unit/data/tdf153008_crop_stretched_bitmap.pptx
deleted file mode 100644
index 453b81fa006a..000000000000
--- a/svx/qa/unit/data/tdf153008_crop_stretched_bitmap.pptx
+++ /dev/null
Binary files differ
diff --git a/svx/qa/unit/svdraw.cxx b/svx/qa/unit/svdraw.cxx
index 450874b00e07..ac124794a171 100644
--- a/svx/qa/unit/svdraw.cxx
+++ b/svx/qa/unit/svdraw.cxx
@@ -52,17 +52,16 @@ public:
}
protected:
- SdrPage* getFirstDrawPageWithAssert(sal_Int32 nPageIndex = 0);
+ SdrPage* getFirstDrawPageWithAssert();
};
-SdrPage* SvdrawTest::getFirstDrawPageWithAssert(sal_Int32 nPageIndex /* = 0*/)
+SdrPage* SvdrawTest::getFirstDrawPageWithAssert()
{
uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(mxComponent,
uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT(xDrawPagesSupplier.is());
uno::Reference<drawing::XDrawPages> xDrawPages(xDrawPagesSupplier->getDrawPages());
- uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPages->getByIndex(nPageIndex),
- uno::UNO_QUERY_THROW);
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPages->getByIndex(0), uno::UNO_QUERY_THROW);
CPPUNIT_ASSERT(xDrawPage.is());
auto pDrawPage = dynamic_cast<SvxDrawPage*>(xDrawPage.get());
@@ -466,67 +465,6 @@ CPPUNIT_TEST_FIXTURE(SvdrawTest, testTdf148000_CurvedTextWidth)
}
}
-CPPUNIT_TEST_FIXTURE(SvdrawTest, testTdf153008_CropStretchedBitmapFill)
-{
- loadFromFile(u"tdf153008_crop_stretched_bitmap.pptx");
-
- SdrPage* pSdrPage = getFirstDrawPageWithAssert();
-
- xmlDocUniquePtr pXmlDoc = lcl_dumpAndParseFirstObjectWithAssert(pSdrPage);
-
- // Load Polygon size
- sal_Int16 nPolyHeight = getXPath(pXmlDoc, "//mask/polypolygon"_ostr, "height"_ostr).toInt32();
- sal_Int16 nPolyWidth = getXPath(pXmlDoc, "//mask/polypolygon"_ostr, "width"_ostr).toInt32();
- // polygon position is nearly 0,0
- // Load Bitmap coordinates (from transformation matrix)
- sal_Int16 nBmpPosX = getXPath(pXmlDoc, "//bitmap"_ostr, "xy13"_ostr).toInt32();
- sal_Int16 nBmpPosY = getXPath(pXmlDoc, "//bitmap"_ostr, "xy23"_ostr).toInt32();
- sal_Int16 nBmpWidth = getXPath(pXmlDoc, "//bitmap"_ostr, "xy11"_ostr).toInt32();
- sal_Int16 nBmpHeight = getXPath(pXmlDoc, "//bitmap"_ostr, "xy22"_ostr).toInt32();
-
- // The Bitmap should start nearly in the middle of the polygon.
- // because of rounding errors we tolerate 2% difference
- // Before the fix, the bitmap was always stretched to the whole polygon,
- // that means they had the same size, and position.
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyWidth / 2, nBmpPosX, nPolyWidth / 50);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyHeight / 2, nBmpPosY, nPolyHeight / 50);
- // And should have 1/2 width, and 3/8 height of the polygon.
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyWidth / 2, nBmpWidth, nPolyWidth / 50);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyHeight * 3 / 8, nBmpHeight, nPolyHeight / 50);
-}
-
-CPPUNIT_TEST_FIXTURE(SvdrawTest, testTdf153008_CropStretchedBitmapFillNegativePosition)
-{
- loadFromFile(u"tdf153008_crop_stretched_bitmap.pptx");
-
- // get the 2. page
- SdrPage* pSdrPage = getFirstDrawPageWithAssert(1);
-
- xmlDocUniquePtr pXmlDoc = lcl_dumpAndParseFirstObjectWithAssert(pSdrPage);
-
- // Load Polygon size
- sal_Int16 nPolyHeight = getXPath(pXmlDoc, "//mask/polypolygon"_ostr, "height"_ostr).toInt32();
- sal_Int16 nPolyWidth = getXPath(pXmlDoc, "//mask/polypolygon"_ostr, "width"_ostr).toInt32();
- // polygon position is nearly 0,0
- // Load Bitmap coordinates (from transformation matrix)
- sal_Int16 nBmpPosX = getXPath(pXmlDoc, "//bitmap"_ostr, "xy13"_ostr).toInt32();
- sal_Int16 nBmpPosY = getXPath(pXmlDoc, "//bitmap"_ostr, "xy23"_ostr).toInt32();
- sal_Int16 nBmpWidth = getXPath(pXmlDoc, "//bitmap"_ostr, "xy11"_ostr).toInt32();
- sal_Int16 nBmpHeight = getXPath(pXmlDoc, "//bitmap"_ostr, "xy22"_ostr).toInt32();
-
- // The Bitmap should start before the polygon.
- // At x direction it should start left from the polygon with 3/8 polygon width
- // At y direction it should start up from the polygon with 3/16 polygon height
- // Before the fix, negative numbers overflowed to big positive number,
- // so the bitmap was moved to a far away place where it was not visible
- // because of rounding errors we tolerate 2% difference
- CPPUNIT_ASSERT_DOUBLES_EQUAL(-nPolyWidth * 3 / 8, nBmpPosX, nPolyWidth / 50);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(-nPolyHeight * 3 / 16, nBmpPosY, nPolyHeight / 50);
- // And should have 3/2 width, and 1/1 height of the polygon.
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyWidth * 3 / 2, nBmpWidth, nPolyWidth / 50);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(nPolyHeight, nBmpHeight, nPolyHeight / 50);
-}
-
CPPUNIT_TEST_FIXTURE(SvdrawTest, testSurfaceMetal)
{
loadFromFile(u"tdf140321_metal.odp");
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index 1a02bd5bd05a..644eee59dad7 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -43,10 +43,6 @@
#include <svx/xbtmpit.hxx>
#include <svx/xhatch.hxx>
#include <svx/sdshitm.hxx>
-#include <svx/xflboxy.hxx>
-#include <svx/xflbmsxy.hxx>
-#include <svx/sdgcpitm.hxx>
-#include <svx/xflbstit.hxx>
#include <comphelper/configuration.hxx>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
@@ -2639,29 +2635,6 @@ void EnhancedCustomShape2d::CreateSubPath(
SfxItemSet aTempSet(*this);
aTempSet.Put(makeSdrShadowItem(false));
aTempSet.Put(XLineStyleItem(drawing::LineStyle_NONE));
-
- // tdf#153008 If it is a stretched bitmap, with crop,
- // then set crop data into PosOffset and BmpSize
- // so it can be used at createFillGraphicAttribute to crop the image
- if (aTempSet.HasItem(SDRATTR_GRAFCROP)
- && aTempSet.HasItem(XATTR_FILLBITMAP)
- && aTempSet.HasItem(XATTR_FILLBMP_STRETCH)
- && aTempSet.Get(XATTR_FILLBMP_STRETCH).GetValue())
- {
- const SdrGrafCropItem& rCrop = aTempSet.Get(SDRATTR_GRAFCROP);
- const Size& aBmpSize
- = aTempSet.Get(XATTR_FILLBITMAP).GetGraphicObject().GetPrefSize();
-
- aTempSet.Put(XFillBmpPosOffsetXItem(rCrop.GetLeft() * 100 / aBmpSize.Width()));
- aTempSet.Put(XFillBmpPosOffsetYItem(rCrop.GetTop() * 100 / aBmpSize.Height()));
- aTempSet.Put(
- XFillBmpSizeXItem((aBmpSize.Width() - rCrop.GetLeft() - rCrop.GetRight())
- * pFill->GetGeoRect().GetWidth() / aBmpSize.Width()));
- aTempSet.Put(
- XFillBmpSizeYItem((aBmpSize.Height() - rCrop.GetTop() - rCrop.GetBottom())
- * pFill->GetGeoRect().GetHeight() / aBmpSize.Height()));
- }
-
pFill->SetMergedItemSet(aTempSet);
rObjectList.push_back(std::pair< rtl::Reference<SdrPathObj>, double >(std::move(pFill), dBrightness));
}