From fc0dc77c71caa70d7bdf50076c3f0f55e44b855f Mon Sep 17 00:00:00 2001 From: cxl Date: Tue, 8 Jan 2019 11:18:09 +0000 Subject: [PATCH] GLDraw: Fixed issue with DrawEllipse git-svn-id: svn://ultimatepp.org/upp/trunk@12653 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/GLDraw/Tellipse.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/uppsrc/GLDraw/Tellipse.cpp b/uppsrc/GLDraw/Tellipse.cpp index 542ddf5cf..1203ff601 100644 --- a/uppsrc/GLDraw/Tellipse.cpp +++ b/uppsrc/GLDraw/Tellipse.cpp @@ -37,21 +37,24 @@ void Ellipse(GLTriangles& tr, Pointf center, Sizef radius, Color color, int c = tr.Vertex(center, color, alpha); int a, a0; int la, lao, la0, lao0; + bool has_line = width > 0 && !IsNull(line_color); + bool has_interior = !IsNull(color); for(int i = 0; i < 256; i += st) { Pointf dir = radius * e[i]; int b, lb, lbo; - if(width > 0) { // we need to draw border line + if(has_line) { // we need to draw border line lbo = tr.Vertex(center + dir, line_color, alpha); // outer point dir -= circle ? width * dir : width * Normalize(dir); lb = tr.Vertex(center + dir, line_color, alpha); // inner point } b = tr.Vertex(center + dir, color, alpha); if(i) { - if(width > 0) { + if(has_line) { tr.Triangle(la, lao, lbo); tr.Triangle(lbo, lb, la); } - tr.Triangle(c, a, b); + if(has_interior) + tr.Triangle(c, a, b); } else { a0 = b; @@ -62,8 +65,9 @@ void Ellipse(GLTriangles& tr, Pointf center, Sizef radius, Color color, la = lb; lao = lbo; } - tr.Triangle(c, a, a0); - if(width > 0) { + if(has_interior) + tr.Triangle(c, a, a0); + if(has_line) { tr.Triangle(la, lao, lao0); tr.Triangle(lao0, la0, la); }