summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadek Doulik <rodo@novell.com>2013-03-15 14:48:05 +0100
committerFridrich Strba <fridrich@documentfoundation.org>2013-03-16 16:06:54 +0000
commit38fc2a552a79adc7945eab9dc4e534653cdad553 (patch)
treecc561471e4a278e9e93ac23f25d662bedab18d74
parent69cf6bf3e367aaf46107af96d7a6bd0aef8f667c (diff)
implemented EmfPlusRecordTypeFillEllipse record
(cherry picked from commit cf6b2f0ecef2c23c24114ca1a1609a4a81ade8a1) Conflicts: cppcanvas/source/mtfrenderer/emfplus.cxx Change-Id: Id9362d05ddae2066f2fa289640f447393d7cda84 Reviewed-on: https://gerrit.libreoffice.org/2749 Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org> Tested-by: Fridrich Strba <fridrich@documentfoundation.org> (cherry picked from commit f820b5b5b97fff0393a2c346f579384e63f7c2db) Reviewed-on: https://gerrit.libreoffice.org/2750 Reviewed-by: Michael Meeks <michael.meeks@suse.com> Reviewed-by: Joren De Cuyper <joren.libreoffice@telenet.be>
-rw-r--r--cppcanvas/source/mtfrenderer/emfplus.cxx28
1 files changed, 27 insertions, 1 deletions
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index 1dbbd8244c5b..383ce3104a6e 100644
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
@@ -53,6 +53,8 @@
#define EmfPlusRecordTypeFillRects 16394
#define EmfPlusRecordTypeFillPolygon 16396
#define EmfPlusRecordTypeDrawLines 16397
+#define EmfPlusRecordTypeFillEllipse 16398
+#define EmfPlusRecordTypeDrawEllipse 16399
#define EmfPlusRecordTypeFillPie 16400
#define EmfPlusRecordTypeFillPath 16404
#define EmfPlusRecordTypeDrawPath 16405
@@ -1289,7 +1291,31 @@ namespace cppcanvas
EMFP_DEBUG (printf ("EMF+ FillPath slot: %u\n", (unsigned int)index));
- EMFPPlusFillPolygon (((EMFPPath*) aObjects [index])->GetPolygon (*this), rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor);
+ EMFPPlusFillPolygon (((EMFPPath*) aObjects [index])->GetPolygon (*this), rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor);
+ }
+ break;
+ case EmfPlusRecordTypeFillEllipse:
+ {
+ sal_uInt32 index = flags & 0xff;
+ sal_uInt32 brushIndexOrColor;
+
+ rMF >> brushIndexOrColor;
+
+ EMFP_DEBUG (printf ("EMF+ FillEllipse slot: %u\n", (unsigned int)index));
+
+ float dx, dy, dw, dh;
+
+ ReadRectangle (rMF, dx, dy, dw, dh, flags & 0x4000);
+
+ EMFP_DEBUG (printf ("EMF+ RectData: %f,%f %fx%f\n", dx, dy, dw, dh));
+
+ B2DPoint mappedCenter (Map (dx + dw/2, dy + dh/2));
+ B2DSize mappedSize( MapSize (dw/2, dh/2));
+
+ ::basegfx::B2DPolyPolygon polyPolygon( ::basegfx::B2DPolygon( ::basegfx::tools::createPolygonFromEllipse( mappedCenter, mappedSize.getX (), mappedSize.getY () ) ) );
+
+ EMFPPlusFillPolygon( polyPolygon,
+ rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor );
}
break;
case EmfPlusRecordTypeFillRects: