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