diff options
author | panoskorovesis <panoskorovesis@outlook.com> | 2021-07-13 13:35:09 +0300 |
---|---|---|
committer | panoskorovesis <panoskorovesis@outlook.com> | 2021-07-13 15:23:09 +0300 |
commit | bad472bc31912c7f1527c2086a485ff129b2f554 (patch) | |
tree | e67b56737eae97ebc812ca42fa9350bbb81d8198 | |
parent | d23a21b4e98466a5ad792149280d3a9745545744 (diff) |
Add Handler for MaskScalePart Read
The handler separates MetaMaskScaleAction::Read from metaact.hxx
Read implementation is now in SvmReader.hxx
Change-Id: I3642bc16d015e93a83e68e3e69cdab5da595efac
-rw-r--r-- | include/vcl/filter/SvmReader.hxx | 1 | ||||
-rw-r--r-- | include/vcl/metaact.hxx | 6 | ||||
-rw-r--r-- | vcl/source/filter/svm/SvmReader.cxx | 31 |
3 files changed, 37 insertions, 1 deletions
diff --git a/include/vcl/filter/SvmReader.hxx b/include/vcl/filter/SvmReader.hxx index 9544bb2f8e4d..720480e7fd57 100644 --- a/include/vcl/filter/SvmReader.hxx +++ b/include/vcl/filter/SvmReader.hxx @@ -64,6 +64,7 @@ public: rtl::Reference<MetaAction> BmpExScalePartHandler(); rtl::Reference<MetaAction> MaskHandler(); rtl::Reference<MetaAction> MaskScaleHandler(); + rtl::Reference<MetaAction> MaskScalePartHandler(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx index e48cdf2d8c0d..c7e7fb6ade9c 100644 --- a/include/vcl/metaact.hxx +++ b/include/vcl/metaact.hxx @@ -1031,6 +1031,12 @@ public: const Size& GetDestSize() const { return maDstSz; } const Point& GetSrcPoint() const { return maSrcPt; } const Size& GetSrcSize() const { return maSrcSz; } + void SetBitmap(Bitmap& rBmp) { maBmp = rBmp; } + void SetColor(Color& rColor) { maColor = rColor; } + void SetDestPoint(Point& rPt) { maDstPt = rPt; } + void SetDestSize(Size& rSz) { maDstSz = rSz; } + void SetSrcPoint(Point& rPt) { maSrcPt = rPt; } + void SetSrcSize(Size& rSz) { maSrcSz = rSz; } }; class SAL_DLLPUBLIC_RTTI MetaGradientAction final : public MetaAction diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx index 624712be19ba..55330baa3afd 100644 --- a/vcl/source/filter/svm/SvmReader.cxx +++ b/vcl/source/filter/svm/SvmReader.cxx @@ -235,7 +235,7 @@ rtl::Reference<MetaAction> SvmReader::MetaActionHandler(ImplMetaReadData* pData) return MaskScaleHandler(); break; case MetaActionType::MASKSCALEPART: - pAction = new MetaMaskScalePartAction; + return MaskScalePartHandler(); break; case MetaActionType::GRADIENT: pAction = new MetaGradientAction; @@ -998,4 +998,33 @@ rtl::Reference<MetaAction> SvmReader::MaskScaleHandler() return pAction; } + +rtl::Reference<MetaAction> SvmReader::MaskScalePartHandler() +{ + auto pAction = new MetaMaskScalePartAction(); + + VersionCompatRead aCompat(mrStream); + Bitmap aBmp; + ReadDIB(aBmp, mrStream, true); + Color aColor; + ReadColor(aColor); + TypeSerializer aSerializer(mrStream); + Point aDstPt; + aSerializer.readPoint(aDstPt); + Size aDstSz; + aSerializer.readSize(aDstSz); + Point aSrcPt; + aSerializer.readPoint(aSrcPt); + Size aSrcSz; + aSerializer.readSize(aSrcSz); + + pAction->SetBitmap(aBmp); + pAction->SetColor(aColor); + pAction->SetDestPoint(aDstPt); + pAction->SetDestSize(aDstSz); + pAction->SetSrcPoint(aSrcPt); + pAction->SetSrcSize(aSrcSz); + + return pAction; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |