1 #ifndef __BROADWAY_PROTOCOL_H__ 2 #define __BROADWAY_PROTOCOL_H__ 3 4 #include <glib.h> 5 6 typedef struct { 7 gint32 x, y; 8 gint32 width, height; 9 } BroadwayRect; 10 11 typedef enum { /* Sync changes with broadway.js and node_type_is_container() */ 12 BROADWAY_NODE_TEXTURE = 0, 13 BROADWAY_NODE_CONTAINER = 1, 14 BROADWAY_NODE_COLOR = 2, 15 BROADWAY_NODE_BORDER = 3, 16 BROADWAY_NODE_OUTSET_SHADOW = 4, 17 BROADWAY_NODE_INSET_SHADOW = 5, 18 BROADWAY_NODE_ROUNDED_CLIP = 6, 19 BROADWAY_NODE_LINEAR_GRADIENT = 7, 20 BROADWAY_NODE_SHADOW = 8, 21 BROADWAY_NODE_OPACITY = 9, 22 BROADWAY_NODE_CLIP = 10, 23 BROADWAY_NODE_TRANSFORM = 11, 24 BROADWAY_NODE_DEBUG = 12, 25 BROADWAY_NODE_REUSE = 13, 26 } BroadwayNodeType; 27 28 typedef enum { /* Sync changes with broadway.js */ 29 BROADWAY_NODE_OP_INSERT_NODE = 0, 30 BROADWAY_NODE_OP_REMOVE_NODE = 1, 31 BROADWAY_NODE_OP_MOVE_AFTER_CHILD = 2, 32 BROADWAY_NODE_OP_PATCH_TEXTURE = 3, 33 BROADWAY_NODE_OP_PATCH_TRANSFORM = 4, 34 } BroadwayNodeOpType; 35 36 static const char *broadway_node_type_names[] G_GNUC_UNUSED = { 37 "TEXTURE", 38 "CONTAINER", 39 "COLOR", 40 "BORDER", 41 "OUTSET_SHADOW", 42 "INSET_SHADOW", 43 "ROUNDED_CLIP", 44 "LINEAR_GRADIENT", 45 "SHADOW", 46 "OPACITY", 47 "CLIP", 48 "TRANSFORM", 49 "DEBUG", 50 "REUSE", 51 }; 52 53 typedef enum { 54 BROADWAY_EVENT_ENTER = 0, 55 BROADWAY_EVENT_LEAVE = 1, 56 BROADWAY_EVENT_POINTER_MOVE = 2, 57 BROADWAY_EVENT_BUTTON_PRESS = 3, 58 BROADWAY_EVENT_BUTTON_RELEASE = 4, 59 BROADWAY_EVENT_TOUCH = 5, 60 BROADWAY_EVENT_SCROLL = 6, 61 BROADWAY_EVENT_KEY_PRESS = 7, 62 BROADWAY_EVENT_KEY_RELEASE = 8, 63 BROADWAY_EVENT_GRAB_NOTIFY = 9, 64 BROADWAY_EVENT_UNGRAB_NOTIFY = 10, 65 BROADWAY_EVENT_CONFIGURE_NOTIFY = 11, 66 BROADWAY_EVENT_SCREEN_SIZE_CHANGED = 12, 67 BROADWAY_EVENT_FOCUS = 13, 68 BROADWAY_EVENT_ROUNDTRIP_NOTIFY = 14, 69 } BroadwayEventType; 70 71 typedef enum { 72 BROADWAY_OP_GRAB_POINTER = 0, 73 BROADWAY_OP_UNGRAB_POINTER = 1, 74 BROADWAY_OP_NEW_SURFACE = 2, 75 BROADWAY_OP_SHOW_SURFACE = 3, 76 BROADWAY_OP_HIDE_SURFACE = 4, 77 BROADWAY_OP_RAISE_SURFACE = 5, 78 BROADWAY_OP_LOWER_SURFACE = 6, 79 BROADWAY_OP_DESTROY_SURFACE = 7, 80 BROADWAY_OP_MOVE_RESIZE = 8, 81 BROADWAY_OP_SET_TRANSIENT_FOR = 9, 82 BROADWAY_OP_DISCONNECTED = 10, 83 BROADWAY_OP_SURFACE_UPDATE = 11, 84 BROADWAY_OP_SET_SHOW_KEYBOARD = 12, 85 BROADWAY_OP_UPLOAD_TEXTURE = 13, 86 BROADWAY_OP_RELEASE_TEXTURE = 14, 87 BROADWAY_OP_SET_NODES = 15, 88 BROADWAY_OP_ROUNDTRIP = 16, 89 } BroadwayOpType; 90 91 typedef struct { 92 guint32 type; 93 guint32 serial; 94 guint64 time; 95 } BroadwayInputBaseMsg; 96 97 typedef struct { 98 BroadwayInputBaseMsg base; 99 guint32 mouse_surface_id; /* The real surface, not taking grabs into account */ 100 guint32 event_surface_id; 101 gint32 root_x; 102 gint32 root_y; 103 gint32 win_x; 104 gint32 win_y; 105 guint32 state; 106 } BroadwayInputPointerMsg; 107 108 typedef struct { 109 BroadwayInputPointerMsg pointer; 110 guint32 mode; 111 } BroadwayInputCrossingMsg; 112 113 typedef struct { 114 BroadwayInputPointerMsg pointer; 115 guint32 button; 116 } BroadwayInputButtonMsg; 117 118 typedef struct { 119 BroadwayInputPointerMsg pointer; 120 gint32 dir; 121 } BroadwayInputScrollMsg; 122 123 typedef struct { 124 BroadwayInputBaseMsg base; 125 guint32 touch_type; 126 guint32 event_surface_id; 127 guint32 sequence_id; 128 guint32 is_emulated; 129 gint32 root_x; 130 gint32 root_y; 131 gint32 win_x; 132 gint32 win_y; 133 guint32 state; 134 } BroadwayInputTouchMsg; 135 136 typedef struct { 137 BroadwayInputBaseMsg base; 138 guint32 surface_id; 139 guint32 state; 140 gint32 key; 141 } BroadwayInputKeyMsg; 142 143 typedef struct { 144 BroadwayInputBaseMsg base; 145 gint32 res; 146 } BroadwayInputGrabReply; 147 148 typedef struct { 149 BroadwayInputBaseMsg base; 150 gint32 id; 151 gint32 x; 152 gint32 y; 153 gint32 width; 154 gint32 height; 155 } BroadwayInputConfigureNotify; 156 157 typedef struct { 158 BroadwayInputBaseMsg base; 159 gint32 id; 160 guint32 tag; 161 guint32 local; 162 } BroadwayInputRoundtripNotify; 163 164 typedef struct { 165 BroadwayInputBaseMsg base; 166 guint32 width; 167 guint32 height; 168 guint32 scale; 169 } BroadwayInputScreenResizeNotify; 170 171 typedef struct { 172 BroadwayInputBaseMsg base; 173 gint32 id; 174 } BroadwayInputDeleteNotify; 175 176 typedef struct { 177 BroadwayInputBaseMsg base; 178 gint32 new_id; 179 gint32 old_id; 180 } BroadwayInputFocusMsg; 181 182 typedef union { 183 BroadwayInputBaseMsg base; 184 BroadwayInputPointerMsg pointer; 185 BroadwayInputCrossingMsg crossing; 186 BroadwayInputButtonMsg button; 187 BroadwayInputScrollMsg scroll; 188 BroadwayInputTouchMsg touch; 189 BroadwayInputKeyMsg key; 190 BroadwayInputGrabReply grab_reply; 191 BroadwayInputConfigureNotify configure_notify; 192 BroadwayInputRoundtripNotify roundtrip_notify; 193 BroadwayInputDeleteNotify delete_notify; 194 BroadwayInputScreenResizeNotify screen_resize_notify; 195 BroadwayInputFocusMsg focus; 196 } BroadwayInputMsg; 197 198 typedef enum { 199 BROADWAY_REQUEST_NEW_SURFACE, 200 BROADWAY_REQUEST_FLUSH, 201 BROADWAY_REQUEST_SYNC, 202 BROADWAY_REQUEST_QUERY_MOUSE, 203 BROADWAY_REQUEST_DESTROY_SURFACE, 204 BROADWAY_REQUEST_SHOW_SURFACE, 205 BROADWAY_REQUEST_HIDE_SURFACE, 206 BROADWAY_REQUEST_SET_TRANSIENT_FOR, 207 BROADWAY_REQUEST_MOVE_RESIZE, 208 BROADWAY_REQUEST_GRAB_POINTER, 209 BROADWAY_REQUEST_UNGRAB_POINTER, 210 BROADWAY_REQUEST_FOCUS_SURFACE, 211 BROADWAY_REQUEST_SET_SHOW_KEYBOARD, 212 BROADWAY_REQUEST_UPLOAD_TEXTURE, 213 BROADWAY_REQUEST_RELEASE_TEXTURE, 214 BROADWAY_REQUEST_SET_NODES, 215 BROADWAY_REQUEST_ROUNDTRIP, 216 } BroadwayRequestType; 217 218 typedef struct { 219 guint32 size; 220 guint32 serial; 221 guint32 type; 222 } BroadwayRequestBase, BroadwayRequestFlush, BroadwayRequestSync, BroadwayRequestQueryMouse; 223 224 typedef struct { 225 BroadwayRequestBase base; 226 guint32 id; 227 } BroadwayRequestDestroySurface, BroadwayRequestShowSurface, BroadwayRequestHideSurface, BroadwayRequestFocusSurface; 228 229 typedef struct { 230 BroadwayRequestBase base; 231 guint32 id; 232 guint32 tag; 233 } BroadwayRequestRoundtrip; 234 235 typedef struct { 236 BroadwayRequestBase base; 237 guint32 id; 238 guint32 parent; 239 } BroadwayRequestSetTransientFor; 240 241 typedef struct { 242 BroadwayRequestBase base; 243 guint32 id; 244 guint32 offset; 245 guint32 size; 246 } BroadwayRequestUploadTexture; 247 248 typedef struct { 249 BroadwayRequestBase base; 250 guint32 id; 251 } BroadwayRequestReleaseTexture; 252 253 typedef struct { 254 BroadwayRequestBase base; 255 guint32 id; 256 guint32 data[1]; 257 } BroadwayRequestSetNodes; 258 259 260 typedef struct { 261 BroadwayRequestBase base; 262 guint32 id; 263 guint32 owner_events; 264 guint32 event_mask; 265 guint32 time_; 266 } BroadwayRequestGrabPointer; 267 268 typedef struct { 269 BroadwayRequestBase base; 270 guint32 time_; 271 } BroadwayRequestUngrabPointer; 272 273 typedef struct { 274 BroadwayRequestBase base; 275 gint32 x; 276 gint32 y; 277 guint32 width; 278 guint32 height; 279 } BroadwayRequestNewSurface; 280 281 typedef struct { 282 BroadwayRequestBase base; 283 guint32 id; 284 guint32 with_move; 285 gint32 x; 286 gint32 y; 287 guint32 width; 288 guint32 height; 289 } BroadwayRequestMoveResize; 290 291 typedef struct { 292 BroadwayRequestBase base; 293 guint32 show_keyboard; 294 } BroadwayRequestSetShowKeyboard; 295 296 typedef union { 297 BroadwayRequestBase base; 298 BroadwayRequestNewSurface new_surface; 299 BroadwayRequestFlush flush; 300 BroadwayRequestSync sync; 301 BroadwayRequestRoundtrip roundtrip; 302 BroadwayRequestQueryMouse query_mouse; 303 BroadwayRequestDestroySurface destroy_surface; 304 BroadwayRequestShowSurface show_surface; 305 BroadwayRequestHideSurface hide_surface; 306 BroadwayRequestSetTransientFor set_transient_for; 307 BroadwayRequestMoveResize move_resize; 308 BroadwayRequestGrabPointer grab_pointer; 309 BroadwayRequestUngrabPointer ungrab_pointer; 310 BroadwayRequestFocusSurface focus_surface; 311 BroadwayRequestSetShowKeyboard set_show_keyboard; 312 BroadwayRequestUploadTexture upload_texture; 313 BroadwayRequestReleaseTexture release_texture; 314 BroadwayRequestSetNodes set_nodes; 315 } BroadwayRequest; 316 317 typedef enum { 318 BROADWAY_REPLY_EVENT, 319 BROADWAY_REPLY_SYNC, 320 BROADWAY_REPLY_QUERY_MOUSE, 321 BROADWAY_REPLY_NEW_SURFACE, 322 BROADWAY_REPLY_GRAB_POINTER, 323 BROADWAY_REPLY_UNGRAB_POINTER 324 } BroadwayReplyType; 325 326 typedef struct { 327 guint32 size; 328 guint32 in_reply_to; 329 guint32 type; 330 } BroadwayReplyBase, BroadwayReplySync; 331 332 typedef struct { 333 BroadwayReplyBase base; 334 guint32 id; 335 } BroadwayReplyNewSurface; 336 337 typedef struct { 338 BroadwayReplyBase base; 339 guint32 status; 340 } BroadwayReplyGrabPointer, BroadwayReplyUngrabPointer; 341 342 typedef struct { 343 BroadwayReplyBase base; 344 guint32 surface; 345 gint32 root_x; 346 gint32 root_y; 347 guint32 mask; 348 } BroadwayReplyQueryMouse; 349 350 typedef struct { 351 BroadwayReplyBase base; 352 BroadwayInputMsg msg; 353 } BroadwayReplyEvent; 354 355 typedef union { 356 BroadwayReplyBase base; 357 BroadwayReplyEvent event; 358 BroadwayReplyQueryMouse query_mouse; 359 BroadwayReplyNewSurface new_surface; 360 BroadwayReplyGrabPointer grab_pointer; 361 BroadwayReplyUngrabPointer ungrab_pointer; 362 } BroadwayReply; 363 364 #endif /* __BROADWAY_PROTOCOL_H__ */ 365