Tcl Dot API (tcldot)

(Tcl Dot also pulls in Gdtclft for writing to a gif image.)

Create a new graph.
        dotnew graphtype ?attributeName attributeValue? ?...?
          -> graphHandle

	graphtype:= (graph|digraph|graphstrict|digraphstrict)
Read a graph.
        dotread fileHandle
          -> graphHandle
Add a node to a graph
        graphHandle addnode ?nodeName? ?attributeName attributeValue? ?...?
          -> nodeHandle

	If the nodeName parameter is omitted the name of the
	node defaults to nodeHandle.
Add an edge to a graph
        graphHandle addedge tailnode headnode ?attributeName attributeValue? ?...?
          -> edgeHandle

        tailnode = (tailnodeHandle|tailnodeName)
        headnode = (headnodeHandle|headnodeName)

        NodeHandles take precedence, so if nodeName is of the form
        "node99" it may conflict.  The precedence can be overridden
        with code such as:
            graphHandle addedge \
                   [graphHandle findnode tailnodeName] \
                   [graphHandle findnode headnodeName] 
Add a subgraph to a graph
        graphHandle addsubgraph ?subgName? ?attributeName attributeValue? ?...?
          -> subgHandle

	If the subgName parameter is omitted the name of the
	node defaults to subgHandle.

	Clusters are created by giving a subgraph a name that begins
	with "cluster".
Add a edge to a node
        tailnodeHandle addedge headnode ?attributeName attributeValue? ?...?
          -> edgeHandle

        headnode = (headnodeHandle|headnodeName)
Delete a graph/node/edge
        graphHandle delete
        nodeHandle delete
        edgeHandle delete
Count nodes/edges
        graphHandle countnodes
	  -> integer
        graphHandle countedges
	  -> integer
List subgraphs/nodes/edges
        graphHandle listnodes
	  -> {nodeHandle ... }

        nodeHandle listedges
	  -> {edgeHandle ... }
        nodeHandle listoutedges
	  -> {edgeHandle ... }
        nodeHandle listinedges
	  -> {edgeHandle ... }

        edgeHandle listnodes
	  -> tailnodeHandle headnodeHandle

        graphHandle listsubgraphs
	  -> {graphHandle ... }
Find nodes/edges by nodename
        graphHandle findnode nodename
	  -> nodeHandle

        graphHandle findedge tailnodename headnodename
	  -> edgeHandle

        nodeHandle findedge nodename
	  -> edgeHandle
Show graph/node/edge name
        graphHandle showname
	  -> graphname

        nodeHandle showname
	  -> nodename

        edgeHandle showname
	  -> edgename
Set default node/edge attributes
        graphHandle setnodeattributes attributeName attributeValue ?...?
        graphHandle setedgeattributes attributeName attributeValue ?...?
List node/edge attribute names
        graphHandle listnodeattributes
	  -> {attributeName ... }
        graphHandle listedgeattributes
	  -> {attributeName ... }
Query default node/edge attributes
        graphHandle querynodeattributes attributeName ?...?
	  -> {attributeValue ... }
        graphHandle queryedgeattributes attributeName ?...?
	  -> {attributeValue ... }
Set graph/node/edge attributes
        graphHandle setattributes attributeName attributeValue ?...?
        nodeHandle setattributes attributeName attributeValue ?...?
        edgeHandle setattributes attributeName attributeValue ?...?
List graph/node/edge attribute names
        graphHandle listattributes
	  -> {attributeName ... }
        nodeHandle listattributes
	  -> {attributeName ... }
        edgeHandle listattributes
	  -> {attributeName ... }
Query graph/node/edge attribute values
        graphHandle queryattributes attributeName ?attributeName? ?...?
	  -> {attributeValue ... }
        nodeHandle queryattributes attributeName ?attributeName? ?...?
	  -> {attributeValue ... }
        edgeHandle queryattributes attributeName ?attributeName? ?...?
	  -> {attributeValue ... }
Layout nodes
        graphHandle layoutNodes

	NOTE: Not yet implemented.  Use:
	      graphHandle layout
        to layout both nodes and edges.
Layout edges
        graphHandle layoutEdges -style

	style:= (straight|spline)

	NOTE: Not yet implemented.  Use:
	      graphHandle layout
        to layout both nodes and edges.
Write graph to file
        graphHandle write filehandle format

	format:= (ps|mif|hpgl|gif|plain|dot)
Render graph to existing or new gifImage (see: gdTcl)
        graphHandle rendergd ?gdHandle?
          -> gdHandle
Render graph to canvas (tkdot only)
        graphHandle render canvashandle

	NOTE: Not yet fully implemented.  For now use:
	      set c canvasHandle
	      eval [graphHandle render]