예제 #1
0
        MyGrid getNextDiamond(int x, int y, FlowGraphNode node, List <FlowGraphNode> path)
        {
            var       grid = new MyGrid();
            Rectangle rect = null;

            if (path.Contains(node))
            {
                rect = new Rectangle {
                    Width = 50, Height = 50, Fill = Brushes.LightBlue
                };
            }
            else
            {
                rect = new Rectangle {
                    Width = 50, Height = 50, Fill = Brushes.Azure
                };
            }
            rect.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            rect.VerticalAlignment   = System.Windows.VerticalAlignment.Stretch;
            RotateTransform rotation = new RotateTransform();

            rotation.Angle       = 45;
            rect.RenderTransform = rotation;
            grid.Children.Add(rect);
            TextBlock tex = new TextBlock {
                Text = "\n" + node.ToString(), Foreground = Brushes.Black
            };

            grid.Children.Add(tex);
            tex.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity));
            System.Windows.Size size = tex.DesiredSize;
            grid.xpos = x - (int)(size.Width / 2) + 25;
            grid.ypos = y;
            return(grid);
        }
예제 #2
0
 void addNewNode(FlowGraphNode node)
 {
     if (null == graph)
     {
         graph = new List <FlowGraphNode>();
         graph.Add(node);
     }
     else
     {
         graph.Add(node);
     }
 }
예제 #3
0
        FlowGraphNode ParseNode(Dictionary <string, object> item)
        {
            string        NodeType = item["_nodetype"].ToString();
            FlowGraphNode node     = null;

            if ("Decl" == NodeType)
            {
                node = ParseDeclaration(item);
            }
            if ("FuncCall" == NodeType)
            {
                node = ParseFuncCall(item);
            }
            if ("If" == NodeType)
            {
                node = ParseIf(item);
            }
            if ("Constant" == NodeType)
            {
                node = ParseConstant(item);
            }
            if ("ArrayRef" == NodeType)
            {
                node = ParseArrayRef(item);
            }
            if ("ID" == NodeType)
            {
                node = ParseID(item);
            }
            if ("BinaryOp" == NodeType)
            {
                node = ParseBinOp(item);
            }
            if ("UnaryOp" == NodeType)
            {
                node = ParseUnaryOp(item);
            }
            if ("Assignment" == NodeType)
            {
                node = ParseAssigmet(item);
            }
            if ("Return" == NodeType)
            {
                node = ParseReturn(item);
            }
            if ("While" == NodeType)
            {
                node = ParseWhile(item);
            }
            if ("For" == NodeType)
            {
                node = ParseFor(item);
            }
            if ("Typedef" == NodeType)
            {
                node = ParseTypeDef(item);
            }
            if ("TypeDecl" == NodeType)
            {
                node = ParseTypeDecl(item);
            }
            if ("Enum" == NodeType)
            {
                node = ParseEnum(item);
            }
            if ("Enumerator" == NodeType)
            {
                node = ParseEnumValue(item);
            }
            if ("Struct" == NodeType)
            {
                node = ParseStruct(item);
            }
            if ("Union" == NodeType)
            {
                node = ParseUnion(item);
            }
            if ("StructRef" == NodeType)
            {
                node = ParseStructRef(item);
            }
            if ("Typename" == NodeType)
            {
                node = ParseTypeName(item);
            }
            if ("IdentifierType" == NodeType)
            {
                node = ParseTypeDeclIdentifierType(item);
            }
            if ("Cast" == NodeType)
            {
                node = ParseCast(item);
            }
            return(node);
        }