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);
93 MAPS_LOGE("OUT_OF_MEMORY(0x%08x)", MAPS_ERROR_OUT_OF_MEMORY);
94 return MAPS_ERROR_OUT_OF_MEMORY;
98 e->event_type = MAPS_VIEW_EVENT_GESTURE;
99 e->gesture_type = MAPS_VIEW_GESTURE_SCROLL;
100 e->action_type = MAPS_VIEW_ACTION_NONE;
102 *event = (maps_view_event_data_h) e;
103 return MAPS_ERROR_NONE;
106 EXPORT_API int maps_view_event_data_destroy(maps_view_event_data_h event)
108 if (!maps_condition_check_maps_feature())
109 return MAPS_ERROR_NOT_SUPPORTED;
111 return MAPS_ERROR_INVALID_PARAMETER;
113 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
115 maps_coordinates_destroy(e->center);
116 g_slice_free(maps_view_event_data_s, e);
117 return MAPS_ERROR_NONE;
121 EXPORT_API int maps_view_event_data_clone(const maps_view_event_data_h origin, maps_view_event_data_h *cloned)
123 if (!maps_condition_check_maps_feature())
124 return MAPS_ERROR_NOT_SUPPORTED;
125 if (!origin || !cloned)
126 return MAPS_ERROR_INVALID_PARAMETER;
128 int error = MAPS_ERROR_NONE;
130 error = _maps_view_event_data_create(cloned);
131 if (!(*cloned) || (error != MAPS_ERROR_NONE))
134 maps_view_event_data_s *e = (maps_view_event_data_s *) origin;
136 error = _maps_view_event_data_set_type(*cloned, e->event_type);
137 if (error != MAPS_ERROR_NONE)
140 error = _maps_view_event_data_set_gesture_type(*cloned, e->gesture_type);
141 error = _maps_view_event_data_set_action_type(*cloned, e->action_type);
142 error = _maps_view_event_data_set_center(*cloned, e->center);
143 error = _maps_view_event_data_set_delta(*cloned, e->delta_x, e->delta_y);
144 error = _maps_view_event_data_set_position(*cloned, e->x, e->y);
145 error = _maps_view_event_data_set_fingers(*cloned, e->fingers);
146 error = _maps_view_event_data_set_zoom_factor(*cloned, e->zoom_factor);
147 error = _maps_view_event_data_set_rotation_angle(*cloned, e->rotation_angle);
148 error = _maps_view_event_data_set_object(*cloned, e->object);
150 return MAPS_ERROR_NONE;
153 maps_view_event_data_destroy(*cloned);
158 /*----------------------------------------------------------------------------*/
160 int _maps_view_event_data_set_type(maps_view_event_data_h event, maps_view_event_type_e event_type)
163 return MAPS_ERROR_INVALID_PARAMETER;
164 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
165 e->event_type = event_type;
166 return MAPS_ERROR_NONE;
169 int _maps_view_event_data_set_center(maps_view_event_data_h event, maps_coordinates_h center)
171 if (!event || !center)
172 return MAPS_ERROR_INVALID_PARAMETER;
173 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
175 maps_coordinates_destroy(e->center); //LCOV_EXCL_LINE
176 return maps_coordinates_clone(center, &e->center);
179 int _maps_view_event_data_set_delta(maps_view_event_data_h event, int delta_x, int delta_y)
182 return MAPS_ERROR_INVALID_PARAMETER;
183 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
184 e->delta_x = delta_x;
185 e->delta_y = delta_y;
186 return MAPS_ERROR_NONE;
189 int _maps_view_event_data_set_position(maps_view_event_data_h event, int x, int y)
192 return MAPS_ERROR_INVALID_PARAMETER;
193 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
196 return MAPS_ERROR_NONE;
199 int _maps_view_event_data_set_coordinates(maps_view_event_data_h event, maps_coordinates_h coordinates)
201 if (!event || !coordinates)
202 return MAPS_ERROR_INVALID_PARAMETER;
203 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
205 maps_coordinates_destroy(e->coordinates);
206 return maps_coordinates_clone(coordinates, &e->coordinates);
209 int _maps_view_event_data_set_fingers(maps_view_event_data_h event, int fingers)
212 return MAPS_ERROR_INVALID_PARAMETER;
213 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
214 e->fingers = fingers;
215 return MAPS_ERROR_NONE;
218 int _maps_view_event_data_set_gesture_type(maps_view_event_data_h event, maps_view_gesture_e gesture_type)
221 return MAPS_ERROR_INVALID_PARAMETER;
222 if ((gesture_type < MAPS_VIEW_GESTURE_NONE) || (gesture_type > MAPS_VIEW_GESTURE_LONG_PRESS))
223 return MAPS_ERROR_INVALID_PARAMETER;
224 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
225 e->gesture_type = gesture_type;
226 return MAPS_ERROR_NONE;
229 int _maps_view_event_data_set_action_type(maps_view_event_data_h event, maps_view_action_e action_type)
232 return MAPS_ERROR_INVALID_PARAMETER;
233 if ((action_type < MAPS_VIEW_ACTION_NONE) || (action_type > MAPS_VIEW_ACTION_ROTATE))
234 return MAPS_ERROR_INVALID_PARAMETER;
235 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
236 e->action_type = action_type;
237 return MAPS_ERROR_NONE;
240 int _maps_view_event_data_set_zoom_factor(maps_view_event_data_h event, double zoom_factor)
243 return MAPS_ERROR_INVALID_PARAMETER;
244 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
245 e->zoom_factor = zoom_factor;
246 return MAPS_ERROR_NONE;
249 int _maps_view_event_data_set_rotation_angle(maps_view_event_data_h event, double rotation_angle)
252 return MAPS_ERROR_INVALID_PARAMETER;
253 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
254 e->rotation_angle = rotation_angle;
255 return MAPS_ERROR_NONE;
258 int _maps_view_event_data_set_object(maps_view_event_data_h event, maps_view_object_h object)
261 return MAPS_ERROR_INVALID_PARAMETER;
262 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
264 return MAPS_ERROR_NONE;
268 /*----------------------------------------------------------------------------*/
270 EXPORT_API int maps_view_event_data_get_type(const maps_view_event_data_h event, maps_view_event_type_e *event_type)
272 if (!maps_condition_check_maps_feature())
273 return MAPS_ERROR_NOT_SUPPORTED;
274 if (!event || !event_type)
275 return MAPS_ERROR_INVALID_PARAMETER;
276 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
277 *event_type = e->event_type;
278 return MAPS_ERROR_NONE;
281 EXPORT_API int maps_view_event_data_get_gesture_type(const maps_view_event_data_h event, maps_view_gesture_e *gesture_type)
283 if (!maps_condition_check_maps_feature())
284 return MAPS_ERROR_NOT_SUPPORTED;
285 if (!event || !gesture_type)
286 return MAPS_ERROR_INVALID_PARAMETER;
287 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
288 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_OBJECT))
289 return MAPS_ERROR_INVALID_PARAMETER;
290 *gesture_type = e->gesture_type;
291 return MAPS_ERROR_NONE;
294 EXPORT_API int maps_view_event_data_get_action_type(const maps_view_event_data_h event, maps_view_action_e *action_type)
296 if (!maps_condition_check_maps_feature())
297 return MAPS_ERROR_NOT_SUPPORTED;
298 if (!event || !action_type)
299 return MAPS_ERROR_INVALID_PARAMETER;
300 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
301 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
302 return MAPS_ERROR_INVALID_PARAMETER;
303 *action_type = e->action_type;
304 return MAPS_ERROR_NONE;
307 EXPORT_API int maps_view_event_data_get_center(const maps_view_event_data_h event, maps_coordinates_h *center)
309 if (!maps_condition_check_maps_feature())
310 return MAPS_ERROR_NOT_SUPPORTED;
311 if (!event || !center)
312 return MAPS_ERROR_INVALID_PARAMETER;
313 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
314 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
315 return MAPS_ERROR_INVALID_PARAMETER;
317 return MAPS_ERROR_NOT_FOUND;
318 return maps_coordinates_clone(e->center, center);
321 EXPORT_API int maps_view_event_data_get_delta(const maps_view_event_data_h event, int *delta_x, int *delta_y)
323 if (!maps_condition_check_maps_feature())
324 return MAPS_ERROR_NOT_SUPPORTED;
325 if (!event || !delta_x || !delta_y)
326 return MAPS_ERROR_INVALID_PARAMETER;
327 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
328 if (e->event_type != MAPS_VIEW_EVENT_ACTION)
329 return MAPS_ERROR_INVALID_PARAMETER;
330 *delta_x = e->delta_x;
331 *delta_y = e->delta_y;
332 return MAPS_ERROR_NONE;
335 EXPORT_API int maps_view_event_data_get_position(const maps_view_event_data_h event, int *x, int* y)
337 if (!maps_condition_check_maps_feature())
338 return MAPS_ERROR_NOT_SUPPORTED;
339 if (!event || !x || !y)
340 return MAPS_ERROR_INVALID_PARAMETER;
341 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
342 if (e->event_type != MAPS_VIEW_EVENT_GESTURE && e->event_type != MAPS_VIEW_EVENT_OBJECT)
343 return MAPS_ERROR_INVALID_PARAMETER;
346 return MAPS_ERROR_NONE;
349 EXPORT_API int maps_view_event_data_get_coordinates(const maps_view_event_data_h event, maps_coordinates_h *coordinates)
351 if (!maps_condition_check_maps_feature())
352 return MAPS_ERROR_NOT_SUPPORTED;
353 if (!event || !coordinates)
354 return MAPS_ERROR_INVALID_PARAMETER;
355 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
356 if (e->event_type != MAPS_VIEW_EVENT_GESTURE)
357 return MAPS_ERROR_INVALID_OPERATION;
359 return MAPS_ERROR_NOT_FOUND;
360 return maps_coordinates_clone(e->coordinates, coordinates);
363 EXPORT_API int maps_view_event_data_get_fingers(const maps_view_event_data_h event, int *fingers)
365 if (!maps_condition_check_maps_feature())
366 return MAPS_ERROR_NOT_SUPPORTED;
367 if (!event || !fingers)
368 return MAPS_ERROR_INVALID_PARAMETER;
369 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
370 if (e->event_type != MAPS_VIEW_EVENT_GESTURE)
371 return MAPS_ERROR_INVALID_PARAMETER;
372 *fingers = e->fingers;
373 return MAPS_ERROR_NONE;
376 EXPORT_API int maps_view_event_data_get_zoom_factor(const maps_view_event_data_h event, double *zoom_factor)
378 if (!maps_condition_check_maps_feature())
379 return MAPS_ERROR_NOT_SUPPORTED;
380 if (!event || !zoom_factor)
381 return MAPS_ERROR_INVALID_PARAMETER;
382 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
383 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_ACTION))
384 return MAPS_ERROR_INVALID_PARAMETER;
385 *zoom_factor = e->zoom_factor;
386 return MAPS_ERROR_NONE;
389 EXPORT_API int maps_view_event_data_get_rotation_angle(const maps_view_event_data_h event, double *rotation_angle)
391 if (!maps_condition_check_maps_feature())
392 return MAPS_ERROR_NOT_SUPPORTED;
393 if (!event || !rotation_angle)
394 return MAPS_ERROR_INVALID_PARAMETER;
395 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
396 if ((e->event_type != MAPS_VIEW_EVENT_GESTURE) && (e->event_type != MAPS_VIEW_EVENT_ACTION))
397 return MAPS_ERROR_INVALID_PARAMETER;
398 *rotation_angle = e->rotation_angle;
399 return MAPS_ERROR_NONE;
402 EXPORT_API int maps_view_event_data_get_object(const maps_view_event_data_h event, maps_view_object_h *object)
404 if (!maps_condition_check_maps_feature())
405 return MAPS_ERROR_NOT_SUPPORTED;
406 if (!event || !object)
407 return MAPS_ERROR_INVALID_PARAMETER;
408 maps_view_event_data_s *e = (maps_view_event_data_s *) event;
409 if (e->event_type != MAPS_VIEW_EVENT_OBJECT)
410 return MAPS_ERROR_INVALID_PARAMETER;
412 return MAPS_ERROR_NONE;