summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Jaumann <meta_dev@yahoo.com>2014-11-28 14:02:01 +0000
committerMichael Jaumann <meta_dev@yahoo.com>2015-03-02 12:42:47 +0000
commit2a02f82508792631feed6f69d04857f90d4fce16 (patch)
tree4c860dcf81314cffdc10aa069db85dd56f616efd
parentdbdecd3905d3743f235d0152b1987146df81ced2 (diff)
avoid rendering polygons with 0 vertices
Change-Id: I73d5671770bdad8a3b3b52d769d02f2819a16604
-rw-r--r--canvas/source/opengl/ogl_canvastools.cxx38
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);
+ }
}
}