diff options
-rw-r--r-- | include/vcl/filter/SvmReader.hxx | 1 | ||||
-rw-r--r-- | include/vcl/metaact.hxx | 2 | ||||
-rw-r--r-- | vcl/source/filter/svm/SvmReader.cxx | 19 |
3 files changed, 21 insertions, 1 deletions
diff --git a/include/vcl/filter/SvmReader.hxx b/include/vcl/filter/SvmReader.hxx index fedaf58b9692..fc82e47268bc 100644 --- a/include/vcl/filter/SvmReader.hxx +++ b/include/vcl/filter/SvmReader.hxx @@ -59,6 +59,7 @@ public: rtl::Reference<MetaAction> BmpHandler(); rtl::Reference<MetaAction> BmpScaleHandler(); rtl::Reference<MetaAction> BmpScalePartHandler(); + rtl::Reference<MetaAction> BmpExHandler(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx index 4c531977100f..b3cd5e0b5e87 100644 --- a/include/vcl/metaact.hxx +++ b/include/vcl/metaact.hxx @@ -831,6 +831,8 @@ public: const BitmapEx& GetBitmapEx() const { return maBmpEx; } const Point& GetPoint() const { return maPt; } + void SetBitmapEx(BitmapEx rBmpEx) { maBmpEx = rBmpEx; } + void SetPoint(Point& rPt) { maPt = rPt; } bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); } }; diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx index ed75eb27893e..e53dbefeb45e 100644 --- a/vcl/source/filter/svm/SvmReader.cxx +++ b/vcl/source/filter/svm/SvmReader.cxx @@ -220,7 +220,7 @@ rtl::Reference<MetaAction> SvmReader::MetaActionHandler(ImplMetaReadData* pData) return BmpScalePartHandler(); break; case MetaActionType::BMPEX: - pAction = new MetaBmpExAction; + return BmpExHandler(); break; case MetaActionType::BMPEXSCALE: pAction = new MetaBmpExScaleAction; @@ -898,4 +898,21 @@ rtl::Reference<MetaAction> SvmReader::BmpScalePartHandler() return pAction; } + +rtl::Reference<MetaAction> SvmReader::BmpExHandler() +{ + auto pAction = new MetaBmpExAction(); + + VersionCompatRead aCompat(mrStream); + BitmapEx aBmpEx; + ReadDIBBitmapEx(aBmpEx, mrStream); + TypeSerializer aSerializer(mrStream); + Point aPoint; + aSerializer.readPoint(aPoint); + + pAction->SetPoint(aPoint); + pAction->SetBitmapEx(aBmpEx); + + return pAction; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |