Three more attempts to get metal look.

- Added a few flags for inheriting background.
     - Added wxWindow param to wxR::DrawBackground()
     - Added wxR::DrawButtonSurface()
     - Removed wxR::DrawBackground() from wxR::DrawButtonBorder()
     - Adde DrawMetal to Metal theme
  Fixed minor bug in wxGTK scrollbar.
  Changed code in wxX11 wxTLW so that startup flicker no
    longer occurs in wxFrame.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-04-14 14:42:43 +00:00
parent aaae829664
commit 193e19cfdf
23 changed files with 142 additions and 89 deletions

View File

@@ -143,12 +143,20 @@ public:
// ctor
wxMetalRenderer(const wxColourScheme *scheme);
// Metal gradient
void DrawMetal(wxDC &dc, const wxRect &rect );
// implement the base class pure virtuals
virtual void DrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags = 0);
int flags = 0,
wxWindow *window = NULL );
virtual void DrawButtonSurface(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags );
virtual void DrawLabel(wxDC& dc,
const wxString& label,
const wxRect& rect,
@@ -404,7 +412,8 @@ protected:
// DrawButtonBorder() helper
void DoDrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect);
const wxRect& rect,
wxWindow *window = NULL );
// DrawBorder() helpers: all of them shift and clip the DC after drawing
// the border
@@ -1331,12 +1340,6 @@ wxColour wxMetalColourScheme::GetBackground(wxWindow *win) const
}
else
{
if ( win->HasDialogBackground() )
{
col = win->GetParent()->GetBackgroundColour();
return col;
}
int flags = win->GetStateFlags();
// the colour set by the user should be used for the normal state
@@ -3203,40 +3206,53 @@ void wxMetalRenderer::GetComboBitmaps(wxBitmap *bmpNormal,
}
}
// ----------------------------------------------------------------------------
// metal gradient
// ----------------------------------------------------------------------------
void wxMetalRenderer::DrawMetal(wxDC &dc, const wxRect &rect )
{
dc.SetPen(*wxTRANSPARENT_PEN);
for (int y = rect.y; y < rect.height+rect.y; y++)
{
int intens = 230 + 80 * (rect.y-y) / rect.height;
dc.SetBrush( wxBrush( wxColour(intens,intens,intens), wxSOLID ) );
dc.DrawRectangle( rect.x, y, rect.width, 1 );
}
}
// ----------------------------------------------------------------------------
// background
// ----------------------------------------------------------------------------
void wxMetalRenderer::DrawButtonSurface(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags )
{
DrawMetal( dc, rect );
}
void wxMetalRenderer::DoDrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect)
const wxRect& rect,
wxWindow *window )
{
dc.SetPen(*wxTRANSPARENT_PEN);
if (col == wxTheme::Get()->GetColourScheme()->Get( wxColourScheme::CONTROL ))
{
for (int y = rect.y; y < rect.height+rect.y; y++)
{
int intens = 230 + 80 * (rect.y-y) / rect.height;
dc.SetBrush( wxBrush( wxColour(intens,intens,intens), wxSOLID ) );
dc.DrawRectangle( rect.x, y, rect.width, 1 );
}
}
else
{
wxBrush brush(col, wxSOLID);
dc.SetBrush(brush);
dc.DrawRectangle(rect);
}
wxBrush brush(col, wxSOLID);
dc.SetBrush(brush);
dc.DrawRectangle(rect);
}
void wxMetalRenderer::DrawBackground(wxDC& dc,
const wxColour& col,
const wxRect& rect,
int flags)
int flags,
wxWindow *window )
{
// just fill it with the given or default bg colour
wxColour colBg = col.Ok() ? col : wxSCHEME_COLOUR(m_scheme, CONTROL);
DoDrawBackground(dc, colBg, rect);
DoDrawBackground(dc, colBg, rect, window);
}
// ----------------------------------------------------------------------------
@@ -3302,7 +3318,7 @@ void wxMetalRenderer::DrawArrowButton(wxDC& dc,
wxArrowStyle arrowStyle)
{
wxRect rect = rectAll;
DoDrawBackground(dc, wxSCHEME_COLOUR(m_scheme, CONTROL), rect);
DrawMetal( dc, rect );
DrawArrowBorder(dc, &rect, arrowStyle == Arrow_Pressed);
DrawArrow(dc, rect, arrowDir, arrowStyle);
}
@@ -3315,7 +3331,7 @@ void wxMetalRenderer::DrawScrollbarThumb(wxDC& dc,
// we don't use the flags, the thumb never changes appearance
wxRect rectThumb = rect;
DrawArrowBorder(dc, &rectThumb);
DrawBackground(dc, wxNullColour, rectThumb);
DrawMetal( dc, rectThumb );
}
void wxMetalRenderer::DrawScrollbarShaft(wxDC& dc,
@@ -3323,10 +3339,7 @@ void wxMetalRenderer::DrawScrollbarShaft(wxDC& dc,
const wxRect& rectBar,
int flags)
{
wxColourScheme::StdColour col = flags & wxCONTROL_PRESSED
? wxColourScheme::SCROLLBAR_PRESSED
: wxColourScheme::SCROLLBAR;
DoDrawBackground(dc, m_scheme->Get(col), rectBar);
DrawMetal( dc, rectBar );
}
void wxMetalRenderer::DrawScrollCorner(wxDC& dc, const wxRect& rect)