Cogs.Core
X11Module.h
1#pragma once
2#if defined( __linux__ )
3
4#include "Module.h"
5
6#include <map>
7
8#include <X11/Xatom.h>
9#include <X11/Xlib.h>
10#include <X11/Xutil.h>
11#include <X11/Xresource.h>
12
13namespace Cogs {
14 class X11Module : public Module {
15 public:
16 static X11Module& instance();
17 virtual void initPtrs() override;
18
19 Status (*XInitThreads)();
20
21 Display* XOpenDisplay(const char* displayName);
22 void XCloseDisplay(Display* /*display*/) {}
23
24 ::Window (*XCreateWindow)(Display* display, ::Window parent, int x, int y, unsigned int width, unsigned int height, unsigned int borderWidth, int depth, unsigned int cls, Visual* visual, unsigned long valueMask, XSetWindowAttributes* attributes);
25 int (*XDestroyWindow)(Display* display, ::Window w);
26 int (*XMapWindow)(Display* display, ::Window w);
27 int (*XUnmapWindow)(Display* display, ::Window w);
28 Status (*XIconifyWindow)(Display* display, ::Window w, int screenNumber);
29 int (*XMoveWindow)(Display* display, ::Window w, int x, int y);
30 int (*XResizeWindow)(Display* display, ::Window w, unsigned int width, unsigned int height);
31 Status (*XGetWindowAttributes)(Display* display, ::Window w, XWindowAttributes* attributes);
32 int (*XGetWindowProperty)(Display *display, ::Window w, Atom property, long offset, long length, Bool del, Atom requiredType, Atom* actualType, int* actualFormat, unsigned long* itemCount, unsigned long* bytesAfter, unsigned char** returnedProperty);
33 Status (*XQueryTree)(Display* display, ::Window w, ::Window* root, ::Window* parent, ::Window** children, unsigned int* noofchildren);
34
35 Colormap (*XCreateColormap)(Display* display, ::Window w, Visual* visual, int alloc);
36 int (*XFreeColormap)(Display* display, Colormap colorMap);
37
38 int (*XPending)(Display* display);
39 Status (*XSendEvent)(Display* display, ::Window w, Bool propagate, long eventMask, XEvent* eventSend);
40 int (*XNextEvent)(Display* display, XEvent* eventReturn);
41 Bool (*XFilterEvent)(XEvent* event, ::Window w);
42
43 int (*XSync)(Display* display, Bool discard);
44 int (*XFree)(void* data);
45
46 Atom (*XInternAtom)(Display* display, const char* atomName, Bool onlyIfExists);
47 int (*XStoreName)(Display* display, ::Window win, const char* windowName);
48
49 int (*XScreenNumberOfScreen)(Screen*);
50
51 KeySym (*XkbKeycodeToKeysym)(Display* display, KeyCode kc, unsigned int group, unsigned int level);
52 Status (*XSetWMProtocols)(Display* display, ::Window w, Atom* protocols, int count);
53 int (*XSelectInput)(Display* display, ::Window w, long eventMask);
54 int (*XRefreshKeyboardMapping)(XMappingEvent* eventMap);
55 XIM (*XOpenIM)(Display *display, XrmDatabase db, char* res_name, char* res_class);
56 Status (*XCloseIM)(XIM im);
57 char* (*XGetIMValues)(XIM im, ...);
58 XIC (*XCreateIC)(XIM im, ...);
59 void (*XDestroyIC)(XIC ic);
60 void (*XSetICFocus)(XIC ic);
61 int (*Xutf8LookupString)(XIC ic, XKeyPressedEvent* event, char* buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return);
62 Bool (*XSupportsLocale)();
63 char* (*XSetLocaleModifiers)(char* modifier_list);
64
65 int (*XSetSelectionOwner)(Display* display, Atom selection, ::Window owner, Time time);
66 ::Window (*XGetSelectionOwner)(Display* display, Atom selection);
67 int (*XConvertSelection)(Display* display, Atom selection, Atom target, Atom property, ::Window requestor, Time time);
68
69 int (*XChangeProperty)(Display *display, ::Window w, Atom property, Atom type, int format, int mode, unsigned char* data, int nelements);
70 int (*XDeleteProperty)(Display *display, ::Window w, Atom property);
71
72 private:
73 std::map<std::string, Display*> cachedDisplays;
74
75 Display* (*XOpenDisplayFn)(const char* displayName);
76 int (*XCloseDisplayFn)(Display* display);
77 };
78}
79
80#undef Always
81#undef Bool
82#undef False
83#undef None
84#undef Status
85#undef Success
86#undef True
87
88#endif
Contains all Cogs related functionality.
Definition: FieldSetter.h:23