using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using Core.Common.Base.Geometry; using Core.Components.Gis.Data; using Core.Components.Gis.Features; using Core.Components.Gis.Geometries; using Core.Components.Gis.Style; using Ringtoets.Common.Data; using Ringtoets.HydraRing.Data; using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; namespace Ringtoets.Integration.Forms { /// /// This factory is used to create with default styling based on differnt /// types of data. /// public static class MapDataFactory { public static MapData Create(ReferenceLine referenceLine) { if (referenceLine == null) { throw new ArgumentNullException(); } var features = GetMapFeature(referenceLine.Points); return new MapLineData(features, RingtoetsCommonDataResources.ReferenceLine_DisplayName) { Style = new LineStyle(Color.Red, 3, DashStyle.Solid) }; } public static MapData Create(HydraulicBoundaryDatabase hydraulicBoundaryDatabase) { IEnumerable locations = hydraulicBoundaryDatabase.Locations.Select(h => h.Location).ToArray(); var features = GetMapFeature(locations); return new MapPointData(features, RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName) { Style = new PointStyle(Color.DarkBlue, 6, PointSymbol.Circle) }; } private static IEnumerable GetMapFeature(IEnumerable points) { var features = new List { new MapFeature(new List { new MapGeometry(points) }) }; return features; } public static MapData CreateEmptyLineData(string name) { return new MapLineData(Enumerable.Empty(), name); } public static MapData CreateEmptyPointData(string name) { return new MapPointData(Enumerable.Empty(), name); } } }