mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
GLDraw: Fixed issue with DrawEllipse
git-svn-id: svn://ultimatepp.org/upp/trunk@12653 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
c00f366afc
commit
fc0dc77c71
1 changed files with 9 additions and 5 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue