/[pcsx2_0.9.7]/trunk/3rdparty/wxWidgets/src/common/dpycmn.cpp
ViewVC logotype

Annotation of /trunk/3rdparty/wxWidgets/src/common/dpycmn.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years, 4 months ago) by william
File size: 7364 byte(s)
committing r3113 initial commit again...
1 william 31 ///////////////////////////////////////////////////////////////////////////////
2     // Name: src/common/dpycmn.cpp
3     // Purpose: wxDisplay and wxDisplayImplSingle implementation
4     // Author: Vadim Zeitlin
5     // Modified by:
6     // Created: 01.03.03
7     // RCS-ID: $Id: dpycmn.cpp 41548 2006-10-02 05:38:05Z PC $
8     // Copyright: (c) 2003-2006 Vadim Zeitlin <vadim@wxwindows.org>
9     // License: wxWindows licence
10     ///////////////////////////////////////////////////////////////////////////////
11    
12     // ============================================================================
13     // declarations
14     // ============================================================================
15    
16     // ----------------------------------------------------------------------------
17     // headers
18     // ----------------------------------------------------------------------------
19    
20     // For compilers that support precompilation, includes "wx.h".
21     #include "wx/wxprec.h"
22    
23     #ifdef __BORLANDC__
24     #pragma hdrstop
25     #endif
26    
27     #ifndef WX_PRECOMP
28     #include "wx/gdicmn.h"
29     #include "wx/window.h"
30     #include "wx/module.h"
31     #endif //WX_PRECOMP
32    
33     #include "wx/display.h"
34     #include "wx/display_impl.h"
35    
36     #if wxUSE_DISPLAY
37    
38     #include "wx/arrimpl.cpp"
39     WX_DEFINE_OBJARRAY(wxArrayVideoModes)
40    
41     const wxVideoMode wxDefaultVideoMode;
42    
43     #endif // wxUSE_DISPLAY
44    
45     // ----------------------------------------------------------------------------
46     // globals
47     // ----------------------------------------------------------------------------
48    
49     // the factory object used by wxDisplay
50     //
51     // created on demand and destroyed by wxDisplayModule
52     static wxDisplayFactory *gs_factory = NULL;
53    
54     // ----------------------------------------------------------------------------
55     // wxDisplayImplSingle: trivial implementation working for main display only
56     // ----------------------------------------------------------------------------
57    
58     class WXDLLEXPORT wxDisplayImplSingle : public wxDisplayImpl
59     {
60     public:
61     wxDisplayImplSingle() : wxDisplayImpl(0) { }
62    
63     virtual wxRect GetGeometry() const
64     {
65     wxRect r;
66     wxDisplaySize(&r.width, &r.height);
67     return r;
68     }
69    
70     virtual wxRect GetClientArea() const { return wxGetClientDisplayRect(); }
71    
72     virtual wxString GetName() const { return wxString(); }
73    
74     #if wxUSE_DISPLAY
75     // no video modes support for us, provide just the stubs
76    
77     virtual wxArrayVideoModes GetModes(const wxVideoMode& WXUNUSED(mode)) const
78     {
79     return wxArrayVideoModes();
80     }
81    
82     virtual wxVideoMode GetCurrentMode() const { return wxVideoMode(); }
83    
84     virtual bool ChangeMode(const wxVideoMode& WXUNUSED(mode)) { return false; }
85     #endif // wxUSE_DISPLAY
86    
87    
88     DECLARE_NO_COPY_CLASS(wxDisplayImplSingle)
89     };
90    
91     // ----------------------------------------------------------------------------
92     // wxDisplayModule is used to cleanup gs_factory
93     // ----------------------------------------------------------------------------
94    
95     class wxDisplayModule : public wxModule
96     {
97     public:
98     virtual bool OnInit() { return true; }
99     virtual void OnExit()
100     {
101     if ( gs_factory )
102     {
103     delete gs_factory;
104     gs_factory = NULL;
105     }
106     }
107    
108     DECLARE_DYNAMIC_CLASS(wxDisplayModule)
109     };
110    
111     IMPLEMENT_DYNAMIC_CLASS(wxDisplayModule, wxModule)
112    
113     // ============================================================================
114     // wxDisplay implementation
115     // ============================================================================
116    
117     // ----------------------------------------------------------------------------
118     // ctor/dtor
119     // ----------------------------------------------------------------------------
120    
121     wxDisplay::wxDisplay(unsigned n)
122     {
123     wxASSERT_MSG( n < GetCount(),
124     wxT("An invalid index was passed to wxDisplay") );
125    
126     m_impl = Factory().CreateDisplay(n);
127     }
128    
129     wxDisplay::~wxDisplay()
130     {
131     delete m_impl;
132     }
133    
134     // ----------------------------------------------------------------------------
135     // static functions forwarded to wxDisplayFactory
136     // ----------------------------------------------------------------------------
137    
138     /* static */ unsigned wxDisplay::GetCount()
139     {
140     return Factory().GetCount();
141     }
142    
143     /* static */ int wxDisplay::GetFromPoint(const wxPoint& pt)
144     {
145     return Factory().GetFromPoint(pt);
146     }
147    
148     /* static */ int wxDisplay::GetFromWindow(wxWindow *window)
149     {
150     wxCHECK_MSG( window, wxNOT_FOUND, _T("invalid window") );
151    
152     return Factory().GetFromWindow(window);
153     }
154    
155     // ----------------------------------------------------------------------------
156     // functions forwarded to wxDisplayImpl
157     // ----------------------------------------------------------------------------
158    
159     wxRect wxDisplay::GetGeometry() const
160     {
161     wxCHECK_MSG( IsOk(), wxRect(), _T("invalid wxDisplay object") );
162    
163     return m_impl->GetGeometry();
164     }
165    
166     wxRect wxDisplay::GetClientArea() const
167     {
168     wxCHECK_MSG( IsOk(), wxRect(), _T("invalid wxDisplay object") );
169    
170     return m_impl->GetClientArea();
171     }
172    
173     wxString wxDisplay::GetName() const
174     {
175     wxCHECK_MSG( IsOk(), wxString(), _T("invalid wxDisplay object") );
176    
177     return m_impl->GetName();
178     }
179    
180     bool wxDisplay::IsPrimary() const
181     {
182     return m_impl && m_impl->GetIndex() == 0;
183     }
184    
185     #if wxUSE_DISPLAY
186    
187     wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const
188     {
189     wxCHECK_MSG( IsOk(), wxArrayVideoModes(), _T("invalid wxDisplay object") );
190    
191     return m_impl->GetModes(mode);
192     }
193    
194     wxVideoMode wxDisplay::GetCurrentMode() const
195     {
196     wxCHECK_MSG( IsOk(), wxVideoMode(), _T("invalid wxDisplay object") );
197    
198     return m_impl->GetCurrentMode();
199     }
200    
201     bool wxDisplay::ChangeMode(const wxVideoMode& mode)
202     {
203     wxCHECK_MSG( IsOk(), false, _T("invalid wxDisplay object") );
204    
205     return m_impl->ChangeMode(mode);
206     }
207    
208     #endif // wxUSE_DIRECTDRAW
209    
210     // ----------------------------------------------------------------------------
211     // static functions implementation
212     // ----------------------------------------------------------------------------
213    
214     // if wxUSE_DISPLAY == 1 this is implemented in port-specific code
215     #if !wxUSE_DISPLAY
216    
217     /* static */ wxDisplayFactory *wxDisplay::CreateFactory()
218     {
219     return new wxDisplayFactorySingle;
220     }
221    
222     #endif // !wxUSE_DISPLAY
223    
224     /* static */ wxDisplayFactory& wxDisplay::Factory()
225     {
226     if ( !gs_factory )
227     {
228     gs_factory = CreateFactory();
229     }
230    
231     return *gs_factory;
232     }
233    
234     // ============================================================================
235     // wxDisplayFactory implementation
236     // ============================================================================
237    
238     int wxDisplayFactory::GetFromWindow(wxWindow *window)
239     {
240     // consider that the window belongs to the display containing its centre
241     const wxRect r(window->GetRect());
242     return GetFromPoint(wxPoint(r.x + r.width/2, r.y + r.height/2));
243     }
244    
245     // ============================================================================
246     // wxDisplayFactorySingle implementation
247     // ============================================================================
248    
249     /* static */
250     wxDisplayImpl *wxDisplayFactorySingle::CreateDisplay(unsigned n)
251     {
252     // we recognize the main display only
253     return n != 0 ? NULL : new wxDisplayImplSingle;
254     }
255    
256     int wxDisplayFactorySingle::GetFromPoint(const wxPoint& pt)
257     {
258     if ( pt.x >= 0 && pt.y >= 0 )
259     {
260     int w, h;
261     wxDisplaySize(&w, &h);
262    
263     if ( pt.x < w && pt.y < h )
264     return 0;
265     }
266    
267     // the point is outside of the screen
268     return wxNOT_FOUND;
269     }

  ViewVC Help
Powered by ViewVC 1.1.22