This function can be used to check if drawing on wxClientDC actually works. This has to be a run-time, rather than compile-time, check because in wxGTK3 this depends on the backend being used: wxClientDC only doesn't work with Wayland, but does work with X11 (and, less importantly, Win32) backend(s). Currently the wxWindow parameter of this function is not used but it could be useful in the future and it will be simpler to allow not specifying it (by defaulting it to nullptr) than to add it later, so it seems better to have it.
76 lines
2.4 KiB
C++
76 lines
2.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/dfb/dcclient.h
|
|
// Purpose: wxWindowDCImpl, wxClientDCImpl and wxPaintDCImpl
|
|
// Author: Vaclav Slavik
|
|
// Created: 2006-08-10
|
|
// Copyright: (c) 2006 REA Elektronik GmbH
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_DFB_DCCLIENT_H_
|
|
#define _WX_DFB_DCCLIENT_H_
|
|
|
|
#include "wx/dfb/dc.h"
|
|
|
|
class WXDLLIMPEXP_FWD_CORE wxWindow;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxWindowDCImpl
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxWindowDCImpl : public wxDFBDCImpl
|
|
{
|
|
public:
|
|
wxWindowDCImpl(wxDC *owner) : wxDFBDCImpl(owner), m_shouldFlip(false) { }
|
|
wxWindowDCImpl(wxDC *owner, wxWindow *win);
|
|
virtual ~wxWindowDCImpl();
|
|
|
|
protected:
|
|
// initializes the DC for painting on given window; if rect!=nullptr, then
|
|
// for painting only on the given region of the window
|
|
void InitForWin(wxWindow *win, const wxRect *rect);
|
|
|
|
private:
|
|
wxRect m_winRect; // rectangle of the window being painted
|
|
|
|
bool m_shouldFlip; // flip the surface when done?
|
|
|
|
friend class wxOverlayImpl; // for m_shouldFlip;
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxWindowDCImpl);
|
|
wxDECLARE_NO_COPY_CLASS(wxWindowDCImpl);
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxClientDCImpl
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxClientDCImpl : public wxWindowDCImpl
|
|
{
|
|
public:
|
|
wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { }
|
|
wxClientDCImpl(wxDC *owner, wxWindow *win);
|
|
|
|
static bool
|
|
CanBeUsedForDrawing(const wxWindow* WXUNUSED(window)) { return true; }
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxClientDCImpl);
|
|
wxDECLARE_NO_COPY_CLASS(wxClientDCImpl);
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxPaintDCImpl
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxClientDCImpl
|
|
{
|
|
public:
|
|
wxPaintDCImpl(wxDC *owner) : wxClientDCImpl(owner) { }
|
|
wxPaintDCImpl(wxDC *owner, wxWindow *win) : wxClientDCImpl(owner, win) { }
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxPaintDCImpl);
|
|
wxDECLARE_NO_COPY_CLASS(wxPaintDCImpl);
|
|
};
|
|
|
|
#endif // _WX_DFB_DCCLIENT_H_
|