Rev 4158 | Rev 4349 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2641 | bpr | 1 | !if $wims_read_parm!=slib_header |
2 | !goto proc |
||
3 | !endif |
||
4158 | bpr | 4 | |
2641 | bpr | 5 | slib_author=Bernadette Perrin-Riou |
4158 | bpr | 6 | |
2641 | bpr | 7 | slib_example=[0,1,0;0,1,1;0,0,0]\ |
8 | [u,v,0;0,w,x;0,y,0],[a,b,c],edge\ |
||
9 | [0,T,0;0,1,0;0,1,0],[a,b,c],,rankdir="RL"\ |
||
4158 | bpr | 10 | [0,1,0;0,1,1;0,0,0],no_label_node |
3265 | bpr | 11 | slib_require=graphviz |
2641 | bpr | 12 | !exit |
13 | |||
14 | :proc |
||
15 | |||
16 | slib_labelnode=0 |
||
17 | !reset slib_options slib_Node slib_output slib_l |
||
18 | |||
19 | !distribute item $wims_read_parm into slib_A,slib_Node,slib_output,slib_options |
||
20 | slib_A=!declosing $slib_A |
||
21 | slib_Node=!declosing $slib_Node |
||
22 | !if no_label_node isin $slib_Node |
||
23 | slib_Node= |
||
24 | slib_label_node=0 |
||
25 | !endif |
||
26 | |||
27 | slib_options=!declosing $slib_options |
||
28 | !default slib_options=rankdir="LR" ;node [fontsize=10,width=".2", height=".2", margin=0 shape=box]; |
||
29 | |||
30 | |||
31 | slib_sA=!rows2lines $slib_A |
||
32 | slib_r=!linecnt $slib_sA |
||
33 | slib_A=!lines2rows $slib_A |
||
34 | |||
35 | !default slib_orient=1 |
||
36 | slib_graphv= |
||
37 | |||
38 | !if $slib_orient=1 |
||
39 | graphviz_dot=dot |
||
40 | slib_graph=digraph |
||
41 | slib_arrow=-> |
||
42 | !else |
||
43 | graphviz_dot=neato |
||
44 | slib_graph=graph |
||
45 | slib_arrow=-- |
||
46 | !endif |
||
47 | slib_rA=!rows2lines $slib_A |
||
48 | !for slib_i = 1 to $slib_r |
||
49 | !for slib_j = 1 to $slib_i |
||
50 | !if $(slib_A[$slib_i;$slib_j]) != 0 |
||
51 | !if edge iswordof $slib_output |
||
52 | slib_l=[label="$(slib_A[$slib_i;$slib_j])"] |
||
53 | !endif |
||
54 | slib_graphv=!append line $slib_i $slib_arrow $slib_j [color="blue"] $slib_l ; to $slib_graphv |
||
55 | !endif |
||
56 | !if $slib_orient=1 |
||
57 | !if $slib_i != $slib_j and $(slib_A[$slib_j;$slib_i]) != 0 |
||
58 | !if edge iswordof $slib_output |
||
59 | slib_l=[label="$(slib_A[$slib_j;$slib_i])"] |
||
60 | !endif |
||
61 | slib_graphv=!append line $slib_j $slib_arrow $slib_i [color="blue"] $slib_l ; to $slib_graphv |
||
62 | !endif |
||
63 | !endif |
||
64 | !next |
||
65 | !if $(slib_Node[$slib_i])!= or $slib_label_node=0 |
||
66 | slib_graphv=!append line $slib_i [label="$(slib_Node[$slib_i])"] [color="blue"] ; to $slib_graphv |
||
67 | !endif |
||
68 | !next |
||
69 | |||
70 | slib_out=$slib_graph bar {$slib_options $slib_graphv} |
||
71 | |||
72 | slib_graphviz_out=!exec graphviz $slib_out |
||
73 | slib_out=!line 1 of $slib_graphviz_out |
||
74 | !if url notin $slib_output |
||
4172 | bpr | 75 | slib_out=<img src="$slib_out" alt=""> |
2641 | bpr | 76 | !endif |