]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/display_impl.h
wxDisplay cleanup/rewrite:
[wxWidgets.git] / include / wx / display_impl.h
diff --git a/include/wx/display_impl.h b/include/wx/display_impl.h
new file mode 100644 (file)
index 0000000..aa7e05f
--- /dev/null
@@ -0,0 +1,105 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/display_impl.h
+// Purpose:     wxDisplayImpl class declaration
+// Author:      Vadim Zeitlin
+// Created:     2006-03-15
+// RCS-ID:      $Id$
+// Copyright:   (c) 2002-2006 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_DISPLAY_IMPL_H_BASE_
+#define _WX_DISPLAY_IMPL_H_BASE_
+
+// ----------------------------------------------------------------------------
+// wxDisplayFactory: allows to create wxDisplay objects
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxDisplayFactory
+{
+public:
+    wxDisplayFactory() { }
+    virtual ~wxDisplayFactory() { }
+
+    // create a new display object
+    //
+    // it can return a NULL pointer if the display creation failed
+    virtual wxDisplayImpl *CreateDisplay(size_t n) = 0;
+
+    // get the total number of displays
+    virtual size_t GetCount() = 0;
+
+    // return the display for the given point or wxNOT_FOUND
+    virtual int GetFromPoint(const wxPoint& pt) = 0;
+
+    // return the display for the given window or wxNOT_FOUND
+    //
+    // the window pointer must not be NULL (i.e. caller should check it)
+    virtual int GetFromWindow(wxWindow *window);
+};
+
+// ----------------------------------------------------------------------------
+// wxDisplayImpl: base class for all wxDisplay implementations
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxDisplayImpl
+{
+public:
+    // virtual dtor for this base class
+    virtual ~wxDisplayImpl() { }
+
+
+    // return the full area of this display
+    virtual wxRect GetGeometry() const = 0;
+
+    // return the name (may be empty)
+    virtual wxString GetName() const = 0;
+
+    // return the index of this display
+    size_t GetIndex() const { return m_index; }
+
+    // return true if this is the primary monitor (usually one with index 0)
+    virtual bool IsPrimary() const { return GetIndex() == 0; }
+
+
+#if wxUSE_DISPLAY
+    // implements wxDisplay::GetModes()
+    virtual wxArrayVideoModes GetModes(const wxVideoMode& mode) const = 0;
+
+    // get current video mode
+    virtual wxVideoMode GetCurrentMode() const = 0;
+
+    // change current mode, return true if succeeded, false otherwise
+    virtual bool ChangeMode(const wxVideoMode& mode) = 0;
+#endif // wxUSE_DISPLAY
+
+protected:
+    // create the object providing access to the display with the given index
+    wxDisplayImpl(size_t n) : m_index(n) { }
+
+
+    // the index of this display (0 is always the primary one)
+    const size_t m_index;
+
+
+    friend class wxDisplayFactory;
+
+    DECLARE_NO_COPY_CLASS(wxDisplayImpl)
+};
+
+// ----------------------------------------------------------------------------
+// wxDisplayFactorySingle
+// ----------------------------------------------------------------------------
+
+// this is a stub implementation using single/main display only, it is
+// available even if wxUSE_DISPLAY == 0
+class WXDLLEXPORT wxDisplayFactorySingle : public wxDisplayFactory
+{
+public:
+    virtual wxDisplayImpl *CreateDisplay(size_t n);
+    virtual size_t GetCount() { return 1; }
+    virtual int GetFromPoint(const wxPoint& pt);
+};
+
+#endif // _WX_DISPLAY_IMPL_H_BASE_
+