Rev 17173 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!if $wims_read_parm!=slib_header
!goto proc
!endif
slib_author=Bernadette, Perrin-Riou
slib_example=[0,0,1;0,0,1;1,1,0],red,blue, [A,B,C],[1,3,green;3,2,purple],html\
[0,0,1,1;0,0,1,1;1,1,0,1;1,1,1,0],red,blue,,[1,3,2,green]\
[0,0,1,1;0,0,1,1;1,1,0,1;1,1,1,0],red,blue,,[1,3,2,green],html\
[0,0,4,4;0,0,1,1;4,1,0,1;4,1,1,0],red,blue,,[1,3,2,green],html weight
slib_require=pari
!exit
:proc
!reset slib_color1 slib_color2 slib_names slib_couleur
!distribute item $wims_read_parm into slib_G,slib_color1,slib_color2,slib_names,slib_path,slib_option
slib_path=!declosing $slib_path
slib_path=!translate internal ; to $\
$ in $slib_path
slib_cnt_path=!linecnt $slib_path
!for slib_i=1 to $slib_cnt_path
slib_path_prov= !line $slib_i of $slib_path
slib_path_color$slib_i= !item -1 of $slib_path_prov
slib_path_color$slib_i= !declosing $(slib_path_color$slib_i)
slib_path$slib_i=!item 1 to -2 of $slib_path_prov
slib_path$slib_i=!nospace $(slib_path$slib_i)
!next slib_i
slib_G=!declosing $slib_G
slib_G=!translate internal ; to $\
$ in $slib_G
slib_GG=!translate internal $\
$ to ; in $slib_G
slib_or=!exec pari Mat([$slib_GG])==Mat([$slib_GG])~
slib_names=!declosing $slib_names
slib_color1=!declosing $slib_color1
slib_color2=!declosing $slib_color2
slib_n=!line 1 of $slib_G
slib_n=!itemcnt $slib_n
!default slib_color1=blue
!default slib_color2=blue
!default slib_names=!values slib_i for slib_i=1 to $slib_n
!for slib_i =1 to $slib_n
slib_COS$slib_i=$[cos(2*pi*$slib_i/$slib_n)]
slib_SIN$slib_i=$[sin(2*pi*$slib_i/$slib_n)]
!next slib_i
slib_dessin = xrange -1.5,1.5\
yrange -1.5,1.5
!for slib_i=1 to $slib_n
slib_name =!item $slib_i of $slib_names
!default slib_couleur=$slib_color1
slib_dessin=$slib_dessin\
disk $(slib_COS$slib_i),$(slib_SIN$slib_i), 6,$slib_couleur\
text black, $[1.3*$(slib_COS$slib_i)],$[1.3*$(slib_SIN$slib_i)], medium, $slib_name
!reset slib_couleur
!for slib_k=1 to $slib_cnt_path
!!! vertex
!if $slib_i isitemof $(slib_path$slib_k) and $($(slib_path$slib_k)[3])=$empty
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next
!if $slib_or=1
!for slib_j=1 to $slib_i
slib_r=!line $slib_i of $slib_G
slib_u=!item $slib_j of $slib_r
!if $slib_u>0
slib_couleur=$slib_color2
!for slib_k=1 to $slib_cnt_path
!if $slib_i,$slib_j isin $(slib_path$slib_k) or $slib_j,$slib_i isin $(slib_path$slib_k)
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next slib_k
!if $slib_i<>$slib_j
slib_dessin=$slib_dessin\
segment $(slib_COS$slib_i),$(slib_SIN$slib_i),$(slib_COS$slib_j),$(slib_SIN$slib_j),$slib_couleur
!if weight iswordof $slib_option
slib_dessin=$slib_dessin\
text black, $[(2*$(slib_COS$slib_i)+$(slib_COS$slib_j))/3],$[(2*$(slib_SIN$slib_i)+$(slib_SIN$slib_j))/3],medium,$(slib_GG[$slib_i;$slib_j])
!endif
!else
slib_dessin=$slib_dessin\
ellipse $[$(slib_COS$slib_i)*1.25],$[$(slib_SIN$slib_i)*1.25], 0.5,0.5,$slib_couleur
!endif
!endif
!next slib_j
!else
!for slib_j=1 to $slib_n
slib_r=!line $slib_i of $slib_G
slib_u=!item $slib_j of $slib_r
!if $slib_u>0
slib_couleur=$slib_color2
!for slib_k=1 to $slib_cnt_path
!if $slib_i,$slib_j isin $(slib_path$slib_k) or $slib_j,$slib_i isin $(slib_path$slib_k)
slib_couleur=$(slib_path_color$slib_k)
!break
!endif
!next slib_k
!if $slib_i<>$slib_j
slib_dessin=$slib_dessin\
arrow $(slib_COS$slib_i),$(slib_SIN$slib_i), $[($(slib_COS$slib_i)-$(slib_COS$slib_j))/2+$(slib_COS$slib_j)],$[($(slib_SIN$slib_i)-$(slib_SIN$slib_j))/2+$(slib_SIN$slib_j)],10,$slib_color2\
segment $(slib_COS$slib_i),$(slib_SIN$slib_i),$[$(slib_COS$slib_j)],$(slib_SIN$slib_j),$slib_couleur
!else
slib_dessin=$slib_dessin\
ellipse $[$(slib_COS$slib_i)*1.25],$[$(slib_SIN$slib_i)*1.25], 0.5,0.5,$slib_couleur
!endif
!endif
!next slib_j
!endif
!reset slib_couleur
!next slib_i
slib_out= $slib_dessin
!if url iswordof $slib_option or html iswordof $slib_option
insdraw_size=250,250
!insdraw $slib_out
slib_out=$ins_url
!if html iswordof $slib_option
slib_out=<img src="$ins_url" alt="">
!else
slib_out=$slib_out,$insdraw_size
!endif
!endif