diff options
author | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-01-01 17:36:54 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-01-03 10:17:53 +0100 |
commit | 148ad3353454c4e00978d3a28dc7f3809375a1e4 (patch) | |
tree | 3e94a4459188f5907f4cd460191b25ac104ccaea /cppcanvas | |
parent | b89d82438bd20808098ac7001cd192133864295b (diff) |
EMF+: actually use lineJoin attribute for polygons.
Change-Id: I5b369703333332598353d9817f0253bbe5fc3601
(cherry picked from commit 9b1ceabd5f696500d4fe2acb89170bd987966a9b)
Reviewed-on: https://gerrit.libreoffice.org/7248
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'cppcanvas')
-rw-r--r-- | cppcanvas/source/mtfrenderer/emfplus.cxx | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx index 01ea3c656f83..a247f4f6937f 100644 --- a/cppcanvas/source/mtfrenderer/emfplus.cxx +++ b/cppcanvas/source/mtfrenderer/emfplus.cxx @@ -620,6 +620,19 @@ namespace cppcanvas return rendering::PathCapType::BUTT; } + sal_Int8 lcl_convertLineJoinType(sal_uInt32 nEmfLineJoin) + { + switch (nEmfLineJoin) + { + case EmfPlusLineJoinTypeMiter: // fall-through + case EmfPlusLineJoinTypeMiterClipped: return rendering::PathJoinType::MITER; + case EmfPlusLineJoinTypeBevel: return rendering::PathJoinType::BEVEL; + case EmfPlusLineJoinTypeRound: return rendering::PathJoinType::ROUND; + } + assert(false); // Line Join type isn't in specification. + return 0; + } + struct EMFPCustomLineCap : public EMFPObject { sal_uInt32 type; @@ -641,14 +654,7 @@ namespace cppcanvas { aAttributes.StartCapType = lcl_convertStrokeCap(strokeStartCap); aAttributes.EndCapType = lcl_convertStrokeCap(strokeEndCap); - - switch (strokeJoin) - { - case EmfPlusLineJoinTypeMiter: // fall-through - case EmfPlusLineJoinTypeMiterClipped: aAttributes.JoinType = rendering::PathJoinType::MITER; break; - case EmfPlusLineJoinTypeBevel: aAttributes.JoinType = rendering::PathJoinType::BEVEL; break; - case EmfPlusLineJoinTypeRound: aAttributes.JoinType = rendering::PathJoinType::ROUND; break; - } + aAttributes.JoinType = lcl_convertLineJoinType(strokeJoin); aAttributes.MiterLimit = miterLimit; } @@ -786,8 +792,10 @@ namespace cppcanvas rStrokeAttributes.StrokeWidth = fabs((rState.mapModeTransform * rR.MapSize (width == 0.0 ? 0.05 : width, 0)).getX()); } - void SetStrokeDashing(rendering::StrokeAttributes& rStrokeAttributes) + void SetStrokeAttributes(rendering::StrokeAttributes& rStrokeAttributes) { + rStrokeAttributes.JoinType = lcl_convertLineJoinType(lineJoin); + if (dashStyle != EmfPlusLineStyleSolid) { const float dash[] = {3, 3}; @@ -1393,7 +1401,7 @@ namespace cppcanvas // but eg. dashing has to be additionally set only on the // polygon rendering::StrokeAttributes aPolygonAttributes(aCommonAttributes); - pen->SetStrokeDashing(aPolygonAttributes); + pen->SetStrokeAttributes(aPolygonAttributes); basegfx::B2DPolyPolygon aFinalPolyPolygon; |