|  |  |  | Pigment 0.3 Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | ||||
#include <pgm/pgm.h> enum PgmEventType; enum PgmModifierType; enum PgmButtonType; enum PgmScrollDirection; enum PgmViewportState; union PgmEvent; PgmEventAny; PgmEventMotion; PgmEventButton; PgmEventScroll; PgmEventState; PgmEventWin32Message; PgmEventDnd; PgmEventKey; PgmEventExpose; PgmEventConfigure; PgmEvent * pgm_event_new (PgmEventType type); PgmEvent * pgm_event_copy (PgmEvent *event); void pgm_event_free (PgmEvent *event); guint32 pgm_keyval_to_unicode (guint keyval);
Various structs and functions used by Pigment for events handling.
Last reviewed on 2007-04-12 (0.1.5)
typedef enum {
  PGM_NOTHING             = -1,
  PGM_MOTION_NOTIFY       = 0,
  PGM_BUTTON_PRESS        = 1,
  PGM_DOUBLE_BUTTON_PRESS = 2,
  PGM_TRIPLE_BUTTON_PRESS = 3,
  PGM_BUTTON_PRESSURE     = 4,
  PGM_BUTTON_RELEASE      = 5,
  PGM_KEY_PRESS           = 6,
  PGM_KEY_RELEASE         = 7,
  PGM_EXPOSE              = 8,
  PGM_CONFIGURE           = 9,
  PGM_DRAG_MOTION         = 10,
  PGM_DRAG_DROP           = 12,
  PGM_DRAG_LEAVE          = 13,
  PGM_SCROLL              = 14,
  PGM_STATE               = 15,
  PGM_DELETE              = 16,
  PGM_WIN32_MESSAGE       = 17
} PgmEventType;
Specifies the type of the event.
| a special code to indicate a null event. | |
| the pointer has entered the window. | |
| a mouse button has been pressed. | |
| a mouse button has been clicked 2 times in a short
period of time. Note that each click also generates a PGM_BUTTON_PRESSevent. | |
| a mouse button has been clicked 3 times in a short
period of time. Note that each click also generates a PGM_BUTTON_PRESSevent. | |
| a mouse button pressure has changed. | |
| a mouse button has been released. | |
| a key has been pressed. | |
| a key has been released. | |
| the window has become visible and needs to be redrawn. | |
| the size or the position of the viewport has changed. | |
| the mouse has moved in the viewport while a drag is in progress. | |
| the mouse has dropped data onto the viewport. | |
| the mouse has left the viewport while a drag is in progress. | |
| the scroll wheel was turned. | |
| the state of a viewport has changed. | |
| the window manager has requested that the toplevel window be destroyed, usually when the user clicks on a special icon in the title bar. | |
| a Win32 message has been received (Only used on Windows). | 
typedef enum {
  PGM_SHIFT_MASK    = (1 << 0),
  PGM_CAPSLOCK_MASK = (1 << 1),
  PGM_CONTROL_MASK  = (1 << 2),
  PGM_ALT_MASK      = (1 << 3),
  PGM_NUMLOCK_MASK  = (1 << 4)
} PgmModifierType;
A set of bit-flags to indicate the state of modifier keys. Typical modifier keys are Shift, Control, Alt and CapsLock.
typedef enum {
  PGM_BUTTON_LEFT   = (1 << 0),
  PGM_BUTTON_MIDDLE = (1 << 1),
  PGM_BUTTON_RIGHT  = (1 << 2)
} PgmButtonType;
The mouse button type.
typedef enum {
  PGM_SCROLL_UP,
  PGM_SCROLL_DOWN
} PgmScrollDirection;
The mouse wheel scrolling directions.
typedef enum {
  PGM_VIEWPORT_ICONIFIED  = (1 << 0)
} PgmViewportState;
Specifies the state of a viewport.
union PgmEvent {
  PgmEventType         type;
  PgmEventAny          any;
  PgmEventMotion       motion;
  PgmEventButton       button;
  PgmEventScroll       scroll;
  PgmEventKey          key;
  PgmEventExpose       expose;
  PgmEventConfigure    configure;
  PgmEventDnd          dnd;
  PgmEventState        state;
#ifdef WIN32
  PgmEventWin32Message win32_message;
#endif /* WIN32 */
};
The PgmEvent struct contains a union of all of the event structs, and allows access to the data fields in a number of ways.
The event type is always the first field in all of the event structs, and can always be accessed with the following code, no matter what type of event it is:
PgmEvent *event; PgmEventType type; type = event->type;
To access other fields of the event structs, the pointer to the event can be
cast to the appropriate event struct pointer, or the union member name can be
used. For example if the event type is PGM_BUTTON_PRESS then the x coordinate
of the button press can be accessed with:
PgmEvent *event; gfloat x; x = ((PgmEventButton*) event)->x;
or with:
PgmEvent *event; gfloat x; x = event->button.x;
typedef struct {
  PgmEventType type;
  guint8       source;
} PgmEventAny;
Contains the fields which are common to all event structs. Any event pointer can safely be cast to a pointer to a PgmEventAny to access these fields.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
typedef struct {
  PgmEventType type;
  guint8       source;
  guint32      time;
  gfloat       x, y;
  guint32      pressure;
} PgmEventMotion;
Generated when the pointer moves.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| gfloat  | the x coordinate of the pointer relative to the window. | 
| gfloat  | the y coordinate of the pointer relative to the window. | 
| guint32  | the pressure force, set to 0 when not used with a touch screen. | 
typedef struct {
  PgmEventType  type;
  guint8        source;
  guint32       time;
  gfloat        x, y;
  PgmButtonType button;
  guint32       pressure;
} PgmEventButton;
Used for button press and button release events.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| gfloat  | the x coordinate of the pointer relative to the window. | 
| gfloat  | the y coordinate of the pointer relative to the window. | 
| PgmButtonType  | the button which was pressed or released. | 
| guint32  | the pressure force, set to 0 when not used with a touch screen. | 
typedef struct {
  PgmEventType       type;
  guint8             source;
  guint32            time;
  gfloat             x, y;
  PgmScrollDirection direction;
} PgmEventScroll;
Generated when the mouse wheel is turned.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| gfloat  | the x coordinate of the pointer relative to the window. | 
| gfloat  | the y coordinate of the pointer relative to the window. | 
| PgmScrollDirection  | the scroll wheel direction. | 
typedef struct {
  PgmEventType     type;
  guint8           source;
  PgmViewportState changed_mask;
  PgmViewportState state_mask;
} PgmEventState;
Generated when the state of a viewport changes.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| PgmViewportState  | mask specifying what viewport flags have changed. | 
| PgmViewportState  | mask specifying the new viewport flags. | 
typedef struct {
  PgmEventType type;
  guint8       source;
  guint32      time;
  UINT         message;
  WPARAM       wparam;
  LPARAM       lparam;
} PgmEventWin32Message;
Describes a Win32 message.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| UINT  | the Win32 message value. | 
| WPARAM  | additional message information depending on the message value. | 
| LPARAM  | additional message information depending on the message value. | 
typedef struct {
  PgmEventType   type;
  guint8         source;
  guint32        time;
  gfloat         x, y;
  gchar        **uri;
} PgmEventDnd;
Describes a drag motion, drop, or leave event.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| gfloat  | the new x coordinate of the window. | 
| gfloat  | the new y coordinate of the window. | 
| gchar ** | the list of URI as a NULL-terminated array of strings. | 
typedef struct {
  PgmEventType type;
  guint8       source;
  guint32      time;
  guint        modifier;
  guint        keyval;
  guint16      hardware_keycode;
} PgmEventKey;
Describes a key press or key release event.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| guint32  | the time of the event in milliseconds. | 
| guint  | A bit-mask representing the state of the modifier keys (e.g. Control, Shift and Alt), see PgmModifierType. | 
| guint  | the key that was pressed or released. See the pgm/pgmkeysyms.h header file for a complete list of Pigment key codes. | 
| guint16  | the raw code of the key that was pressed or released. | 
typedef struct {
  PgmEventType type;
  guint8       source;
} PgmEventExpose;
Generated when a window becomes visible and needs to be redrawn.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
typedef struct {
  PgmEventType type;
  guint8       source;
  gint         x, y;
  gint         width, height;
} PgmEventConfigure;
Generated when a viewport size or position has changed.
| PgmEventType  | the type of the event. | 
| guint8  | the source field that can be filled by applications to indicate the source of the event (mouse, pen, remote control, etc). | 
| gint  | the new x coordinate of the window. | 
| gint  | the new y coordinate of the window. | 
| gint  | the new width of the viewport. | 
| gint  | the new height of the viewport. | 
PgmEvent * pgm_event_new (PgmEventType type);
Creates a new PgmEvent of the specified type.
MT safe.
| 
 | the type of event. | 
| Returns : | a new PgmEvent instance. | 
void pgm_event_free (PgmEvent *event);
MT safe.
Frees all resources used by event.
| 
 | A PgmEvent object. |