1///////////////////////////////////////////////////////////////////////////////
2// Name:        src/univ/colschem.cpp
3// Purpose:     (trivial) wxColourScheme implementation
4// Author:      Vadim Zeitlin
5// Modified by:
6// Created:     20.08.00
7// RCS-ID:      $Id: colschem.cpp 67017 2011-02-25 09:37:28Z JS $
8// Copyright:   (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// ===========================================================================
13// declarations
14// ===========================================================================
15
16// ---------------------------------------------------------------------------
17// headers
18// ---------------------------------------------------------------------------
19
20// For compilers that support precompilation, includes "wx.h".
21#include "wx/wxprec.h"
22
23#ifdef __BORLANDC__
24    #pragma hdrstop
25#endif
26
27#ifndef WX_PRECOMP
28    #include "wx/settings.h"
29    #include "wx/gdicmn.h"
30#endif // WX_PRECOMP
31
32#include "wx/univ/colschem.h"
33#include "wx/univ/theme.h"
34
35// ============================================================================
36// implementation
37// ============================================================================
38
39// ----------------------------------------------------------------------------
40// wxColourScheme
41// ----------------------------------------------------------------------------
42
43wxColourScheme::~wxColourScheme()
44{
45}
46
47// ----------------------------------------------------------------------------
48// wxSystemSettings
49// ----------------------------------------------------------------------------
50
51wxColour wxSystemSettings::GetColour(wxSystemColour index)
52{
53    // the elements of this enum must be kept in sync with wxSystemColour
54    static const wxColourScheme::StdColour s_mapSysToThemeCol[] =
55    {
56        wxColourScheme::SCROLLBAR /* wxSYS_COLOUR_SCROLLBAR */,
57        wxColourScheme::WINDOW /* wxSYS_COLOUR_BACKGROUND */,
58        wxColourScheme::TITLEBAR_ACTIVE_TEXT /* wxSYS_COLOUR_ACTIVECAPTION */,
59        wxColourScheme::TITLEBAR_TEXT /* wxSYS_COLOUR_INACTIVECAPTION */,
60        wxColourScheme::MAX /* wxSYS_COLOUR_MENU */,
61        wxColourScheme::MAX /* wxSYS_COLOUR_WINDOW */,
62        wxColourScheme::MAX /* wxSYS_COLOUR_WINDOWFRAME */,
63        wxColourScheme::CONTROL_TEXT /* wxSYS_COLOUR_MENUTEXT */,
64        wxColourScheme::CONTROL_TEXT /* wxSYS_COLOUR_WINDOWTEXT */,
65        wxColourScheme::CONTROL_TEXT /* wxSYS_COLOUR_CAPTIONTEXT */,
66        wxColourScheme::MAX /* wxSYS_COLOUR_ACTIVEBORDER */,
67        wxColourScheme::MAX /* wxSYS_COLOUR_INACTIVEBORDER */,
68        wxColourScheme::FRAME /* wxSYS_COLOUR_APPWORKSPACE */,
69        wxColourScheme::HIGHLIGHT /* wxSYS_COLOUR_HIGHLIGHT */,
70        wxColourScheme::HIGHLIGHT_TEXT /* wxSYS_COLOUR_HIGHLIGHTTEXT */,
71        wxColourScheme::CONTROL /* wxSYS_COLOUR_BTNFACE */,
72        wxColourScheme::SHADOW_DARK /* wxSYS_COLOUR_BTNSHADOW */,
73        wxColourScheme::CONTROL_TEXT_DISABLED /* wxSYS_COLOUR_GRAYTEXT */,
74        wxColourScheme::CONTROL_TEXT /* wxSYS_COLOUR_BTNTEXT */,
75        wxColourScheme::MAX /* wxSYS_COLOUR_INACTIVECAPTIONTEXT */,
76        wxColourScheme::SHADOW_HIGHLIGHT /* wxSYS_COLOUR_BTNHIGHLIGHT */,
77        wxColourScheme::SHADOW_DARK /* wxSYS_COLOUR_3DDKSHADOW */,
78        wxColourScheme::SHADOW_OUT /* wxSYS_COLOUR_3DLIGHT */,
79        wxColourScheme::MAX /* wxSYS_COLOUR_INFOTEXT */,
80        wxColourScheme::MAX /* wxSYS_COLOUR_INFOBK */,
81        wxColourScheme::WINDOW /* wxSYS_COLOUR_LISTBOX */,
82        wxColourScheme::SHADOW_HIGHLIGHT /* wxSYS_COLOUR_HOTLIGHT */,
83        wxColourScheme::TITLEBAR_ACTIVE_TEXT /* wxSYS_COLOUR_GRADIENTACTIVECAPTION */,
84        wxColourScheme::TITLEBAR_TEXT /* wxSYS_COLOUR_GRADIENTINACTIVECAPTION */,
85        wxColourScheme::SHADOW_DARK /* wxSYS_COLOUR_MENUHILIGHT */,
86        wxColourScheme::CONTROL /* wxSYS_COLOUR_MENUBAR */,
87        wxColourScheme::CONTROL_TEXT /* wxSYS_COLOUR_LISTBOXTEXT */,
88        wxColourScheme::HIGHLIGHT_TEXT /* wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT */
89    };
90
91    wxCHECK_MSG( index < (int)WXSIZEOF(s_mapSysToThemeCol), wxNullColour,
92                 _T("invalid wxSystemColour") );
93
94    wxColourScheme::StdColour col = s_mapSysToThemeCol[index];
95    if ( col == wxColourScheme::MAX )
96    {
97        // we don't have theme-equivalent for this colour
98        return wxSystemSettingsNative::GetColour(index);
99    }
100
101    return wxTheme::Get()->GetColourScheme()->Get(col);
102}
103