summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Jaumann <meta_dev@yahoo.com>2015-01-21 09:15:59 +0000
committerMichael Jaumann <meta_dev@yahoo.com>2015-03-02 12:42:52 +0000
commit464673f22b810097eabf9d329afab9335ab09bb4 (patch)
tree4a3a38bcc32d3659ca907703bf5fdcf26f50327c
parent686472e1a000f0cd0ff15aabe8c86436639723f9 (diff)
draw strokes correct
dont connect single polygons from createAreaGeometry draw each polygone for itself Change-Id: Iff10fc7a221453d48ca042dd556f86b4342b60ef
-rw-r--r--canvas/source/opengl/ogl_canvashelper.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/canvas/source/opengl/ogl_canvashelper.cxx b/canvas/source/opengl/ogl_canvashelper.cxx
index 6397f4f0e763..7cdc7e67c4d8 100644
--- a/canvas/source/opengl/ogl_canvashelper.cxx
+++ b/canvas/source/opengl/ogl_canvashelper.cxx
@@ -659,10 +659,22 @@ namespace oglcanvas
unoCapeFromCap(strokeAttributes.StartCapType)
));
}
- rAct.maPolyPolys.push_back(aStrokedPolyPoly);
- rAct.maPolyPolys.back().makeUnique(); // own copy, for thread safety
+ // Note: the generated stroke poly-polygon is NOT free of
+ // self-intersections. Therefore, if we would render it
+ // via OutDev::DrawPolyPolygon(), on/off fill would
+ // generate off areas on those self-intersections.
- rAct.maFunction = &lcl_fillPolyPolygon;
+ for(sal_uInt32 i=0;i<nSize; ++i)
+ {
+ ::basegfx::B2DPolyPolygon tempStrokedPoly;
+ tempStrokedPoly.append(aStrokedPolyPoly.getB2DPolygon(i));
+
+ rAct.maPolyPolys.push_back(tempStrokedPoly);
+ rAct.maPolyPolys.back().makeUnique(); // own copy, for thread safety
+
+ rAct.maFunction = &lcl_fillPolyPolygon;
+
+ }
}
}