Subversion Repositories wimsdev

Rev

Rev 4162 | Rev 7692 | 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
2
 !goto proc
3
!endif
4162 bpr 4
 
4351 bpr 5
slib_author=Georges, Khaznadar
4162 bpr 6
 
20 reyssat 7
slib_example= ,,,,,,,,,0,0,1.2,1.5,2.4,3.2\
2100 georgesk 8
12,8,0,0,1 max t (ms),1 max U (V),blue,red,[255,128,128],0,0,1.2,1.5,2.4,3.2\
9
12,8,0,0,1 max t (ms),1 max U (V),blue,red,[255,128,128],style.grad=x_only, style.dot=o,0,0,1.2,1.5,2.4,3.2
20 reyssat 10
 
11
 
12
!exit
13
 
14
:proc
15
 
2100 georgesk 16
!reset slib_formdot,slib_grad,slib_xd, slib_yd, slib_bg, slib_lc, slib_dc, slib_point, slib_xo, slib_yo, slib_xs, slib_ys, slib_labx, slib_laby, slib_maxx, slib_maxy, slib_style, slib_empty, slib_key, slib_val, slib_pos
20 reyssat 17
 
18
slib_parm=!item 1 to 9 of $wims_read_parm
19
!distribute item $slib_parm into slib_xd, slib_yd, slib_xo, slib_yo, slib_xs, slib_ys, slib_bg, slib_lc, slib_dc
20
 
21
slib_point=!item 10 to -1 of $wims_read_parm
22
 
2100 georgesk 23
slib_empty=
24
slib_style=!item 1 of $slib_point
25
slib_pos=!positionof style: in $slib_style
26
!while $slib_pos=0
27
  slib_point=!item 2 to -1 of $slib_point
28
  slib_style= !replace style: by $slib_empty in $slib_style
29
  slib_style= !replace = by , in $slib_style
30
  !distribute item $slib_style into slib_key, slib_val
31
  !if $slib_key=grad
32
    !if $slib_val=no
33
      slib_grad=0
34
    !endif
35
    !if $slib_val=x_only
36
      slib_grad=2
37
    !endif
38
    !if $slib_val=y_only
39
      slib_grad=3
40
    !endif
41
  !endif
42
  !if $slib_key=dot
43
    !if $slib_val=x
44
      slib_formdot=0
45
    !endif
46
    !if $slib_val=o
47
      slib_formdot=2
48
    !endif
49
  !endif
50
  slib_style=!item 1 of $slib_point
51
  slib_pos=!positionof style: in $slib_style
52
!endwhile
53
 
20 reyssat 54
!default slib_xd=8
55
!default slib_yd=8
56
!default slib_xo=1
57
!default slib_yo=1
58
!default slib_xs=1
59
!default slib_ys=1
2100 georgesk 60
!default slib_grad=1
61
!default slib_formdot=1
20 reyssat 62
 
63
slib_labx=!word 2 to -1 of $slib_xs
64
slib_laby=!word 2 to -1 of $slib_ys
65
slib_xs=!word 1 of $slib_xs
66
slib_ys=!word 1 of $slib_ys
67
 
68
slib_maxx=!word 1 of $slib_labx
69
!if $slib_maxx = max
70
  slib_labx = !word 2 to -1 of $slib_labx
71
  !! we need to compute the X step slib_xs, given the values
72
  !! of the total width slib_xd, abscissa of origin slib_xo
73
  !! and knowing that slib_xs currently means a maximum value.
74
  !! slib_xd-slib_xo must be be sufficient to display ticks greater
75
  !! than the current value of slib_xs, the tick step being a multiple
76
  !! of 1, 2 or 5.
77
  slib_log=$[log10($slib_xs/($slib_xd-$slib_xo))]
78
  slib_logint=$[floor($slib_log)]
79
  slib_logmant=$[$slib_log-$slib_logint]
80
  !if $slib_logmant > $[log10(5)]
81
     slib_xs=1e$[$slib_logint+1]
82
  !else
