Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Maps / Interop / Interop.View.Event.Data.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using ElmSharp;
20
21 internal static partial class Interop
22 {
23     internal enum ViewAction
24     {
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
32     }
33
34     internal enum ViewGesture
35     {
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
44     }
45
46     internal enum ViewEventType
47     {
48         Gesture, // MAPS_VIEW_EVENT_GESTURE
49         Action, // MAPS_VIEW_EVENT_ACTION
50         Object, // MAPS_VIEW_EVENT_OBJECT
51         Ready, // MAPS_VIEW_EVENT_READY
52     }
53
54     internal static partial class ViewEventData
55     {
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);
58
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);
61
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);
64     }
65
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);
68
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);
71
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);
74
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);
77
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);
80
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);
83
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);
86
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);
89
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);
92
93     internal static ErrorCode GetPosition(this EventDataHandle /* maps_view_event_data_h */ viewEvent, out Point position)
94     {
95         position = new Point();
96         return GetPosition(viewEvent, out position.X, out position.Y);
97     }
98
99     internal class EventDataHandle : SafeMapsHandle
100     {
101         [DllImport(Libraries.MapService, EntryPoint = "maps_view_event_data_destroy")]
102         internal static extern ErrorCode Destroy(IntPtr /* maps_view_event_data_h */ viewEvent);
103
104         internal ViewEventType Type
105         {
106             get { return NativeGet<ViewEventType>(this.GetType); }
107         }
108
109         // event_data will be released automatically after this callback is terminated.
110         internal EventDataHandle(IntPtr handle) : base(handle, false, Destroy)
111         {
112         }
113     }
114
115     internal class ObjectEventDataHandle : EventDataHandle
116     {
117         internal ViewGesture GestureType
118         {
119             get { return NativeGet<ViewGesture>(this.GetGestureType); }
120         }
121
122         internal Point Position
123         {
124             get { return NativeGet<Point>(this.GetPosition); }
125         }
126
127         internal int FingerCount
128         {
129             get { return NativeGet<int>(this.GetFingers); }
130         }
131
132         internal ViewObjectHandle ViewObject
133         {
134             get { return NativeGet(this.GetObject, ViewObjectHandle.Create, false ); }
135         }
136
137         // event_data will be released automatically after this callback is terminated.
138         internal ObjectEventDataHandle(IntPtr handle) : base(handle)
139         {
140         }
141     }
142
143     internal class GestureEventDataHandle : EventDataHandle
144     {
145         internal ViewGesture GestureType
146         {
147             get { return NativeGet<ViewGesture>(this.GetGestureType); }
148         }
149
150         internal Point Position
151         {
152             get { return NativeGet<Point>(this.GetPosition); }
153         }
154
155         internal int FingerCount
156         {
157             get { return NativeGet<int>(this.GetFingers); }
158         }
159
160         internal double ZoomFactor
161         {
162             get { return NativeGet<double>(this.GetZoomFactor); }
163         }
164
165         internal double RotationAngle
166         {
167             get { return NativeGet<double>(this.GetRotationAngle); }
168         }
169
170         internal CoordinatesHandle Coordinates
171         {
172             get { return NativeGet(this.GetCoordinates, CoordinatesHandle.Create); }
173         }
174
175         internal GestureEventDataHandle(IntPtr handle) : base(handle)
176         {
177         }
178     }
179 }