mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 09:09:52 -06:00
Import r67258 of the wxWidgets trunk, which I expect will before
long become wxWidgets 2.9.2, which in turn is expected to be the last 2.9 release before the 3.0 stable release. Since the full wxWidgets distribution is rather large, I have imported only the parts that we use, on a subdirectory basis: art include/wx/*.* include/wx/aui include/wx/cocoa include/wx/generic include/wx/gtk include/wx/meta include/wx/msw include/wx/osx include/wx/persist include/wx/private include/wx/protocol include/wx/unix src/aui src/common src/generic src/gtk src/msw src/osx src/unix git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7380 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
148
Externals/wxWidgets3/include/wx/msw/private/dc.h
vendored
Normal file
148
Externals/wxWidgets3/include/wx/msw/private/dc.h
vendored
Normal file
@ -0,0 +1,148 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/msw/private/dc.h
|
||||
// Purpose: private wxMSW helpers for working with HDCs
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2009-06-16 (extracted from src/msw/dc.cpp)
|
||||
// RCS-ID: $Id: dc.h 67254 2011-03-20 00:14:35Z DS $
|
||||
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _MSW_PRIVATE_DC_H_
|
||||
#define _MSW_PRIVATE_DC_H_
|
||||
|
||||
#include "wx/msw/dc.h"
|
||||
#include "wx/msw/wrapwin.h"
|
||||
|
||||
namespace wxMSWImpl
|
||||
{
|
||||
|
||||
// various classes to change some DC property temporarily
|
||||
|
||||
// text background and foreground colours
|
||||
class wxTextColoursChanger
|
||||
{
|
||||
public:
|
||||
wxTextColoursChanger(HDC hdc, const wxMSWDCImpl& dc)
|
||||
: m_hdc(hdc)
|
||||
{
|
||||
Change(dc.GetTextForeground(), dc.GetTextBackground());
|
||||
}
|
||||
|
||||
wxTextColoursChanger(HDC hdc, const wxColour& colFg, const wxColour& colBg)
|
||||
: m_hdc(hdc)
|
||||
{
|
||||
Change(colFg, colBg);
|
||||
}
|
||||
|
||||
wxTextColoursChanger(HDC hdc, COLORREF colFg, COLORREF colBg)
|
||||
: m_hdc(hdc)
|
||||
{
|
||||
Change(colFg, colBg);
|
||||
}
|
||||
|
||||
~wxTextColoursChanger()
|
||||
{
|
||||
if ( m_oldColFg != CLR_INVALID )
|
||||
::SetTextColor(m_hdc, m_oldColFg);
|
||||
if ( m_oldColBg != CLR_INVALID )
|
||||
::SetBkColor(m_hdc, m_oldColBg);
|
||||
}
|
||||
|
||||
protected:
|
||||
// this ctor doesn't change mode immediately, call Change() later to do it
|
||||
// only if needed
|
||||
wxTextColoursChanger(HDC hdc)
|
||||
: m_hdc(hdc)
|
||||
{
|
||||
m_oldColFg =
|
||||
m_oldColBg = CLR_INVALID;
|
||||
}
|
||||
|
||||
void Change(const wxColour& colFg, const wxColour& colBg)
|
||||
{
|
||||
Change(colFg.IsOk() ? colFg.GetPixel() : CLR_INVALID,
|
||||
colBg.IsOk() ? colBg.GetPixel() : CLR_INVALID);
|
||||
}
|
||||
|
||||
void Change(COLORREF colFg, COLORREF colBg)
|
||||
{
|
||||
if ( colFg != CLR_INVALID )
|
||||
{
|
||||
m_oldColFg = ::SetTextColor(m_hdc, colFg);
|
||||
if ( m_oldColFg == CLR_INVALID )
|
||||
{
|
||||
wxLogLastError(wxT("SetTextColor"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oldColFg = CLR_INVALID;
|
||||
}
|
||||
|
||||
if ( colBg != CLR_INVALID )
|
||||
{
|
||||
m_oldColBg = ::SetBkColor(m_hdc, colBg);
|
||||
if ( m_oldColBg == CLR_INVALID )
|
||||
{
|
||||
wxLogLastError(wxT("SetBkColor"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oldColBg = CLR_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
const HDC m_hdc;
|
||||
COLORREF m_oldColFg,
|
||||
m_oldColBg;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxTextColoursChanger);
|
||||
};
|
||||
|
||||
// background mode
|
||||
class wxBkModeChanger
|
||||
{
|
||||
public:
|
||||
// set background mode to opaque if mode != wxBRUSHSTYLE_TRANSPARENT
|
||||
wxBkModeChanger(HDC hdc, int mode)
|
||||
: m_hdc(hdc)
|
||||
{
|
||||
Change(mode);
|
||||
}
|
||||
|
||||
~wxBkModeChanger()
|
||||
{
|
||||
if ( m_oldMode )
|
||||
::SetBkMode(m_hdc, m_oldMode);
|
||||
}
|
||||
|
||||
protected:
|
||||
// this ctor doesn't change mode immediately, call Change() later to do it
|
||||
// only if needed
|
||||
wxBkModeChanger(HDC hdc) : m_hdc(hdc) { m_oldMode = 0; }
|
||||
|
||||
void Change(int mode)
|
||||
{
|
||||
m_oldMode = ::SetBkMode(m_hdc, mode == wxBRUSHSTYLE_TRANSPARENT
|
||||
? TRANSPARENT
|
||||
: OPAQUE);
|
||||
if ( !m_oldMode )
|
||||
{
|
||||
wxLogLastError(wxT("SetBkMode"));
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
const HDC m_hdc;
|
||||
int m_oldMode;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxBkModeChanger);
|
||||
};
|
||||
|
||||
} // namespace wxMSWImpl
|
||||
|
||||
#endif // _MSW_PRIVATE_DC_H_
|
||||
|
Reference in New Issue
Block a user