forked from SharpMap/SharpMap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExtenders.cs
More file actions
131 lines (110 loc) · 4.82 KB
/
Extenders.cs
File metadata and controls
131 lines (110 loc) · 4.82 KB
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
// This file is part of SharpMap.
// SharpMap is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// SharpMap is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public License
// along with SharpMap; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Reactive.Linq;
using GeoAPI.Geometries;
using NUnit.Framework;
using SharpMap;
using SharpMap.Layers;
namespace UnitTests
{
public static class Extenders
{
#region MapNewTileAvailableEventArgs class
public class MapNewTileAvailableEventArgs : EventArgs
{
public MapNewTileAvailableEventArgs(TileLayer sender, Envelope bbox, Bitmap bm, int sourceWidth,
int sourceHeight, ImageAttributes imageAttributes)
{
Sender = sender;
BoundingBox = bbox;
Bitmap = bm;
SourceWidth = sourceWidth;
SourceHeight = sourceHeight;
ImageAttributes = imageAttributes;
}
public TileLayer Sender { get; private set; }
public Envelope BoundingBox { get; private set; }
public Bitmap Bitmap { get; private set; }
public int SourceWidth { get; private set; }
public int SourceHeight { get; private set; }
public ImageAttributes ImageAttributes { get; private set; }
}
#endregion
#region DownloadProgressEventArgs class
public class DownloadProgressEventArgs : EventArgs
{
public DownloadProgressEventArgs(int tilesRemaining)
{
TilesRemaining = tilesRemaining;
}
public int TilesRemaining { get; private set; }
}
#endregion
#region Map extenders
public static LayerCollection GetCollection(this Map map, LayerCollectionType collectionType)
{
switch (collectionType)
{
case LayerCollectionType.Background:
return map.BackgroundLayer;
case LayerCollectionType.Static:
return map.Layers;
case LayerCollectionType.Variable:
return map.VariableLayers;
default:
throw new Exception();
}
}
public static IObservable<MapNewTileAvailableEventArgs> GetMapNewTileAvailableAsObservable(this Map map)
{
var listener = new EventListener(map, "MapNewTileAvaliable");
return listener.SavedArgs.ToObservable()
.Select(dict => new MapNewTileAvailableEventArgs(
(TileLayer) dict["sender"],
(Envelope) dict["bbox"],
(Bitmap) dict["bm"],
(int) dict["sourceWidth"],
(int) dict["sourceHeight"],
(ImageAttributes) dict["imageAttributes"]));
}
#endregion
public static IObservable<MapNewTileAvailableEventArgs> GetMapNewTileAvailableAsObservable(
this ITileAsyncLayer layer)
{
var listener = new EventListener(layer, "MapNewTileAvaliable");
return listener.SavedArgs.ToObservable()
.Select(dict => new MapNewTileAvailableEventArgs(
(TileLayer)dict["sender"],
(Envelope)dict["bbox"],
(Bitmap)dict["bm"],
(int)dict["sourceWidth"],
(int)dict["sourceHeight"],
(ImageAttributes)dict["imageAttributes"]));
}
public static IObservable<DownloadProgressEventArgs> GetDownloadProgressAsObservable(this ITileAsyncLayer layer)
{
var listener = new EventListener(layer, "DownloadProgressChanged");
return listener.SavedArgs.ToObservable()
.Select(dict => new DownloadProgressEventArgs((int)dict["tilesRemaining"]));
}
public static string GetDescription(this TestContext.TestAdapter adapter)
{
return (string)adapter.Properties["_DESCRIPTION"].FirstOrDefault();
}
}
}