///////////////////////////////////////////////////////////////////////////////
// Name: wx/msw/darkmode.h
// Purpose: MSW-specific header with dark mode related declarations.
// Author: Vadim Zeitlin
// Created: 2023-02-19
// Copyright: (c) 2023 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_MSW_DARKMODE_H_
#define _WX_MSW_DARKMODE_H_
#include "wx/settings.h"
// Constants used with wxDarkModeSettings::GetMenuColour().
enum class wxMenuColour
{
StandardFg,
StandardBg,
DisabledFg,
HotBg
};
// ----------------------------------------------------------------------------
// wxDarkModeSettings: allows to customize some of dark mode settings
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxDarkModeSettings
{
public:
wxDarkModeSettings() = default;
virtual ~wxDarkModeSettings();
// Get the colour to use for the given system colour when dark mode is on.
virtual wxColour GetColour(wxSystemColour index);
// Menu items don't use any of the standard colours, but are defined by
// this function.
virtual wxColour GetMenuColour(wxMenuColour which);
// Get the pen to use for drawing wxStaticBox border in dark mode.
//
// Returning an invalid pen indicates that the default border drawn by the
// system should be used, which doesn't look very well in dark mode but
// shouldn't result in any problems worse than cosmetic ones.
virtual wxPen GetBorderPen();
private:
wxDECLARE_NO_COPY_CLASS(wxDarkModeSettings);
};
#endif // _WX_MSW_DARKMODE_H_