@@ -495,7 +495,9 @@ void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h,
495495*/
496496/* *************************************************************************/
497497void Adafruit_GFX::drawRoundRect (int16_t x, int16_t y, int16_t w,
498- int16_t h, int16_t r, uint16_t color) {
498+ int16_t h, int16_t r, uint16_t color) {
499+ int16_t max_radius = ((w < h) ? w : h) / 2 ; // 1/2 minor axis
500+ if (r > max_radius) r = max_radius;
499501 // smarter version
500502 startWrite ();
501503 writeFastHLine (x+r , y , w-2 *r, color); // Top
@@ -522,11 +524,12 @@ void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
522524*/
523525/* *************************************************************************/
524526void Adafruit_GFX::fillRoundRect (int16_t x, int16_t y, int16_t w,
525- int16_t h, int16_t r, uint16_t color) {
527+ int16_t h, int16_t r, uint16_t color) {
528+ int16_t max_radius = ((w < h) ? w : h) / 2 ; // 1/2 minor axis
529+ if (r > max_radius) r = max_radius;
526530 // smarter version
527531 startWrite ();
528532 writeFillRect (x+r, y, w-2 *r, h, color);
529-
530533 // draw four corners
531534 fillCircleHelper (x+w-r-1 , y+r, r, 1 , h-2 *r-1 , color);
532535 fillCircleHelper (x+r , y+r, r, 2 , h-2 *r-1 , color);
0 commit comments