From fa8cefef63feb1d559c40db3cf9407e5bd1ac4df Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 3 Nov 2002 10:07:16 +0000 Subject: 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. --- otk/display.hh | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 otk/display.hh (limited to 'otk/display.hh') 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 +} + +#include + +namespace otk { + +class ScreenInfo; +class BGCCache; + +class OBDisplay +{ +public: + static Display *display; // the X display + + typedef std::vector 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(_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 -- cgit v1.2.3