//my edge public FrameRange FrameRangeOff(Edge edge) { FrameWall wall = FrameWalls[edge]; if (!wall.HasEntry) { return(FrameRange.Empty); } Dictionary <Edge, FrameWallRange> frameWallRanges = new Dictionary <Edge, FrameWallRange>(); frameWallRanges[edge.Opposite()] = new FrameWallRange( new FrameWall(0, wall.Entry, 0), new FrameWall(int.MaxValue, wall.Entry, int.MaxValue) ); foreach (Edge missingEdge in EdgeExtensions.AllEdges()) { if (!frameWallRanges.ContainsKey(missingEdge)) { frameWallRanges[missingEdge] = FrameWallRange.All; } } return(new FrameRange(frameWallRanges)); }
} // {return entryEdges.Count;}} public Frame(Dictionary <Edge, FrameWall> frameWalls) { foreach (Edge edge in EdgeExtensions.AllEdges()) { if (!frameWalls.ContainsKey(edge)) { throw new ArgumentException("Missing framewall for an edge"); } } if (frameWalls[Edge.Left].Length != frameWalls[Edge.Right].Length) { throw new ArgumentException("Parallel vertical framewalls have different Lengths"); } if (frameWalls[Edge.Bottom].Length != frameWalls[Edge.Top].Length) { throw new ArgumentException("Parallel horizontal framewalls have different Lengths"); } FrameWalls = frameWalls; Width = frameWalls[Edge.Bottom].Length; Height = frameWalls[Edge.Left].Length; EntryEdges = new List <Edge>(); foreach (KeyValuePair <Edge, FrameWall> item in frameWalls) { if (item.Value.HasEntry) { EntryEdges.Add(item.Key); } } EntryCount = EntryEdges.Count; }
public override string ToString() { string str = ""; foreach (Edge edge in EdgeExtensions.AllEdges()) { str += edge + ": " + FrameWalls[edge] + "\n"; } str = str.Substring(0, str.Length - 1); return(str); }
public FrameRange(Dictionary <Edge, FrameWallRange> frameWallRanges) { foreach (Edge edge in EdgeExtensions.AllEdges()) { if (!frameWallRanges.ContainsKey(edge)) { throw new ArgumentException("Missing framewall range for an edge"); } } FrameWallRanges = frameWallRanges; }