diff options
author | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2017-04-14 00:04:57 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2017-05-04 12:48:29 +0200 |
commit | 6dc6d0003b9c8e9828f1e248471c0541331b6f27 (patch) | |
tree | 6536954e0391258cde27842b901e3a244036f894 /cppcanvas | |
parent | ce88d3a9d70fc8d8ee1b5273ddfc69951347c577 (diff) |
tdf#107159 EMF+ Add support for EmfPlusDrawArc record
EmfPlusDrawArc record specifies drawing the arc of an ellipse.
Change-Id: I87788a9b14f518a383cbc5b804af635427e4c395
Reviewed-on: https://gerrit.libreoffice.org/36537
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
(cherry picked from commit 715df6e9f8926e511dbdee52367ec08676f71952)
Reviewed-on: https://gerrit.libreoffice.org/37092
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
(cherry picked from commit 0adc3c002ddd7ccea6a184d9274e4695b1a857b4)
Diffstat (limited to 'cppcanvas')
-rw-r--r-- | cppcanvas/source/mtfrenderer/emfplus.cxx | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx index 341e29e3943c..bf9e3b89099d 100644 --- a/cppcanvas/source/mtfrenderer/emfplus.cxx +++ b/cppcanvas/source/mtfrenderer/emfplus.cxx @@ -67,7 +67,7 @@ namespace #define EmfPlusRecordTypeDrawEllipse 0x400F #define EmfPlusRecordTypeFillPie 0x4010 #define EmfPlusRecordTypeDrawPie 0x4011 -//TODO EmfPlusRecordTypeDrawArc 0x4012 +#define EmfPlusRecordTypeDrawArc 0x4012 //TODO EmfPlusRecordTypeFillRegion 0x4013 #define EmfPlusRecordTypeFillPath 0x4014 #define EmfPlusRecordTypeDrawPath 0x4015 @@ -224,6 +224,7 @@ const char* emfTypeToName(sal_uInt16 type) case EmfPlusRecordTypeDrawEllipse: return "EmfPlusRecordTypeDrawEllipse"; case EmfPlusRecordTypeFillPie: return "EmfPlusRecordTypeFillPie"; case EmfPlusRecordTypeDrawPie: return "EmfPlusRecordTypeDrawPie"; + case EmfPlusRecordTypeDrawArc: return "EmfPlusRecordTypeDrawArc"; case EmfPlusRecordTypeFillPath: return "EmfPlusRecordTypeFillPath"; case EmfPlusRecordTypeDrawPath: return "EmfPlusRecordTypeDrawPath"; case EmfPlusRecordTypeDrawImage: return "EmfPlusRecordTypeDrawImage"; @@ -1903,6 +1904,7 @@ namespace cppcanvas break; case EmfPlusRecordTypeFillPie: case EmfPlusRecordTypeDrawPie: + case EmfPlusRecordTypeDrawArc: { float startAngle, sweepAngle; @@ -1914,10 +1916,14 @@ namespace cppcanvas rMF.ReadUInt32( brushIndexOrColor ); SAL_INFO("cppcanvas.emf", "EMF+ FillPie colorOrIndex: " << brushIndexOrColor); } - else + else if ( type == EmfPlusRecordTypeDrawPie ) { SAL_INFO("cppcanvas.emf", "EMF+ DrawPie"); } + else + { + SAL_INFO("cppcanvas.emf", "EMF+ DrawArc"); + } rMF.ReadFloat( startAngle ).ReadFloat( sweepAngle ); float dx, dy, dw, dh; @@ -1948,8 +1954,11 @@ namespace cppcanvas " startAngle: " << startAngle << " sweepAngle: " << sweepAngle); B2DPolygon polygon = basegfx::tools::createPolygonFromEllipseSegment (mappedCenter, mappedSize.getX (), mappedSize.getY (), startAngle, endAngle); - polygon.append (mappedCenter); - polygon.setClosed (true); + if ( type != EmfPlusRecordTypeDrawArc ) + { + polygon.append (mappedCenter); + polygon.setClosed (true); + } B2DPolyPolygon polyPolygon (polygon); if ( type == EmfPlusRecordTypeFillPie ) |