Subversion Repositories wimsdev

Rev

Rev 12152 | Rev 15737 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
!if $wims_read_parm!=slib_header
13586 bpr 2
  !goto proc
20 reyssat 3
!endif
4
 
4330 bpr 5
slib_author=Adeline, Grelot ; Bernadette, Perrin-Riou; Sophie, Lemaire
20 reyssat 6
 
11400 bpr 7
slib_example= [10,5,2,3,10,13],[3,4,6,7,12,14,16],xtics [A1,A3,A6,8,10,12,14],ytics 10,color salmon,html\
8
[1,5,2,3,10,13],[3,4,6,7,12,14],xtics [a,b,c,d,e,f],ytics 10,color salmon,html\
9
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics,ytics 15,color blue,html\
10
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics [a,b,c,d,e,f],ytics 15,color blue,html\
4478 bpr 11
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics 5,ytics 10,color blue,html\
11400 bpr 12
[100,500,2,300,1000,1300],[3,4,6,7,12,14],xtics,ytics 10,baton,color green,html\
13
[0.007,0.005,0.002,0.003,0.0020,0.01],[3,4,6,7,12,14],xtics,ytics 10,stem,color blue,html\
14
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics,ytics 10,step,color red,html\
15
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics [a,b,c,d,e,f],ytics 10,step,color red,html\
4478 bpr 16
[1,5,2,3,10,13],[3,4,6,7,12,14,22],xtics 5,ytics 10,step,color red,html\
11400 bpr 17
[1,5,2,3,10,13],[3,4,6,7,12,14],xtics [a,b,c,d,e,f],ytics 10,stem,color blue,html\
4478 bpr 18
[1,5,2,3,10,13],[3,4,6,7,12,14],xtics 5,ytics 1,stem,color blue,html\
19
[1,5,2,3,10,13],[3,4,6,7,12,14,14],xtics,ytics,stair,color blue,html\
11400 bpr 20
[1,5,2],[3,4,6],xtics 10,ytics,stem,color blue,\
21
[1,5,2,3,10,13],[3,4,6,7,12,14],xtics 5,noytics,baton,color green,html
4478 bpr 22
 
20 reyssat 23
!exit
24
 
25
:proc
26
 
27
slib_parm=
28
slib_out=
4478 bpr 29
!reset slib_optx, slib_opty, slib_couleur,slib_baton,slib_pdata, slib_grad,slib_listx,slib_listxx, slib_param, slib_parm slib_option, slib_points
20 reyssat 30
 
11400 bpr 31
slib_data=!item 1 to 2 of $wims_read_parm
20 reyssat 32
slib_parm= !item 3 to -1 of $wims_read_parm
33
 
34
!readproc slib/stat/dataproc $slib_data
6901 bpr 35
!!! slib_x, slib_y comes from slib/stat/dataproc
20 reyssat 36
slib_u= $slib_x
37
slib_w= $slib_y
38
 
39
slib_u=!declosing $slib_u
40
slib_cntu=!itemcnt $slib_u
41
slib_w=!declosing $slib_w
42
 
43
!if $slib_w=$empty
44
slib_w=!values x for x=1 to $slib_cntu
45
!endif
46
 
47
slib_cnt=!itemcnt $slib_w
48
!if $slib_cnt = 2
49
  slib_begin=!item 1 of $slib_w
50
  slib_pas=!item 2 of $slib_w
51
  slib_w=!values $slib_begin+x*$slib_pas for x = 0 to $[$slib_cntu+1]
52
  slib_cnt=!itemcnt $slib_w
53
!endif
54
slib_w=!sort numeric item $slib_w
55
slib_x1=!item 1 of $slib_w
56
slib_x2=!item -1 of $slib_w
57
 
58
slib_ocnt=!itemcnt $slib_parm
59
!for slib_i=1 to $slib_ocnt
60
  slib_param=!item $slib_i of $slib_parm
61
  slib_param=!words2items  $slib_param
62
  !if xtics isitemof $slib_param
63
    slib_optx=1
11400 bpr 64
    slib_param=!replace internal xtics by $  in $slib_param
65
    slib_param=!replace internal = by $  in $slib_param
20 reyssat 66
    slib_param=!nonempty item $slib_param
67
    slib_param=!nospace $slib_param
68
    slib_param=!declosing $slib_param
69
    slib_cnt_ticx=!nonempty item $slib_param
70
    slib_c=!itemcnt $slib_cnt_ticx
71
 
72
    !if $slib_c=1
13586 bpr 73
      slib_arrondi=!exec pari (f(r,n)= l=if(r != 0, floor(log(abs(r))/log(10)),1) ; s =ceil(10^(-l+n-1)*r) ; s*10^(l-n+1) ); \
11418 bpr 74
   f(($slib_x2-($slib_x1))/$slib_cnt_ticx,1)
20 reyssat 75
      slib_listx=!values $[$slib_arrondi*floor($slib_x1/$slib_arrondi)]\
76
        +x*$slib_arrondi for x=0 to $[$slib_cnt_ticx+1]
