]> git.saurik.com Git - wxWidgets.git/blob - include/wx/dfb/toplevel.h
82e797b7abc86c2e47dd8851a7d3f89d96f4aa72
[wxWidgets.git] / include / wx / dfb / toplevel.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/dfb/toplevel.h
3 // Purpose: Top level window, abstraction of wxFrame and wxDialog
4 // Author: Vaclav Slavik
5 // Created: 2006-08-10
6 // RCS-ID: $Id$
7 // Copyright: (c) 2006 REA Elektronik GmbH
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_DFB_TOPLEVEL_H_
12 #define _WX_DFB_TOPLEVEL_H_
13
14 #include "wx/dfb/ifacehelpers.h"
15
16 wxDFB_DECLARE_INTERFACE(IDirectFBWindow);
17
18 class wxDfbQueuedPaintRequests;
19 struct wxDFBWindowEvent;
20
21 //-----------------------------------------------------------------------------
22 // wxTopLevelWindowDFB
23 //-----------------------------------------------------------------------------
24
25 class WXDLLIMPEXP_CORE wxTopLevelWindowDFB : public wxTopLevelWindowBase
26 {
27 public:
28 // construction
29 wxTopLevelWindowDFB() { Init(); }
30 wxTopLevelWindowDFB(wxWindow *parent,
31 wxWindowID id,
32 const wxString& title,
33 const wxPoint& pos = wxDefaultPosition,
34 const wxSize& size = wxDefaultSize,
35 long style = wxDEFAULT_FRAME_STYLE,
36 const wxString& name = wxFrameNameStr)
37 {
38 Init();
39
40 Create(parent, id, title, pos, size, style, name);
41 }
42
43 bool Create(wxWindow *parent,
44 wxWindowID id,
45 const wxString& title,
46 const wxPoint& pos = wxDefaultPosition,
47 const wxSize& size = wxDefaultSize,
48 long style = wxDEFAULT_FRAME_STYLE,
49 const wxString& name = wxFrameNameStr);
50
51 virtual ~wxTopLevelWindowDFB();
52
53 // implement base class pure virtuals
54 virtual void Maximize(bool maximize = true);
55 virtual bool IsMaximized() const;
56 virtual void Iconize(bool iconize = true);
57 virtual bool IsIconized() const;
58 virtual void Restore();
59
60 virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
61 virtual bool IsFullScreen() const { return m_fsIsShowing; }
62
63 virtual bool Show(bool show = true);
64
65 virtual bool CanSetTransparent() { return true; }
66 virtual bool SetTransparent(wxByte alpha);
67
68 virtual void SetTitle(const wxString &title) { m_title = title; }
69 virtual wxString GetTitle() const { return m_title; }
70
71 virtual void Update();
72
73 // implementation from now on
74 // --------------------------
75
76 void OnInternalIdle();
77
78 IDirectFBWindowPtr GetDirectFBWindow() const { return m_dfbwin; }
79
80 protected:
81 // common part of all ctors
82 void Init();
83
84 virtual IDirectFBSurfacePtr ObtainDfbSurface() const;
85
86 // overriden wxWindow methods
87 virtual void DoGetPosition(int *x, int *y) const;
88 virtual void DoGetSize(int *width, int *height) const;
89 virtual void DoMoveWindow(int x, int y, int width, int height);
90
91 virtual void DoRefreshRect(const wxRect& rect, bool eraseBack = true);
92
93 private:
94 // do queued painting in idle time
95 void HandleQueuedPaintRequests();
96
97 // DirectFB events handling
98 static void HandleDFBWindowEvent(const wxDFBWindowEvent& event_);
99
100 protected:
101 wxString m_title;
102
103 bool m_fsIsShowing:1; /* full screen */
104 long m_fsSaveStyle;
105 long m_fsSaveFlag;
106 wxRect m_fsSaveFrame;
107
108 // is the frame currently maximized?
109 bool m_isMaximized:1;
110 wxRect m_savedFrame;
111
112 // did we sent wxSizeEvent at least once?
113 bool m_sizeSet:1;
114
115 // window's opacity (0: transparent, 255: opaque)
116 wxByte m_opacity;
117
118 // interface to the underlying DirectFB window
119 IDirectFBWindowPtr m_dfbwin;
120
121 private:
122 wxDfbQueuedPaintRequests *m_toPaint;
123
124 friend class wxEventLoop; // for HandleDFBWindowEvent
125 };
126
127 #endif // _WX_DFB_TOPLEVEL_H_