diff options
-rw-r--r-- | pugl/pugl.h | 154 |
1 files changed, 82 insertions, 72 deletions
diff --git a/pugl/pugl.h b/pugl/pugl.h index 02d99cc..2637734 100644 --- a/pugl/pugl.h +++ b/pugl/pugl.h @@ -129,6 +129,11 @@ typedef enum { } PuglMod; /** + Bitwise OR of PuglMod values. +*/ +typedef uint32_t PuglMods; + +/** Special keyboard keys. All keys, special or not, are expressed as a Unicode code point. This @@ -214,6 +219,11 @@ typedef enum { } PuglEventFlag; /** + Bitwise OR of PuglEventFlag values. +*/ +typedef uint32_t PuglEventFlags; + +/** Reason for a PuglEventCrossing. */ typedef enum { @@ -226,8 +236,8 @@ typedef enum { Common header for all event structs. */ typedef struct { - PuglEventType type; ///< Event type - uint32_t flags; ///< Bitwise OR of PuglEventFlag values + PuglEventType type; ///< Event type + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values } PuglEventAny; /** @@ -236,48 +246,48 @@ typedef struct { For event types PUGL_BUTTON_PRESS and PUGL_BUTTON_RELEASE. */ typedef struct { - PuglEventType type; ///< PUGL_BUTTON_PRESS or PUGL_BUTTON_RELEASE - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double time; ///< Time in seconds - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double xRoot; ///< Root-relative X coordinate - double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags - uint32_t button; ///< 1-relative button number + PuglEventType type; ///< PUGL_BUTTON_PRESS or PUGL_BUTTON_RELEASE + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double time; ///< Time in seconds + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double xRoot; ///< Root-relative X coordinate + double yRoot; ///< Root-relative Y coordinate + PuglMods state; ///< Bitwise OR of PuglMod flags + uint32_t button; ///< 1-relative button number } PuglEventButton; /** Configure event for when window size or position has changed. */ typedef struct { - PuglEventType type; ///< PUGL_CONFIGURE - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double x; ///< New parent-relative X coordinate - double y; ///< New parent-relative Y coordinate - double width; ///< New width - double height; ///< New height + PuglEventType type; ///< PUGL_CONFIGURE + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double x; ///< New parent-relative X coordinate + double y; ///< New parent-relative Y coordinate + double width; ///< New width + double height; ///< New height } PuglEventConfigure; /** Expose event for when a region must be redrawn. */ typedef struct { - PuglEventType type; ///< PUGL_EXPOSE - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double width; ///< Width of exposed region - double height; ///< Height of exposed region - int count; ///< Number of expose events to follow + PuglEventType type; ///< PUGL_EXPOSE + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double width; ///< Width of exposed region + double height; ///< Height of exposed region + int count; ///< Number of expose events to follow } PuglEventExpose; /** Window close event. */ typedef struct { - PuglEventType type; ///< PUGL_CLOSE - uint32_t flags; ///< Bitwise OR of PuglEventFlag values + PuglEventType type; ///< PUGL_CLOSE + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values } PuglEventClose; /** @@ -293,16 +303,16 @@ typedef struct { applied (by the shift or control keys). */ typedef struct { - PuglEventType type; ///< PUGL_KEY_PRESS or PUGL_KEY_RELEASE - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double time; ///< Time in seconds - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double xRoot; ///< Root-relative X coordinate - double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags - uint32_t keycode; ///< Raw key code - uint32_t key; ///< Unshifted Unicode character code, or 0 + PuglEventType type; ///< PUGL_KEY_PRESS or PUGL_KEY_RELEASE + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double time; ///< Time in seconds + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double xRoot; ///< Root-relative X coordinate + double yRoot; ///< Root-relative Y coordinate + PuglMods state; ///< Bitwise OR of PuglMod flags + uint32_t keycode; ///< Raw key code + uint32_t key; ///< Unshifted Unicode character code, or 0 } PuglEventKey; /** @@ -312,17 +322,17 @@ typedef struct { is given both as a Unicode character code and a UTF-8 string. */ typedef struct { - PuglEventType type; ///< PUGL_CHAR - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double time; ///< Time in seconds - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double xRoot; ///< Root-relative X coordinate - double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags - uint32_t keycode; ///< Raw key code - uint32_t character; ///< Unicode character code */ - char string[8]; ///< UTF-8 string + PuglEventType type; ///< PUGL_CHAR + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double time; ///< Time in seconds + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double xRoot; ///< Root-relative X coordinate + double yRoot; ///< Root-relative Y coordinate + PuglMods state; ///< Bitwise OR of PuglMod flags + uint32_t keycode; ///< Raw key code + uint32_t character; ///< Unicode character code */ + char string[8]; ///< UTF-8 string } PuglEventText; /** @@ -330,13 +340,13 @@ typedef struct { */ typedef struct { PuglEventType type; ///< PUGL_ENTER_NOTIFY or PUGL_LEAVE_NOTIFY - uint32_t flags; ///< Bitwise OR of PuglEventFlag values + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values double time; ///< Time in seconds double x; ///< View-relative X coordinate double y; ///< View-relative Y coordinate double xRoot; ///< Root-relative X coordinate double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags + PuglMods state; ///< Bitwise OR of PuglMod flags PuglCrossingMode mode; ///< Reason for crossing } PuglEventCrossing; @@ -344,16 +354,16 @@ typedef struct { Pointer motion event. */ typedef struct { - PuglEventType type; ///< PUGL_MOTION_NOTIFY - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double time; ///< Time in seconds - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double xRoot; ///< Root-relative X coordinate - double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags - bool isHint; ///< True iff this event is a motion hint - bool focus; ///< True iff this is the focused window + PuglEventType type; ///< PUGL_MOTION_NOTIFY + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double time; ///< Time in seconds + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double xRoot; ///< Root-relative X coordinate + double yRoot; ///< Root-relative Y coordinate + PuglMods state; ///< Bitwise OR of PuglMod flags + bool isHint; ///< True iff this event is a motion hint + bool focus; ///< True iff this is the focused window } PuglEventMotion; /** @@ -366,25 +376,25 @@ typedef struct { gracefully. */ typedef struct { - PuglEventType type; ///< PUGL_SCROLL - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - double time; ///< Time in seconds - double x; ///< View-relative X coordinate - double y; ///< View-relative Y coordinate - double xRoot; ///< Root-relative X coordinate - double yRoot; ///< Root-relative Y coordinate - uint32_t state; ///< Bitwise OR of PuglMod flags - double dx; ///< Scroll X distance in lines - double dy; ///< Scroll Y distance in lines + PuglEventType type; ///< PUGL_SCROLL + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + double time; ///< Time in seconds + double x; ///< View-relative X coordinate + double y; ///< View-relative Y coordinate + double xRoot; ///< Root-relative X coordinate + double yRoot; ///< Root-relative Y coordinate + PuglMods state; ///< Bitwise OR of PuglMod flags + double dx; ///< Scroll X distance in lines + double dy; ///< Scroll Y distance in lines } PuglEventScroll; /** Keyboard focus event. */ typedef struct { - PuglEventType type; ///< PUGL_FOCUS_IN or PUGL_FOCUS_OUT - uint32_t flags; ///< Bitwise OR of PuglEventFlag values - bool grab; ///< True iff this is a grab/ungrab event + PuglEventType type; ///< PUGL_FOCUS_IN or PUGL_FOCUS_OUT + PuglEventFlags flags; ///< Bitwise OR of PuglEventFlag values + bool grab; ///< True iff this is a grab/ungrab event } PuglEventFocus; /** |