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 );
}