/
Polyline.cs
executable file
·193 lines (176 loc) · 6.18 KB
/
Polyline.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using Color = ElmSharp.Color;
namespace Tizen.Maps
{
/// <summary>
/// The polyline map object.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public class Polyline : MapObject, IDisposable
{
internal Interop.PolylineHandle handle;
private List<Geocoordinates> _coordinateList;
/// <summary>
/// Creates polyline visual object.
/// </summary>
/// <since_tizen> 3 </since_tizen>
/// <param name="coordinates">List of geographical coordinates.</param>
/// <param name="color">Line color.</param>
/// <param name="width">The width of line [1 ~ 100] \(pixels).</param>
/// <exception cref="ArgumentException">Thrown when input values are invalid.</exception>
[Obsolete("Deprecated since API10. Might be removed in API12.")]
public Polyline(List<Geocoordinates> coordinates, Color color, int width) : base()
{
var err = Interop.ErrorCode.InvalidParameter;
if (coordinates == null || coordinates.Count() < 2)
{
err.ThrowIfFailed("given coordinates list should contain at least 2 coordinates");
}
_coordinateList = coordinates.ToList();
var geocoordinateList = new GeocoordinatesList(_coordinateList);
handle = new Interop.PolylineHandle(geocoordinateList.handle, color, width);
}
/// <summary>
/// Destroy the Polyline object.
/// </summary>
~Polyline()
{
Dispose(false);
}
/// <summary>
/// Adds or removes the clicked event handlers.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API10. Might be removed in API12.")]
public event EventHandler Clicked;
/// <summary>
/// Gets or sets the visibility for polyline.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public override bool IsVisible
{
get { return handle.IsVisible; }
set { handle.IsVisible = value; }
}
/// <summary>
/// Gets or sets a list of geographical coordinates for polyline vertices.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public IEnumerable<Geocoordinates> Coordinates
{
get
{
return _coordinateList;
}
set
{
var coordinates = value.ToList();
var err = Interop.ErrorCode.InvalidParameter;
if (coordinates == null || coordinates.Count() < 2)
{
err.ThrowIfFailed("given coordinates list should contain at least 2 coordinates");
}
var geocoordinateList = new GeocoordinatesList(coordinates, false);
if (handle.SetPolyline(geocoordinateList.handle).IsSuccess())
{
_coordinateList = coordinates;
}
}
}
/// <summary>
/// Gets or sets the line color.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public Color LineColor
{
get
{
return handle.LineColor;
}
set
{
handle.LineColor = value;
}
}
/// <summary>
/// Gets or sets the line width from 1 to 100 pixels.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public int Width
{
get
{
return handle.LineWidth;
}
set
{
handle.LineWidth = value;
}
}
internal override void HandleClickedEvent()
{
Clicked?.Invoke(this, EventArgs.Empty);
}
internal override void InvalidateMapObject()
{
handle = null;
}
internal override Interop.ViewObjectHandle GetHandle()
{
return handle;
}
#region IDisposable Support
private bool _disposedValue = false;
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
/// <param name="disposing">If true, managed and unmanaged resources can be disposed, otherwise only unmanaged resources can be disposed.</param>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
protected virtual void Dispose(bool disposing)
{
if (!_disposedValue)
{
if (disposing)
{
_coordinateList?.Clear();
}
handle?.Dispose();
_disposedValue = true;
}
}
/// <summary>
/// Releases all the resources used by this object.
/// </summary>
/// <since_tizen> 3 </since_tizen>
[Obsolete("Deprecated since API11. Might be removed in API13.")]
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
#endregion
}
}