Jump to content

BUG: gdispGDrawRoundedBox


tobib

Recommended Posts

Hi,

in the Function gdispGDrawRoundedBox the arcs get filled, if GDISP_NEED_ARCSECTORS is set to TRUE, because of a wrong function call.

gdispGFillArcSectors must be replaced by gdispGDrawArcSectors.

At Line 2332 from gdisp_gdisp.c:

#if GDISP_NEED_ARC || GDISP_NEED_ARCSECTORS
void gdispGDrawRoundedBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, coord_t radius, color_t color) {
if (2*radius > cx || 2*radius > cy) {
gdispGDrawBox(g, x, y, cx, cy, color);
return;
}

#if GDISP_NEED_ARCSECTORS
gdispGFillArcSectors(g, x+radius, y+radius, radius, 0x0C, color);
gdispGFillArcSectors(g, x+cx-1-radius, y+radius, radius, 0x03, color);
gdispGFillArcSectors(g, x+cx-1-radius, y+cy-1-radius, radius, 0xC0, color);
gdispGFillArcSectors(g, x+radius, y+cy-1-radius, radius, 0x30, color);
#else
gdispGDrawArc(g, x+radius, y+radius, radius, 90, 180, color);
gdispGDrawArc(g, x+cx-1-radius, y+radius, radius, 0, 90, color);
gdispGDrawArc(g, x+cx-1-radius, y+cy-1-radius, radius, 270, 360, color);
gdispGDrawArc(g, x+radius, y+cy-1-radius, radius, 180, 270, color);
#endif
gdispGDrawLine(g, x+radius+1, y, x+cx-2-radius, y, color);
gdispGDrawLine(g, x+cx-1, y+radius+1, x+cx-1, y+cy-2-radius, color);
gdispGDrawLine(g, x+radius+1, y+cy-1, x+cx-2-radius, y+cy-1, color);
gdispGDrawLine(g, x, y+radius+1, x, y+cy-2-radius, color);
}
#endif

Greets

Tobi

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...