Example #1
0
    //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));
    }
Example #2
0
    }                           // {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;
    }
Example #3
0
    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;
 }