diff options
author | Michael Jaumann <meta_dev@yahoo.com> | 2014-11-28 14:02:01 +0000 |
---|---|---|
committer | Michael Jaumann <meta_dev@yahoo.com> | 2015-03-02 12:42:47 +0000 |
commit | 2a02f82508792631feed6f69d04857f90d4fce16 (patch) | |
tree | 4c860dcf81314cffdc10aa069db85dd56f616efd | |
parent | dbdecd3905d3743f235d0152b1987146df81ced2 (diff) |
avoid rendering polygons with 0 vertices
Change-Id: I73d5671770bdad8a3b3b52d769d02f2819a16604
-rw-r--r-- | canvas/source/opengl/ogl_canvastools.cxx | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/canvas/source/opengl/ogl_canvastools.cxx b/canvas/source/opengl/ogl_canvastools.cxx index 346d73a55fe4..4e5bb8af0156 100644 --- a/canvas/source/opengl/ogl_canvastools.cxx +++ b/canvas/source/opengl/ogl_canvastools.cxx @@ -40,17 +40,21 @@ namespace oglcanvas const double nHeight=rBounds.getHeight(); const ::basegfx::B2DPolygon& rTriangulatedPolygon( ::basegfx::triangulator::triangulate(aPolyPoly)); - std::vector<glm::vec2> vertices; - vertices.reserve(rTriangulatedPolygon.count()); - for( sal_uInt32 i=0; i<rTriangulatedPolygon.count(); i++ ) + if(rTriangulatedPolygon.count()>0) { - const ::basegfx::B2DPoint& rPt( rTriangulatedPolygon.getB2DPoint(i) ); - vertices.push_back(glm::vec2(rPt.getX(),rPt.getY())); + std::vector<glm::vec2> vertices; + vertices.reserve(rTriangulatedPolygon.count()); + for( sal_uInt32 i=0; i<rTriangulatedPolygon.count(); i++ ) + { + const ::basegfx::B2DPoint& rPt( rTriangulatedPolygon.getB2DPoint(i) ); + vertices.push_back(glm::vec2(rPt.getX(),rPt.getY())); + } + + if(hasTexture) + renderHelper->renderVertexTex( vertices, nWidth, nHeight, color, GL_TRIANGLES); + else + renderHelper->renderVertexConstColor(vertices, color, GL_TRIANGLES); } - if(hasTexture) - renderHelper->renderVertexTex( vertices, nWidth, nHeight, color, GL_TRIANGLES); - else - renderHelper->renderVertexConstColor(vertices, color, GL_TRIANGLES); } /** only use this for line polygons. @@ -70,15 +74,17 @@ namespace oglcanvas const sal_uInt32 nPts=rPolygon.count(); const sal_uInt32 nExtPts=nPts + int(rPolygon.isClosed()); - std::vector<glm::vec2> vertices; - vertices.reserve(nExtPts); - for( sal_uInt32 j=0; j<nExtPts; j++ ) - { - const ::basegfx::B2DPoint& rPt( rPolygon.getB2DPoint( j % nPts ) ); - vertices.push_back(glm::vec2(rPt.getX(),rPt.getY())); - } if(nExtPts>0) + { + std::vector<glm::vec2> vertices; + vertices.reserve(nExtPts); + for( sal_uInt32 j=0; j<nExtPts; j++ ) + { + const ::basegfx::B2DPoint& rPt( rPolygon.getB2DPoint( j % nPts ) ); + vertices.push_back(glm::vec2(rPt.getX(),rPt.getY())); + } renderHelper->renderVertexConstColor(vertices, color, GL_LINE_STRIP); + } } } |