2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
9 #include "Ecore_IMF_Evas.h"
12 * @defgroup Ecore_IMF_Evas_Group Ecore Input Method Context Evas Helper Functions
14 * Helper functions to make it easy to use Evas with Ecore_IMF.
17 static const char *_ecore_imf_evas_event_empty = "";
19 /* Converts the Evas modifiers to Ecore_IMF keyboard modifiers */
21 _ecore_imf_evas_event_modifiers_wrap(Evas_Modifier *evas_modifiers,
22 Ecore_IMF_Keyboard_Modifiers *imf_keyboard_modifiers)
24 if (!evas_modifiers || !imf_keyboard_modifiers)
27 *imf_keyboard_modifiers = ECORE_IMF_KEYBOARD_MODIFIER_NONE;
28 if (evas_key_modifier_is_set(evas_modifiers, "Control"))
29 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_CTRL;
30 if (evas_key_modifier_is_set(evas_modifiers, "Alt"))
31 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_ALT;
32 if (evas_key_modifier_is_set(evas_modifiers, "Shift"))
33 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_SHIFT;
34 if (evas_key_modifier_is_set(evas_modifiers, "Super") || evas_key_modifier_is_set(evas_modifiers, "Hyper"))
35 *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_WIN;
38 /* Converts the Evas locks to Ecore_IMF keyboard locks */
40 _ecore_imf_evas_event_locks_wrap(Evas_Lock *evas_locks,
41 Ecore_IMF_Keyboard_Locks *imf_keyboard_locks)
43 if (!evas_locks || !imf_keyboard_locks)
46 *imf_keyboard_locks = ECORE_IMF_KEYBOARD_LOCK_NONE;
47 if (evas_key_lock_is_set(evas_locks, "Num_Lock"))
48 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_NUM;
49 if (evas_key_lock_is_set(evas_locks, "Caps_Lock"))
50 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_CAPS;
51 if (evas_key_lock_is_set(evas_locks, "Scroll_Lock"))
52 *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_SCROLL;
55 /* Converts the Evas mouse flags to Ecore_IMF mouse flags */
57 _ecore_imf_evas_event_mouse_flags_wrap(Evas_Button_Flags evas_flags,
58 Ecore_IMF_Mouse_Flags *imf_flags)
63 *imf_flags = ECORE_IMF_MOUSE_NONE;
64 if (evas_flags & EVAS_BUTTON_DOUBLE_CLICK)
65 *imf_flags |= ECORE_IMF_MOUSE_DOUBLE_CLICK;
66 if (evas_flags & EVAS_BUTTON_TRIPLE_CLICK)
67 *imf_flags |= ECORE_IMF_MOUSE_TRIPLE_CLICK;
71 * Converts a "mouse_in" event from Evas to the corresponding event of Ecore_IMF.
73 * @param evas_event The received Evas event.
74 * @param imf_event The location to store the converted Ecore_IMF event.
75 * @ingroup Ecore_IMF_Evas_Group
78 ecore_imf_evas_event_mouse_in_wrap(Evas_Event_Mouse_In *evas_event,
79 Ecore_IMF_Event_Mouse_In *imf_event)
81 if (!evas_event || !imf_event)
84 imf_event->buttons = evas_event->buttons;
85 imf_event->output.x = evas_event->output.x;
86 imf_event->output.y = evas_event->output.y;
87 imf_event->canvas.x = evas_event->canvas.x;
88 imf_event->canvas.y = evas_event->canvas.y;
89 imf_event->timestamp = evas_event->timestamp;
90 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
91 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
95 * Converts a "mouse_out" event from Evas to the corresponding event of Ecore_IMF.
97 * @param evas_event The received Evas event.
98 * @param imf_event The location to store the converted Ecore_IMF event.
99 * @ingroup Ecore_IMF_Evas_Group
102 ecore_imf_evas_event_mouse_out_wrap(Evas_Event_Mouse_Out *evas_event,
103 Ecore_IMF_Event_Mouse_Out *imf_event)
105 if (!evas_event || !imf_event)
108 imf_event->buttons = evas_event->buttons;
109 imf_event->output.x = evas_event->output.x;
110 imf_event->output.y = evas_event->output.y;
111 imf_event->canvas.x = evas_event->canvas.x;
112 imf_event->canvas.y = evas_event->canvas.y;
113 imf_event->timestamp = evas_event->timestamp;
114 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
115 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
119 * Converts a "mouse_move" event from Evas to the corresponding event of Ecore_IMF.
121 * @param evas_event The received Evas event.
122 * @param imf_event The location to store the converted Ecore_IMF event.
123 * @ingroup Ecore_IMF_Evas_Group
126 ecore_imf_evas_event_mouse_move_wrap(Evas_Event_Mouse_Move *evas_event,
127 Ecore_IMF_Event_Mouse_Move *imf_event)
129 if (!evas_event || !imf_event)
132 imf_event->buttons = evas_event->buttons;
133 imf_event->cur.output.x = evas_event->cur.output.x;
134 imf_event->cur.output.y = evas_event->cur.output.y;
135 imf_event->prev.output.x = evas_event->prev.output.x;
136 imf_event->prev.output.y = evas_event->prev.output.y;
137 imf_event->cur.canvas.x = evas_event->cur.canvas.x;
138 imf_event->cur.canvas.y = evas_event->cur.canvas.y;
139 imf_event->prev.canvas.x = evas_event->prev.canvas.x;
140 imf_event->prev.canvas.y = evas_event->prev.canvas.y;
141 imf_event->timestamp = evas_event->timestamp;
142 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
143 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
147 * Converts a "mouse_down" event from Evas to the corresponding event of Ecore_IMF.
149 * @param evas_event The received Evas event.
150 * @param imf_event The location to store the converted Ecore_IMF event.
151 * @ingroup Ecore_IMF_Evas_Group
154 ecore_imf_evas_event_mouse_down_wrap(Evas_Event_Mouse_Down *evas_event,
155 Ecore_IMF_Event_Mouse_Down *imf_event)
157 if (!evas_event || !imf_event)
160 imf_event->button = evas_event->button;
161 imf_event->output.x = evas_event->output.x;
162 imf_event->output.y = evas_event->output.y;
163 imf_event->canvas.x = evas_event->canvas.x;
164 imf_event->canvas.y = evas_event->canvas.y;
165 imf_event->timestamp = evas_event->timestamp;
166 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
167 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
168 _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
172 * Converts a "mouse_up" event from Evas to the corresponding event of Ecore_IMF.
174 * @param evas_event The received Evas event.
175 * @param imf_event The location to store the converted Ecore_IMF event.
176 * @ingroup Ecore_IMF_Evas_Group
179 ecore_imf_evas_event_mouse_up_wrap(Evas_Event_Mouse_Up *evas_event,
180 Ecore_IMF_Event_Mouse_Up *imf_event)
182 if (!evas_event || !imf_event)
185 imf_event->button = evas_event->button;
186 imf_event->output.x = evas_event->output.x;
187 imf_event->output.y = evas_event->output.y;
188 imf_event->canvas.x = evas_event->canvas.x;
189 imf_event->canvas.y = evas_event->canvas.y;
190 imf_event->timestamp = evas_event->timestamp;
191 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
192 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
193 _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
197 * Converts a "mouse_wheel" event from Evas to the corresponding event of Ecore_IMF.
199 * @param evas_event The received Evas event.
200 * @param imf_event The location to store the converted Ecore_IMF event.
201 * @ingroup Ecore_IMF_Evas_Group
204 ecore_imf_evas_event_mouse_wheel_wrap(Evas_Event_Mouse_Wheel *evas_event,
205 Ecore_IMF_Event_Mouse_Wheel *imf_event)
207 if (!evas_event || !imf_event)
210 imf_event->direction = evas_event->direction;
211 imf_event->z = evas_event->z;
212 imf_event->output.x = evas_event->output.x;
213 imf_event->output.y = evas_event->output.y;
214 imf_event->canvas.x = evas_event->canvas.x;
215 imf_event->canvas.y = evas_event->canvas.y;
216 imf_event->timestamp = evas_event->timestamp;
217 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
218 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
219 imf_event->timestamp = evas_event->timestamp;
223 * Converts a "key_down" event from Evas to the corresponding event of Ecore_IMF.
225 * @param evas_event The received Evas event.
226 * @param imf_event The location to store the converted Ecore_IMF event.
227 * @ingroup Ecore_IMF_Evas_Group
230 ecore_imf_evas_event_key_down_wrap(Evas_Event_Key_Down *evas_event,
231 Ecore_IMF_Event_Key_Down *imf_event)
233 if (!evas_event || !imf_event)
236 imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
237 imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
238 imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
239 imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
240 imf_event->timestamp = evas_event->timestamp;
241 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
242 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
246 * Converts a "key_up" event from Evas to the corresponding event of Ecore_IMF.
248 * @param evas_event The received Evas event.
249 * @param imf_event The location to store the converted Ecore_IMF event.
250 * @ingroup Ecore_IMF_Evas_Group
253 ecore_imf_evas_event_key_up_wrap(Evas_Event_Key_Up *evas_event,
254 Ecore_IMF_Event_Key_Up *imf_event)
256 imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
257 imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
258 imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
259 imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
260 imf_event->timestamp = evas_event->timestamp;
261 _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
262 _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);