gv.3tcl 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. .TH gv 3tcl "06 December 2024"
  2. .SH NAME
  3. gv_tcl - graph manipulation in tcl
  4. .SH SYNOPSIS
  5. #!/usr/bin/tclsh
  6. .br
  7. package require gv
  8. .SH USAGE
  9. Requires tcl8.3 or later.
  10. .SH INTRODUCTION
  11. .B gv_tcl
  12. is a dynamically loaded extension for
  13. .B tcl
  14. that provides access to the graph facilities of
  15. .B graphviz.
  16. .SH COMMANDS
  17. .TP
  18. \fBNew graphs\fR
  19. .br
  20. .TP
  21. New empty graph
  22. .br
  23. \fI<graph_handle>\fR \fBgv::graph\fR \fI<name>\fR
  24. .br
  25. \fI<graph_handle>\fR \fBgv::digraph\fR \fI<name>\fR
  26. .br
  27. \fI<graph_handle>\fR \fBgv::strictgraph\fR \fI<name>\fR
  28. .br
  29. \fI<graph_handle>\fR \fBgv::strictdigraph\fR \fI<name>\fR
  30. .br
  31. .TP
  32. New graph from a dot-syntax string or file
  33. .br
  34. \fI<graph_handle>\fR \fBgv::readstring\fR \fI<string>\fR
  35. .br
  36. \fI<graph_handle>\fR \fBgv::read\fR \fI<string> filename\fR
  37. .br
  38. \fI<graph_handle>\fR \fBgv::read\fR \fI<channel>\fR
  39. .br
  40. .TP
  41. Add new subgraph to existing graph
  42. .br
  43. \fI<graph_handle>\fR \fBgv::graph\fR \fI<graph_handle> <name>\fR
  44. .br
  45. .TP
  46. \fBNew nodes\fR
  47. .br
  48. .TP
  49. Add new node to existing graph
  50. .br
  51. \fI<node_handle>\fR \fBgv::node\fR \fI<graph_handle> <name>\fR
  52. .br
  53. .TP
  54. \fBNew edges\fR
  55. .br
  56. .TP
  57. Add new edge between existing nodes
  58. .br
  59. \fI<edge_handle>\fR \fBgv::edge\fR \fI<tail_node_handle> <head_node_handle>\fR
  60. .br
  61. .TP
  62. Add a new edge between an existing tail node, and a named head node which will be induced in the graph if it doesn't already exist
  63. .br
  64. \fI<edge_handle>\fR \fBgv::edge\fR \fI<tail_node_handle> <head_name>\fR
  65. .br
  66. .TP
  67. Add a new edge between an existing head node, and a named tail node which will be induced in the graph if it doesn't already exist
  68. .br
  69. \fI<edge_handle>\fR \fBgv::edge\fR \fI<tail_name> <head_node_handle>\fR
  70. .br
  71. .TP
  72. Add a new edge between named tail and head nodes which will be induced in the graph if they don't already exist
  73. .br
  74. \fI<edge_handle>\fR \fBgv::edge\fR \fI<graph_handle> <tail_name> <head_name>\fR
  75. .br
  76. .TP
  77. \fBSetting attribute values\fR
  78. .br
  79. .TP
  80. Set value of named attribute of graph/node/edge - creating attribute if necessary
  81. .br
  82. \fI<string>\fR \fBgv::setv\fR \fI<graph_handle> <attr_name> <attr_value>\fR
  83. .br
  84. \fI<string>\fR \fBgv::setv\fR \fI<node_handle> <attr_name> <attr_value>\fR
  85. .br
  86. \fI<string>\fR \fBgv::setv\fR \fI<edge_handle> <attr_name> <attr_value>\fR
  87. .br
  88. .TP
  89. Set value of existing attribute of graph/node/edge (using attribute handle)
  90. .br
  91. \fI<string>\fR \fBgv::setv\fR \fI<graph_handle> <attr_handle> <attr_value>\fR
  92. .br
  93. \fI<string>\fR \fBgv::setv\fR \fI<node_handle> <attr_handle> <attr_value>\fR
  94. .br
  95. \fI<string>\fR \fBgv::setv\fR \fI<edge_handle> <attr_handle> <attr_value>\fR
  96. .br
  97. .TP
  98. \fBGetting attribute values\fR
  99. .br
  100. .TP
  101. Get value of named attribute of graph/node/edge
  102. .br
  103. \fI<string>\fR \fBgv::getv\fR \fI<graph_handle> <attr_name>\fR
  104. .br
  105. \fI<string>\fR \fBgv::getv\fR \fI<node_handle> <attr_name>\fR
  106. .br
  107. \fI<string>\fR \fBgv::getv\fR \fI<edge_handle> <attr_name>\fR
  108. .br
  109. .TP
  110. Get value of attribute of graph/node/edge (using attribute handle)
  111. .br
  112. \fI<string>\fR \fBgv::getv\fR \fI<graph_handle> <attr_handle>\fR
  113. .br
  114. \fI<string>\fR \fBgv::getv\fR \fI<node_handle> <attr_handle>\fR
  115. .br
  116. \fI<string>\fR \fBgv::getv\fR \fI<edge_handle> <attr_handle>\fR
  117. .br
  118. .TP
  119. \fBObtain names from handles\fR
  120. .br
  121. \fI<string>\fR \fBgv::nameof\fR \fI<graph_handle>\fR
  122. .br
  123. \fI<string>\fR \fBgv::nameof\fR \fI<node_handle>\fR
  124. .br
  125. \fI<string>\fR \fBgv::nameof\fR \fI<attr_handle>\fR
  126. .br
  127. .TP
  128. \fBFind handles from names\fR
  129. .br
  130. \fI<graph_handle>\fR \fBgv::findsubg\fR \fI<graph_handle> <name>\fR
  131. .br
  132. \fI<node_handle>\fR \fBgv::findnode\fR \fI<graph_handle> <name>\fR
  133. .br
  134. \fI<edge_handle>\fR \fBgv::findedge\fR \fI<tail_node_handle> <head_node_handle>\fR
  135. .br
  136. \fI<attr_handle>\fR \fBgv::findattr\fR \fI<graph_handle> <name>\fR
  137. .br
  138. \fI<attr_handle>\fR \fBgv::findattr\fR \fI<node_handle> <name>\fR
  139. .br
  140. \fI<attr_handle>\fR \fBgv::findattr\fR \fI<edge_handle> <name>\fR
  141. .br
  142. .TP
  143. \fBMisc graph navigators returning handles\fR
  144. .br
  145. \fI<node_handle>\fR \fBgv::headof\fR \fI<edge_handle>\fR
  146. .br
  147. \fI<node_handle>\fR \fBgv::tailof\fR \fI<edge_handle>\fR
  148. .br
  149. \fI<graph_handle>\fR \fBgv::graphof\fR \fI<graph_handle>\fR
  150. .br
  151. \fI<graph_handle>\fR \fBgv::graphof\fR \fI<edge_handle>\fR
  152. .br
  153. \fI<graph_handle>\fR \fBgv::graphof\fR \fI<node_handle>\fR
  154. .br
  155. \fI<graph_handle>\fR \fBgv::rootof\fR \fI<graph_handle>\fR
  156. .br
  157. .TP
  158. \fBObtain handles of proto node/edge for setting default attribute values\fR
  159. .br
  160. \fI<node_handle>\fR \fBgv::protonode\fR \fI<graph_handle>\fR
  161. .br
  162. \fI<edge_handle>\fR \fBgv::protoedge\fR \fI<graph_handle>\fR
  163. .br
  164. .TP
  165. \fBIterators\fR
  166. .br
  167. .TP
  168. Iteration termination tests
  169. .br
  170. \fI<boolean_string>\fR \fBgv::ok\fR \fI<graph_handle>\fR
  171. .br
  172. \fI<boolean_string>\fR \fBgv::ok\fR \fI<node_handle>\fR
  173. .br
  174. \fI<boolean_string>\fR \fBgv::ok\fR \fI<edge_handle>\fR
  175. .br
  176. \fI<boolean_string>\fR \fBgv::ok\fR \fI<attr_handle>\fR
  177. .br
  178. .TP
  179. Iterate over subgraphs of a graph
  180. .br
  181. \fI<graph_handle>\fR \fBgv::firstsubg\fR \fI<graph_handle>\fR
  182. .br
  183. \fI<graph_handle>\fR \fBgv::nextsubg\fR \fI<graph_handle> <subgraph_handle>\fR
  184. .br
  185. .TP
  186. Iterate over supergraphs of a graph (obscure and rarely useful)
  187. .br
  188. \fI<graph_handle>\fR \fBgv::firstsupg\fR \fI<graph_handle>\fR
  189. .br
  190. \fI<graph_handle>\fR \fBgv::nextsupg\fR \fI<graph_handle> <subgraph_handle>\fR
  191. .br
  192. .TP
  193. Iterate over edges of a graph
  194. .br
  195. \fI<edge_handle>\fR \fBgv::firstedge\fR \fI<graph_handle>\fR
  196. .br
  197. \fI<edge_handle>\fR \fBgv::nextedge\fR \fI<graph_handle> <edge_handle>\fR
  198. .br
  199. .TP
  200. Iterate over outedges of a graph
  201. .br
  202. \fI<edge_handle>\fR \fBgv::firstout\fR \fI<graph_handle>\fR
  203. .br
  204. \fI<edge_handle>\fR \fBgv::nextout\fR \fI<graph_handle> <edge_handle>\fR
  205. .br
  206. .TP
  207. Iterate over edges of a node
  208. .br
  209. \fI<edge_handle>\fR \fBgv::firstedge\fR \fI<node_handle>\fR
  210. .br
  211. \fI<edge_handle>\fR \fBgv::nextedge\fR \fI<node_handle> <edge_handle>\fR
  212. .br
  213. .TP
  214. Iterate over out-edges of a node
  215. .br
  216. \fI<edge_handle>\fR \fBgv::firstout\fR \fI<node_handle>\fR
  217. .br
  218. \fI<edge_handle>\fR \fBgv::nextout\fR \fI<node_handle> <edge_handle>\fR
  219. .br
  220. .TP
  221. Iterate over head nodes reachable from out-edges of a node
  222. .br
  223. \fI<node_handle>\fR \fBgv::firsthead\fR \fI<node_handle>\fR
  224. .br
  225. \fI<node_handle>\fR \fBgv::nexthead\fR \fI<node_handle> <head_node_handle>\fR
  226. .br
  227. .TP
  228. Iterate over in-edges of a graph
  229. .br
  230. \fI<edge_handle>\fR \fBgv::firstin\fR \fI<graph_handle>\fR
  231. .br
  232. \fI<edge_handle>\fR \fBgv::nextin\fR \fI<node_handle> <edge_handle>\fR
  233. .br
  234. .TP
  235. Iterate over in-edges of a node
  236. .br
  237. \fI<edge_handle>\fR \fBgv::firstin\fR \fI<node_handle>\fR
  238. .br
  239. \fI<edge_handle>\fR \fBgv::nextin\fR \fI<graph_handle> <edge_handle>\fR
  240. .br
  241. .TP
  242. Iterate over tail nodes reachable from in-edges of a node
  243. .br
  244. \fI<node_handle>\fR \fBgv::firsttail\fR \fI<node_handle>\fR
  245. .br
  246. \fI<node_handle>\fR \fBgv::nexttail\fR \fI<node_handle> <tail_node_handle>\fR
  247. .br
  248. .TP
  249. Iterate over nodes of a graph
  250. .br
  251. \fI<node_handle>\fR \fBgv::firstnode\fR \fI<graph_handle>\fR
  252. .br
  253. \fI<node_handle>\fR \fBgv::nextnode\fR \fI<graph_handle> <node_handle>\fR
  254. .br
  255. .TP
  256. Iterate over nodes of an edge
  257. .br
  258. \fI<node_handle>\fR \fBgv::firstnode\fR \fI<edge_handle>\fR
  259. .br
  260. \fI<node_handle>\fR \fBgv::nextnode\fR \fI<edge_handle> <node_handle>\fR
  261. .br
  262. .TP
  263. Iterate over attributes of a graph
  264. .br
  265. \fI<attr_handle>\fR \fBgv::firstattr\fR \fI<graph_handle>\fR
  266. .br
  267. \fI<attr_handle>\fR \fBgv::nextattr\fR \fI<graph_handle> <attr_handle>\fR
  268. .br
  269. .TP
  270. Iterate over attributes of an edge
  271. .br
  272. \fI<attr_handle>\fR \fBgv::firstattr\fR \fI<edge_handle>\fR
  273. .br
  274. \fI<attr_handle>\fR \fBgv::nextattr\fR \fI<edge_handle> <attr_handle>\fR
  275. .br
  276. .TP
  277. Iterate over attributes of a node
  278. .br
  279. \fI<attr_handle>\fR \fBgv::firstattr\fR \fI<node_handle>\fR
  280. .br
  281. \fI<attr_handle>\fR \fBgv::nextattr\fR \fI<node_handle> <attr_handle>\fR
  282. .br
  283. .TP
  284. \fBRemove graph objects\fR
  285. .br
  286. \fI<boolean_string>\fR \fBgv::rm\fR \fI<graph_handle>\fR
  287. .br
  288. \fI<boolean_string>\fR \fBgv::rm\fR \fI<node_handle>\fR
  289. .br
  290. \fI<boolean_string>\fR \fBgv::rm\fR \fI<edge_handle>\fR
  291. .br
  292. .TP
  293. \fBLayout\fR
  294. .br
  295. .TP
  296. Annotate a graph with layout attributes and values using a specific layout engine
  297. .br
  298. \fI<boolean_string>\fR \fBgv::layout\fR \fI<graph_handle> <string> engine\fR
  299. .br
  300. .TP
  301. \fBRender\fR
  302. .br
  303. .TP
  304. Render a layout into attributes of the graph
  305. .br
  306. \fI<boolean_string>\fR \fBgv::render\fR \fI<graph_handle>\fR
  307. .br
  308. .TP
  309. Render a layout to stdout
  310. .br
  311. \fI<boolean_string>\fR \fBgv::render\fR \fI<graph_handle> <string> format\fR
  312. .br
  313. .TP
  314. Render to an open file
  315. .br
  316. \fI<boolean_string>\fR \fBgv::render\fR \fI<graph_handle> <string> format <channel> fout\fR
  317. .br
  318. .TP
  319. Render a layout to an unopened file by name
  320. .br
  321. \fI<boolean_string>\fR \fBgv::render\fR \fI<graph_handle> <string> format <string> filename\fR
  322. .br
  323. .TP
  324. Render to a string result
  325. .br
  326. \fI<string>\fR \fBgv::renderresult\fR \fI<graph_handle> ing <string> format\fR
  327. .br
  328. \fBgv::renderresult\fR \fI<graph_handle> <string> format <string> outdata\fR
  329. .br
  330. .TP
  331. Render to an open channel
  332. .br
  333. \fI<boolean_string>\fR \fBgv::renderchannel\fR \fI<graph_handle> <string> format <string> channelname\fR
  334. .br
  335. .TP
  336. Render a layout to a malloc'ed string, to be free'd by the caller
  337. .br
  338. .TP
  339. (deprecated - too easy to leak memory)
  340. .br
  341. .TP
  342. (still needed for "eval [gv::renderdata $G tk]" )
  343. .br
  344. \fI<string>\fR \fBgv::renderdata\fR \fI<graph_handle> <string> format\fR
  345. .br
  346. .TP
  347. Writing graph back to file
  348. .br
  349. \fI<boolean_string>\fR \fBgv::write\fR \fI<graph_handle> <string> filename\fR
  350. .br
  351. \fI<boolean_string>\fR \fBgv::write\fR \fI<graph_handle> <channel>\fR
  352. .br
  353. .TP
  354. Graph transformation tools
  355. .br
  356. \fI<boolean_string>\fR \fBgv::tred\fR \fI<graph_handle>\fR
  357. .br
  358. .SH KEYWORDS
  359. graph, dot, neato, fdp, circo, twopi, tcl.