83
    !if $slib_logmant > $[log10(2)]
84
      slib_xs=5e$slib_logint
85
    !else
86
      slib_xs=2e$slib_logint
87
    !endif
88
  !endif
89
!else
90
  slib_maxx=$empty
91
!endif
92
 
93
slib_maxy=!word 1 of $slib_laby
94
!if $slib_maxy = max
95
  slib_laby = !word 2 to -1 of $slib_laby
96
  !! we need to compute the Y step slib_ys, given the values
97
  !! of the total height slib_yd, ordinate of origin slib_yo
98
  !! and knowing that slib_ys currently means a maximum value.
99
  !! slib_yd-slib_yo must be be sufficient to display ticks greater
100
  !! than the current value of slib_ys, the tick step being a multiple
101
  !! of 1, 2 or 5.
102
  slib_log=$[log10($slib_ys/($slib_yd-$slib_yo))]
103
  slib_logint=$[floor($slib_log)]
104
  slib_logmant=$[$slib_log-$slib_logint]
105
  !if $slib_logmant > $[log10(5)]
106
     slib_ys=1e$[$slib_logint+1]
107
  !else
108
    !if $slib_logmant > $[log10(2)]
109
      slib_ys=5e$slib_logint
110
    !else
111
      slib_ys=2e$slib_logint
112
    !endif
113
  !endif
114
!else
115
  slib_maxy=$empty
116
!endif
117
 
118
slib_dc=!declosing $slib_dc
119
 
120
slib_point=!declosing $slib_point
121
 
122
slib_bg=!declosing $slib_bg
123
!default slib_bg=240,233,255
124
 
125
slib_lc=!declosing $slib_lc
126
!default slib_lc=255,220,180
127
 
128
slib_dc=!declosing $slib_dc
129
!default slib_dc=10,10,10
130
 
131
!!!!!!!!!!!!!!!!! begin grid !!!!!!!!!!!!!!!!!!!!!!!!!
132
 
133
slib_grey=128,128,128
134
 
135
slib_dessin = new 60*$slib_xd,60*$slib_yd\
136
xrange -0.5, 10*$slib_xd-0.5\
137
yrange -0.5, 10*$slib_yd-0.5\
138
fill 1,1,$slib_bg
139
 
140
!! traits fins tous les millimetres
141
slib_dessin=$slib_dessin\
142
linewidth 1\
143
parallel 0, 0, 0, 10*$slib_yd, 1, 0, 10*$slib_xd+1, $slib_lc\
144
parallel 0, 0, 10*$slib_xd, 0, 0, 1, 10*$slib_yd+1, $slib_lc
145
 
146
!! traits gros tous les centimetres
147
slib_dessin=$slib_dessin\
148
linewidth 3\
149
parallel 0, 0, 0, 10*$slib_yd, 10, 0, $slib_xd+1, $slib_lc\
150
parallel 0, 0, 10*$slib_xd, 0, 0, 10, $slib_yd+1, $slib_lc
151
 
152
!! axe_x
153
slib_dessin=$slib_dessin\
154
linewidth 3\
155
hline 0, $[10*$slib_yo], $slib_grey\
156
line $[10*$slib_xd-3],$[10*$slib_yo-1],$[10*$slib_xd-1],$[10*$slib_yo], $slib_grey\
157
line $[10*$slib_xd-3],$[10*$slib_yo+1],$[10*$slib_xd-1],$[10*$slib_yo], $slib_grey\
158
parallel 0,$[10*$slib_yo+1],0,$[10*$slib_yo-1], 10, 0, $slib_xd+1, $slib_grey
159
 
160
slib_val=$[-$slib_xo*$slib_xs]
161
slib_dessin=$slib_dessin\
162
linewidth 1
2100 georgesk 163
!if ($slib_grad=2 or $slib_grad=1)
20 reyssat 164
!for slib_x from 0 to  10*$slib_xd step 10
165
 slib_dessin=$slib_dessin\
166
 text blue,$[$slib_x+1],$[10*$slib_yo-1],medium,$slib_val
