summaryrefslogtreecommitdiff
path: root/emfio/source
diff options
context:
space:
mode:
Diffstat (limited to 'emfio/source')
-rw-r--r--emfio/source/emfuno/xemfparser.cxx15
-rw-r--r--emfio/source/reader/emfreader.cxx4
2 files changed, 17 insertions, 2 deletions
diff --git a/emfio/source/emfuno/xemfparser.cxx b/emfio/source/emfuno/xemfparser.cxx
index 717f2dad7cfb..0c623d7659aa 100644
--- a/emfio/source/emfuno/xemfparser.cxx
+++ b/emfio/source/emfuno/xemfparser.cxx
@@ -32,6 +32,7 @@
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <unotools/ucbstreamhelper.hxx>
#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
+#include <sal/log.hxx>
#include <wmfreader.hxx>
#include <emfreader.hxx>
@@ -46,6 +47,7 @@ namespace emfio::emfreader
{
private:
uno::Reference< uno::XComponentContext > context_;
+ basegfx::B2DTuple maSizeHint;
public:
explicit XEmfParser(
@@ -58,6 +60,7 @@ namespace emfio::emfreader
const uno::Reference< ::io::XInputStream >& xEmfStream,
const OUString& aAbsolutePath,
const uno::Sequence< ::beans::PropertyValue >& rProperties) override;
+ void SAL_CALL setSizeHint(const geometry::RealPoint2D& rSize) override;
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
@@ -105,7 +108,9 @@ namespace emfio::emfreader
if (nMetaType == 0x464d4520)
{
// read and get possible failure/error, ReadEnhWMF returns success
- bReadError = !emfio::EmfReader(*pStream, aMtf).ReadEnhWMF();
+ emfio::EmfReader aReader(*pStream, aMtf);
+ aReader.SetSizeHint(maSizeHint);
+ bReadError = !aReader.ReadEnhWMF();
}
else
{
@@ -175,12 +180,18 @@ namespace emfio::emfreader
}
else
{
- OSL_ENSURE(false, "Invalid stream (!)");
+ SAL_WARN("emfio", "Invalid stream (!)");
}
return comphelper::containerToSequence(aRetval);
}
+ void XEmfParser::setSizeHint(const geometry::RealPoint2D& rSize)
+ {
+ maSizeHint.setX(rSize.X);
+ maSizeHint.setY(rSize.Y);
+ }
+
OUString SAL_CALL XEmfParser::getImplementationName()
{
return "emfio::emfreader::XEmfParser";
diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx
index 7bb4d408203a..2c932a440eeb 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -503,6 +503,10 @@ namespace emfio
return;
}
+ // aGraphic will be the only output of the EMF parser, so its size hint can be the same as
+ // ours.
+ aGraphic.getVectorGraphicData()->setSizeHint(maSizeHint);
+
maBmpSaveList.emplace_back(new BSaveStruct(aGraphic.GetBitmapEx(), aOutputRect, SRCCOPY));
const std::shared_ptr<VectorGraphicData> pVectorGraphicData
= aGraphic.getVectorGraphicData();