void wxGD::Draw::GlossyGradient( wxDC &dc, wxRect &rect, wxColour &topStart, wxColour &bottomStart, wxColour &bottomEnd, wxColour &colour, bool hover ) { wxColour topEnd = colour; int r = colour.Red() + 45; if( r > 255 ) r = 225; int g = colour.Green() + 45; if( g > 255 ) g = 225; int b = colour.Blue() + 45; if( b > 255) b = 225; topStart = wxColour( (unsigned char)r, (unsigned char)g, (unsigned char)b ); r = colour.Red() - 75; if( r < 0 ) r = 15; g = colour.Green() - 75; if( g < 0 ) g = 15; b = colour.Blue() - 75; if( b < 0 ) b = 15; bottomStart = wxColour( (unsigned char)r, (unsigned char)g, (unsigned char)b ); r = colour.Red() - 15; if( r < 0 ) r = 30; g = colour.Green() - 15; if( g < 0 ) g = 30; b = colour.Blue() - 15; if( b < 0 ) b = 30; bottomEnd = wxColour( (unsigned char)r, (unsigned char)g, (unsigned char)b ); rect.SetHeight( rect.GetHeight() / 2 ); dc.GradientFillLinear( rect, topStart, topEnd, wxSOUTH ); rect.Offset( 0, rect.GetHeight() ); if( hover ) dc.GradientFillLinear( rect, bottomStart, topStart, wxSOUTH ); else dc.GradientFillLinear( rect, bottomStart, topEnd, wxSOUTH ); }