167
 slib_val=$[$slib_val+$slib_xs]
168
!next slib_x
169
!if $slib_labx != $empty
170
  slib_dessin=$slib_dessin\
171
  text blue,$[$slib_x-20],$[10*$slib_yo-6],medium,$slib_labx
172
!endif
2100 georgesk 173
!endif
20 reyssat 174
 
175
!! axe_y
176
slib_dessin=$slib_dessin\
177
linewidth 3\
178
vline $[10*$slib_xo],0, $slib_grey\
179
line $[10*$slib_xo-1],$[10*$slib_yd-3],$[10*$slib_xo],$[10*$slib_yd-1], $slib_grey\
180
line $[10*$slib_xo+1],$[10*$slib_yd-3],$[10*$slib_xo],$[10*$slib_yd-1], $slib_grey\
181
parallel $[10*$slib_xo+1],0,$[10*$slib_xo-1], 0, 0, 10, $slib_yd+1, $slib_grey
182
 
183
slib_val=$[-$slib_yo*$slib_ys]
184
slib_dessin=$slib_dessin\
185
linewidth 1
2100 georgesk 186
!if ($slib_grad=3 or $slib_grad=1)
20 reyssat 187
!for slib_y from 0 to  10*$slib_yd step 10
188
 slib_dessin=$slib_dessin\
189
 text blue,$[10*$slib_xo+1],$[$slib_y-1],medium,$slib_val
190
 slib_val=$[$slib_val+$slib_ys]
191
!next slib_y
192
!if $slib_laby != $empty
193
  slib_dessin=$slib_dessin\
194
  text blue,$[10*$slib_xo-9],$[$slib_y-10],medium,$slib_laby
195
!endif
2100 georgesk 196
!endif
20 reyssat 197
 
198
!!!!!!!!!!!!!!!!! end grid !!!!!!!!!!!!!!!!!!!!!!!!!
199
 
200
slib_i=0
201
!for slib_xy in $slib_point
202
!if $slib_i=0
203
slib_i=1
204
slib_x=$[10*$slib_xy/$slib_xs]
205
!goto continue
206
!endif
207
!if $slib_i=1
208
slib_i=0
209
slib_y=$[10*$slib_xy/$slib_ys]
2100 georgesk 210
!if $slib_formdot=0
20 reyssat 211
slib_x1=$[10*$slib_xo+$slib_x-0.6]
212
slib_x2=$[10*$slib_xo+$slib_x+0.6]
213
slib_y1=$[10*$slib_yo+$slib_y-0.6]
214
slib_y2=$[10*$slib_yo+$slib_y+0.6]
215
slib_dessin=$slib_dessin\
216
linewidth 2\
217
line $slib_x1,$slib_y1,$slib_x2,$slib_y2,$slib_dc\
218
line $slib_x2,$slib_y1,$slib_x1,$slib_y2,$slib_dc
219
!endif
2100 georgesk 220
!if $slib_formdot=1
221
slib_x1=$[10*$slib_xo+$slib_x-1]
222
slib_x2=$[10*$slib_xo+$slib_x+1]
223
slib_x3=$[10*$slib_xo+$slib_x]
224
slib_y1=$[10*$slib_yo+$slib_y]
225
slib_y2=$[10*$slib_yo+$slib_y+1]
226
slib_y3=$[10*$slib_yo+$slib_y-1]
227
slib_dessin=$slib_dessin\
228
linewidth 2\
229
line $slib_x1,$slib_y1,$slib_x2,$slib_y1,$slib_dc\
230
line $slib_x3,$slib_y2,$slib_x3,$slib_y3,$slib_dc
231
!endif
232
!if $slib_formdot=2
233
 slib_dessin=$slib_dessin\
234
  linewidth 1\
235
  circle $slib_xo+$slib_x,$slib_yo+$slib_y,6,$slib_dc
236
!endif
237
!endif
20 reyssat 238
:continue
239
!next slib_xy
240
 
241
slib_out= $slib_dessin