77
      slib_listxx=$slib_listx
78
    !else
79
      slib_listx= $slib_param
80
      slib_listxx=$slib_w
11400 bpr 81
    !endif slib_c
20 reyssat 82
  !endif xtics
83
  !if ytics isitemof $slib_param
84
    slib_opty=1
11400 bpr 85
    slib_param=!replace ytics by $ in $slib_param
20 reyssat 86
    slib_param=!nonempty item $slib_param
11400 bpr 87
    slib_param=!words2items $slib_param
20 reyssat 88
    slib_param=!declosing $slib_param
89
    slib_param=!nonempty item $slib_param
90
    slib_pcnt=!itemcnt $slib_param
91
    !if $slib_pcnt=1
92
      slib_ra=$slib_param
93
    !endif
94
  !endif ytics
95
  !if color isitemof $slib_param
11400 bpr 96
    slib_param=!replace color by $ in $slib_param
20 reyssat 97
    slib_param=!nonempty item $slib_param
98
    couleur=$slib_param
99
  !endif
100
 
11400 bpr 101
  !if $slib_param iswordof baton stem step stair
20 reyssat 102
    slib_baton=$slib_param
103
  !endif
11400 bpr 104
  !if $slib_param iswordof html url
4178 bpr 105
    slib_option=$slib_param
106
  !endif
20 reyssat 107
!next slib_i
108
 
109
!default slib_optx=0
110
!default slib_opty=0
111
!default couleur=red
112
!default slib_listx=$slib_w
113
 
114
!if $slib_cnt <= $slib_cntu and $slib_baton notwordof baton stem
12152 bpr 115
   slib_w = !append item $[$(slib_w[-1])+($(slib_w[-1])-$(slib_w[1]))/10] to $slib_w
20 reyssat 116
   !increase $slib_cnt
117
!endif
118
 
119
!default slib_ra=5
120
slib_listx=!declosing $slib_listx
121
slib_y1=0
122
slib_y2=0
123
slib_uu=
124
 
125
!if $slib_baton iswordof baton stem
126
  slib_ww=
127
  !if $slib_baton iswordof stem
128
    slib_r=0
129
  !else
130
   slib_r=$[($slib_x2-$slib_x1)/(($slib_cntu)*4)]
131
  !endif
11400 bpr 132
  !for slib_i = 1 to $slib_cntu
20 reyssat 133
    slib_j=!item $slib_i of $slib_w
134
    slib_ww=!append item $[$slib_j+1-$slib_r],$[$slib_j+1+$slib_r] to $slib_ww
135
    slib_j=!item $slib_i of $slib_u
136
    slib_uu=!append item $slib_j,0 to $slib_uu
137
  !next slib_i
138
  slib_uu=!append item 0 to $slib_uu
139
  slib_w1=$slib_ww
140
  slib_ww=$slib_w
141
  slib_w=$slib_w1
142
  slib_x1=!item 1 of $slib_w
143
  slib_x2=!item -1 of $slib_w
144
  slib_y2=!sort numeric item $slib_u
11400 bpr 145
  slib_y2=!item -1 of $slib_y2
20 reyssat 146
  slib_cnt=!itemcnt $slib_w
147
  slib_cnt=$[$slib_cnt+1]
148
!else
149
  !if $slib_baton iswordof step stair
150
   slib_uu=$slib_u
151
   slib_x1=!item 1 of $slib_w
152
   slib_x2=!item -1 of $slib_w
153
   slib_y2=!sort numeric item $slib_u
11400 bpr 154
   slib_y2=!item -1 of $slib_y2
20 reyssat 155
   slib_cnt=!itemcnt $slib_w
156
   slib_cnt=$[$slib_cnt]
157
   !else
158
  slib_uu=
159
  !for slib_i=1 to $[$slib_cntu]
160
    slib_it=!item $slib_i of $slib_u
161
    slib_inf=!item $slib_i of $slib_w
162
    slib_sup=!item $[$slib_i+1] of $slib_w
163
    slib_it=$[$slib_it/($slib_sup-$slib_inf)]
164
    slib_y2=$[max($slib_y2,$slib_it)]
165
    slib_uu=!append item $slib_it to $slib_uu
166
  !next slib_i
167
    !endif
168
  slib_ww=$slib_w
169
 
170
!endif
4478 bpr 171
slib_pas=!exec pari (f(r,n)= l=if(r != 0, floor(log(abs(r))/log(10)),1) ; s =ceil(10^(-l+n-1)*r) ; s*10^(l-n+1) ); \
172
   f($slib_y2/$slib_ra,1)
20 reyssat 173
slib_y2=$[$slib_y2*1.1]
174
slib_ord=0
175
slib_d=$[($slib_x2-$slib_x1)/5]
176
slib_minx=$[$slib_x1*1.01]
4478 bpr 177
insdraw_size=500,200
20 reyssat 178
 
4478 bpr 179
slib_rangex=$[$slib_minx-$slib_d],$[$slib_x2+$slib_d]
180
slib_rangey=$[min(1,$slib_y1-($slib_y2-$slib_y1)/5)],$[$slib_y2]
181
 
