Ejemplo n.º 1
0
 private static Color ParseColorString(StringReader reader)
 {
     reader.ConsumeWhiteSpace();
     if (reader.Peek() == '#')
     {
         reader.Next();
         byte r = byte.Parse(reader.ReadAlphaNumericString());
         reader.ConsumeWhiteSpace();
         reader.Next();
         reader.ConsumeWhiteSpace();
         byte g = byte.Parse(reader.ReadAlphaNumericString());
         reader.ConsumeWhiteSpace();
         reader.Next();
         reader.ConsumeWhiteSpace();
         byte b = byte.Parse(reader.ReadAlphaNumericString());
         reader.ConsumeWhiteSpace();
         reader.Next();
         reader.ConsumeWhiteSpace();
         return(new Color(r, g, b));
     }
     else
     {
         return(ColorParseStuff.FromName(reader.ReadAlphaString().ToLower()));
     }
 }
Ejemplo n.º 2
0
        private static void ParseLine(StringReader reader)
        {
            reader.ConsumeWhiteSpace();
            if (reader.IsAtEnd)
            {
                return;
            }
            // Check for // Comment
            if (reader.Peek() == '/')
            {
                reader.Next();
                if (reader.Peek() == '/')
                {
                    return;
                }
                reader.Seek(0);
            }
            // Read First Name Part
            string    firstName = reader.ReadMaybeQuotedString();
            GraphNode firstNode = GetNode(firstName);

            reader.ConsumeWhiteSpace();

            // Check if it is a Edge or Node Command
            if (reader.Peek() == '(')
            {
                reader.Next();
                reader.ConsumeWhiteSpace();
                Color color = ParseColorString(reader);
                firstNode.NodeColor = color;
            }
            else if (reader.Peek() == '-')
            {
                reader.Next();
                char nodetype = reader.Next();
                reader.ConsumeWhiteSpace();
                GraphNode secoundNode = GetNode(reader.ReadMaybeQuotedString());
                reader.ConsumeWhiteSpace();
                string annotation = "";
                if (reader.Peek() == '(')
                {
                    reader.Next();
                    reader.ConsumeWhiteSpace();
                    annotation = reader.ReadMaybeQuotedString();
                }
                if (nodetype == '>')
                {
                    firstNode.Connections.Add(new GraphPlotter.NodeConnection(secoundNode.NodeName, annotation));
                }
                else
                {
                    GraphPlotter.NodeConnection connection = new GraphPlotter.NodeConnection(secoundNode.NodeName, annotation);
                    connection.CustomEdgeAttr = new EdgeAttr();
                    connection.CustomEdgeAttr.ArrowHeadAtSource = ArrowStyle.None;
                    connection.CustomEdgeAttr.ArrowHeadAtTarget = ArrowStyle.None;
                    connection.CustomEdgeAttr.Label             = annotation;
                    firstNode.Connections.Add(connection);
                }
            }
        }