public void AddCrs(string crs) { // crs is readonly. Debug.Assert(crs != null, "CRS must have any value!"); var crsId = WmsCreator.AddCrs(crs); // CRS can occur repeatedly in parents (even in layer itself). for (var layer = this; layer != null; layer = layer.Parent) { foreach (var id in layer.crsIds.Keys) { if (id == crsId) { return; } } } crsIds.Add(crsId, null); }
public Layer Create(Wms wms) { // This object is readonly. Layer layer; if (layers.Count > 0) { layer = new BranchLayer(wms); } else { layer = new LeafLayer(Name, wms); } try { layer.node = new TreeNode(Title); layer.node.Tag = layer; layer.node.Checked = true; layer.node.ToolTipText = Description; var crsIdsArray = new int[crsIds.Count]; layer.CrsIds = crsIdsArray; crsIds.Keys.CopyTo(crsIdsArray, 0); layer.ImageFormat = WmsCreator.GetBestSupportedFormat(); foreach (var creator in layers) { var subLayer = creator.Create(wms); layer.Nodes.Add(subLayer.node); } } catch (Exception) { layer.Dispose(); throw; } return(layer); }