File: draw

package info (click to toggle)
wims 2%3A4.29a%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 185,704 kB
  • sloc: xml: 366,687; javascript: 120,570; ansic: 62,341; java: 62,170; sh: 7,744; perl: 3,937; yacc: 3,217; cpp: 1,915; lex: 1,805; makefile: 1,084; lisp: 914; pascal: 601; python: 520; php: 318; asm: 7
file content (130 lines) | stat: -rw-r--r-- 4,412 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
!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