diff options
Diffstat (limited to 'src/graphics/OpenGLDrawMethods.inl')
| -rw-r--r-- | src/graphics/OpenGLDrawMethods.inl | 27 |
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); } } } |