182
!readproc slib/draw/convpixel 0,5,$insdraw_size,$[$slib_minx-$slib_d],$[$slib_x2+$slib_d],$[min(1,$slib_y1-($slib_y2-$slib_y1)/5)],$[$slib_y2]
183
slib_pix=$[$slib_y2 -$(slib_out[2])]
184
 
20 reyssat 185
!if $slib_opty !=0
186
  !for slib_i=1 to $slib_ra
187
    slib_ord=$[$slib_pas+$slib_ord]
188
    !if $slib_ord <$[$slib_y2+$slib_pas]
12152 bpr 189
      slib_grad=!append line text black,$[$slib_minx-0.8*$slib_d],$[$slib_ord+$slib_pix],small,$slib_ord to $slib_grad
4478 bpr 190
      slib_grad=!append line segment $[$slib_minx-$slib_d/10],$slib_ord,$[$slib_minx+$slib_d/10],$slib_ord,grey\
20 reyssat 191
vline $slib_minx,0,grey to $slib_grad
192
    !endif
193
  !next slib_i
194
!endif
195
!if $slib_optx!=0
196
  !if $slib_listxx=$empty
197
      slib_listxx=$slib_ww
198
  !endif
199
  slib_cnt_ticx = !itemcnt $slib_listxx
200
  !for slib_i=1 to $[$slib_cnt_ticx]
201
    slib_wi=!item $slib_i of $slib_listx
202
    slib_wj=!item $slib_i of $slib_listxx
203
 
204
    !if $slib_baton iswordof baton stem
205
      slib_wj=$[$slib_wj+1]
206
    !endif
4478 bpr 207
    slib_grad=!append line text black,$slib_wj,$[$slib_y1-2*$slib_pix],small,$slib_wi to $slib_grad
9339 bpr 208
    slib_grad=!append line segment $slib_wj,$[$slib_y1-$slib_pix],$slib_wj,$[$slib_y1+$slib_pix], grey to $slib_grad
20 reyssat 209
  !next slib_i
210
!endif
211
 
212
 
4478 bpr 213
slib_pdata=xrange $slib_rangex\
214
yrange $slib_rangey\
20 reyssat 215
$slib_grad
216
!if stair notwordof $slib_baton
217
  slib_pdata=$slib_pdata\
4178 bpr 218
lines $couleur
20 reyssat 219
!else
220
  slib_points= linewidth 4\
4478 bpr 221
points $couleur
20 reyssat 222
 !endif
223
 
224
!if stair notwordof $slib_baton and step notwordof $slib_baton
225
 !for slib_i=1 to $[$slib_cnt]
226
   slib_inf=!item $slib_i of $slib_w
227
   slib_sup=!item $[$slib_i+1] of $slib_w
228
   slib_f=!item $slib_i of $slib_uu
4478 bpr 229
   !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty
230
    slib_pdata=!append item $slib_inf,0,$slib_inf,$slib_f,$slib_sup,$slib_f,$slib_sup,0 to $slib_pdata
231
   !endif
20 reyssat 232
  !next slib_i
7692 bpr 233
 
20 reyssat 234
!endif
235
!if step iswordof $slib_baton
236
 !for slib_i=1 to $[$slib_cnt]
237
   slib_inf=!item $[$slib_i] of $slib_w
238
   slib_sup=!item $[$slib_i+1] of $slib_w
239
   slib_f=!item $slib_i of $slib_uu
4478 bpr 240
   !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty
241
    slib_pdata=!append item $slib_inf,$slib_f,$slib_sup,$slib_f to $slib_pdata
242
   !endif
20 reyssat 243
  !next slib_i
244
!endif
245
!if stair iswordof $slib_baton
246
!for slib_i=1 to $[$slib_cnt]
247
   slib_inf=!item $[$slib_i] of $slib_w
248
   slib_sup=!item $[$slib_i+1] of $slib_w
249
   slib_f=!item $slib_i of $slib_uu
4478 bpr 250
   !if $slib_f!=$empty and $slib_sup!=$empty and $slib_inf!=$empty
251
    slib_pdata=!append line line $slib_inf,$slib_f,$slib_sup,$slib_f,$couleur to $slib_pdata
252
   !endif
20 reyssat 253
   !if $slib_i < $[$slib_cnt]
254
     slib_points=!append item $slib_inf,$slib_f to $slib_points
255
   !endif
256
  !next slib_i
257
!endif
258
 
259
slib_out=$slib_pdata\
260
$slib_points\
261
linewidth 1\
262
hline 0,0,grey
4178 bpr 263
 
264
!if url iswordof $slib_option or html iswordof $slib_option
265
 !insdraw $slib_out
266
 slib_out=$ins_url
267
 !if html iswordof $slib_option
6557 bpr 268
    slib_out=<img src="$ins_url" alt="" />
4908 bpr 269
 !else
270
    slib_out=$slib_out,$insdraw_size
4178 bpr 271
 !endif
272
!endif
273
 
11400 bpr 274
!reset insdraw_size