summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2017-04-14 00:04:57 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-04-29 20:50:52 +0200
commit0adc3c002ddd7ccea6a184d9274e4695b1a857b4 (patch)
tree8f596cb7b299c8f12680e174d13d663e28186d8f
parentf17742141e3f5657996f2f82f7b7642e81615b7f (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>
-rw-r--r--cppcanvas/source/mtfrenderer/emfplus.cxx17
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 )