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 EvasObject = ElmSharp.EvasObject;
23 /// Overlay map object
25 public class Overlay : MapObject
27 private EvasObject _containedObject;
30 /// Creates normal overlay map object
32 /// <param name="coordinates"></param>
33 /// <param name="objectToContain"></param>
34 public Overlay(Geocoordinates coordinates, EvasObject objectToContain) : this(coordinates, objectToContain, Interop.ViewOverlayType.Normal)
38 internal Overlay(Interop.ViewObjectHandle nativeHandle) : base(nativeHandle)
42 internal Overlay(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type) : base(CreateNativeHandle(coordinates, objectToContain, type))
44 var err = Interop.ErrorCode.InvalidParameter;
45 if (coordinates == null || objectToContain == null)
47 err.ThrowIfFailed("given coordinates or parent evas object is null");
50 _containedObject = objectToContain;
54 /// Geographical coordinates for overlay
56 public Geocoordinates Coordinates
61 Interop.ViewObject.OverlayGetCoordinates(handle, out nativeHandle);
62 return new Geocoordinates(nativeHandle);
66 // Overlay takes ownership of the native handle.
68 var err = Interop.Coordinates.Clone(value.handle, out nativeHandle);
69 err.WarnIfFailed("Failed to clone native handle for coordinates");
71 Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
72 err = Interop.ViewObject.OverlaySetCoordinates(handle, clonedHandle);
73 if (err.WarnIfFailed("Failed to set coordinates to overlay"))
75 clonedHandle.ReleaseOwnership();
81 /// Minimum zoom level for overlay
83 public int MinimumZoomLevel
88 Interop.ViewObject.OverlayGetMinZoomLevel(handle, out value);
93 Interop.ViewObject.OverlaySetMinZoomLevel(handle, value);
98 /// Maximum zoom lever for overlay
100 public int MaximumZoomLevel
105 Interop.ViewObject.OverlayGetMaxZoomLevel(handle, out value);
110 Interop.ViewObject.OverlaySetMaxZoomLevel(handle, value);
114 private static Interop.ViewObjectHandle CreateNativeHandle(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type)
116 if (coordinates == null || objectToContain == null) return new Interop.ViewObjectHandle(IntPtr.Zero);
119 var err = Interop.Coordinates.Clone(coordinates.handle, out nativeHandle);
120 err.ThrowIfFailed("Failed to clone native handle for coordinates");
122 Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
123 err = Interop.ViewObject.CreateOverlay(clonedHandle, objectToContain, type, out nativeHandle);
124 err.ThrowIfFailed("Failed to create native handle for Overlay");
126 clonedHandle.ReleaseOwnership();
127 return new Interop.ViewObjectHandle(nativeHandle);
132 /// Bubble overlay map object
134 public class BubbleOverlay : Overlay
136 public BubbleOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Bubble)
142 /// Box Overlay map object
144 public class BoxOverlay : Overlay
147 /// Creates Box overlay
149 public BoxOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Box)