Add Handler for BmpExScalePart Read
The handler separates MetaBmpExScalePartAction::Read from metaact.hxx
Read implementation is now in SvmReader.hxx
Change-Id: I22f7cec1873dedfce16ec6ea597b5113089e8ec0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118677
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
diff --git a/include/vcl/filter/SvmReader.hxx b/include/vcl/filter/SvmReader.hxx
index 853a52a..9ce0714 100644
--- a/include/vcl/filter/SvmReader.hxx
+++ b/include/vcl/filter/SvmReader.hxx
@@ -61,6 +61,7 @@ public:
rtl::Reference<MetaAction> BmpScalePartHandler();
rtl::Reference<MetaAction> BmpExHandler();
rtl::Reference<MetaAction> BmpExScaleHandler();
rtl::Reference<MetaAction> BmpExScalePartHandler();
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index b71c59b5..c5925743 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -909,6 +909,11 @@ public:
const Size& GetDestSize() const { return maDstSz; }
const Point& GetSrcPoint() const { return maSrcPt; }
const Size& GetSrcSize() const { return maSrcSz; }
void SetBitmapEx(BitmapEx& rBmpEx) { maBmpEx = rBmpEx; }
void SetDestPoint(Point& rDstPt) { maDstPt = rDstPt; }
void SetDestSize(Size& rDstSz) { maDstSz = rDstSz; }
void SetSrcPoint(Point& rSrcPt) { maSrcPt = rSrcPt; }
void SetSrcSize(Size& rSrcSz) { maSrcSz = rSrcSz; }
bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx
index 303e280..679a618 100644
--- a/vcl/source/filter/svm/SvmReader.cxx
+++ b/vcl/source/filter/svm/SvmReader.cxx
@@ -226,7 +226,7 @@ rtl::Reference<MetaAction> SvmReader::MetaActionHandler(ImplMetaReadData* pData)
return BmpExScaleHandler();
break;
case MetaActionType::BMPEXSCALEPART:
pAction = new MetaBmpExScalePartAction;
return BmpExScalePartHandler();
break;
case MetaActionType::MASK:
pAction = new MetaMaskAction;
@@ -935,4 +935,30 @@ rtl::Reference<MetaAction> SvmReader::BmpExScaleHandler()
return pAction;
}
rtl::Reference<MetaAction> SvmReader::BmpExScalePartHandler()
{
auto pAction = new MetaBmpExScalePartAction();
VersionCompatRead aCompat(mrStream);
BitmapEx aBmpEx;
ReadDIBBitmapEx(aBmpEx, mrStream);
TypeSerializer aSerializer(mrStream);
Point aDstPoint;
aSerializer.readPoint(aDstPoint);
Size aDstSize;
aSerializer.readSize(aDstSize);
Point aSrcPoint;
aSerializer.readPoint(aSrcPoint);
Size aSrcSize;
aSerializer.readSize(aSrcSize);
pAction->SetBitmapEx(aBmpEx);
pAction->SetDestPoint(aDstPoint);
pAction->SetDestSize(aDstSize);
pAction->SetSrcPoint(aSrcPoint);
pAction->SetSrcSize(aSrcSize);
return pAction;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */