]> git.saurik.com Git - wxWidgets.git/blame - include/wx/overlay.h
process pending wx events before sending idle events
[wxWidgets.git] / include / wx / overlay.h
CommitLineData
30c841c8
VS
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/overlay.h
3// Purpose: wxOverlay class
4// Author: Stefan Csomor
5// Modified by:
6// Created: 2006-10-20
7// RCS-ID: $Id$
8// Copyright: (c) wxWidgets team
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_OVERLAY_H_
13#define _WX_OVERLAY_H_
14
15#include "wx/defs.h"
16
69a5bc23
VS
17#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
18 #define wxHAS_NATIVE_OVERLAY 1
19#elif defined(__WXDFB__)
20 #define wxHAS_NATIVE_OVERLAY 1
21#else
22 // don't define wxHAS_NATIVE_OVERLAY
30c841c8
VS
23#endif
24
25// ----------------------------------------------------------------------------
26// creates an overlay over an existing window, allowing for manipulations like
27// rubberbanding etc. This API is not stable yet, not to be used outside wx
28// internal code
29// ----------------------------------------------------------------------------
30
31class WXDLLEXPORT wxOverlayImpl;
32class WXDLLEXPORT wxWindowDC;
33
34class WXDLLEXPORT wxOverlay
35{
36public:
37 wxOverlay();
38 ~wxOverlay();
39
40 // clears the overlay without restoring the former state
41 // to be done eg when the window content has been changed and repainted
42 void Reset();
43
44 // returns (port-specific) implementation of the overlay
45 wxOverlayImpl *GetImpl() { return m_impl; }
46
47private:
48 friend class WXDLLEXPORT wxDCOverlay;
49
50 // returns true if it has been setup
51 bool IsOk();
52
53 void Init(wxWindowDC* dc, int x , int y , int width , int height);
54
55 void BeginDrawing(wxWindowDC* dc);
56
57 void EndDrawing(wxWindowDC* dc);
58
59 void Clear(wxWindowDC* dc);
60
61 wxOverlayImpl* m_impl;
62
63 bool m_inDrawing;
64
65
66 DECLARE_NO_COPY_CLASS(wxOverlay)
67};
68
69
70class WXDLLEXPORT wxDCOverlay
71{
72public:
73 // connects this overlay to the corresponding drawing dc, if the overlay is
74 // not initialized yet this call will do so
75 wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc, int x , int y , int width , int height);
76
77 // convenience wrapper that behaves the same using the entire area of the dc
78 wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc);
79
80 // removes the connection between the overlay and the dc
81 virtual ~wxDCOverlay();
82
83 // clears the layer, restoring the state at the last init
84 void Clear();
85
86private:
87 void Init(wxWindowDC *dc, int x , int y , int width , int height);
88
89 wxOverlay& m_overlay;
90
91 wxWindowDC* m_dc;
92
93
94 DECLARE_NO_COPY_CLASS(wxDCOverlay)
95};
96
97#endif // _WX_OVERLAY_H_