00001
00002 #ifndef __display_hh
00003 #define __display_hh
00004
00005 extern "C" {
00006 #include <X11/Xlib.h>
00007 }
00008
00009 namespace otk {
00010
00011 class ScreenInfo;
00012 class RenderControl;
00013
00014 class Display;
00015
00016
00017 extern Display *display;
00018
00019
00020 class Display
00021 {
00022 private:
00023
00024 ::Display *_display;
00025
00026
00027 bool _xkb;
00028
00029 int _xkb_event_basep;
00030
00031
00032 bool _shape;
00033
00034 int _shape_event_basep;
00035
00036
00037 bool _xinerama;
00038
00039 int _xinerama_event_basep;
00040
00041
00042 unsigned int _mask_list[8];
00043
00044
00045 unsigned int _num_lock_mask;
00046
00047
00048 unsigned int _scroll_lock_mask;
00049
00050
00051 XModifierKeymap *_modmap;
00052
00053
00054 int _grab_count;
00055
00056
00057 bool _ignore_errors;
00058
00059
00060 ScreenInfo** _screeninfo_list;
00061
00062
00063
00064 RenderControl** _rendercontrol_list;
00065
00066 public:
00067
00068
00069
00070
00071
00072 Display();
00073
00074 ~Display();
00075
00076
00077
00078
00079
00080
00081
00082
00083 const ScreenInfo* screenInfo(int snum) const;
00084
00085
00086 const ScreenInfo* findScreen(Window root) const;
00087
00088
00089 const RenderControl *renderControl(int snum) const;
00090
00091
00092 inline bool xkb() const { return _xkb; }
00093
00094 inline int xkbEventBase() const { return _xkb_event_basep; }
00095
00096
00097 inline bool shape() const { return _shape; }
00098
00099 inline int shapeEventBase() const { return _shape_event_basep; }
00100
00101 inline bool xinerama() const { return _xinerama; }
00102
00103 inline unsigned int numLockMask() const { return _num_lock_mask; }
00104 inline unsigned int scrollLockMask() const { return _scroll_lock_mask; }
00105 const XModifierKeymap *modifierMap() const { return _modmap; }
00106
00107 inline ::Display* operator*() const { return _display; }
00108
00109
00110 inline bool ignoreErrors() const { return _ignore_errors; }
00111
00112 void setIgnoreErrors(bool t);
00113
00114
00115 void grab();
00116
00117
00118 void ungrab();
00119
00120
00121
00122
00123 void grabButton(unsigned int button, unsigned int modifiers,
00124 Window grab_window, bool owner_events,
00125 unsigned int event_mask, int pointer_mode,
00126 int keyboard_mode, Window confine_to, Cursor cursor,
00127 bool allow_scroll_lock) const;
00128 void ungrabButton(unsigned int button, unsigned int modifiers,
00129 Window grab_window) const;
00130 void grabKey(unsigned int keycode, unsigned int modifiers,
00131 Window grab_window, bool owner_events,
00132 int pointer_mode, int keyboard_mode,
00133 bool allow_scroll_lock) const;
00134 void ungrabKey(unsigned int keycode, unsigned int modifiers,
00135 Window grab_window) const;
00136 };
00137
00138 }
00139
00140 #endif // __display_hh