diff options
-rw-r--r-- | include/svx/svdxcgv.hxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdxcgv.cxx | 4 | ||||
-rw-r--r-- | sw/inc/frmfmt.hxx | 6 | ||||
-rw-r--r-- | sw/qa/extras/htmlexport/htmlexport.cxx | 17 | ||||
-rw-r--r-- | sw/source/core/layout/paintfrm.cxx | 8 | ||||
-rw-r--r-- | sw/source/filter/html/htmlflywriter.cxx | 2 |
6 files changed, 19 insertions, 20 deletions
diff --git a/include/svx/svdxcgv.hxx b/include/svx/svdxcgv.hxx index 0afaa7c6ad6f..8ed2adbb126d 100644 --- a/include/svx/svdxcgv.hxx +++ b/include/svx/svdxcgv.hxx @@ -58,7 +58,7 @@ public: // Draw all marked objects onto a bitmap, with the display's color depth // and resolution - BitmapEx GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked = false, const std::optional<Size>& rTargetDPI = std::nullopt) const; + BitmapEx GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked = false, const sal_uInt32 nMaximumQuadraticPixels = 500000, const std::optional<Size>& rTargetDPI = std::nullopt) const; // Copy all marked objects to a new model, consisting of exactly one page, // with the flag PageNotValid set. This means, that only the page's objects diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx index af4e41734db8..8881336bdcf9 100644 --- a/svx/source/svdraw/svdxcgv.cxx +++ b/svx/source/svdraw/svdxcgv.cxx @@ -425,7 +425,7 @@ void SdrExchangeView::ImpPasteObject(SdrObject* pObj, SdrObjList& rLst, const Po } } -BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked, const std::optional<Size>& rTargetDPI) const +BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked, const sal_uInt32 nMaximumQuadraticPixels, const std::optional<Size>& rTargetDPI) const { BitmapEx aBmp; @@ -502,7 +502,7 @@ BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked, const aBmp = convertPrimitive2DSequenceToBitmapEx( xPrimitives, aRange, - /*nMaximumQuadraticPixels=*/ 500000, + nMaximumQuadraticPixels, eRangeUnit, rTargetDPI); } diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx index 36333d4e8525..316db344a2b8 100644 --- a/sw/inc/frmfmt.hxx +++ b/sw/inc/frmfmt.hxx @@ -116,7 +116,7 @@ public: /// Creates the views. virtual void MakeFrames(); - virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const std::optional<Size>& rTargetDPI = std::nullopt ); + virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const sal_uInt32 nMaximumQuadraticPixels = 500000, const std::optional<Size>& rTargetDPI = std::nullopt ); /** @return the IMapObject defined at format (Fly) in the ImageMap at position Point. @@ -212,7 +212,7 @@ public: SwAnchoredObject* GetAnchoredObj() const; - virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const std::optional<Size>& rTargetDPI = std::nullopt ) override; + virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const sal_uInt32 nMaximumQuadraticPixels = 500000, const std::optional<Size>& rTargetDPI = std::nullopt ) override; virtual bool GetInfo( SfxPoolItem& rInfo ) const override; @@ -388,7 +388,7 @@ public: Reset delete marks. */ virtual void MakeFrames() override; - virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const std::optional<Size>& rTargetDPI = std::nullopt ) override; + virtual Graphic MakeGraphic( ImageMap* pMap = nullptr, const sal_uInt32 nMaximumQuadraticPixels = 500000, const std::optional<Size>& rTargetDPI = std::nullopt ) override; virtual SwFrameFormat::tLayoutDir GetLayoutDir() const override; virtual void SetLayoutDir( const SwFrameFormat::tLayoutDir _eLayoutDir ) override; diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx index 044a6ad29e72..180a2cccc599 100644 --- a/sw/qa/extras/htmlexport/htmlexport.cxx +++ b/sw/qa/extras/htmlexport/htmlexport.cxx @@ -1762,12 +1762,10 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifEmbedShapeAsPNGCustomDPI) uno::Reference<css::lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY); uno::Reference<drawing::XShape> xShape( xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY); - xShape->setSize(awt::Size(7145, 5240)); + xShape->setSize(awt::Size(5080, 2540)); uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); xDrawPageSupplier->getDrawPage()->add(xShape); - Size aSystemDPI( - Application::GetDefaultDevice()->LogicToPixel(Size(1, 1), MapMode(MapUnit::MapInch))); - sal_Int32 nDPI = aSystemDPI.getWidth() * 2; + sal_Int32 nDPI = 600; // When exporting to XHTML: uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); @@ -1786,17 +1784,18 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifEmbedShapeAsPNGCustomDPI) assertXPath(pXmlDoc, "//reqif-xhtml:p/reqif-xhtml:object", "type", "image/png"); // Then check the pixel size of the shape: - Size aPixelSize(Application::GetDefaultDevice()->LogicToPixel(Size(7145, 5240), + Size aPixelSize(Application::GetDefaultDevice()->LogicToPixel(Size(5080, 2540), MapMode(MapUnit::Map100thMM))); - tools::Long nPNGWidth = aPixelSize.getWidth() * 2; + tools::Long nPNGWidth = 1200; OUString aPngUrl = GetPngPath(); SvFileStream aFileStream(aPngUrl, StreamMode::READ); GraphicDescriptor aDescriptor(aFileStream, nullptr); aDescriptor.Detect(/*bExtendedInfo=*/true); // Without the accompanying fix in place, this test would have failed with: - // - Expected: 540 - // - Actual : 270 - // i.e. setting a double DPI didn't result in larger pixel width of the PNG. + // - Expected: 1200 + // - Actual : 1000 + // i.e. first setting a double DPI didn't result in larger pixel width of the PNG, then it was + // limited to 1000 pixels (because the pixel limit was 500k). CPPUNIT_ASSERT_EQUAL(nPNGWidth, aDescriptor.GetSizePixel().getWidth()); // Then make sure the shape's logic size (in CSS pixels) don't change: diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index aec591d05c3c..487cd5d2c8f6 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -7441,12 +7441,12 @@ void SetOutDevAndWin( SwViewShell *pSh, OutputDevice *pO, pSh->mpOpt->SetZoom( nZoom ); } -Graphic SwFrameFormat::MakeGraphic( ImageMap*, const std::optional<Size>& /*rTargetDPI*/ ) +Graphic SwFrameFormat::MakeGraphic( ImageMap*, const sal_uInt32 /*nMaximumQuadraticPixels*/, const std::optional<Size>& /*rTargetDPI*/ ) { return Graphic(); } -Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, const std::optional<Size>& /*rTargetDPI*/ ) +Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, const sal_uInt32 /*nMaximumQuadraticPixels*/, const std::optional<Size>& /*rTargetDPI*/ ) { Graphic aRet; //search any Fly! @@ -7553,7 +7553,7 @@ Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap, const std::optional<Size> return aRet; } -Graphic SwDrawFrameFormat::MakeGraphic( ImageMap*, const std::optional<Size>& rTargetDPI ) +Graphic SwDrawFrameFormat::MakeGraphic( ImageMap*, const sal_uInt32 nMaximumQuadraticPixels, const std::optional<Size>& rTargetDPI ) { Graphic aRet; SwDrawModel* pMod = getIDocumentDrawModelAccess().GetDrawModel(); @@ -7563,7 +7563,7 @@ Graphic SwDrawFrameFormat::MakeGraphic( ImageMap*, const std::optional<Size>& rT SdrView aView( *pMod ); SdrPageView *pPgView = aView.ShowSdrPage(aView.GetModel()->GetPage(0)); aView.MarkObj( pObj, pPgView ); - aRet = aView.GetMarkedObjBitmapEx(/*bNoVDevIfOneBmpMarked=*/false, rTargetDPI); + aRet = aView.GetMarkedObjBitmapEx(/*bNoVDevIfOneBmpMarked=*/false, nMaximumQuadraticPixels, rTargetDPI); aView.HideSdrPage(); } return aRet; diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx index 5dc8d69360c8..472f406c28c6 100644 --- a/sw/source/filter/html/htmlflywriter.cxx +++ b/sw/source/filter/html/htmlflywriter.cxx @@ -1809,7 +1809,7 @@ static Writer & OutHTML_FrameFormatAsImage( Writer& rWrt, const SwFrameFormat& r { aDPI.emplace(*rHTMLWrt.m_nShapeDPI, *rHTMLWrt.m_nShapeDPI); } - Graphic aGraphic( const_cast<SwFrameFormat &>(rFrameFormat).MakeGraphic( &aIMap, aDPI ) ); + Graphic aGraphic( const_cast<SwFrameFormat &>(rFrameFormat).MakeGraphic( &aIMap, /*nMaximumQuadraticPixels=*/2100000, aDPI ) ); if (rHTMLWrt.mbReqIF) { |