summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/uiinput.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/uiinput.h')
-rw-r--r--trunk/src/emu/uiinput.h189
1 files changed, 189 insertions, 0 deletions
diff --git a/trunk/src/emu/uiinput.h b/trunk/src/emu/uiinput.h
new file mode 100644
index 00000000000..5923fb501de
--- /dev/null
+++ b/trunk/src/emu/uiinput.h
@@ -0,0 +1,189 @@
+/***************************************************************************
+
+ uiinput.h
+
+ Internal MAME user interface input state.
+
+ Copyright Nicola Salmoria and the MAME Team.
+ Visit http://mamedev.org for licensing and usage restrictions.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UIINPUT_H__
+#define __UIINPUT_H__
+
+#include "render.h"
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+enum _ui_event_type
+{
+ UI_EVENT_NONE,
+ UI_EVENT_MOUSE_MOVE,
+ UI_EVENT_MOUSE_LEAVE,
+ UI_EVENT_MOUSE_DOWN,
+ UI_EVENT_MOUSE_UP,
+ UI_EVENT_MOUSE_DOUBLE_CLICK,
+ UI_EVENT_CHAR
+};
+typedef enum _ui_event_type ui_event_type;
+
+
+typedef struct _ui_event ui_event;
+struct _ui_event
+{
+ ui_event_type event_type;
+ render_target * target;
+ INT32 mouse_x;
+ INT32 mouse_y;
+ input_item_id key;
+ unicode_char ch;
+};
+
+
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+
+/* ----- core system management ----- */
+
+/* initialization */
+void ui_input_init(running_machine &machine);
+
+
+
+/* ----- event handling ----- */
+
+void ui_input_frame_update(running_machine &machine);
+
+/* pushes a single event onto the queue */
+int ui_input_push_event(running_machine &machine, ui_event event);
+
+/* pops an event off of the queue */
+int ui_input_pop_event(running_machine &machine, ui_event *event);
+
+/* clears all outstanding events */
+void ui_input_reset(running_machine &machine);
+
+/* retrieves the current location of the mouse */
+render_target *ui_input_find_mouse(running_machine &machine, INT32 *x, INT32 *y, int *button);
+
+
+
+/* ----- user interface sequence reading ----- */
+
+/* return TRUE if a key down for the given user interface sequence is detected */
+int ui_input_pressed(running_machine &machine, int code);
+
+/* return TRUE if a key down for the given user interface sequence is detected, or if
+ autorepeat at the given speed is triggered */
+int ui_input_pressed_repeat(running_machine &machine, int code, int speed);
+
+
+
+/***************************************************************************
+ INLINE FUNCTIONS
+***************************************************************************/
+
+/*-------------------------------------------------
+ ui_input_push_mouse_move_event - pushes a mouse
+ move event to the specified render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_mouse_move_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_MOVE;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ ui_input_push_event(machine, event);
+}
+
+
+/*-------------------------------------------------
+ ui_input_push_mouse_leave_event - pushes a
+ mouse leave event to the specified render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_mouse_leave_event(running_machine &machine, render_target *target)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_LEAVE;
+ event.target = target;
+ ui_input_push_event(machine, event);
+}
+
+
+/*-------------------------------------------------
+ ui_input_push_mouse_down_event - pushes a mouse
+ down event to the specified render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_mouse_down_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_DOWN;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ ui_input_push_event(machine, event);
+}
+
+
+/*-------------------------------------------------
+ ui_input_push_mouse_down_event - pushes a mouse
+ down event to the specified render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_mouse_up_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_UP;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ ui_input_push_event(machine, event);
+}
+
+
+/*-------------------------------------------------
+ ui_input_push_mouse_double_click_event - pushes
+ a mouse double-click event to the specified
+ render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_mouse_double_click_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_DOUBLE_CLICK;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ ui_input_push_event(machine, event);
+}
+
+
+/*-------------------------------------------------
+ ui_input_push_char_event - pushes a char event
+ to the specified render_target
+-------------------------------------------------*/
+
+INLINE void ui_input_push_char_event(running_machine &machine, render_target *target, unicode_char ch)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_CHAR;
+ event.target = target;
+ event.ch = ch;
+ ui_input_push_event(machine, event);
+}
+
+
+#endif /* __UIINPUT_H__ */