15 #ifndef SUBPROCESSWINDOWBUFFER_H 16 #define SUBPROCESSWINDOWBUFFER_H 44 void *
operator new(size_t,
void *addr);
46 SubprocessWindowBuffer(
const SubprocessWindowBuffer ©);
47 ~SubprocessWindowBuffer();
50 static SubprocessWindowBuffer *new_buffer(
int &fd,
size_t &mmap_size,
52 int x_size,
int y_size);
53 static void destroy_buffer(
int fd,
size_t mmap_size,
54 const string &filename,
55 SubprocessWindowBuffer *buffer);
57 static SubprocessWindowBuffer *open_buffer(
int &fd,
size_t &mmap_size,
58 const string &filename);
59 static void close_buffer(
int fd,
size_t mmap_size,
60 const string &filename,
61 SubprocessWindowBuffer *buffer);
63 bool verify_magic_number()
const;
65 inline int get_x_size()
const;
66 inline int get_y_size()
const;
67 inline size_t get_row_size()
const;
68 inline size_t get_framebuffer_size()
const;
70 inline bool ready_for_read()
const;
71 inline bool ready_for_write()
const;
73 inline const void *open_read_framebuffer();
74 inline void close_read_framebuffer();
75 inline void *open_write_framebuffer();
76 inline void close_write_framebuffer();
92 EF_has_mouse = 0x0001,
93 EF_mouse_position = 0x0002,
94 EF_shift_held = 0x0004,
95 EF_control_held = 0x0008,
97 EF_meta_held = 0x0020,
98 EF_caps_lock = 0x0040,
110 inline bool add_event(
const Event &event);
111 inline bool has_event()
const;
112 inline bool get_event(
Event &event);
118 enum { magic_number_length = 8 };
119 static const char _magic_number[magic_number_length];
120 char _this_magic[magic_number_length];
127 int _x_size, _y_size;
129 size_t _framebuffer_size;
132 enum { max_events = 64 };
135 Event _events[max_events];
147 #include "subprocessWindowBuffer.I"
This is a special class that is designed to faciliate SubprocessWindow.