private void ResetColumn(ILayersColumn column) { double[] wpfBoundaries = depthBoundaries.Select(b => (b - UpperDepth) * ScaleFactor).ToArray(); for (int i = 0; i < wpfBoundaries.Length - 1; i++) { column.SetLayerHeight(i, wpfBoundaries[i + 1] - wpfBoundaries[i]); } }
public void RegisterColumn(ILayersColumn column) { double[] layerHeights = column.GetLayerHeights(); if (depthBoundaries == null) { double[] layerHeightsMeters = layerHeights.Select(h => h / ScaleFactor).ToArray(); depthBoundaries = new double[layerHeightsMeters.Length + 1]; depthBoundaries[0] = UpperDepth; for (var i = 0; i < layerHeightsMeters.Length; i++) { depthBoundaries[i + 1] = depthBoundaries[i] + layerHeightsMeters[i]; } } else { if (layerHeights.Length + 1 != depthBoundaries.Length) { throw new InvalidOperationException(string.Format("Layer syncronizer controls {0} layers, but the layer being regestered contains {1} layers", depthBoundaries.Length - 1, layerHeights.Length)); } ResetColumn(column); } columns.Add(column); }
public void UnregisterColumn(ILayersColumn column) { columns.Remove(column); }