summaryrefslogtreecommitdiff
path: root/src/graphics/OpenGLDrawMethods.inl
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2013-05-16 01:10:22 (GMT)
committer jacob1 <jfu614@gmail.com>2013-05-16 01:10:22 (GMT)
commit5ad819efbd4dd745d315d6a238fd0aa11af7be31 (patch)
treeed5efdde4f29902d3b2122a5f876cfe1895136a9 /src/graphics/OpenGLDrawMethods.inl
parent3d530e4f7382e6a9d50cb2ade8be2f2508bd5760 (diff)
downloadpowder-5ad819efbd4dd745d315d6a238fd0aa11af7be31.zip
powder-5ad819efbd4dd745d315d6a238fd0aa11af7be31.tar.gz
remove checks on location / element in the simulation drawing functions. fix drawing circles with an rx of 0. Probably fix compiling error
Diffstat (limited to 'src/graphics/OpenGLDrawMethods.inl')
-rw-r--r--src/graphics/OpenGLDrawMethods.inl27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/graphics/OpenGLDrawMethods.inl b/src/graphics/OpenGLDrawMethods.inl
index 2bba731..52d09da 100644
--- a/src/graphics/OpenGLDrawMethods.inl
+++ b/src/graphics/OpenGLDrawMethods.inl
@@ -1,4 +1,5 @@
-#include "../data/font.h"
+#include "../data/font.h"
+#include <math.h>
int PIXELMETHODS_CLASS::drawtext_outline(int x, int y, const char *s, int r, int g, int b, int a)
{
@@ -317,6 +318,12 @@ void PIXELMETHODS_CLASS::fillrect(int x, int y, int width, int height, int r, in
void PIXELMETHODS_CLASS::drawcircle(int x, int y, int rx, int ry, int r, int g, int b, int a)
{
int yTop = ry, yBottom, i, j;
+ if (!rx)
+ {
+ for (j = -ry; j <= ry; j++)
+ blendpixel(x, y+j, r, g, b, a);
+ return;
+ }
for (i = 0; i <= rx; i++) {
yBottom = yTop;
while (pow(i-rx,2.0)*pow(ry,2.0) + pow(yTop-ry,2.0)*pow(rx,2.0) <= pow(rx,2.0)*pow(ry,2.0))
@@ -325,14 +332,14 @@ void PIXELMETHODS_CLASS::drawcircle(int x, int y, int rx, int ry, int r, int g,
yTop--;
for (int j = yBottom; j <= yTop; j++)
{
- blendpixel(x+i, y+j, r, g, b, a);
+ blendpixel(x+i-rx, y+j-ry, r, g, b, a);
if (i != rx)
- blendpixel(x+2*rx-i, y+j, r, g, b, a);
+ blendpixel(x-i+rx, y+j-ry, r, g, b, a);
if (j != ry)
{
- blendpixel(x+i, y+2*ry-j, r, g, b, a);
+ blendpixel(x+i-rx, y-j+ry, r, g, b, a);
if (i != rx)
- blendpixel(x+2*rx-i, y+2*ry-j, r, g, b, a);
+ blendpixel(x-i+rx, y-j+ry, r, g, b, a);
}
}
}
@@ -341,6 +348,12 @@ void PIXELMETHODS_CLASS::drawcircle(int x, int y, int rx, int ry, int r, int g,
void PIXELMETHODS_CLASS::fillcircle(int x, int y, int rx, int ry, int r, int g, int b, int a)
{
int yTop = ry+1, yBottom, i, j;
+ if (!rx)
+ {
+ for (j = -ry; j <= ry; j++)
+ blendpixel(x, y+j, r, g, b, a);
+ return;
+ }
for (i = 0; i <= rx; i++)
{
while (pow(i-rx,2.0)*pow(ry,2.0) + pow(yTop-ry,2.0)*pow(rx,2.0) <= pow(rx,2.0)*pow(ry,2.0))
@@ -348,9 +361,9 @@ void PIXELMETHODS_CLASS::fillcircle(int x, int y, int rx, int ry, int r, int g,
yBottom = 2*ry - yTop;
for (int j = yBottom+1; j < yTop; j++)
{
- blendpixel(x+i, y+j, r, g, b, a);
+ blendpixel(x+i-rx, y+j-ry, r, g, b, a);
if (i != rx)
- blendpixel(x+2*rx-i, y+j, r, g, b, a);
+ blendpixel(x-i+rx, y+j-ry, r, g, b, a);
}
}
}