4 * An OpenGL based 'interactive canvas' library.
6 * Copyright (C) 2010 Intel Corporation.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
22 * Emmanuele Bassi <ebassi@linux.intel.com>
25 #ifndef __CLUTTER_DEVICE_MANAGER_PRIVATE_H__
26 #define __CLUTTER_DEVICE_MANAGER_PRIVATE_H__
28 #include <clutter/clutter-backend.h>
29 #include <clutter/clutter-device-manager.h>
30 #include <clutter/clutter-event.h>
34 typedef struct _ClutterAxisInfo
36 ClutterInputAxis axis;
47 typedef struct _ClutterKeyInfo
50 ClutterModifierType modifiers;
53 typedef struct _ClutterScrollInfo
56 ClutterScrollDirection direction;
60 guint last_value_valid : 1;
63 struct _ClutterInputDevice
65 GObject parent_instance;
69 ClutterInputDeviceType device_type;
70 ClutterInputMode device_mode;
74 ClutterDeviceManager *device_manager;
76 ClutterBackend *backend;
78 /* the associated device */
79 ClutterInputDevice *associated;
83 /* the actor underneath the pointer */
84 ClutterActor *cursor_actor;
86 /* the actor that has a grab in place for the device */
87 ClutterActor *pointer_grab_actor;
88 ClutterActor *keyboard_grab_actor;
90 /* the current click count */
93 /* the stage the device is on */
96 /* the current state */
100 gint current_button_number;
101 ClutterModifierType current_state;
103 /* the previous state, used for click count generation */
106 guint32 previous_time;
107 gint previous_button_number;
108 ClutterModifierType previous_state;
117 guint has_cursor : 1;
118 guint is_enabled : 1;
121 struct _ClutterInputDeviceClass
123 GObjectClass parent_class;
125 void (* select_stage_events) (ClutterInputDevice *device,
128 gboolean (* keycode_to_evdev) (ClutterInputDevice *device,
129 guint hardware_keycode,
130 guint *evdev_keycode);
134 void _clutter_device_manager_add_device (ClutterDeviceManager *device_manager,
135 ClutterInputDevice *device);
136 void _clutter_device_manager_remove_device (ClutterDeviceManager *device_manager,
137 ClutterInputDevice *device);
138 void _clutter_device_manager_update_devices (ClutterDeviceManager *device_manager);
139 void _clutter_device_manager_select_stage_events (ClutterDeviceManager *device_manager,
142 ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager);
145 void _clutter_input_device_set_coords (ClutterInputDevice *device,
148 void _clutter_input_device_set_state (ClutterInputDevice *device,
149 ClutterModifierType state);
150 void _clutter_input_device_set_time (ClutterInputDevice *device,
152 void _clutter_input_device_set_stage (ClutterInputDevice *device,
153 ClutterStage *stage);
154 ClutterStage * _clutter_input_device_get_stage (ClutterInputDevice *device);
155 void _clutter_input_device_set_actor (ClutterInputDevice *device,
157 gboolean emit_crossing);
158 ClutterActor * _clutter_input_device_update (ClutterInputDevice *device,
159 gboolean emit_crossing);
160 void _clutter_input_device_set_n_keys (ClutterInputDevice *device,
162 guint _clutter_input_device_add_axis (ClutterInputDevice *device,
163 ClutterInputAxis axis,
167 void _clutter_input_device_reset_axes (ClutterInputDevice *device);
169 void _clutter_input_device_set_associated_device (ClutterInputDevice *device,
170 ClutterInputDevice *associated);
171 void _clutter_input_device_add_slave (ClutterInputDevice *master,
172 ClutterInputDevice *slave);
173 void _clutter_input_device_remove_slave (ClutterInputDevice *master,
174 ClutterInputDevice *slave);
176 void _clutter_input_device_select_stage_events (ClutterInputDevice *device,
180 gboolean _clutter_input_device_translate_axis (ClutterInputDevice *device,
183 gdouble *axis_value);
185 void _clutter_input_device_add_scroll_info (ClutterInputDevice *device,
187 ClutterScrollDirection direction,
189 void _clutter_input_device_reset_scroll_info (ClutterInputDevice *device);
190 gboolean _clutter_input_device_get_scroll_delta (ClutterInputDevice *device,
193 ClutterScrollDirection *direction_p,
198 #endif /* __CLUTTER_DEVICE_MANAGER_PRIVATE_H__ */