summaryrefslogtreecommitdiff
path: root/otk/display.hh
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-11-03 10:07:16 +0000
committerDana Jansens <danakj@orodu.net>2002-11-03 10:07:16 +0000
commitfa8cefef63feb1d559c40db3cf9407e5bd1ac4df (patch)
treec5f4e1d4229fe39d1c13526a32a52d555ccf3494 /otk/display.hh
parentfcfb532d30f4f0cee5192376145867ec1eada8ad (diff)
add an OBDisplay class and the old ScreenInfo class to the toolkit.
wrap the toolkit in the 'otk' namespace it compiles. broke the timer cache tho.
Diffstat (limited to 'otk/display.hh')
-rw-r--r--otk/display.hh69
1 files changed, 69 insertions, 0 deletions
diff --git a/otk/display.hh b/otk/display.hh
new file mode 100644
index 00000000..aa457bcd
--- /dev/null
+++ b/otk/display.hh
@@ -0,0 +1,69 @@
+// -*- mode: C++; indent-tabs-mode: nil; -*-
+#ifndef __display_hh
+#define __display_hh
+
+extern "C" {
+#include <X11/Xlib.h>
+}
+
+#include <vector>
+
+namespace otk {
+
+class ScreenInfo;
+class BGCCache;
+
+class OBDisplay
+{
+public:
+ static Display *display; // the X display
+
+ typedef std::vector<ScreenInfo> ScreenInfoList;
+
+private:
+ static bool _shape; // does the display have the shape extention?
+ static int _shape_event_basep; // base for shape events
+
+ static bool _xinerama; // does the display have the xinerama extention?
+ static int _xinerama_event_basep;// base for xinerama events
+
+ static unsigned int _mask_list[8];// a list of all combinations of lock masks
+
+ static ScreenInfoList _screenInfoList; // info for all screens on the display
+
+ static BGCCache *_gccache;
+
+ static int xerrorHandler(Display *d, XErrorEvent *e); // handles X errors duh
+
+ OBDisplay(); // this class cannot be instantiated
+
+public:
+ static void initialize(char *name);
+ static void destroy();
+
+ //! Returns the GC cache for the application
+ inline static BGCCache *gcCache() { return _gccache; }
+
+ /*!
+ Returns a ScreenInfo class, which gives information on a screen on the
+ display.
+ \param snum The screen number of the screen to retrieve info on
+ \return Info on the requested screen, in a ScreenInfo class
+ */
+ inline static const ScreenInfo* screenInfo(int snum) {
+ assert(snum >= 0);
+ assert(snum < static_cast<int>(_screenInfoList.size()));
+ return &_screenInfoList[snum];
+ }
+
+ //! Returns if the display has the shape extention available
+ inline static bool shape() { return _shape; }
+ //! Returns the shape extension's event base
+ inline static int shapeEventBase() { return _shape_event_basep; }
+ //! Returns if the display has the xinerama extention available
+ inline static bool xinerama() { return _xinerama; }
+};
+
+}
+
+#endif // __display_hh