2 * Copyright (c) 2016 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 using System.Runtime.InteropServices;
21 internal static partial class Interop
23 internal enum ViewAction
25 None, // MAPS_VIEW_ACTION_NONE
26 Scroll, // MAPS_VIEW_ACTION_SCROLL
27 Zoom, // MAPS_VIEW_ACTION_ZOOM
28 ZoomIn, // MAPS_VIEW_ACTION_ZOOM_IN
29 ZoomOut, // MAPS_VIEW_ACTION_ZOOM_OUT
30 ZoomAndScroll, // MAPS_VIEW_ACTION_ZOOM_AND_SCROLL
31 Rotate, // MAPS_VIEW_ACTION_ROTATE
34 internal enum ViewGesture
36 None, // MAPS_VIEW_GESTURE_NONE
37 Scroll, // MAPS_VIEW_GESTURE_SCROLL
38 Zoom, // MAPS_VIEW_GESTURE_ZOOM
39 Click, // MAPS_VIEW_GESTURE_TAP
40 DoubleClick, // MAPS_VIEW_GESTURE_DOUBLE_TAP
41 TwoFingerClick, // MAPS_VIEW_GESTURE_2_FINGER_TAP
42 Rotation, // MAPS_VIEW_GESTURE_ROTATE
43 LongPress, // MAPS_VIEW_GESTURE_LONG_PRESS
46 internal enum ViewEventType
48 Gesture, // MAPS_VIEW_EVENT_GESTURE
49 Action, // MAPS_VIEW_EVENT_ACTION
50 Object, // MAPS_VIEW_EVENT_OBJECT
51 Ready, // MAPS_VIEW_EVENT_READY
54 internal static partial class ViewEventData
56 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_clone")]
57 internal static extern ErrorCode Clone(IntPtr /* maps_view_event_data_h */ origin, out IntPtr /* maps_view_event_data_h */ cloned);
59 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_center")]
60 internal static extern ErrorCode GetCenter(IntPtr /* maps_view_event_data_h */ viewEvent, out IntPtr /* maps_coordinates_h */ center);
62 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_delta")]
63 internal static extern ErrorCode GetDelta(IntPtr /* maps_view_event_data_h */ viewEvent, out int deltaX, out int deltaY);
66 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_type")]
67 internal static extern ErrorCode GetType(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out ViewEventType /* maps_view_event_type_e */ eventType);
69 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_gesture_type")]
70 internal static extern ErrorCode GetGestureType(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out ViewGesture /* maps_view_gesture_e */ gestureType);
72 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_action_type")]
73 internal static extern ErrorCode GetActionType(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out ViewAction /* maps_view_action_e */ actionType);
75 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_position")]
76 internal static extern ErrorCode GetPosition(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out int x, out int y);
78 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_fingers")]
79 internal static extern ErrorCode GetFingers(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out int fingers);
81 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_object")]
82 internal static extern ErrorCode GetObject(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out IntPtr /* maps_view_object_h */ viewEventDataObject);
84 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_coordinates")]
85 internal static extern ErrorCode GetCoordinates(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out IntPtr /* maps_coordinates_h */ coordinates);
87 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_zoom_factor")]
88 internal static extern ErrorCode GetZoomFactor(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out double zoomFactor);
90 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_get_rotation_angle")]
91 internal static extern ErrorCode GetRotationAngle(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out double rotationAngle);
93 internal static ErrorCode GetPosition(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out Point position)
95 position = new Point();
96 return GetPosition(viewEvent, out position.X, out position.Y);
99 internal class EventDataHandle : SafeMapsHandle
101 [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_destroy")]
102 internal static extern ErrorCode Destroy(IntPtr /* maps_view_event_data_h */ viewEvent);
104 internal ViewEventType Type
106 get { return NativeGet<ViewEventType>(this.GetType); }
109 // event_data will be released automatically after this callback is terminated.
110 internal EventDataHandle(IntPtr handle) : base(handle, false, Destroy)
115 internal class ObjectEventDataHandle : EventDataHandle
117 internal ViewGesture GestureType
119 get { return NativeGet<ViewGesture>(this.GetGestureType); }
122 internal Point Position
124 get { return NativeGet<Point>(this.GetPosition); }
127 internal int FingerCount
129 get { return NativeGet<int>(this.GetFingers); }
132 internal ViewObjectHandle ViewObject
134 get { return NativeGet(this.GetObject, ViewObjectHandle.Create, false ); }
137 // event_data will be released automatically after this callback is terminated.
138 internal ObjectEventDataHandle(IntPtr handle) : base(handle)
143 internal class GestureEventDataHandle : EventDataHandle
145 internal ViewGesture GestureType
147 get { return NativeGet<ViewGesture>(this.GetGestureType); }
150 internal Point Position
152 get { return NativeGet<Point>(this.GetPosition); }
155 internal int FingerCount
157 get { return NativeGet<int>(this.GetFingers); }
160 internal double ZoomFactor
162 get { return NativeGet<double>(this.GetZoomFactor); }
165 internal double RotationAngle
167 get { return NativeGet<double>(this.GetRotationAngle); }
170 internal CoordinatesHandle Coordinates
172 get { return NativeGet(this.GetCoordinates, CoordinatesHandle.Create); }
175 internal GestureEventDataHandle(IntPtr handle) : base(handle)