summaryrefslogtreecommitdiff
path: root/cppcanvas
diff options
context:
space:
mode:
authorAndrzej Hunt <andrzej.hunt@collabora.com>2014-01-01 17:36:54 +0000
committerAndrzej Hunt <andrzej.hunt@collabora.com>2014-01-01 17:40:16 +0000
commit9b1ceabd5f696500d4fe2acb89170bd987966a9b (patch)
tree2d14f65aecb5996fa0fb198f9b7048a7a001bb88 /cppcanvas
parent2b3b4d4085059060c3e7c1573d2f830861350a47 (diff)
EMF+: actually use lineJoin attribute for polygons.
Change-Id: I5b369703333332598353d9817f0253bbe5fc3601
Diffstat (limited to 'cppcanvas')
-rw-r--r--cppcanvas/source/mtfrenderer/emfplus.cxx28
1 files changed, 18 insertions, 10 deletions
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index a6aeb6318910..899e8c84b185 100644
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
@@ -623,6 +623,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;
@@ -644,14 +657,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;
}
@@ -789,8 +795,10 @@ namespace cppcanvas
rStrokeAttributes.StrokeWidth = fabs((rState.mapModeTransform * rR.MapSize (width == 0.0 ? 0.05 : width, 0)).getLength());
}
- void SetStrokeDashing(rendering::StrokeAttributes& rStrokeAttributes)
+ void SetStrokeAttributes(rendering::StrokeAttributes& rStrokeAttributes)
{
+ rStrokeAttributes.JoinType = lcl_convertLineJoinType(lineJoin);
+
if (dashStyle != EmfPlusLineStyleSolid)
{
const float dash[] = {3, 3};
@@ -1395,7 +1403,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;