[Libreoffice-commits] core.git: cppcanvas/source

Radek Doulik rodo at novell.com
Fri Mar 15 06:49:06 PDT 2013


 cppcanvas/source/mtfrenderer/emfplus.cxx |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

New commits:
commit cf6b2f0ecef2c23c24114ca1a1609a4a81ade8a1
Author: Radek Doulik <rodo at novell.com>
Date:   Fri Mar 15 14:48:05 2013 +0100

    implemented EmfPlusRecordTypeFillEllipse record
    
    Change-Id: Id9362d05ddae2066f2fa289640f447393d7cda84

diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index 6712031..8424597 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
@@ -1296,6 +1298,30 @@ namespace cppcanvas
                             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:
                         {
                             EMFP_DEBUG (printf ("EMF+ FillRects\n"));


More information about the Libreoffice-commits mailing list