From 578e0db66e1488303466f621a54546d1558573a4 Mon Sep 17 00:00:00 2001 From: Dongxu Li Date: Tue, 10 Jul 2012 16:10:51 -0400 Subject: [PATCH 1/2] drawEllipse: added a filled option --- glcd.c | 15 ++++++++++----- glcd.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/glcd.c b/glcd.c index 683f8a3a..b5f74d74 100644 --- a/glcd.c +++ b/glcd.c @@ -319,16 +319,21 @@ void lcdDrawCircle(uint16_t x, uint16_t y, uint16_t radius, uint8_t filled, uint } while(a <= b); } -void lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint16_t color) { +void lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint16_t color, uint8_t filled) { int dx = 0, dy = b; /* im I. Quadranten von links oben nach rechts unten */ long a2 = a*a, b2 = b*b; long err = b2-(2*b-1)*a2, e2; /* Fehler im 1. Schritt */ do { - lcdDrawPixel(x+dx, y+dy, color); /* I. Quadrant */ - lcdDrawPixel(x-dx, y+dy, color); /* II. Quadrant */ - lcdDrawPixel(x-dx, y-dy, color); /* III. Quadrant */ - lcdDrawPixel(x+dx, y-dy, color); /* IV. Quadrant */ + if(filled){ + lcdDrawLine(x-dx,y+dy,x+dx,y+dy); + lcdDrawLine(x-dx,y-dy,x+dx,y-dy); + }else{ + lcdDrawPixel(x+dx, y+dy, color); /* I. Quadrant */ + lcdDrawPixel(x-dx, y+dy, color); /* II. Quadrant */ + lcdDrawPixel(x-dx, y-dy, color); /* III. Quadrant */ + lcdDrawPixel(x+dx, y-dy, color); /* IV. Quadrant */ + } e2 = 2*err; if(e2 < (2*dx+1)*b2) { diff --git a/glcd.h b/glcd.h index bb587253..e4a5d509 100644 --- a/glcd.h +++ b/glcd.h @@ -67,7 +67,7 @@ void lcdDrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t co void lcdDrawRect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t filled, uint16_t color); void lcdDrawRectString(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, const char* str, font_t font, uint16_t fontColor, uint16_t bkColor); void lcdDrawCircle(uint16_t x, uint16_t y, uint16_t radius, uint8_t filled, uint16_t color); -void lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint16_t color); +void lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint16_t color, uint8_t filled); /* Text Rendering Functions */ int lcdDrawChar(uint16_t cx, uint16_t cy, char c, font_t font, uint16_t color, uint16_t bkcolor, bool_t tpText); From 75fc51104a991e45f565a07eecd19e50b4cbd251 Mon Sep 17 00:00:00 2001 From: Dongxu Li Date: Tue, 10 Jul 2012 16:15:18 -0400 Subject: [PATCH 2/2] lcdDrawEllipse: fixed a missing color option --- glcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glcd.c b/glcd.c index b5f74d74..51c62828 100644 --- a/glcd.c +++ b/glcd.c @@ -326,8 +326,8 @@ void lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint16_t col do { if(filled){ - lcdDrawLine(x-dx,y+dy,x+dx,y+dy); - lcdDrawLine(x-dx,y-dy,x+dx,y-dy); + lcdDrawLine(x-dx,y+dy,x+dx,y+dy, color); + lcdDrawLine(x-dx,y-dy,x+dx,y-dy, color); }else{ lcdDrawPixel(x+dx, y+dy, color); /* I. Quadrant */ lcdDrawPixel(x-dx, y+dy, color); /* II. Quadrant */