DrawCaml
window.h
1 #pragma once
2 
3 #define CAML_NAME_SPACE
4 #include "caml/mlvalues.h"
5 #include "caml/alloc.h"
6 #include "caml/memory.h"
7 #include "caml/fail.h"
8 #include "caml/callback.h"
9 #include "caml/custom.h"
10 #include "caml/intext.h"
11 #include "caml/threads.h"
12 
13 #include <string>
14 #include <X11/Xlib.h>
15 #include <X11/extensions/Xdbe.h>
16 #include <thread>
17 #include <mutex>
18 #include <queue>
19 #include <vector>
20 
21 #include "element.h"
22 #include "container.h"
23 #include "action.h"
24 
25 using namespace std;
26 
30 class SWindow {
31  public:
32  //window parameters
33  string mName;
34  int mPosX, mPosY;
35  int mWidth, mHeight, mBorderSize;
36 
37  //attributes for user actions handling
38  thread* mThread;
39  mutex mActionMutex;
43  queue<Action> mSharedQueue;
44 
45  bool mClosed = false;
46 
47  SContainer* mContainer;
48 
49  /*
50  XLib parameters
51  */
52  Window mWindow;
53  Display *mDisplay;
54  int mScreen;
55 
56  XEvent mEvent;
57  Atom mDeleteWindow; // used for clean exit
58 
59  unsigned long mValuemask = 0;
60  XGCValues mValues;
61 
62  GC mGC;
63  Colormap mColormap;
64 
68  XdbeBackBuffer mBackBuffer;
69 
70  // event handling attributes
71  value mEventHandler;
72  bool is_Xlib = false;
73 
74  SWindow(string name, int posX, int posY, int width, int height, int borderSize);
75 
79  void close();
83  void draw();
87  void listener();
88  value keyEventToCaml(int keycode, bool is_pressed);
89 
90 };
Definition: container.h:20
Definition: window.h:30
XdbeBackBuffer mBackBuffer
Definition: window.h:68
queue< Action > mSharedQueue
Definition: window.h:43