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;
22 public class Overlay : MapObject
24 private EvasObject _containedObject;
26 public Overlay(Geocoordinates coordinates, EvasObject objectToContain) : this(coordinates, objectToContain, Interop.ViewOverlayType.Normal)
30 internal Overlay(Interop.ViewObjectHandle nativeHandle) : base(nativeHandle)
34 internal Overlay(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type) : base(CreateNativeHandle(coordinates, objectToContain, type))
36 var err = Interop.ErrorCode.InvalidParameter;
37 if (coordinates == null || objectToContain == null)
39 err.ThrowIfFailed("given coordinates or parent evas object is null");
42 _containedObject = objectToContain;
45 public Geocoordinates Coordinates
50 Interop.ViewObject.OverlayGetCoordinates(handle, out nativeHandle);
51 return new Geocoordinates(nativeHandle);
55 // Overlay takes ownership of the native handle.
57 var err = Interop.Coordinates.Clone(value.handle, out nativeHandle);
58 err.WarnIfFailed("Failed to clone native handle for coordinates");
60 Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
61 err = Interop.ViewObject.OverlaySetCoordinates(handle, clonedHandle);
62 if (err.WarnIfFailed("Failed to set coordinates to overlay"))
64 clonedHandle.ReleaseOwnership();
69 public int MinimumZoomLevel
74 Interop.ViewObject.OverlayGetMinZoomLevel(handle, out value);
79 Interop.ViewObject.OverlaySetMinZoomLevel(handle, value);
83 public int MaximumZoomLevel
88 Interop.ViewObject.OverlayGetMaxZoomLevel(handle, out value);
93 Interop.ViewObject.OverlaySetMaxZoomLevel(handle, value);
97 private static Interop.ViewObjectHandle CreateNativeHandle(Geocoordinates coordinates, EvasObject objectToContain, Interop.ViewOverlayType type)
99 if (coordinates == null || objectToContain == null) return new Interop.ViewObjectHandle(IntPtr.Zero);
102 var err = Interop.Coordinates.Clone(coordinates.handle, out nativeHandle);
103 err.ThrowIfFailed("Failed to clone native handle for coordinates");
105 Interop.CoordinatesHandle clonedHandle = new Interop.CoordinatesHandle(nativeHandle);
106 err = Interop.ViewObject.CreateOverlay(clonedHandle, objectToContain, type, out nativeHandle);
107 err.ThrowIfFailed("Failed to create native handle for Overlay");
109 clonedHandle.ReleaseOwnership();
110 return new Interop.ViewObjectHandle(nativeHandle);
114 public class BubbleOverlay : Overlay
116 public BubbleOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Bubble)
121 public class BoxOverlay : Overlay
123 public BoxOverlay(Geocoordinates coordinates, EvasObject objectToContain) : base(coordinates, objectToContain, Interop.ViewOverlayType.Box)