1 /* Copyright (c) 2010-2014 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "maps_error.h"
19 #include "maps_view_event_data.h"
20 #include "maps_util.h"
21 #include "maps_condition.h"
24 * This represents visual event object information
26 typedef struct _maps_view_event_data_s {
27 maps_view_event_type_e event_type;
29 /* Applicable for set_center action */
30 maps_coordinates_h center;
32 /* Applicable for gesture */
35 maps_coordinates_h coordinates;
37 /* Applicable for center move */
41 /* Applicable for gestures */
44 /* Applicable for gestures, object */
45 maps_view_gesture_e gesture_type;
47 /* Applicable for action */
48 maps_view_action_e action_type;
50 /* Applicable for zoom */
53 /* Applicable for rotation */
54 double rotation_angle;
56 /* Applicable for object event */
57 maps_view_object_h object;
58 } maps_view_event_data_s;
60 /*----------------------------------------------------------------------------*/
62 int _maps_view_event_data_set_type(const maps_view_event_data_h event, maps_view_event_type_e event_type);
64 int _maps_view_event_data_set_gesture_type(const maps_view_event_data_h event, maps_view_gesture_e gesture_type);
66 int _maps_view_event_data_set_action_type(const maps_view_event_data_h event, maps_view_action_e action_type);
68 int _maps_view_event_data_set_center(const maps_view_event_data_h event, const maps_coordinates_h center);
70 int _maps_view_event_data_set_delta(const maps_view_event_data_h event, int delta_x, int delta_y);
72 int _maps_view_event_data_set_position(const maps_view_event_data_h event, int x, int y);
74 int _maps_view_event_data_set_fingers(const maps_view_event_data_h event, int fingers);
76 int _maps_view_event_data_set_zoom_factor(const maps_view_event_data_h event, double zoom_factor);
78 int _maps_view_event_data_set_rotation_angle(const maps_view_event_data_h event, double rotation_angle);
80 int _maps_view_event_data_set_object(const maps_view_event_data_h event, const maps_view_object_h object);
83 /*----------------------------------------------------------------------------*/
85 int _maps_view_event_data_create(maps_view_event_data_h *event)
88 return MAPS_ERROR_INVALID_PARAMETER;
90 maps_view_event_data_s *e = g_slice_new0(maps_view_event_data_s);
92 MAPS_LOGE("OUT_OF_MEMORY(0x%08x)", MAPS_ERROR_OUT_OF_MEMORY);
93 return MAPS_ERROR_OUT_OF_MEMORY;
96 e->event_type = MAPS_VIEW_EVENT_GESTURE;
97 e->gesture_type = MAPS_VIEW_GESTURE_SCROLL;
98 e->action_type = MAPS_VIEW_ACTION_NONE;
100 *event = (maps_view_event_data_h) e;
101 return MAPS_ERROR_NONE;
104 EXPORT_API int maps_view_event_data_destroy(maps_view_event_data_h event)
106 if (!maps_condition_check_maps_feature())
107 return MAPS_ERROR_NOT_SUPPORTED;
109 return MAPS_ERROR_INVALID_PARAMETER;
111 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
113 maps_coordinates_destroy(e->center);
114 g_slice_free(maps_view_event_data_s, e);
115 return MAPS_ERROR_NONE;
118 EXPORT_API int maps_view_event_data_clone(const maps_view_event_data_h origin, maps_view_event_data_h *cloned)
120 if (!maps_condition_check_maps_feature())
121 return MAPS_ERROR_NOT_SUPPORTED;
122 if (!origin || !cloned)
123 return MAPS_ERROR_INVALID_PARAMETER;
125 int error = MAPS_ERROR_NONE;
127 error = _maps_view_event_data_create(cloned);
128 if (!(*cloned) || (error != MAPS_ERROR_NONE))
131 maps_view_event_data_s *e = (maps_view_event_data_s *) origin;
133 error = _maps_view_event_data_set_type(*cloned, e->event_type);
134 if (error != MAPS_ERROR_NONE)
137 error = _maps_view_event_data_set_gesture_type(*cloned, e->gesture_type);
138 error = _maps_view_event_data_set_action_type(*cloned, e->action_type);
139 error = _maps_view_event_data_set_center(*cloned, e->center);
140 error = _maps_view_event_data_set_delta(*cloned, e->delta_x, e->delta_y);
141 error = _maps_view_event_data_set_position(*cloned, e->x, e->y);
142 error = _maps_view_event_data_set_fingers(*cloned, e->fingers);
143 error = _maps_view_event_data_set_zoom_factor(*cloned, e->zoom_factor);
144 error = _maps_view_event_data_set_rotation_angle(*cloned, e->rotation_angle);
145 error = _maps_view_event_data_set_object(*cloned, e->object);
147 return MAPS_ERROR_NONE;
150 maps_view_event_data_destroy(*cloned);
155 /*----------------------------------------------------------------------------*/
157 int _maps_view_event_data_set_type(maps_view_event_data_h event, maps_view_event_type_e event_type)
160 return MAPS_ERROR_INVALID_PARAMETER;
161 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
162 e->event_type = event_type;
163 return MAPS_ERROR_NONE;
166 int _maps_view_event_data_set_center(maps_view_event_data_h event, maps_coordinates_h center)
168 if (!event || !center)
169 return MAPS_ERROR_INVALID_PARAMETER;
170 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
172 maps_coordinates_destroy(e->center);
173 return maps_coordinates_clone(center, &e->center);
176 int _maps_view_event_data_set_delta(maps_view_event_data_h event, int delta_x, int delta_y)
179 return MAPS_ERROR_INVALID_PARAMETER;
180 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
181 e->delta_x = delta_x;
182 e->delta_y = delta_y;
183 return MAPS_ERROR_NONE;
186 int _maps_view_event_data_set_position(maps_view_event_data_h event, int x, int y)
189 return MAPS_ERROR_INVALID_PARAMETER;
190 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
193 return MAPS_ERROR_NONE;
196 int _maps_view_event_data_set_coordinates(maps_view_event_data_h event, maps_coordinates_h coordinates)
198 if (!event || !coordinates)
199 return MAPS_ERROR_INVALID_PARAMETER;
200 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
202 maps_coordinates_destroy(e->coordinates);
203 return maps_coordinates_clone(coordinates, &e->coordinates);
206 int _maps_view_event_data_set_fingers(maps_view_event_data_h event, int fingers)
209 return MAPS_ERROR_INVALID_PARAMETER;
210 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
211 e->fingers = fingers;
212 return MAPS_ERROR_NONE;
215 int _maps_view_event_data_set_gesture_type(maps_view_event_data_h event, maps_view_gesture_e gesture_type)
218 return MAPS_ERROR_INVALID_PARAMETER;
219 if ((gesture_type < MAPS_VIEW_GESTURE_NONE) || (gesture_type > MAPS_VIEW_GESTURE_LONG_PRESS))
220 return MAPS_ERROR_INVALID_PARAMETER;
221 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
222 e->gesture_type = gesture_type;
223 return MAPS_ERROR_NONE;
226 int _maps_view_event_data_set_action_type(maps_view_event_data_h event, maps_view_action_e action_type)
229 return MAPS_ERROR_INVALID_PARAMETER;
230 if ((action_type < MAPS_VIEW_ACTION_NONE) || (action_type > MAPS_VIEW_ACTION_ROTATE))
231 return MAPS_ERROR_INVALID_PARAMETER;
232 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
233 e->action_type = action_type;
234 return MAPS_ERROR_NONE;
237 int _maps_view_event_data_set_zoom_factor(maps_view_event_data_h event, double zoom_factor)
240 return MAPS_ERROR_INVALID_PARAMETER;
241 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
242 e->zoom_factor = zoom_factor;
243 return MAPS_ERROR_NONE;
246 int _maps_view_event_data_set_rotation_angle(maps_view_event_data_h event, double rotation_angle)
249 return MAPS_ERROR_INVALID_PARAMETER;
250 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
251 e->rotation_angle = rotation_angle;
252 return MAPS_ERROR_NONE;
255 int _maps_view_event_data_set_object(maps_view_event_data_h event, maps_view_object_h object)
258 return MAPS_ERROR_INVALID_PARAMETER;
259 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
261 return MAPS_ERROR_NONE;
265 /*----------------------------------------------------------------------------*/
267 EXPORT_API int maps_view_event_data_get_type(const maps_view_event_data_h event, maps_view_event_type_e *event_type)
269 if (!maps_condition_check_maps_feature())
270 return MAPS_ERROR_NOT_SUPPORTED;
271 if (!event || !event_type)
272 return MAPS_ERROR_INVALID_PARAMETER;
273 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
274 *event_type = e->event_type;
275 return MAPS_ERROR_NONE;
278 EXPORT_API int maps_view_event_data_get_gesture_type(const maps_view_event_data_h event, maps_view_gesture_e *gesture_type)
280 if (!maps_condition_check_maps_feature())
281 return MAPS_ERROR_NOT_SUPPORTED;
282 if (!event || !gesture_type)
283 return MAPS_ERROR_INVALID_PARAMETER;
284 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
285 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_OBJECT))
286 return MAPS_ERROR_INVALID_PARAMETER;
287 *gesture_type = e->gesture_type;
288 return MAPS_ERROR_NONE;
291 EXPORT_API int maps_view_event_data_get_action_type(const maps_view_event_data_h event, maps_view_action_e *action_type)
293 if (!maps_condition_check_maps_feature())
294 return MAPS_ERROR_NOT_SUPPORTED;
295 if (!event || !action_type)
296 return MAPS_ERROR_INVALID_PARAMETER;
297 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
298 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
299 return MAPS_ERROR_INVALID_PARAMETER;
300 *action_type = e->action_type;
301 return MAPS_ERROR_NONE;
304 EXPORT_API int maps_view_event_data_get_center(const maps_view_event_data_h event, maps_coordinates_h *center)
306 if (!maps_condition_check_maps_feature())
307 return MAPS_ERROR_NOT_SUPPORTED;
308 if (!event || !center)
309 return MAPS_ERROR_INVALID_PARAMETER;
310 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
311 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
312 return MAPS_ERROR_INVALID_PARAMETER;
314 return MAPS_ERROR_NOT_FOUND;
315 return maps_coordinates_clone(e->center, center);
318 EXPORT_API int maps_view_event_data_get_delta(const maps_view_event_data_h event, int *delta_x, int *delta_y)
320 if (!maps_condition_check_maps_feature())
321 return MAPS_ERROR_NOT_SUPPORTED;
322 if (!event || !delta_x || !delta_y)
323 return MAPS_ERROR_INVALID_PARAMETER;
324 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
325 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
326 return MAPS_ERROR_INVALID_PARAMETER;
327 *delta_x = e->delta_x;
328 *delta_y = e->delta_y;
329 return MAPS_ERROR_NONE;
332 EXPORT_API int maps_view_event_data_get_position(const maps_view_event_data_h event, int *x, int* y)
334 if (!maps_condition_check_maps_feature())
335 return MAPS_ERROR_NOT_SUPPORTED;
336 if (!event || !x || !y)
337 return MAPS_ERROR_INVALID_PARAMETER;
338 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
339 if (e->event_type != MAPS_VIEW_EVENT_GESTURE && e->event_type != MAPS_VIEW_EVENT_OBJECT)
340 return MAPS_ERROR_INVALID_PARAMETER;
343 return MAPS_ERROR_NONE;
346 EXPORT_API int maps_view_event_data_get_coordinates(const maps_view_event_data_h event, maps_coordinates_h *coordinates)
348 if (!maps_condition_check_maps_feature())
349 return MAPS_ERROR_NOT_SUPPORTED;
350 if (!event || !coordinates)
351 return MAPS_ERROR_INVALID_PARAMETER;
352 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
353 if (e->event_type != MAPS_VIEW_EVENT_GESTURE)
354 return MAPS_ERROR_INVALID_OPERATION;
356 return MAPS_ERROR_NOT_FOUND;
357 return maps_coordinates_clone(e->coordinates, coordinates);
360 EXPORT_API int maps_view_event_data_get_fingers(const maps_view_event_data_h event, int *fingers)
362 if (!maps_condition_check_maps_feature())
363 return MAPS_ERROR_NOT_SUPPORTED;
364 if (!event || !fingers)
365 return MAPS_ERROR_INVALID_PARAMETER;
366 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
367 if (e->event_type != MAPS_VIEW_EVENT_GESTURE)
368 return MAPS_ERROR_INVALID_PARAMETER;
369 *fingers = e->fingers;
370 return MAPS_ERROR_NONE;
373 EXPORT_API int maps_view_event_data_get_zoom_factor(const maps_view_event_data_h event, double *zoom_factor)
375 if (!maps_condition_check_maps_feature())
376 return MAPS_ERROR_NOT_SUPPORTED;
377 if (!event || !zoom_factor)
378 return MAPS_ERROR_INVALID_PARAMETER;
379 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
380 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_ACTION))
381 return MAPS_ERROR_INVALID_PARAMETER;
382 *zoom_factor = e->zoom_factor;
383 return MAPS_ERROR_NONE;
386 EXPORT_API int maps_view_event_data_get_rotation_angle(const maps_view_event_data_h event, double *rotation_angle)
388 if (!maps_condition_check_maps_feature())
389 return MAPS_ERROR_NOT_SUPPORTED;
390 if (!event || !rotation_angle)
391 return MAPS_ERROR_INVALID_PARAMETER;
392 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
393 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_ACTION))
394 return MAPS_ERROR_INVALID_PARAMETER;
395 *rotation_angle = e->rotation_angle;
396 return MAPS_ERROR_NONE;
399 EXPORT_API int maps_view_event_data_get_object(const maps_view_event_data_h event, maps_view_object_h *object)
401 if (!maps_condition_check_maps_feature())
402 return MAPS_ERROR_NOT_SUPPORTED;
403 if (!event || !object)
404 return MAPS_ERROR_INVALID_PARAMETER;
405 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
406 if (e->event_type != MAPS_VIEW_EVENT_OBJECT)
407 return MAPS_ERROR_INVALID_PARAMETER;
409 return MAPS_ERROR_NONE;