summaryrefslogtreecommitdiff
path: root/include/vcl
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2020-09-18 17:52:41 +0200
committerMiklos Vajna <vmiklos@collabora.com>2020-09-21 14:00:40 +0200
commit69842afcab0c5043c3c554493dd92d58c2bb02af (patch)
tree99b5233b64a5cbc4011a0761a29b0e1ad48ae91b /include/vcl
parentf1494915d40f4bdb3e25bd35427ba7b773b91838 (diff)
[API CHANGE] tdf#136836 emfio: set size hint on inner PDF if used as shape fill
The bugdoc has a shape, its bitmap fill is an EMF, which is actually a PDF. The PDF is has a height of 5cm, but the shape has a height of 14 cm. Inform vcl::RenderPDFBitmaps() about the size of the shape, so the result won't be blurry. This approach makes sure that we don't unconditionally render at higher resolution, i.e. the "load a PDF of 100 pages into Online" use-case won't use more memory than before. API CHANGE, because the EMF reader is only available via UNO, though it's likely that no actual external code would ever invoke it directly. (cherry picked from commit 01024ee24c6e89044c68051f6fd5f1264905e90c) Conflicts: include/vcl/vectorgraphicdata.hxx vcl/source/gdi/vectorgraphicdata.cxx Change-Id: If1d8def0136d408a31a0cc54777a7f26430a0ff3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103087 Tested-by: Jenkins Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
Diffstat (limited to 'include/vcl')
-rw-r--r--include/vcl/pdfread.hxx3
-rw-r--r--include/vcl/vectorgraphicdata.hxx10
2 files changed, 12 insertions, 1 deletions
diff --git a/include/vcl/pdfread.hxx b/include/vcl/pdfread.hxx
index ba0eb1ca85be..6896d2e83573 100644
--- a/include/vcl/pdfread.hxx
+++ b/include/vcl/pdfread.hxx
@@ -13,6 +13,7 @@
#include <vector>
#include <tools/gen.hxx>
#include <tools/stream.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
namespace com::sun::star::uno
{
@@ -26,7 +27,7 @@ namespace vcl
/// Fills the rBitmaps vector with rendered pages.
VCL_DLLPUBLIC size_t RenderPDFBitmaps(const void* pBuffer, int nSize, std::vector<Bitmap>& rBitmaps,
size_t nFirstPage = 0, int nPages = 1,
- double fResolutionDPI = 96.);
+ const basegfx::B2DTuple* pSizeHint = nullptr);
/// Imports a PDF stream into rGraphic as VectorGraphicData.
VCL_DLLPUBLIC bool ImportPDF(SvStream& rStream, Graphic& rGraphic);
diff --git a/include/vcl/vectorgraphicdata.hxx b/include/vcl/vectorgraphicdata.hxx
index 8fce6666e6e8..041c59e832c7 100644
--- a/include/vcl/vectorgraphicdata.hxx
+++ b/include/vcl/vectorgraphicdata.hxx
@@ -74,6 +74,9 @@ private:
// If the vector format has more pages this denotes which page to render
sal_Int32 mnPageIndex;
+ /// Useful for PDF, which is vector-based, but still rendered to a bitmap.
+ basegfx::B2DTuple maSizeHint;
+
// on demand creators
void ensurePdfReplacement();
void ensureReplacement();
@@ -113,6 +116,13 @@ public:
sal_Int32 getPageIndex() const { return std::max(sal_Int32(0), mnPageIndex); }
+ void setSizeHint(const basegfx::B2DTuple& rSizeHint)
+ {
+ maSizeHint = rSizeHint;
+ }
+
+ const basegfx::B2DTuple& getSizeHint() const { return maSizeHint; }
+
bool isPrimitiveSequenceCreated() const { return mbSequenceCreated; }
};