[Libreoffice-commits] core.git: drawinglayer/source
Bartosz Kosiorek
gang65 at poczta.onet.pl
Mon Nov 13 14:23:25 UTC 2017
drawinglayer/source/tools/emfphelperdata.cxx | 22 ++++++++++++++++++++--
drawinglayer/source/tools/emfphelperdata.hxx | 2 +-
2 files changed, 21 insertions(+), 3 deletions(-)
New commits:
commit 6db0267156030ca24163efd9b66278f54bf28d73
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date: Fri Nov 10 14:08:38 2017 +0100
tdf#113758 EMF+ Add support to OffsetClip record
OffsetClip record applies a translation transform
on the current clipping region for the world space.
Change-Id: Iac024a3c2eaba58edc5bb59d817796b6022f559f
Reviewed-on: https://gerrit.libreoffice.org/44597
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mark Page <aptitude at btconnect.com>
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index d791eb034309..a1cdab8559d5 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -89,6 +89,7 @@ namespace emfplushelper
case EmfPlusRecordTypeSetClipRect: return "EmfPlusRecordTypeSetClipRect";
case EmfPlusRecordTypeSetClipPath: return "EmfPlusRecordTypeSetClipPath";
case EmfPlusRecordTypeSetClipRegion: return "EmfPlusRecordTypeSetClipRegion";
+ case EmfPlusRecordTypeOffsetClip: return "EmfPlusRecordTypeOffsetClip";
case EmfPlusRecordTypeDrawDriverString: return "EmfPlusRecordTypeDrawDriverString";
}
return "";
@@ -1506,7 +1507,7 @@ namespace emfplushelper
float eAngle;
rMS.ReadFloat(eAngle);
- SAL_INFO("drawinglayer", "EMF+ EmfPlusRecordTypeRotateWorldTransform Angle: " << eAngle <<
+ SAL_INFO("drawinglayer", "EMF+ RotateWorldTransform Angle: " << eAngle <<
", post multiply: " << (flags & 0x2000));
// Skipping flags & 0x2000
// For rotation transformation there is no difference between post and pre multiply
@@ -1519,7 +1520,7 @@ namespace emfplushelper
}
case EmfPlusRecordTypeResetClip:
{
- SAL_INFO("drawinglayer", "EMF+ EmfPlusRecordTypeResetClip");
+ SAL_INFO("drawinglayer", "EMF+ ResetClip");
// We don't need to read anything more, as Size needs to be set 0x0000000C
// and DataSize must be set to 0.
@@ -1584,6 +1585,23 @@ namespace emfplushelper
}
break;
}
+ case EmfPlusRecordTypeOffsetClip:
+ {
+ float dx, dy;
+ rMS.ReadFloat(dx).ReadFloat(dy);
+ SAL_INFO("drawinglayer", "EMF+ OffsetClip, Offset x:" << dx << ", y:" << dy);
+
+ basegfx::B2DPolyPolygon aPolyPolygon(
+ mrPropertyHolders.Current().getClipPolyPolygon());
+ basegfx::B2DHomMatrix transformMatrix;
+ transformMatrix.set(0, 2, dx);
+ transformMatrix.set(1, 2, dy);
+ aPolyPolygon.transform(transformMatrix);
+
+ HandleNewClipRegion(aPolyPolygon, mrTargetHolders, mrPropertyHolders);
+
+ break;
+ }
case EmfPlusRecordTypeDrawDriverString:
{
SAL_INFO("drawinglayer", "EMF+ DrawDriverString, flags: 0x" << std::hex << flags << std::dec);
diff --git a/drawinglayer/source/tools/emfphelperdata.hxx b/drawinglayer/source/tools/emfphelperdata.hxx
index 71aa0758544f..8c91e4edadb0 100644
--- a/drawinglayer/source/tools/emfphelperdata.hxx
+++ b/drawinglayer/source/tools/emfphelperdata.hxx
@@ -86,7 +86,7 @@ namespace emfplushelper
#define EmfPlusRecordTypeSetClipRect 0x4032
#define EmfPlusRecordTypeSetClipPath 0x4033
#define EmfPlusRecordTypeSetClipRegion 0x4034
- //TODO EmfPlusRecordTypeOffsetClip 0x4035
+ #define EmfPlusRecordTypeOffsetClip 0x4035
#define EmfPlusRecordTypeDrawDriverString 0x4036
//TODO EmfPlusRecordTypeStrokeFillPath 0x4037
//TODO EmfPlusRecordTypeSerializableObject 0x4038
More information about the Libreoffice-commits
mailing list