]> Dogcows Code - chaz/openbox/blobdiff - otk/display.hh
merge the C branch into HEAD
[chaz/openbox] / otk / display.hh
index 4e9b0227bb2ef395d3747bb21f7308540cab9b97..25c1b45af074efe32341d7a58025466204f526a9 100644 (file)
@@ -6,140 +6,119 @@ extern "C" {
 #include <X11/Xlib.h>
 }
 
-#include <vector>
-
 namespace otk {
 
-class ScreenInfo;
-class GCCache;
+class RenderControl;
+
+class Display;
+
+//! The display instance for the library
+extern Display *display;
 
 //! Manages a single X11 display.
-/*!
-  This class is static, and cannot be instantiated.
-  Use the initialize() method to open the display and ready it for use.
-  Use the destroy() method to close it and clean up the class' data.
-*/
 class Display
 {
-public:
+private:
   //! The X display
-  static ::Display *display;
+  ::Display *_display;
   
-  //! A List of ScreenInfo instances
-  typedef std::vector<ScreenInfo> ScreenInfoList;
-
-private:
   //! Does the display have the XKB extension?
-  static bool _xkb;
+  bool _xkb;
   //! Base for events for the XKB extension
-  static int  _xkb_event_basep;
+  int  _xkb_event_basep;
 
   //! Does the display have the Shape extension?
-  static bool _shape;
+  bool _shape;
   //! Base for events for the Shape extension
-  static int  _shape_event_basep;
+  int  _shape_event_basep;
 
   //! Does the display have the Xinerama extension?
-  static bool _xinerama;
+  bool _xinerama;
   //! Base for events for the Xinerama extension
-  static int  _xinerama_event_basep;
+  int  _xinerama_event_basep;
 
   //! A list of all possible combinations of keyboard lock masks
-  static unsigned int _mask_list[8];
+  unsigned int _mask_list[8];
 
   //! The value of the mask for the NumLock modifier
-  static unsigned int _numLockMask;
+  unsigned int _num_lock_mask;
 
   //! The value of the mask for the ScrollLock modifier
-  static unsigned int _scrollLockMask;
+  unsigned int _scroll_lock_mask;
 
+  //! The key codes for the modifier keys
+  XModifierKeymap *_modmap;
+  
   //! The number of requested grabs on the display
-  static int _grab_count;
+  int _grab_count;
 
-  //! A list of information for all screens on the display
-  static ScreenInfoList _screenInfoList;
+  //! When true, X errors will be ignored. Use with care.
+  bool _ignore_errors;
 
-  //! A cache for re-using GCs, used by the drawing objects
-  /*!
-    @see Pen
-    @see Font
-    @see Image
-    @see ImageControl
-    @see Texture
-  */
-  static GCCache *_gccache;
+  //! The optimal visual for the display
+  Visual *_visual;
 
-  // Handles X errors on the display
-  /*
-    Displays the error if compiled for debugging.
-  */
-  //static int xerrorHandler(::Display *d, XErrorEvent *e);
-
-  //! Prevents instantiation of the class
-  Display();
+  //! Our colormap built for the optimal visual
+  Colormap _colormap;
 
+  //! The depth of our optimal visual
+  int _depth;
+  
 public:
-  //! Initializes the class, opens the X display
+  //! Wraps an open Display connection
   /*!
-    @see Display::display
-    @param name The name of the X display to open. If it is null, the DISPLAY
-                environment variable is used instead.
+    @param d An open Display connection.
   */
-  static void initialize(char *name);
+  Display(::Display *d);
   //! Destroys the class, closes the X display
-  static void destroy();
-
-  //! Returns the GC cache for the application
-  inline static GCCache *gcCache() { return _gccache; }
-
-  //! Gets information on a specific screen
-  /*!
-    Returns a ScreenInfo class, which contains information for 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
-  */
-  static const ScreenInfo* screenInfo(int snum);
-
-  //! Find a ScreenInfo based on a root window
-  static const ScreenInfo* findScreen(Window root);
+  ~Display();
 
   //! Returns if the display has the xkb extension available
-  inline static bool xkb() { return _xkb; }
+  inline bool xkb() const { return _xkb; }
   //! Returns the xkb extension's event base
-  inline static int xkbEventBase() { return _xkb_event_basep; }
+  inline int xkbEventBase() const { return _xkb_event_basep; }
 
   //! Returns if the display has the shape extension available
-  inline static bool shape() { return _shape; }
+  inline bool shape() const { return _shape; }
   //! Returns the shape extension's event base
-  inline static int shapeEventBase() { return _shape_event_basep; }
+  inline int shapeEventBase() const { return _shape_event_basep; }
   //! Returns if the display has the xinerama extension available
-  inline static bool xinerama() { return _xinerama; }
+  inline bool xinerama() const { return _xinerama; }
+
+  inline unsigned int numLockMask() const { return _num_lock_mask; }
+  inline unsigned int scrollLockMask() const { return _scroll_lock_mask; }
+  const XModifierKeymap *modifierMap() const { return _modmap; }
 
-  inline static unsigned int numLockMask() { return _numLockMask; }
-  inline static unsigned int scrollLockMask() { return _scrollLockMask; }
+  inline ::Display* operator*() const { return _display; }
 
+  //! When true, X errors will be ignored.
+  inline bool ignoreErrors() const { return _ignore_errors; }
+  //! Set whether X errors should be ignored. Use with care.
+  void setIgnoreErrors(bool t);
+  
   //! Grabs the display
-  static void grab();
+  void grab();
 
   //! Ungrabs the display
-  static void ungrab();
+  void ungrab();
 
 
   
   /* TEMPORARY */
-  static void grabButton(unsigned int button, unsigned int modifiers,
+  void grabButton(unsigned int button, unsigned int modifiers,
                   Window grab_window, bool owner_events,
                   unsigned int event_mask, int pointer_mode,
                   int keyboard_mode, Window confine_to, Cursor cursor,
-                  bool allow_scroll_lock);
-  static void ungrabButton(unsigned int button, unsigned int modifiers,
-                    Window grab_window);
-  static void grabKey(unsigned int keycode, unsigned int modifiers,
-                  Window grab_window, bool owner_events,
-                  int pointer_mode, int keyboard_mode, bool allow_scroll_lock);
-  static void ungrabKey(unsigned int keycode, unsigned int modifiers,
-                        Window grab_window);
+                  bool allow_scroll_lock) const;
+  void ungrabButton(unsigned int button, unsigned int modifiers,
+                    Window grab_window) const;
+  void grabKey(unsigned int keycode, unsigned int modifiers,
+               Window grab_window, bool owner_events,
+               int pointer_mode, int keyboard_mode,
+               bool allow_scroll_lock) const;
+  void ungrabKey(unsigned int keycode, unsigned int modifiers,
+                 Window grab_window) const;
+  void ungrabAllKeys(Window grab_window) const;
 };
 
 }
This page took 0.028499 seconds and 4 git commands to generate.