#ifndef __event_h__ #define __event_h__ // all gui events typedef struct { int key; float x; // relative x coordinate float y; // relative y coordinate } keyboard_event_t; typedef struct { int button; float x; // relative x coordinate float y; // relative y coordinate } mouse_event_t; typedef struct { float *vec; int elements; } array_event_t; typedef struct { int key; int start; int length; } range_event_t; typedef struct { void *receiver; // receiving object (null -> gui) void *sender; // sending object int type; // selector union { int i; float f; keyboard_event_t keyboard; mouse_event_t mouse; array_event_t array; range_event_t range; } e; } event_t; // events : protocol between gui and core thread #define NONE 0 // null #define MOTION 1 // mouse_event_t #define PRESS 2 #define RELEASE 3 #define KEY_PRESS 4 // key_event_t #define KEY_RELEASE 5 #define ARRAY 6 // array_event_t #define SELECTION 7 // range_event_t #define VIEW 8 #define POINT 9 // point_event_t #define SUICIDE 10 // null #define REDRAW 11 #define REQ_ARRAY 12 // nul #define OUTLET_RANGE 13 // range_event_t #define CENTER 14 // center view typedef void (*event_handler_t)(void *object, event_t *e); #endif