Remove unnecessary warning messages in logs
[platform/core/csapi/tizenfx.git] / src / Tizen.Maps / Tizen.Maps / Overlay.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 EvasObject = ElmSharp.EvasObject;
19
20 namespace Tizen.Maps
21 {
22     /// <summary>
23     /// Overlay map object
24     /// </summary>
25     public class Overlay : MapObject
26     {
27         private EvasObject _containedObject;
28
29         /// <summary>
30         /// Creates normal overlay map object
31         /// </summary>
32         /// <param name="coordinates"></param>
33         /// <param name="objectToContain"></param>
34         public Overlay(Geocoordinates coordinates, EvasObject objectToContain) : this(coordinates, objectToContain, Interop.ViewOverlayType.Normal)
35         {
36         }
37
38         internal Overlay(Interop.ViewObjectHandle nativeHandle) : base(nativeHandle)
39         {
40         }
41
42         internal Overlay(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type) : base(CreateNativeHandle(coordinates, objectToContain, type))
43         {
44             var err = Interop.ErrorCode.InvalidParameter;
45             if (coordinates == null || objectToContain == null)
46             {
47                 err.ThrowIfFailed("given coordinates or parent evas object is null");
48             }
49             _containedObject = objectToContain;
50         }
51
52         /// <summary>
53         /// Geographical coordinates for overlay
54         /// </summary>
55         public Geocoordinates Coordinates
56         {
57             get
58             {
59                 IntPtr nativeHandle;
60                 Interop.ViewObject.OverlayGetCoordinates(handle, out nativeHandle);
61                 return new Geocoordinates(nativeHandle);
62             }
63             set
64             {
65                 // Overlay takes ownership of the native handle.
66                 IntPtr nativeHandle;
67                 var err = Interop.Coordinates.Clone(value.handle, out nativeHandle);
68                 err.WarnIfFailed("Failed to clone native handle for coordinates");
69
70                 Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
71                 err = Interop.ViewObject.OverlaySetCoordinates(handle, clonedHandle);
72                 if (err.WarnIfFailed("Failed to set coordinates to overlay"))
73                 {
74                     clonedHandle.ReleaseOwnership();
75                 }
76             }
77         }
78
79         /// <summary>
80         /// Minimum zoom level for overlay
81         /// </summary>
82         public int MinimumZoomLevel
83         {
84             get
85             {
86                 int value;
87                 Interop.ViewObject.OverlayGetMinZoomLevel(handle, out value);
88                 return value;
89             }
90             set
91             {
92                 Interop.ViewObject.OverlaySetMinZoomLevel(handle, value);
93             }
94         }
95
96         /// <summary>
97         /// Maximum zoom lever for overlay
98         /// </summary>
99         public int MaximumZoomLevel
100         {
101             get
102             {
103                 int value;
104                 Interop.ViewObject.OverlayGetMaxZoomLevel(handle, out value);
105                 return value;
106             }
107             set
108             {
109                 Interop.ViewObject.OverlaySetMaxZoomLevel(handle, value);
110             }
111         }
112
113         private static Interop.ViewObjectHandle CreateNativeHandle(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type)
114         {
115             if (coordinates == null || objectToContain == null) return new Interop.ViewObjectHandle(IntPtr.Zero);
116
117             IntPtr nativeHandle;
118             var err = Interop.Coordinates.Clone(coordinates.handle, out nativeHandle);
119             err.ThrowIfFailed("Failed to clone native handle for coordinates");
120
121             Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
122             err = Interop.ViewObject.CreateOverlay(clonedHandle, objectToContain, type, out nativeHandle);
123             err.ThrowIfFailed("Failed to create native handle for Overlay");
124
125             clonedHandle.ReleaseOwnership();
126             return new Interop.ViewObjectHandle(nativeHandle);
127         }
128     }
129
130     /// <summary>
131     /// Bubble overlay map object
132     /// </summary>
133     public class BubbleOverlay : Overlay
134     {
135         public BubbleOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Bubble)
136         {
137         }
138     }
139
140     /// <summary>
141     /// Box Overlay map object
142     /// </summary>
143     public class BoxOverlay : Overlay
144     {
145         /// <summary>
146         /// Creates Box overlay
147         /// </summary>
148         public BoxOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Box)
149         {
150         }
151     }
152 }