/// <summary>
        /// Builds a new Graphviz writer of the graph g using the Stream s.
        /// </summary>
        /// <param name="g">Graph to visit.</param>
        /// <param name="path">Path where files are to be created</param>
        /// <param name="imageType">output image type</param>
        /// <exception cref="ArgumentNullException">g is a null reference</exception>
        /// <exception cref="ArgumentNullException">path is a null reference</exception>
        public GraphvizAlgorithm(
            IVertexAndEdgeListGraph g,
            String path,
            GraphvizImageType imageType
            )
        {
            if (g == null)
            {
                throw new ArgumentNullException("g");
            }
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            m_VisitedGraph = g;
            m_StringWriter = null;
            m_Dot          = new Dot(path);
            m_ImageType    = imageType;

            clusterCount  = 0;
            m_GraphFormat = new GraphvizGraph();

            m_CommonVertexFormat = new GraphvizVertex();
            m_CommonEdgeFormat   = new GraphvizEdge();

            m_VertexFormat = new GraphvizVertex();
            m_EdgeFormat   = new GraphvizEdge();
        }
 /// <summary>
 /// Construct a clustered graph event argument
 /// </summary>
 /// <param name="cluster">cluster to send to event handlers</param>
 /// <param name="graphFormat">cluster formatter</param>
 /// <exception cref="ArgumentNullException">cluster is a null reference.
 /// </exception>
 public FormatClusterEventArgs(IVertexAndEdgeListGraph cluster, GraphvizGraph graphFormat)
 {
     if (cluster==null)
         throw new ArgumentNullException("cluster");
     this.cluster = cluster;
     this.graphFormat = graphFormat;
 }
 /// <summary>
 /// Construct a clustered graph event argument
 /// </summary>
 /// <param name="cluster">cluster to send to event handlers</param>
 /// <param name="graphFormat">cluster formatter</param>
 /// <exception cref="ArgumentNullException">cluster is a null reference.
 /// </exception>
 public FormatClusterEventArgs(IVertexAndEdgeListGraph cluster, GraphvizGraph graphFormat)
 {
     if (cluster == null)
     {
         throw new ArgumentNullException("cluster");
     }
     this.cluster     = cluster;
     this.graphFormat = graphFormat;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="g"></param>
        public GraphvizAlgorithm(IVertexAndEdgeListGraph g)
        {
            if (g == null)
            {
                throw new ArgumentNullException("g");
            }
            m_VisitedGraph = g;
            m_StringWriter = null;
            m_Dot          = new Dot();
            m_ImageType    = GraphvizImageType.Png;

            m_GraphFormat = new GraphvizGraph();

            m_CommonVertexFormat = new GraphvizVertex();
            m_CommonEdgeFormat   = new GraphvizEdge();

            m_VertexFormat = new GraphvizVertex();
            m_EdgeFormat   = new GraphvizEdge();
        }
        /// <summary>
        /// Builds a new Graphviz writer of the graph g using the Stream s.
        /// </summary>
        /// <param name="g">Graph to visit.</param>
        /// <param name="path">Path where files are to be created</param>
        /// <param name="imageType">output image type</param>
        /// <exception cref="ArgumentNullException">g is a null reference</exception>
        /// <exception cref="ArgumentNullException">path is a null reference</exception>
        public GraphvizAlgorithm(
            IVertexAndEdgeListGraph g,
            String path,
            GraphvizImageType imageType
            )
        {
            if (g == null)
                throw new ArgumentNullException("g");
            if (path==null)
                throw new ArgumentNullException("path");
            m_VisitedGraph = g;
            m_StringWriter = null;
            m_Dot = new Dot(path);
            m_ImageType = imageType;

            clusterCount = 0;
            m_GraphFormat = new GraphvizGraph();

            m_CommonVertexFormat = new GraphvizVertex();
            m_CommonEdgeFormat = new GraphvizEdge();

            m_VertexFormat = new GraphvizVertex();
            m_EdgeFormat = new GraphvizEdge();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="g"></param>
        public GraphvizAlgorithm(IVertexAndEdgeListGraph g)
        {
            if (g == null)
                throw new ArgumentNullException("g");
            m_VisitedGraph = g;
            m_StringWriter = null;
            m_Dot = new Dot();
            m_ImageType = GraphvizImageType.Png;

            m_GraphFormat = new GraphvizGraph();

            m_CommonVertexFormat = new GraphvizVertex();
            m_CommonEdgeFormat = new GraphvizEdge();

            m_VertexFormat = new GraphvizVertex();
            m_EdgeFormat = new GraphvizEdge();
        }