Rev 18642 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
16849 | obado | 1 | # Canvasdraw changes log |
2 | ## TODO : |
||
3 | - sort out the global/local variable mess...and reorganize headerfile |
||
17576 | obado | 4 | : zooming and grid: scaling needs to be more adaptive! (use constant amount of grid lines) |
18606 | bpr | 5 | ## 2025 (bpr-bernardi) |
18643 | schaersvoo | 6 | 2025/06/28: corrected problems with jsplot and opacity & multistrokeopacity |
18642 | schaersvoo | 7 | 2025/06/27: corrected (fill)opacity to colorpalette & userdraw clickfill,color |
18607 | bpr | 8 | 2025/06/21: do vlines as vline, hlines as hline to avoid leaks |
9 | change parseFloat in Math.trunc and ajust x2px y2px |
||
10 | 2025/06/16: modifications (no change, just way to go to CASE) |
||
18155 | schaersvoo | 11 | ## 2024 |
18218 | schaersvoo | 12 | * 23/5/2024: add 'exp' to "to_js_math()" |
18571 | bpr | 13 | * 1/5/2024: command "dashtype" was gone fishing...there must be a much better way of dealing with prefix "dash"... |
18160 | schaersvoo | 14 | * 31/4/2024: work in progress: rewrite reset,noreset ! |
18155 | schaersvoo | 15 | * 28/4/2024: prefix "dash" may be used by all 'dashable' objects |
18571 | bpr | 16 | which is an overload on 'dashable' syntax !! |
18155 | schaersvoo | 17 | use commands "noreset" and "dashed" to 'dash' all following objects...until command 'reset' |
18 | size 200,200 |
||
19 | xrange -10,10 |
||
20 | yrange -10,10 |
||
21 | noreset |
||
22 | dashed |
||
23 | hline ... |
||
24 | vline ... |
||
25 | polyline ... |
||
26 | rect ... |
||
27 | circle ... |
||
28 | reset |
||
29 | etc etc |
||
18071 | schaersvoo | 30 | * 1/3/2024: quick fix for halfline |
31 | ## 2023 |
||
17586 | schaersvoo | 32 | * 23/2/2023: minor improvement for sub/sup routine for command family strings (use of space is optional) |
17583 | schaersvoo | 33 | * 22/2/2023: snaptopoints may be called multiple times (no limit) And restored MAX_INT to 128 (but it's open for change, anyway) |
17581 | bpr | 34 | * 22/2/2023: increase the limit MAX_INT to 256 |
17576 | obado | 35 | * 21/2/2023: canvasmultidraw now place object with relative coords (%) instead of absolute (px) |
17518 | schaersvoo | 36 | * 13/1/2023: corrected flaw in external images 'copy & drag/drop' |
16849 | obado | 37 | ## 2022 |
17425 | schaersvoo | 38 | * 28/8/2022: added command "newrange xmin,xmax,ymin,ymax" see https://wimsedu.info/?topic=dessiner-des-portions-de-fonctions-sur-un-meme-graphe |
16942 | schaersvoo | 39 | * 01/8/2022: getMouse(),latest improvements related to 'reponsiveness' will fatally lockup browsers in the pixel-by-pixel filling...at least in userdraw clickfill |
16920 | schaersvoo | 40 | * 19/7/2022: checked and corrected 'dashed' objects like arc,arrowarc,ellipse... |
17581 | bpr | 41 | * 16/7/2022: solved long standing issue of dashed arrow(s) and dashed arrow(s)2 |
17576 | obado | 42 | * 06/7/2022: clearbutton preserves div's with '<' && '/>' and objects placed with `placed_image_on_canvas(id)` e.g. with `id = placed*` |
16910 | schaersvoo | 43 | * 05/7/2022: corrected flaw in 'clearbutton' https://wimsedu.info/?topic=geometrie-interactive-avec-canvasdraw |
16892 | schaersvoo | 44 | * 05/7/2022: command 'group' : |
45 | - still some issues with direct clicks on group members (NaN due to competing mouselisteners) |
||
46 | - removed 'debug newlines' |
||
47 | - external images -via command 'copy' NOT supported (too much trouble) |
||
48 | - need to add 'copy' to dragstuff library or introduce another command... |
||
16872 | schaersvoo | 49 | * 26/6/2022: added keyword 'group' : provides mouse-driven movements of all objects after keyword 'group' until keyword 'kill group; |
50 | - may be combined with 'slider' to move or rotate single objects or grouped objects |
||
51 | - may not be combined with command 'drag xy' (mouse listeners are already occupied...) |
||
52 | - may be combined with command 'onclick' |
||
16882 | schaersvoo | 53 | - added objects created by command 'latex' to grouping (todo : external images etc) |
16872 | schaersvoo | 54 | |
16849 | obado | 55 | * 23/6/2022: corrected drag&drop reply of external images (via command 'copy') when mixed with other external/internal objects... |
56 | |||
57 | # |
||
58 | size 400,400 |
||
59 | xrange -10,10 |
||
60 | yrange -10,10 |
||
61 | grid 2,2,grey |
||
62 | linewidth 2 |
||
63 | onclick |
||
64 | fcircle -6,6,50,red |
||
65 | onclick |
||
66 | fcircle -6,-6,50,green |
||
67 | noreset |
||
68 | snaptogrid |
||
69 | drag xy |
||
70 | centered |
||
71 | latex 0,0,\frac{12345}{23456} \times \frac{12345}{23456} |
||
72 | translate 4,4 |
||
73 | html 0,0,<table style='border:solid red 2px'><tr><th>HTML TABLE</th></tr><tr><td><img src="gifs/en.gif" /></tr><tr><td><img src="gifs/nl.gif" /></tr><tr><td><img src="gifs/fr.gif" /></tr><tr><td><img src="gifs/cn.gif" /></tr><tr><td><img src="gifs/it.gif" /></tr></table> |
||
74 | userdraw arrow2,red |
||
75 | translate 8,8 |
||
76 | copy 0,0,-1,-1,-1,-1,gifs/nl.gif |
||
77 | |||
78 | * 20/6/2022: Start to make canvasdraw responsive [OB] : |
||
16845 | bpr | 79 | - reduce size on small screens, |
80 | - use percentage instead of absolute positioning for xml/html/tex |
||
81 | - convert mouse position coords on shrinked canvas |
||
82 | - correct mouse coordinates when inside a scrolled wims_scrollable div |
||
16849 | obado | 83 | - Replace "Ariel" font references by "Arial" |
84 | * 19/6/2022: added function plot to multidraw (https://wimsedu.info/?topic=userinput-function) |
||
85 | command 'multidraw functions' will -for now- give just 2 inputfields... *TODO*: make configurable, so implement commands like 'multidraw functions5') |
||
86 | for multiple function input fields, use multiple keywords 'function', e.g. something like: |
||
87 | multidraw text,line,function,function,function,points |
||
88 | * 27/5/2022: added subsup to userdraw and multidraw 'text' (which is always 'centered' e.g use_offset=4) |
||
17581 | bpr | 89 | * 26/5/2022: corrected replyformat 100 |
16849 | obado | 90 | * 23/5/2022: overriding fontfamily and use Helvetica as font for _sub ^sup strings: all inline numbers are in script-size (80% eg the same as strings+numbers for sub/sup) |
17581 | bpr | 91 | * 21/5/2022: using 'scriptsize' imitation on sub / sup |
16849 | obado | 92 | * 20/5/2022: added a sub / sup imitation to the canvas 'string' command family |
16700 | schaersvoo | 93 | |
16849 | obado | 94 | size 400,400 |
95 | xrange -6,6 |
||
96 | yrange -6,6 |
||
97 | fontfamily 22px Arial |
||
16700 | schaersvoo | 98 | |
16849 | obado | 99 | # use single space for separation in formula... |
100 | # use double space to create new word |
||
101 | string red,-5,0,H_3 O^+ + OH^\u2212 \u2192 2H_2 O |
||
16845 | bpr | 102 | |
16849 | obado | 103 | * 2/4/2022: added timeout fix for centering issue in case of MathJaX (draw_xml()) |
15758 | schaersvoo | 104 | |
16849 | obado | 105 | ## 2021 |
106 | * 14/4/2021: added flydraw command 'range xmin,xmax,ymin,ymax' |
||
107 | * 6/4/2021: corrected 'text objects' (from cmd's text/string) were not added to 'noreset', e.g. keyword 'noreset' was ignored... |
||
17581 | bpr | 108 | added a live example from E3/number/oefgraduation.fr |
16849 | obado | 109 | * 4/4/2021: corrected use of precompiler directive "KATEX_INSTALLED" (was not working...) |
110 | * 12/3/2021: add "version 0.5" to canvasdraw include file |
||
111 | * 23/2/2021: |
||
15716 | schaersvoo | 112 | added generic command 'kill argument' |
113 | work in progress |
||
15717 | schaersvoo | 114 | corrected wrong alternative command for jscurve |
16849 | obado | 115 | * 21/2/2021: |
15715 | schaersvoo | 116 | alternative commands now 'seachable' using js-function look() |
16849 | obado | 117 | * 19/2/2021: |
15711 | schaersvoo | 118 | slightly improved dashing of arrows (in dragstuff,userdraw & multidraw) |
119 | to test : other objects+dashing ! |
||
120 | resetting dashing for the arrow head (head was also dashed...) |
||
121 | see https://wimsedu.info/?topic=dashed-arrows-not-dashed-in-canvasdraw |
||
16849 | obado | 122 | * 2/2/2021: |
15690 | schaersvoo | 123 | added command 'arcarrow|arrowarc', left,right,left/right |
124 | added commands 'arc','angle','arcarrow' to onclick and drag&drop |
||
17581 | bpr | 125 | * 17/1/2021: |
15672 | schaersvoo | 126 | corrected syntax issue in canvasmultidraw.c signalled by Opera Presto : 'forbidden function user_drawstop(evt) declaration in statement'*/ |
15674 | schaersvoo | 127 | |
15673 | schaersvoo | 128 | can not correct centering in case of MathJaX, in commands like |
16849 | obado | 129 | |
130 | ``` |
||
15672 | schaersvoo | 131 | #### |
15673 | schaersvoo | 132 | centered |
15672 | schaersvoo | 133 | math 0,0,\frac{1}{222} |
134 | #### |
||
16849 | obado | 135 | ``` |
136 | |||
15674 | schaersvoo | 137 | Things get even worse when activating in exec.c the "Safari/MathJax bugfix : refresh display when document ready." |
138 | (besides the ridiculous delay !!) |
||
139 | You should really try KaTeX on these systems/browsers !!! |
||
15672 | schaersvoo | 140 | |
15673 | schaersvoo | 141 | OEF example of the problem: |
16849 | obado | 142 | |
143 | ``` |
||
15672 | schaersvoo | 144 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
145 | \text{m1=wims(mathmlmath \frac{12344}{\pi\pi\pi\pi^{\pi}})} |
||
146 | \text{m2=wims(mathmlmath \frac{\pi\pi\pi\pi^{\pi}}{\alpha})} |
||
147 | \text{m3=wims(mathmlmath \sqrt{\pi\pi\pi\pi^{\pi}})} |
||
148 | \text{m4=wims(mathmlmath \sqrt{\frac{1223}{3344}})} |
||
149 | |||
150 | \statement{ |
||
151 | <script type="text/javascript"> |
||
152 | function read_canvas(){ |
||
153 | var fun = eval("read_canvas"+canvas_scripts[0]); |
||
154 | if( typeof fun === 'function'){ return fun();}; |
||
155 | }; |
||
156 | function read_dragdrop(){ |
||
17581 | bpr | 157 | var fun = eval("read_dragdrop"+canvas_scripts[0]); |
15672 | schaersvoo | 158 | if(typeof fun === 'function'){return fun();}; |
159 | }; |
||
160 | |||
161 | </script> |
||
162 | <br/> |
||
163 | <span id="m1" onclick="javascript:place_image_on_canvas(this.id)" >\m1</span> |
||
164 | <span id="m2" onclick="javascript:place_image_on_canvas(this.id)" >\m2</span> |
||
165 | <span id="m3" onclick="javascript:place_image_on_canvas(this.id)" >\m3</span> |
||
166 | <span id="m4" onclick="javascript:place_image_on_canvas(this.id)" >\m4</span> |
||
167 | |||
168 | \canvasdraw{400,400}{ |
||
169 | xrange -10,10 |
||
170 | yrange -10,10 |
||
171 | grid 1,1,grey |
||
172 | noreset |
||
173 | # use keyword 'noreset' to avoid using keyword 'centered' before every addition of objects ! |
||
174 | centered |
||
175 | fontfamily Bold Italic 42pt Courier |
||
176 | # these images are internal the reply prefix is imagepalette_0, imagepalette_1... !! |
||
177 | imagepalette gifs/ca.gif,gifs/en.gif,gifs/nl.gif,gifs/fr.gif,gifs/cn.gif,gifs/de.gif,gifs/kh.gif,gifs/it.gif |
||
178 | multicolors red,green,blue,lightblue,cyan |
||
179 | multisnaptogrid 1,1,1,1,0 |
||
180 | multilinewidth 0,4,0,3,1 |
||
181 | multidraw text,arrow,images,points,lines |
||
182 | math -6,6,\frac{1}{\pi} |
||
183 | math -2,2,\frac{1}{\pi} |
||
184 | math 2,-2,\frac{1}{\pi} |
||
185 | math 6,-6,\frac{1}{\pi} |
||
186 | linewidth 3 |
||
187 | points red,-6,6,-2,2,2,-2,6,-6 |
||
188 | mouse red,22 |
||
189 | } |
||
190 | |||
191 | |||
192 | These images are external...The reply id-prefix is "placed_0_'this.id'" |
||
193 | <table><tr> |
||
194 | <td><img src="gifs/ca.gif" onclick='javascript:place_image_on_canvas(this.id);' id="ca" /></td> |
||
195 | <td><img src="gifs/nl.gif" onclick='javascript:place_image_on_canvas(this.id);' id="nl" /></td> |
||
196 | <td><img src="gifs/en.gif" onclick='javascript:place_image_on_canvas(this.id);' id="en" /></td> |
||
197 | <td><img src="gifs/fr.gif" onclick='javascript:place_image_on_canvas(this.id);' id="fr" /></td> |
||
198 | <td><img src="gifs/cn.gif" onclick='javascript:place_image_on_canvas(this.id);' id="cn" /></td> |
||
199 | <td><img src="gifs/it.gif" onclick='javascript:place_image_on_canvas(this.id);' id="it" /></td> |
||
200 | <td><img src="gifs/kh.gif" onclick='javascript:place_image_on_canvas(this.id);' id="kh" /></td> |
||
201 | <td><img src="gifs/de.gif" onclick='javascript:place_image_on_canvas(this.id);' id="de" /></td> |
||
202 | </tr> |
||
203 | </table> |
||
204 | <input type="button" onclick="alert(read_canvas());" value="read_canvas()" /> |
||
205 | <input type="button" onclick="alert(read_dragdrop());" value="read_dragdrop()" /> |
||
206 | } |
||
16849 | obado | 207 | ``` |
15672 | schaersvoo | 208 | |
16849 | obado | 209 | * 15/1/2021: |
15665 | schaersvoo | 210 | corrected long standing flaw regarding "centered" on external stuff...tested: bitmap,svg,TeX [on KaTeX] |
15669 | schaersvoo | 211 | corrected 'onclick' for 'draw_xml()' |
15665 | schaersvoo | 212 | |
17581 | bpr | 213 | * 14/1/2021: |
15657 | schaersvoo | 214 | only on KaTeX enabled wims, a slider title may use TeX produced by command "mathmlmath" |
16849 | obado | 215 | |
216 | * 13/1/2021: |
||
15655 | schaersvoo | 217 | slider title may use TeX produced by command "mathmlmath" |
218 | |||
16849 | obado | 219 | => oef example... |
220 | |||
221 | ``` |
||
15655 | schaersvoo | 222 | \title{slider + tex title} |
223 | \text{A = \frac{1}{2}} |
||
224 | \text{B = \frac{1}{3}} |
||
225 | \text{C = \frac{1}{4}} |
||
15657 | schaersvoo | 226 | \text{a = \(\frac{1}{2}\)} |
15655 | schaersvoo | 227 | \text{b = wims(mathmlmath \\Huge \\frac{1}{3} )} |
228 | \text{c = wims(mathmlmath \\Huge \\frac{1}{4} )} |
||
229 | \text{canvas=wims(exec canvasdraw |
||
230 | size 400,400 |
||
231 | xrange -10,10 |
||
232 | yrange -10,10 |
||
16849 | obado | 233 | fontfamily 38px Arial |
15655 | schaersvoo | 234 | opacity 255,40 |
235 | grid 1,1,grey |
||
236 | strokecolor red |
||
15657 | schaersvoo | 237 | slider -10,10,400,50,x active,\( \frac{1}{2} \) |
15655 | schaersvoo | 238 | frect -6,5,-4,-5,red |
239 | centered |
||
240 | latex -5,0,\A |
||
241 | killslider |
||
242 | strokecolor blue |
||
243 | slider -10,10,400,50,x active,\b |
||
244 | frect -6,5,-4,-5,blue |
||
245 | centered |
||
246 | latex -5,0,\B |
||
247 | killslider |
||
248 | strokecolor green |
||
249 | slider -10,10,400,50,x active,\c |
||
250 | frect -6,5,-4,-5,green |
||
251 | centered |
||
252 | latex -5,0,\C |
||
253 | killslider) |
||
254 | } |
||
255 | \statement{ |
||
256 | canvas = \canvas |
||
17581 | bpr | 257 | } |
16849 | obado | 258 | ``` |
15655 | schaersvoo | 259 | |
16849 | obado | 260 | * 8/1/2021: |
15646 | schaersvoo | 261 | added affine transformation to Fly text commmand analogue |
15655 | schaersvoo | 262 | |
16849 | obado | 263 | * 3/1/2021: |
15628 | schaersvoo | 264 | added check on 'nan' in case of parametric curve |
16849 | obado | 265 | size 260,220 |
266 | xrange 0,13 |
||
267 | yrange 0,11 |
||
268 | trange 0,2 |
||
269 | curve black,1/t,4*sin(t) |
||
15540 | schaersvoo | 270 | |
16849 | obado | 271 | |
272 | ## 2020 |
||
273 | * 29/12/2020: |
||
15623 | schaersvoo | 274 | disabled limitation of adding "curve points outside the visual ymin/ymax range" (parametric curves) |
275 | |||
16849 | obado | 276 | * 27/12/2020: |
15611 | schaersvoo | 277 | corrected command "parallel" , to be more compatible with flydraw & affine transformations |
15613 | schaersvoo | 278 | when a transformation is set before command parallel...the lines may be set onclick or drag xy! |
15611 | schaersvoo | 279 | |
16849 | obado | 280 | * 24/12/2020: |
15601 | schaersvoo | 281 | solved some issues with curve & affine/rotate... |
16849 | obado | 282 | see [https://wimstest1.di.u-psud.fr/wims/wims.cgi?lang=en&module=adm/doc&cmd=new&job=read&doc=1028&block=transform]() |
15601 | schaersvoo | 283 | |
16849 | obado | 284 | ``` |
15601 | schaersvoo | 285 | size 200,200 |
286 | xrange -5,5 |
||
287 | yrange -5,5 |
||
288 | linewidth 2 |
||
289 | trange 0,1 |
||
290 | curve blue,2*t,sin(2*pi*t) |
||
291 | affine 0,1,1,2,-1,1 |
||
292 | trange 0,1 |
||
293 | curve green,2*t,sin(2*pi*t) |
||
16849 | obado | 294 | ``` |
15601 | schaersvoo | 295 | |
16849 | obado | 296 | * 22/12/2020: |
297 | command "fillpattern image_url" was gone fishing! `get_image_from_url()` needs to be called after function definition.. |
||
17581 | bpr | 298 | * 16/11/2020: |
16849 | obado | 299 | - added 'affine' to curve evaluation |
15540 | schaersvoo | 300 | |
16849 | obado | 301 | ``` |
302 | size 220,220 |
||
303 | xrange -5,5 |
||
304 | yrange -5,5 |
||
305 | hline 0,0,black |
||
306 | vline 0,0,black |
||
307 | rotationcenter 0,0 |
||
308 | slider -2*pi,2*pi,200,28,angle degree active,Rotate |
||
309 | linewidth 4 |
||
310 | curve blue,sin(x) |
||
311 | affine 1,-0.2,-0.6,1,0,2 |
||
312 | curve red,sin(x) |
||
313 | ``` |
||
15540 | schaersvoo | 314 | |
17581 | bpr | 315 | * 13/11/2020: |
16849 | obado | 316 | - added `safe_eval()` to userinput (using inputfields) |
7614 | schaersvoo | 317 | |
16849 | obado | 318 | * 8/7/2020: |
319 | - command `input x,y,size,readonly,value` gave canvaserror when 'value' was ommitted or a 'space' |
||
320 | - corrected bug [https://wimsedu.info/?topic=bug-canvasdraw-et-ou-drawinput]() |
||
321 | ``` |
||
322 | case 4: temp = get_string(infile,1); ---> case 4: temp = get_string(infile,3); |
||
323 | ``` |
||
324 | * 14/6/2020: |
||
325 | - corrected bug in multidraw snaptopoints+curvedarrow |
||
326 | * 11/6/2020: |
||
327 | - added 'touchend' to improve behaviour of touch devices in case 'userdraw' and 'multidraw' [TO TEST] |
||
328 | * 9/6/2020 |
||
329 | - touchend not supported (eg lifting finger+tapping after dragging to signal some 'corner point') |
||
330 | - in case of touch devices, use commands 'userinput' to enforce mathematical precise drawing and not finger painting... |
||
331 | - function calc_lines(): 'multidraw lines' & 'userdraw line,color' returned (xmin:y1)--(xmax:y2) |
||
332 | that should have been (x1:y1)---(x2:y2) ...otherwise snaptogrid gives float values ! |
||
333 | * 8/6/2020: |
||
334 | - added command 'noreset' or 'killreset' |
||
335 | * 5/6/2020: |
||
336 | - solved issue of sync loading of images (`command:html 0,0,<img src="modules/U2/geometry/oefrosoni.it/images/273x273/fig4.png" />`) |
||
337 | |||
338 | ``` |
||
339 | size 400,400 |
||
340 | xrange -6,6 |
||
341 | yrange -6,6 |
||
342 | fontsize 40 |
||
343 | linewidth 1 |
||
17581 | bpr | 344 | slider -10,10,300,28,angle active degree, |
16849 | obado | 345 | centered |
346 | html 0,0,<img src="modules/U2/geometry/oefrosoni.it/images/273x273/fig4.png" /> |
||
347 | killslider |
||
348 | centered |
||
349 | html 0,0,<img src="modules/U2/geometry/oefrosoni.it/images/273x273/fig4_ovr.png" /> |
||
350 | ``` |
||
351 | |||
352 | - commands math, katex, latex are identical |
||
353 | - added compile time checking of 'katex.c' presence: |
||
15111 | schaersvoo | 354 | if present: use KaTeX for all browsers |
355 | if not present: use MathJaX (chrome) or native MathML (firefox) |
||
16849 | obado | 356 | - TO DO: check if this actually works on non-KaTeX... |
7614 | schaersvoo | 357 | |
16849 | obado | 358 | * 25/5/2020: |
359 | - removed js-code for rotating (and transforming mouse-coordinates...) Now coordinates are transformed in C |
||
360 | - slider, solved several issues (removed old slider stuff) |
||
361 | - animated slider may be combined with manual/mouse slider |
||
362 | - slider corrected for touch device |
||
363 | * 24/5/2020: |
||
364 | - add keyword 'animate' to slider |
||
7614 | schaersvoo | 365 | |
16849 | obado | 366 | ``` |
367 | size 300,300 |
||
368 | xrange -6,6 |
||
369 | yrange -6,6 |
||
370 | grid 1,1,grey |
||
371 | linewidth 1 |
||
372 | slider 0,2*pi,300,28,angle animate active, no |
||
373 | opacity 255,30 |
||
374 | ftriangle 2,2,-2,2,0,0,red |
||
375 | ftriangle -2,2,-2,-2,0,0,blue |
||
376 | ftriangle -2,-2,2,-2,0,0,green |
||
377 | ftriangle 2,-2,2,2,0,0,orange |
||
378 | rotationcenter 0,0 |
||
379 | frect -2,2,2,-2,black |
||
380 | ``` |
||
7614 | schaersvoo | 381 | |
382 | |||
16849 | obado | 383 | * 22/5/2020: |
384 | - slider things... |
||
385 | * 21/5/2020: |
||
386 | - minor changes: not yet really satisfied with combinations of xml+dragdrop+slider |
||
387 | - some doc examples |
||
388 | * 20/5/2020: |
||
389 | - slider reorganized: |
||
390 | - restored all listeners on slider.(mousedown ,mousemove and mouseup) |
||
391 | - update example 'angle': angle and arc are exceptions in case of sliders...they are always active (e.g. not click-activated) |
||
392 | - added 'onclick=4' : in case of sliders ,no need for click-on-object to active the object--slider (important for objects covering each other) |
||
393 | |||
394 | * 18/5/2020: |
||
395 | - restored interaction of commands 'arc' and 'angle' with sliders (specially Rotate) |
||
396 | - drawxml() objects like katex,mathml,latex,html,obabel now interact identical as |
||
15111 | schaersvoo | 397 | dragstuff library objects with slider...eg. 'first click'=select for sliders, 'second click' unselect sliders |
16849 | obado | 398 | e.g.: `slidergroup[object_cnt] = obj or slidergroup[object_cnt] = null` |
15111 | schaersvoo | 399 | selected sliders until 'killslider' |
17581 | bpr | 400 | |
16849 | obado | 401 | ``` |
402 | ###################################################### |
||
403 | size 500,500 |
||
404 | xrange -6,6 |
||
405 | yrange -6,6 |
||
406 | grid 1,1,grey |
||
407 | fontfamily 42px Arial |
||
408 | opacity 255,60 |
||
409 | centered |
||
410 | #drag xy |
||
411 | snaptogrid |
||
412 | slider -10,10,500,50,angle,R |
||
413 | slider -10,10,500,50,x,X |
||
414 | slider -10,10,500,50,y,Y |
||
415 | # these objects act -if selected- on the above sliders |
||
416 | katex 3,3,\frac{123}{123^{\pi}} |
||
417 | centered |
||
418 | obabel 0,0,smi,-:c1cccc1cc,-xb none -xP100 |
||
419 | filled |
||
420 | fillcolor blue |
||
421 | angle 0,0,4,0,0,red |
||
422 | killslider |
||
423 | linewidth 4 |
||
424 | slider -10,10,500,50,angle,Rotate rect |
||
425 | # if selected this object will use only the above slider |
||
426 | frect -5,5,-4,4,red |
||
427 | ########################################################## |
||
428 | ``` |
||
15271 | bpr | 429 | |
16849 | obado | 430 | * 15/5/2020: |
431 | - further reduced size of 'plain' grid (like 'grid 1,1,grey') |
||
432 | - using uniform "slidergroup[object_cnt] = object" to avoid difficulies with reply's of dragstuff/xml [IN PROGRESS] __ |
||
433 | - slider appearance changed to : _____\/______________ |
||
7614 | schaersvoo | 434 | |
16849 | obado | 435 | - xml-objects (katex/latex/mathml/html) and slider: onclick will activate slider for object and deactivate after second click |
14071 | bpr | 436 | |
16849 | obado | 437 | ``` |
438 | size 500,500 |
||
439 | xrange -6,6 |
||
440 | yrange -6,6 |
||
441 | grid 1,1,grey |
||
442 | fontfamily 42px Arial |
||
443 | strokecolor red |
||
444 | fillcolor orange |
||
445 | #rotationcenter 0,0 |
||
446 | slider -12,12,500,50,angle,rotate |
||
447 | katex 0,0,\frac{1}{2} |
||
448 | katex 3,3,\frac{1}{3} |
||
449 | katex -3,3,\frac{9}{3} |
||
450 | #latex 0,0,\frac{1}{2} |
||
451 | #latex 3,3,\frac{1}{3} |
||
452 | #latex -3,3,\frac{9}{3} |
||
453 | obabel 0,5,smi,-:c1cFccc1cc,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP100,-h |
||
454 | html 3,-3,<img src='gifs/en.gif' /> |
||
455 | html 4,-2,<H2>OK?</H2> |
||
456 | html -4,-2,<input size='4' value='?" /> |
||
457 | ``` |
||
14071 | bpr | 458 | |
16849 | obado | 459 | - added import of 'TD' and 'TH' elements with an unique 'id' and onclick='javascript:place_image_on_canvas(this.id)' to the canvas |
14071 | bpr | 460 | |
16849 | obado | 461 | * 13/5/2020: |
462 | - fixed several incompatibilities |
||
463 | - moved legend_cnt,linegraph_cnt barchar_cnt variables (used by 'grid') to global. reducing the size of default grid |
||
464 | |||
465 | * 12/5/2020: |
||
466 | - reorganized command copy/copyresized: reply is now js-object, identical to dragstuff library |
||
467 | - onclick/drag of 'copy images' transparent integration with dragstuff objects onclick/drag and external XML material |
||
468 | - slider is not supported for flydraw analogues copy/copyresized : use command `html x,y,<img src='gifs/en.gif' />` |
||
469 | - IOS fixed (thx Olivier Obado) |
||
470 | - renamed variable 'click_cnt' into 'object_cnt' : it counts all interactive (onclick,dragdrop,slider) objects and results |
||
15111 | schaersvoo | 471 | in a uniform 'reply' object{} |
14071 | bpr | 472 | |
16849 | obado | 473 | * 8/5/2020: |
474 | - finished commands 'html','katex','latex','mathml' using draw_xml() |
||
15271 | bpr | 475 | with 'html' virtually all material can be imported |
15111 | schaersvoo | 476 | affine operations and sliders are supported |
16849 | obado | 477 | - corrected reply & slider |
478 | * 6/5/2020: |
||
479 | - added imported object to sliders [work in progress] |
||
480 | - added rotation center to draw_xml(obj); [only for command katex] |
||
481 | * 5/5/2020: |
||
482 | - changed draw_xml() to object, for importing svg,img,div,p,span,mathml,katex in canvasdraw |
||
483 | - added transformation matrix to draw_xml(). Preparing for slider manipulation of imported objects |
||
484 | * 3/5/2020: corrected error avoiding multiple calls to 'obabel' |
||
485 | * 1/5/2020: killed 'stderr' default message from 'obabel' : "converted 1 molecule" |
||
486 | * 30/4/2020: |
||
487 | - added command 'katex x,y,tex-string' |
||
488 | - thus bypassing cludge between firefox/mathml/mathjax/katex |
||
489 | - for traditional wims (using MathML) use command 'latex x,y,tex-string' or 'mathml x,y,xml-code' |
||
490 | - for katex-only wims, use only 'katex' |
||
491 | - solved 'centered' and 'snaptogrid' issues dealing with drag&drop of generated 'svg/mathml/xml/html/js-code' |
||
492 | - added link to 'howto katex and wims' |
||
7614 | schaersvoo | 493 | |
16849 | obado | 494 | * 21/4/2020: |
495 | - using execvp() to call "obabel" , using $PATH |
||
7614 | schaersvoo | 496 | |
16849 | obado | 497 | * 20/4/2020: |
498 | - changed command 'smiles' into 'obabel' |
||
499 | - now all formats may be used as input |
||
500 | - obabel 5,5,mol,$module_dir/mymolfile.mol,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP180,-h |
||
501 | - obabel -5,-5,smi,-:c1ccFccc1,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP180,-h |
||
502 | - added check on 'forbidden argument' to call obabel |
||
14071 | bpr | 503 | |
16849 | obado | 504 | * 18/4/2020: |
505 | - added command 'smiles args' , calling -if installed- 'obabel' to produce an SVG image |
||
506 | - added command 'chemtex' , adding "mhchem.js" for typesetting (needs to come first!) |
||
507 | - chemtex: added bogus code for mathjax. THIS WILL ONLY WORK ON KATEX ENABLED WIMS ! |
||
508 | |||
509 | ``` |
||
15111 | schaersvoo | 510 | chemtex |
511 | size 400,400 |
||
512 | xrange -10,10 |
||
513 | yrange -10,10 |
||
514 | fillcolor green |
||
515 | grid 1,1,grey |
||
516 | drag xy |
||
517 | centered |
||
518 | smiles 5,5,-:c1cFccc1cc,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP180,-h |
||
519 | rotate 180 |
||
520 | drag xy |
||
521 | centered |
||
522 | smiles -5,-5,-:c1cFccc1cc,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP180,-h |
||
523 | drag xy |
||
524 | rotate -90 |
||
525 | centered |
||
526 | smiles -5,5,-:c1cFccc1cc,-xb none,-xB blue,-xi,-xt,-xa,-xX,-xP180,-h |
||
527 | zoom red |
||
528 | drag xy |
||
529 | killrotate |
||
16849 | obado | 530 | fontfamily 32px Arial |
15271 | bpr | 531 | latex 0,0,\frac{1}{2} \ce{H3O+} |
16849 | obado | 532 | ``` |
7991 | schaersvoo | 533 | |
16849 | obado | 534 | * 15/3/2020: |
535 | - command latex ; improve code...minor cosmetic things (need to test on android) |
||
536 | - changed syntax command html : 'html x,y,some-html-code' |
||
537 | - drag/drop centering for html/latex/mathml/images |
||
538 | |||
539 | ``` |
||
15111 | schaersvoo | 540 | size 500,500 |
541 | xrange -10,10 |
||
542 | yrange -10,10 |
||
543 | grid 1,1,grey |
||
544 | linewidth 3 |
||
545 | vline 0,0,green |
||
546 | hline 0,0,green |
||
16849 | obado | 547 | fontfamily 16px Arial |
15111 | schaersvoo | 548 | fillcolor red |
549 | strokecolor blue |
||
550 | drag xy |
||
551 | centered |
||
552 | latex 0,0,\frac{12345}{23456} \times \frac{12345}{23456} |
||
553 | drag xy |
||
554 | centered |
||
555 | latex 5,5,\frac{12345}{\frac{12345}{ \frac{12345}{12345}}} |
||
556 | centered |
||
557 | drag xy |
||
558 | html -5,5,<table border=1><tr><td>1234567</td></tr><tr><td>1234567</td></tr><tr><td>1234567</td></tr><tr><td>1234567</td></tr></table> |
||
559 | drag xy |
||
560 | centered |
||
561 | copy 5,-5,-1,-1,-1,-1,gifs/images/skull_and_crossbones50.png |
||
562 | centered |
||
563 | drag xy |
||
564 | html 5,0,<img src=gifs/images/skull_and_crossbones50.png /> |
||
16849 | obado | 565 | ``` |
7991 | schaersvoo | 566 | |
567 | |||
16849 | obado | 568 | * 13/3/2020: |
569 | - corrected stupid error in default replyformat |
||
570 | - added support for touch/android for 'drag_xml()' 'drag_external_images()' |
||
571 | - unified onclick/drag&drop answer format for MathML,JS_TeX,bitmap-images,html5-canvas-objects |
||
572 | - compiler warnings (BPR) |
||
14071 | bpr | 573 | |
16849 | obado | 574 | * 10/3/2020: |
575 | - command 'rotate angle (deg)' now works for 'draw_xml()' e.g. for commands like latex,mathml,html,video,audio etc |
||
576 | - corrected drag&drop reply for external things... |
||
8112 | schaersvoo | 577 | |
16849 | obado | 578 | * 7/3/2020: |
579 | - command functionlabel is now converted to js-array "functionlabel f(x)=:g(x)=:h(x)=:f'(x)=" |
||
580 | - so multiple funtion inputs may all have different colours and function agruments |
||
8112 | schaersvoo | 581 | |
16849 | obado | 582 | * 6/3/2020: |
583 | - added alternative command 'userdraw function,color' , is identical to 'userinput function' |
||
584 | - added alternative command 'userdraw functions[n],color' , is identical to n-times 'userinput function' (n=1..9) |
||
585 | - command 'multistrokecolors' or 'multicolors' may be used for setting function argument/plot colour |
||
14071 | bpr | 586 | |
16849 | obado | 587 | * 15/2/2020: |
588 | - corrected flaw in drawing+zooming+multiple jscurves |
||
589 | - userinput for arrows and polylines (forgotten and corrected) |
||
590 | - zooming js-curves created by 'userinput function' (or should it be 'userdraw function'?...) |
||
15111 | schaersvoo | 591 | will adapt to new x/y-ranges after re-clicking the 'draw' or 'OK' button. This is a flaw and not a feature !! |
592 | |||
16849 | obado | 593 | * 13/2/2020: |
594 | - corrected stuff related to 'onclick' |
||
595 | - corrected combo of clickreply+dragreply |
||
15111 | schaersvoo | 596 | |
16849 | obado | 597 | * 11/2/2020: |
598 | - corrected commands 'arc' and 'angle' |
||
599 | - reset() will not reset the 'use_rotate' eg only 'killrotate' will set 'angle = 0.0' |
||
600 | - default css_class="none" |
||
601 | - corrected flaw in command 'input' ('style' is no longer needed...-> css) |
||
15111 | schaersvoo | 602 | |
16849 | obado | 603 | * 9/2/2020: |
604 | - restored command 'userinput function|inputfield' |
||
605 | - 'userdraw text,color' uses `text_inputfield+mouse` and/or `text_inputfield+xy-inputfields` |
||
15271 | bpr | 606 | |
16849 | obado | 607 | * 7/2/2020: |
608 | - made a few corrections (Marina) |
||
609 | - 'userinput inputfield' |
||
15111 | schaersvoo | 610 | |
16849 | obado | 611 | * 6/2/2020: |
612 | - added (forgotten) 'userdraw demiline(s),color' |
||
613 | - restored command 'userinput inputfields|textarea|function' |
||
15111 | schaersvoo | 614 | |
16849 | obado | 615 | * 5/2/2020: |
616 | - forgotten rotation/translation for object 'segment' |
||
617 | - restored 'setlimits' and added 'redraw_jsplot()' |
||
618 | - added 'jsplot' to 'zoom' |
||
15111 | schaersvoo | 619 | |
16849 | obado | 620 | * 4/2/2020: |
621 | - restored copy/copyresized with onclick or drag xy |
||
622 | - start with affine transformation without using canvas/html5 transform system (e.g. drag&drop&click will work for transformed objects) |
||
15111 | schaersvoo | 623 | [work in progress] |
16849 | obado | 624 | - added commands 'linear a,b,c,d' and 'killlinear|killinear' (flydraw compatibility needs to be tested) |
625 | - updated internal doc's; (todo : example scripts) |
||
626 | - added forgotten userdraw arrow(s)2,color |
||
15111 | schaersvoo | 627 | |
16849 | obado | 628 | * 31/1/2020: |
629 | - cleaning: removed unused js-functions |
||
630 | - work in progress: combined drag/drop external images, draggable copy/resized images and dragstuff objects |
||
15111 | schaersvoo | 631 | |
16849 | obado | 632 | * 30/1/2020: |
633 | - userdraw zooming ; marked 'canvas-zoom-buttons' forbidden (eg clicking on zoom will not produce extra userdrawing clicks...) |
||
634 | - start with cleaning... |
||
15271 | bpr | 635 | |
16849 | obado | 636 | * 29/1/2020: |
637 | - minor stuff |
||
15111 | schaersvoo | 638 | |
16849 | obado | 639 | * 28/1/2020: |
640 | - restored 'userdraw dotfill...textfill,color|text' (pattern filling) |
||
641 | - restored 'userdraw inputs' |
||
642 | - changed 'style' for elements by command 'css some_css' for buttons etc (style="xxxx" --> class="xxxx" ) |
||
15111 | schaersvoo | 643 | |
16849 | obado | 644 | * 26/1/2020: |
645 | - restored 'userdraw clickfill,color' (the lrest like 'userdraw dotfill,color' not yet ready) |
||
15111 | schaersvoo | 646 | |
16849 | obado | 647 | * 25/1/2020: |
648 | - rightmouse click removes last drawn userdraw thing |
||
15111 | schaersvoo | 649 | (including svg/div/p/span/images/inputfields...eg non-canvas elements) |
16849 | obado | 650 | - restored 'userdraw inputs,color' |
15271 | bpr | 651 | |
16849 | obado | 652 | * 24/1/2020: |
653 | - restored "userdraw" image(s),arc(s),parallelogram(s) etc |
||
15111 | schaersvoo | 654 | |
16849 | obado | 655 | * 22/1/2020: |
656 | - moving "userdraw" things to separate file, simular to "multidraw" |
||
15111 | schaersvoo | 657 | work in progress...not all primitives are implemented. |
658 | giving further reduction of resulting javascript filesize |
||
659 | |||
16849 | obado | 660 | * 17/1/2020 |
661 | - zooming : added mouse wheel zoom-in-out |
||
15111 | schaersvoo | 662 | : restored panning and reset (x) is now back to original x|y min|max |
663 | : added basic support for touch devices |
||
664 | : TODO adjust zooming params |
||
665 | |||
16849 | obado | 666 | * 16/1/2020 |
667 | - removed unused variables (clang, compiled with: -Weverything) |
||
668 | - zoom & drag/drop |
||
669 | - TODO: zoom & other-grid-types ; use mousewheel & tablets? |
||
15111 | schaersvoo | 670 | |
16849 | obado | 671 | * 11/1/2020 |
672 | - corrected long standing design flaw (zooming would reset dragged objects...) |
||
673 | - modified command grid (concering zooming) |
||
674 | - TODO : rethink zooming & panning !! |
||
15111 | schaersvoo | 675 | |
16849 | obado | 676 | ``` |
677 | ############## |
||
678 | performance/size_reductions: |
||
17581 | bpr | 679 | |
16849 | obado | 680 | U1/logic/oefmap.fr&+cmd=new&defaultlist=free01&+exo=free01&+qnum=1&+scoredelay=&+seedrepeat=0&+qcmlevel=1 |
681 | - old canvasdraw version approx 40 kb |
||
682 | - new canvasdraw version approx 20 kb |
||
683 | - latest canvasdraw version approx 18 kb |
||
17581 | bpr | 684 | |
16849 | obado | 685 | H5/analysis/gebieden-1.nl&subject=4&level=0&total_exos=3&rounding=-1&usage=2&taal=nl |
686 | - old canvasdraw version approx 83 kb |
||
687 | - new canvasdraw version approx 38 kb |
||
688 | ############## |
||
689 | ``` |
||
15111 | schaersvoo | 690 | |
16849 | obado | 691 | - split large files into fragments:still needs some further shifting/reorganizing |
692 | - multidraw: add draw primitive: crosshair | crosshairs (draw_type no. 25 | 26) |
||
693 | TODO: arc,angle,ellipse?? |
||
15111 | schaersvoo | 694 | |
16849 | obado | 695 | - multidraw: finished fillpatterns |
15111 | schaersvoo | 696 | |
16849 | obado | 697 | ``` |
8379 | schaersvoo | 698 | size 400,400 |
699 | xrange -10,10 |
||
700 | yrange -10,10 |
||
15111 | schaersvoo | 701 | grid 1,1,grey |
702 | linewidth 3 |
||
703 | snaptogrid |
||
704 | multilinewidth 1,2,3,1,2,3 |
||
705 | multifillcolors red,green,blue,brown,cyan,yellow |
||
706 | multistrokecolors red,green,blue,brown,cyan,yellow |
||
707 | #solid, grid, hatch, diamond, dot, none |
||
708 | multifill 1,2,3,4,0 |
||
709 | multidraw rects,circles,triangles,poly5,parallelogram,points |
||
16849 | obado | 710 | ``` |
8379 | schaersvoo | 711 | |
16849 | obado | 712 | * 10/1/2020 |
713 | - simplified 'fillpattern' for static and dynamic objects |
||
714 | - multidraw: |
||
15111 | schaersvoo | 715 | started with implementing fillpatterns for multidraw (only rects/circles for now) |
716 | command: multifill 0,1,2,3,4,5 ... none,fillcolor,grid,hatch,diamond,dot |
||
717 | image filling not yet ready... |
||
16849 | obado | 718 | - corrected flaw in 'ellipses' |
719 | - corrected docs for 'ellipse | ellipses' |
||
720 | - corrected zoom issue (minimized code increase) |
||
8448 | schaersvoo | 721 | |
16849 | obado | 722 | * 8/1/2020 |
723 | - added a few other object to "non-html5-canvas" rotation |
||
14071 | bpr | 724 | |
16849 | obado | 725 | * 6/1/2020 |
726 | - "stringup" now can be "onclick & dragdrop" |
||
15111 | schaersvoo | 727 | eg: stringup == string+angle+mouse_rotation-code |
728 | note: no need to reset rotation through 'killrotate' |
||
17581 | bpr | 729 | |
16849 | obado | 730 | ``` |
731 | onclick |
||
732 | rotate 45 |
||
733 | string red,0,0,AAAAAA |
||
734 | killrotate |
||
735 | string red,4,4,BBBBBB |
||
736 | ``` |
||
17581 | bpr | 737 | |
16849 | obado | 738 | is identical with: |
17581 | bpr | 739 | |
16849 | obado | 740 | ``` |
741 | onclick |
||
742 | stringup red,0,0,45,AAAAAA |
||
743 | string red,4,4,BBBBBB |
||
744 | ``` |
||
14071 | bpr | 745 | |
16849 | obado | 746 | - dragstuff using C-switch |
747 | - code kbytes: |
||
14071 | bpr | 748 | |
16849 | obado | 749 | ``` |
15271 | bpr | 750 | minimal: 4 kb |
15111 | schaersvoo | 751 | grid only: 15 kb |
752 | userdraw only: 10 kb |
||
753 | multidraw single: 18 kb |
||
754 | multidraw all: 40 kb |
||
755 | onclick + objects: 14 kb |
||
756 | drag xy + objects: 14 kb |
||
757 | typical exercise : 30 kb |
||
16849 | obado | 758 | ``` |
15271 | bpr | 759 | |
16849 | obado | 760 | * 4/1/2020 |
761 | - moved dragstuff code : needs to simplify |
||
762 | - start to move HTML5/Canvas transformation things to canvasdraw.c: |
||
763 | - e.g. just recalculate the coordinates for objects: so there is no need for recalculating mouse coordinates in case of onclick/drag |
||
764 | - except for 'text' and ? |
||
765 | - keep optional mouse coordinate recalculation when using HTML5 transformations... |
||
9266 | schaersvoo | 766 | |
15271 | bpr | 767 | |
16849 | obado | 768 | * 11/2019 |
769 | - rewrite of multidraw code and removal of verbatim js-code |
||
770 | A few notes: |
||
771 | - command 'inputstyle' will be used for setting 'css class' of the multidraw control table |
||
15111 | schaersvoo | 772 | for example: inputstyle wimstable |
16849 | obado | 773 | - when using a single draw primitive , command 'multilable nocontrols' will remove the 'control buttons' |
774 | - when using keyword "duplicates" || "allowdups" multiple identical points will NOT be removed from the student answer/reply |
||
775 | - drag&drop math typesetting onto canvasdraw image: |
||
776 | - multidraw|userdraw images will only work with Mathml (through !insmath etc) if you use the 'wims modules svn' version of wims_mathml !! |
||
777 | - e.g. things like !insdraw \mmlid{123} \frac{1}{\pi} |
||
778 | - of course the 'id' will only be added to a single call: this will NOT work: \mmlid{1} \frac{1}{\pi} + \mmlid{2} \frac{\pi}{2} |
||
779 | - multidraw|userdraw images and MathJaX will not work ! |
||
780 | - multidraw|userdraw images and native MathML and KaTeX will work |
||
781 | - drag&drop external material onto canvasdraw image: |
||
782 | - all objects/content of type 'p','span','div','bitmap image','svg image' with an unique 'id' and |
||
15111 | schaersvoo | 783 | onclick handler "onclick='javascript:place_image_on_canvas(this.id)'" may be placed onto a canvasdraw image |
784 | when 'userdraw images,boguscolor' or 'multidraw images,...' is declared. |
||
16849 | obado | 785 | - currently implemented multidraw primitives: |
786 | * "point","points", |
||
787 | * "circle","circles", |
||
788 | * "line","lines", |
||
789 | * "segment","segments", |
||
790 | * "arrow","arrows", |
||
791 | * "triangle","triangles", |
||
792 | * "closedpoly", |
||
793 | * "text", |
||
794 | * "rect","rects", |
||
795 | * "poly","polys", |
||
796 | * "parallelogram","parallelograms", |
||
797 | * "images", |
||
798 | * "curvedarrow","curvedarrows", |
||
799 | * "curvedarrow2","curvedarrows2" |
||
15271 | bpr | 800 | |
16849 | obado | 801 | - TODO: add a few more draw primitives, like |
15111 | schaersvoo | 802 | "crosshair(s)","ellipse(s)","arc(s) || angle(s)"... |
15271 | bpr | 803 | |
804 | |||
15111 | schaersvoo | 805 | ############## REWRITE ################################ |
11769 | schaersvoo | 806 | |
15111 | schaersvoo | 807 | added 'angle' to draw_xml()10/4/2020 |
808 | typo in 'case 12' command 'arc' |
||
16849 | obado | 809 | |
810 | * 23/3/2020 |
||
15111 | schaersvoo | 811 | added alternative commands for a few 'multidraw' subcommands |
812 | typo in doc |
||
16849 | obado | 813 | * 29/1/2020 |
15111 | schaersvoo | 814 | stringup may now be set onclick (drag&drop not supported: is implemented in 'canvasdraw.min') |
815 | corrected non-univeral path to wims_mathml |
||
16849 | obado | 816 | * 6/1/2020 |
15111 | schaersvoo | 817 | forgotten to reset angle=0 in 'killrotate' |
16849 | obado | 818 | |
819 | ## 2019 |
||
820 | * 26/12/2019 |
||
15111 | schaersvoo | 821 | NO support for dragging and transformation / rotations |
822 | generic mouse coordinate transformation ( transform_mouse(x,y,obj) ) usable for 'affine transformation' and 'onclick' |
||
16849 | obado | 823 | * 25/12/2019 |
15111 | schaersvoo | 824 | |
825 | "drag" and "rotate" WILL NOT WORK !! |
||
826 | "onclick" and "rotate" may be combined. (see createxo help "rotate") |
||
827 | |||
828 | adjusted documentation. |
||
829 | string/text using 'xoffset','xyoffset','yoffset' will now use a 2*linewidth marge |
||
830 | 22/12/2019 |
||
831 | |||
16849 | obado | 832 | object 10: clicked |
15271 | bpr | 833 | object 9 : clicked |
15111 | schaersvoo | 834 | object 8 : not clicked |
835 | object 7 : not clicked |
||
836 | object 6 : clicked |
||
837 | object 5 : moved from (1:2) -> (2:2) |
||
838 | object 4 : not moved |
||
839 | object 3 : moved from (1:1) -> (3:3) |
||
840 | object 2 : moved from (1:3) -> (3:2) |
||
841 | object 1 : moved from (1:0) -> (2:1) |
||
842 | object 0 : not moved |
||
843 | reply = ["not_moved", "1:1:0:2:1:0", "2:0:1:3:2:0", "3:1:1:3:3:0", "not_moved", "5:1:2:2:2:0",1,0,0,1,1] |
||
15271 | bpr | 844 | for example: |
15111 | schaersvoo | 845 | |
846 | the clicked objects are '0' or '1' |
||
847 | obj_number,xorg[0],yorg[0],xnew[0],ynew[0],new_angle |
||
848 | moved object are items in the javascript reply array...in the same order as their appearance in the fly_script |
||
849 | unmoved object are labelled "not_moved" ! |
||
850 | "onclick" and "drag x|y|xy" may now be used together and all data be read using "read_dragdrop()" |
||
851 | |||
852 | [ these are bugs, not features... ] |
||
853 | drag xy & rotate are only compatible if you are using a 'slider' |
||
854 | onclick & rotate are not compatible |
||
855 | impoved mouse selection of text (height of selection box was not ok) |
||
856 | corrected missing font-change when text was set 'onclick' [BPR] |
||
857 | |||
16849 | obado | 858 | * 21/12/2019 |
15111 | schaersvoo | 859 | corrected wrong hexcolor conversion [Sophie Lemaire] |
16849 | obado | 860 | |
861 | * 12/11/2019 |
||
15111 | schaersvoo | 862 | if set, multiple identical points will NOT be removed from the student answer/reply |
863 | added keyword "duplicates" || "allowdups" for default "multidraw" replyformat |
||
16849 | obado | 864 | * 9/11/2019 |
15111 | schaersvoo | 865 | corrected multidraw curvedarrows numeric input [BPR] |
16849 | obado | 866 | * 8/11/2019 |
867 | correction in multidraw circles : list_uniq(A,B,C) will reserve 'C' for non-numeric answers ! |
||
15111 | schaersvoo | 868 | |
16849 | obado | 869 | * 2/11/2019 |
15271 | bpr | 870 | this will break module "H4/logic/logica-1.nl/exos/exo14" (only dutch module, so no serious conflicts) |
15111 | schaersvoo | 871 | reply format for "multidraw" in case of "circles" will give radius in x-range [BPR] |
872 | |||
16849 | obado | 873 | * 2/11/2019 |
874 | |||
875 | ``` |
||
15111 | schaersvoo | 876 | ####### |
877 | } |
||
878 | <input type="button" onclick="alert(read_dragdrop());" value="read_dragdrop()" /> |
||
879 | <input type="button" onclick="alert(read_canvas());" value="read_canvas()" /> |
||
880 | |||
881 | |||
882 | </script> |
||
883 | find_images(); |
||
884 | }; |
||
885 | }; |
||
886 | }; |
||
887 | img.setAttribute('onclick','javascript:place_image_on_canvas(this.id);'); |
||
888 | idx++; |
||
889 | img.setAttribute('id','drag_'+idx); |
||
890 | if(id.indexOf('insert')!= -1){ |
||
891 | var id = img.id; |
||
892 | var img = images[p]; |
||
893 | for(var p=0;p<len;p++){ |
||
894 | var idx=0; |
||
895 | var len = images.length; |
||
896 | var images = document.getElementsByTagName('img'); |
||
897 | /* look for images with 'insert' in the 'id'*/ |
||
898 | function find_images(){ |
||
899 | }; |
||
900 | if(typeof fun === 'function'){return fun();}; |
||
15271 | bpr | 901 | var fun = eval("read_dragdrop"+canvas_scripts[0]); |
15111 | schaersvoo | 902 | function read_dragdrop(){ |
903 | }; |
||
904 | if( typeof fun === 'function'){ return fun();}; |
||
905 | var fun = eval("read_canvas"+canvas_scripts[0]); |
||
906 | function read_canvas(){ |
||
907 | <script type="text/javascript"> |
||
908 | |||
909 | </table> |
||
15271 | bpr | 910 | <tr><th> <img src="gifs/en.gif" id="insert_en" /> </th><th> <img src="gifs/nl.gif" id="insert_nl" /> </th><th> <img src="gifs/cn.gif" id="insert_cn" /> </th><th> <img src="gifs/it.gif" id="insert_it" /> </th></tr> |
911 | <tr><th> \I1 </th><th> \I2 </th><th> \I3 </th><th> \I4 </th></tr> |
||
912 | <tr><th> \(\M1\) </th><th> \(\M2)</th><th> \(\M3) </th><th> \(\M4\) </th></tr> |
||
913 | <tr><th> M1 </th><th> M2 </th><th> M3 </th><th> M4 </th></tr> |
||
15111 | schaersvoo | 914 | <table border="1"> |
915 | } |
||
916 | # multidraw images |
||
917 | userdraw images,red |
||
11764 | schaersvoo | 918 | snaptogrid |
15111 | schaersvoo | 919 | centered |
920 | grid 2,2,grey,1,1,6,grey |
||
921 | axisnumbering |
||
922 | axis |
||
923 | precision 1 |
||
924 | yrange -10,10 |
||
925 | xrange -10,10 |
||
926 | bgcolor white |
||
927 | \canvasdraw{500,500}{ |
||
11769 | schaersvoo | 928 | |
15111 | schaersvoo | 929 | \statement{ |
11820 | schaersvoo | 930 | |
15111 | schaersvoo | 931 | \text{divstyle="display:inline-block;width:auto;text-align: center;"} |
15271 | bpr | 932 | \text{I4=<img style="width:50%;height:50%" onclick="javascript:place_image_on_canvas(this.id);" src="modules/data/chemistry/mol2D.fr/images/100_39_0.png" id="I4" />} |
15111 | schaersvoo | 933 | \text{I3=<img style="width:50%;height:50%" onclick="javascript:place_image_on_canvas(this.id);" src="modules/data/chemistry/mol2D.fr/images/1002_69_3.png" id="I3" />} |
934 | \text{I2=<img style="width:50%;height:50%" onclick="javascript:place_image_on_canvas(this.id);" src="modules/data/chemistry/mol2D.fr/images/1002_57_9.png" id="I2" />} |
||
935 | \text{I1=<img style="width:50%;height:50%" onclick="javascript:place_image_on_canvas(this.id);" src="modules/data/chemistry/mol2D.fr/images/1002_28_4.png" id="I1" />} |
||
936 | \text{M4=\mmlid{M4}\xrightarrow{\rm N_2 \uparrow}} |
||
937 | \text{M3=\mmlid{M3}\xrightarrow{\rm O_2 \uparrow}} |
||
938 | \text{M2=\mmlid{M2}\xrightarrow{\rm H_2 \uparrow}} |
||
939 | \text{M1=\mmlid{M1}\xrightarrow{\text{reaction}}} |
||
940 | ##### example OEF... |
||
16849 | obado | 941 | ``` |
11823 | schaersvoo | 942 | |
16849 | obado | 943 | - 'userdraw images,bogus color' : right mouse click removes item/object under mouse pointer |
944 | - solving issue with size of dynamic created div's in 'userdraw images,color' and 'multidraw images' |
||
11823 | schaersvoo | 945 | |
16849 | obado | 946 | * 26/9/2019 |
15111 | schaersvoo | 947 | |
948 | multidraw images |
||
949 | userdraw images,red |
||
950 | using command: |
||
951 | including KaTeX or MathJaX js-typesetting, MathML,bitmap, and any other html content, |
||
952 | All 'svg','div','span' elements on page may be used to drop onto canvas, |
||
16849 | obado | 953 | |
954 | * 17/9/2019 |
||
15111 | schaersvoo | 955 | on touch devices the canvasdraw inputfields could not be used |
956 | add attrubute autofocus,true to function 'add_inputs()' |
||
957 | |||
16849 | obado | 958 | * 8/9/2019 |
15111 | schaersvoo | 959 | will now accept anything from the exercise page (including MathML,MathJaX,KaTeX typesetting) if included a 'div' with unique id and onclick='javascript:place_image_on_canvas(this.id);' |
960 | multidraw images |
||
15271 | bpr | 961 | userdraw images,somecolor |
15111 | schaersvoo | 962 | |
16849 | obado | 963 | * 5/9/2019 |
15111 | schaersvoo | 964 | case killslider: replaced 'int p' by loop indicator 'i' [obado] |
965 | |||
16849 | obado | 966 | * 27/8/2019 |
15111 | schaersvoo | 967 | TEMPORARY ---> all browsers are type 'GECKO' and MathJaX will take care of all others in command 'latex' |
968 | |||
969 | in case of KaTeX only use command 'latex x,y,tex_string' |
||
970 | command mathml is only suitable for "GECKO" and "NON-GECKO+MathJaX" |
||
971 | command latex calls 'getMML()' e.g. 'wims_mathml' in case of "GECKO" |
||
972 | |||
16849 | obado | 973 | * 26/8/2019 |
15111 | schaersvoo | 974 | Needs looking into. In mathml.c: katex div: 'display:block;visibility:hidden'./SCHAERSVOORDE/H1/algebra/vergelijkingen-1.nl/exos/exo9:mathml 0,10,10,0,$fun\ |
15271 | bpr | 975 | setting 'drag_type = -1' to drag KaTeX with left top corner...problems reading width of created div's/span's |
15111 | schaersvoo | 976 | WORK IN PROGRESS ( canvasdraw will need to call wims_mathml in case of GECKO browsers!) |
977 | to be used for KaTeX |
||
978 | Added command 'latex x,y,tex-string |
||
979 | |||
16849 | obado | 980 | * 25/8/2019 |
981 | |||
982 | ``` |
||
15111 | schaersvoo | 983 | fcircles blue,3,3,1 |
984 | drag xy |
||
985 | angle 0,0,2,0,0,red |
||
986 | fillpattern dot |
||
987 | arrow 0,0,5,0,7,red |
||
988 | fillcolor blue |
||
989 | slider -pi,pi,250,30,angle degrees,Rotate |
||
990 | opacity 200,100 |
||
991 | fillcolor white |
||
992 | rotationcenter 0,0 |
||
993 | linewidth 3 |
||
994 | precision 1000 |
||
995 | yrange -5,5 |
||
11820 | schaersvoo | 996 | xrange -5,5 |
15111 | schaersvoo | 997 | size 300,300 |
16849 | obado | 998 | ``` |
15111 | schaersvoo | 999 | |
15271 | bpr | 1000 | - click on 'reset' will deactivate all |
15111 | schaersvoo | 1001 | - click on objects will activate |
1002 | - command 'angle x0,y0,x1,y1,angle,color' will always be active in case of a rotation slider. |
||
1003 | - drag x|y|xy may be combined with slider(s) |
||
1004 | - snapto* will not work ! |
||
1005 | in slider exercises: |
||
1006 | |||
1007 | onclick and dragdrop may be combined, but is not really usefull :) |
||
1008 | - every onclick object starts with obj.onclick_cnt = 0... when clicked obj.click_cnt = 1 |
||
1009 | - only the first element of a row is important (obj.click_cnt), which is 0 or 1 |
||
1010 | in onclick exercises |
||
1011 | |||
1012 | - obj.click_cnt is the objects sequence number (starting with '0' for the first draggable object in the script) |
||
1013 | - only clicked objects have a line in the reply |
||
1014 | in dragdrop exercises: |
||
1015 | |||
1016 | obj.click_cnt+','+obj.xorg[0]+','+obj.yorg[0]+','+current_x+','+current_y+','+current_angle+';\\n |
||
1017 | dragdrop reply is now in format: |
||
1018 | broken modules adapted |
||
1019 | |||
16849 | obado | 1020 | * 15/8/2019 |
1021 | |||
15111 | schaersvoo | 1022 | -- todo: restore slider 'follow_function system' |
15271 | bpr | 1023 | 6) -- todo: restore xy-slider?? |
15111 | schaersvoo | 1024 | 6) finished: reply&display precision and reply-format |
15271 | bpr | 1025 | 5) finished: restored slider display 'system' |
15111 | schaersvoo | 1026 | 4) finished: slider rotation with preservation of coordinates e.g. 'mouse dragging' is supported |
1027 | 3) finished: group selection (just by clicking...no 'lasso') |
||
15271 | bpr | 1028 | 2) finished: real coordinates when using 'drag & manual rotating' objects |
15111 | schaersvoo | 1029 | 1) finished: multiple sliders per object or objects (until 'killslider') |
1030 | targets: |
||
1031 | |||
16849 | obado | 1032 | * 8/2019 rewriting of slider stuff (reponse to request/question of BPR) |
15111 | schaersvoo | 1033 | |
16849 | obado | 1034 | * 10/8 correctedd stupid typo in DRAW_EXTERNAL_IMAGES |
15271 | bpr | 1035 | and corrected snapping to grid |
15111 | schaersvoo | 1036 | corrected flaw in multidraw cirle [BPR] |
16849 | obado | 1037 | * 3/7/2019 |
15111 | schaersvoo | 1038 | removed 'touchend' (MC) |
16849 | obado | 1039 | * 22/6/2019 |
15111 | schaersvoo | 1040 | (changes should be made, not yet fixed) |
1041 | work on the documentation: add '' ``for emphased words and <code></code> |
||
16849 | obado | 1042 | * 08/06/2019 |
1043 | `userdraw circles,red` |
||
15111 | schaersvoo | 1044 | is identical to |
16849 | obado | 1045 | `multidraw circles |
1046 | strokecolor red |
||
1047 | multilabel NOCONTROLS` |
||
15111 | schaersvoo | 1048 | |
1049 | in multidraw NOCONTROLS and a single object, no need for a 'draw object' button. It's analogue to userdraw. |
||
1050 | in multidraw right mouse click will remove last drawn object of the currently selected draw primitive |
||
16849 | obado | 1051 | |
1052 | * 7/6 |
||
15111 | schaersvoo | 1053 | added ruler & protractor to new multisnap_check(x,y,use_snap); |
1054 | |||
16849 | obado | 1055 | ``` |
15111 | schaersvoo | 1056 | #<input type='button' onclick='javascript:var fun=eval("clear_draw_area"+canvas_scripts[0]);fun(9,0);' value='REMOVE LAST ARROW ' /> |
1057 | <input type='button' onclick='javascript:var fun=eval("clear_draw_area"+canvas_scripts[0]);fun(24,0);' value='REMOVE LAST CURVEDARROW2 ' /> |
||
1058 | <input type='button' onclick='javascript:userdraw_primitive=24;multidraw_click_cnt = 0;' value='start drawing curvedarrows2' /> etc etc |
||
1059 | <input type='button' onclick='javascript:userdraw_primitive=null' value='STOP DRAWING' /> |
||
16849 | obado | 1060 | ``` |
15111 | schaersvoo | 1061 | controls for example: |
16849 | obado | 1062 | |
1063 | ``` |
||
15111 | schaersvoo | 1064 | curvedarrows2 = 24 |
1065 | curvedarrow2 = 23 |
||
1066 | curvedarrows = 22 |
||
1067 | curvedarrow = 21 |
||
1068 | images = 20 |
||
1069 | parallelograms = 19 |
||
1070 | parallelogram = 18 |
||
1071 | polys[3-9] = 17 |
||
1072 | poly[3-9] = 16 |
||
1073 | rects = 15 |
||
1074 | rect = 14 |
||
1075 | text = 13 |
||
1076 | closedspoly = 12 |
||
1077 | triangles = 11 |
||
1078 | triangle = 10 |
||
1079 | arrows = 9 |
||
1080 | arrow = 8 |
||
1081 | segments = 7 |
||
1082 | segment = 6 |
||
1083 | lines = 5 |
||
1084 | line = 4 |
||
1085 | circles = 3 |
||
1086 | circle = 2 |
||
1087 | points =1 |
||
1088 | point = 0 |
||
16849 | obado | 1089 | ``` |
15111 | schaersvoo | 1090 | The object types are internally represented by the following numbers (makeing typo's will render your exercise null and void) |
1091 | To activate this feature, use multilabel NOCONTROLS |
||
1092 | When you are not content with the default 'multidraw control panel', you can create your own interface, using a few javascript functions to call the drawprimitives, delete things and 'stop drawing' in case you also want to drag&drop stuff... |
||
1093 | ### from doc's |
||
1094 | 6/6 added keyword 'NOCONTROLS' to disable all buttons for multidraw |
||
1095 | |||
1096 | command 'drag xy|x|y' was fallen of the wagon... |
||
1097 | |||
1098 | don't touch replyformat 29: it is universal and for multidraw ! |
||
1099 | todo: modify/change 6,10,11,15,16,17,18,19,20,25,27,31 |
||
1100 | |||
1101 | OEF : replyformat 22,23,28 |
||
1102 | USERDRAW DEFAULTS: replyformat 2,6,8,10,11,15,16,17,18,19,20,23,24,25,27,29,31 |
||
1103 | SCHAERSVOORDE : replyformat 2,7,8,21,22,23,24 |
||
1104 | Starting with unifying the 'replyformat' jungle...without touching existing modules |
||
1105 | A single function "multisnap_check(x,y,use_snap)" will return xy[2] array with corrected coordinates |
||
1106 | |||
16849 | obado | 1107 | * 5/6 removed confusing code about 'snapping to something' and unified it in a single variable 'use_snap=0,1,2,3,4' for 'dragstuff library', 'userdraw' and 'multidraw' |
1108 | * 4/6 modified 'find_angle()' now using Math.atan2(x,y) ... smooth turning 360+ without flipping...see 'protractor' |
||
1109 | |||
1110 | ``` |
||
1111 | <script> |
||
15111 | schaersvoo | 1112 | resize_svg_mathml(mythings); |
1113 | var mythings = [ array_with_image_id's ]; |
||
1114 | }; |
||
1115 | }; |
||
1116 | svg.setAttribute("width", w+'px'); |
||
1117 | svg.setAttribute("height", h+'px'); |
||
1118 | var h = parseInt(getComputedStyle(div).height); |
||
1119 | var w = parseInt(getComputedStyle(div).width); |
||
1120 | var div = document.getElementById(mythings[p+1]); |
||
1121 | var svg = document.getElementById(mythings[p]); |
||
1122 | for(var p=0; p < len ; lpp){ |
||
1123 | var len = mythings.length; |
||
1124 | function resize_svg_mathml( mythings ){ |
||
1125 | <script type="text/javascript"> |
||
1126 | To resize and used the svg element, a small piece of javascript is needed.. |
||
1127 | </svg> |
||
1128 | </foreignObject> |
||
1129 | <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;width:auto;text-align: center;" > MATHML </div> |
||
1130 | <foreignObject width="100%" height="100%"> |
||
1131 | <svg xmlns="http://www.w3.org/2000/svg" width="1px" height="1px" onclick="javascript:place_image_on_canvas(this.id);" id='my_id'> |
||
16849 | obado | 1132 | ``` |
1133 | when the MathML code is embedded in a foreignObject, a div and an svg with size 1px, like in: |
||
15111 | schaersvoo | 1134 | On Gecko browsers there is an option to include MathML from the page onto the canvas, |
1135 | The 'id' and (x;y) coordinates will be returned using read_canvas(); |
||
16849 | obado | 1136 | `<img src="somewhere" id="myid" onclick="javascript:place_image_on_canvas(this.id)" alt="hmm" />` |
15111 | schaersvoo | 1137 | Images (bitmap or svg) present in the exercise page and the img-tag with an unique 'id' and onclick='javascript:place_image_on_canvas(this.id)' can be placed onto the canvas. |
1138 | (*) |
||
1139 | |||
1140 | multidraw curvedimages,curvedimages2 |
||
1141 | multidraw images (*) |
||
1142 | userdraw curvedimages2,color |
||
1143 | userdraw curvedimages,color |
||
1144 | userdraw curvedimage2,color |
||
1145 | userdraw curvedimage,color |
||
1146 | userdraw images,boguscolor (*) |
||
1147 | using: in canvasdraw.c: int use_snap = 0; /* 0 = none 1=grid : 2=x-grid : 3=y-grid : 4=snap to points ... to finally harmonize the 'snap to grid etc etc */ |
||
1148 | using multisnap_check(x,y,snap_type) |
||
1149 | preparing replyformat 29 (multidraw) as generic reply system (every object has a line, every line is a matrix) |
||
1150 | Merged with wimsmodules: |
||
1151 | |||
1152 | |||
1153 | y1,y2,yc,... |
||
1154 | x1,x2,xc,... |
||
1155 | default replyformat = 2 |
||
1156 | |||
16849 | obado | 1157 | * 3/6 curvedarrow now has 3 points : |
1158 | |||
15111 | schaersvoo | 1159 | added to multidraw family 'curvedarrow' and 'curvedarrow2' |
1160 | added to dragstuff library objects 'curvedarrows color,x1,y1,xc,yc,x2,y2,...' and 'curvedarrows2 color,x1,y1,xc,yc,x2,y2,...' |
||
1161 | just to be complete... |
||
1162 | added to dragstuff library objects 'curvedarrow x1,y1,xc,yc,x2,y2,color' and 'curvedarrow2 x1,y1,xc,yc,x2,y2,color' |
||
1163 | added 'userdraw curvedarrow2,color' and 'userdraw curvedarrows2,color' |
||
16849 | obado | 1164 | |
1165 | * 1/6/2019 |
||
15111 | schaersvoo | 1166 | TODO: add curvedarrow to dragstuff object library |
1167 | TODO: multidraw curvedarrow |
||
1168 | TODO: 'userdraw curvedarrow2,color' and 'userdraw curvedarrows2,color' |
||
16849 | obado | 1169 | * 31/5/2019 added userdraw primitive 'userdraw curvedarrow,color' and 'userdraw curvedarrows,color' |
1170 | * 15/5/2019 dragging external images now centers the image around the mouse pointer |
||
15111 | schaersvoo | 1171 | all other drag&drop things (canvas related and div's (from xml/mathml) seem to work fine, only dragging of images fails |
1172 | this -however- does not seem to correct the problem om 'styled' wims-servers [BPR]. |
||
1173 | draw_external images now makes use of the same dragstuff.getMouse() |
||
16849 | obado | 1174 | * 14/5/2019 problems with dragging images... |
1175 | * 13/5/2019 bugfix command angle|arc combined with command 'slider'...slidervalue is in radians...arc|angle needs degrees |
||
1176 | * 11/5/2019 add some examples for OEF [BPR] (work in progress) |
||
1177 | * 4/3/2019 corrected fontsize behaviour of command 'text' (always trouble between 'fontsize' and 'fontfamily' commands) [BPR] |
||
1178 | * 2/2/2019 corrected behaviour of replyformat 11 etc (dealing with (x1:y1)---<x2:y2) ) |
||
15111 | schaersvoo | 1179 | |
16849 | obado | 1180 | ``` |
15111 | schaersvoo | 1181 | jsplot red,4*cos(2*x),2*sin(3*x-pi/6),cos(x),3*sin(x),3*cos(x),sin(x),x,x^2 |
1182 | multistrokecolors red,red,blue,blue,green,green,orange,orange |
||
1183 | precision 1000 |
||
1184 | linewidth 1 |
||
1185 | animate |
||
1186 | trange -pi,pi |
||
1187 | fillcolor blue |
||
1188 | linewidth 4 |
||
1189 | grid 1,1,grey,4,4,7,black |
||
1190 | opacity 100,190 |
||
1191 | axisnumbering |
||
1192 | axis |
||
1193 | precision 0 |
||
11820 | schaersvoo | 1194 | yrange -5,5 |
15111 | schaersvoo | 1195 | xrange -5,5 |
1196 | size 400,400 |
||
16849 | obado | 1197 | ``` |
15111 | schaersvoo | 1198 | (command animate may only be used once) |
16849 | obado | 1199 | |
1200 | * 28/12 multiple animated curves using command jsplot |
||
1201 | * 25 --> 26 |
||
15111 | schaersvoo | 1202 | corrected "snprintf(tmp_buffer,25,"use_mouse_coordinates();\n");add_to_buffer(tmp_buffer);" |
16849 | obado | 1203 | * 15/10 BPR |
1204 | * 12/4 piechart will show 'legend' text inside piechart when using keyword 'centered': use fill opacity to enhance visibility |
||
1205 | * 14/3/2018 draw_crosshairs: forgotten ctx.save(); (crosshairs will 'move' with every click...) |
||
1206 | * 13/11 live docs |
||
1207 | * 12/11 added command 'ellipses' |
||
1208 | * 6/11 added few things to "live documentation" work in progress |
||
1209 | * 18/10 reoganised string/text keywords 'centered','xoffset','yoffset','xyoffset' |
||
1210 | * 8/10 remove duplicates while drawing 2-point objects (circle/line/demiline/segment/rect) |
||
15111 | schaersvoo | 1211 | |
16849 | obado | 1212 | * 4/10 work in progress: adding examples to documentation (the "example:" flag can be used to extract) |
15111 | schaersvoo | 1213 | |
16849 | obado | 1214 | * 2/10 fixed bugs (thx B.Perrin) |
1215 | * 28/9 bug fix : variable use_axis_numbering was reset by introduction of numberline command... |
||
1216 | * 20/9 bug fix in command curve (a parameter was wrongly set, resulting in curve being type=13 (is a circle) insteadof type=9 |
||
15111 | schaersvoo | 1217 | |
16849 | obado | 1218 | ``` |
15111 | schaersvoo | 1219 | mouse blue,22 |
1220 | precision 1 |
||
1221 | userinput function |
||
1222 | functionlabel f(x)= |
||
1223 | strokecolor green |
||
1224 | jsplot red,4*cos(2*x),2*sin(3*x-pi/6) |
||
1225 | precision 1000 |
||
11820 | schaersvoo | 1226 | linewidth 1 |
15111 | schaersvoo | 1227 | animate |
1228 | trange -pi,pi |
||
1229 | fillcolor blue |
||
1230 | linewidth 4 |
||
1231 | grid 1,1,grey,2,2,5,black |
||
1232 | opacity 100,190 |
||
1233 | axisnumbering |
||
1234 | axis |
||
1235 | precision 0 |
||
1236 | yrange -5,5 |
||
1237 | xrange -2*pi,2*pi |
||
1238 | size 400,400 |
||
1239 | popup |
||
16849 | obado | 1240 | ``` |
11824 | schaersvoo | 1241 | |
16849 | obado | 1242 | * 17/9 added basic 'point_on_curve' animation (parametric and 'normal' functions) |
11837 | schaersvoo | 1243 | |
16849 | obado | 1244 | ``` |
15111 | schaersvoo | 1245 | zoom red |
1246 | numberline -5,5,2,10,-3.5,-3 |
||
1247 | zoom red |
||
1248 | xaxis -4:AAAAA:-2:BBBBB:2:CCCCC:4:DDDDD |
||
1249 | strokecolor purple |
||
1250 | numberline -5,5,1,8,-2,-1.5 |
||
1251 | xaxisup -4:AAAA:-2:BBBB:2:CCCC:4:DDDD |
||
1252 | strokecolor blue |
||
1253 | numberline -5,5,1,5,2,2.5 |
||
1254 | xaxis -4:AAA:-2:BBB:2:CCC:4:DDD |
||
1255 | strokecolor green |
||
1256 | numberline -5,5,1,4,4,4.5 |
||
1257 | xaxisup -4:AA:-2:BB:2:CC:4:DD |
||
1258 | strokecolor red |
||
1259 | opacity 255,255 |
||
1260 | grid 1,1,grey |
||
1261 | hline 0,0,black |
||
1262 | xaxis -4:A:-2:B:2:C:4:D |
||
1263 | noyaxis |
||
1264 | yrange -5,5 |
||
11837 | schaersvoo | 1265 | xrange -5,5 |
15111 | schaersvoo | 1266 | size 400,400 |
16849 | obado | 1267 | ``` |
15111 | schaersvoo | 1268 | adding y-offset when x-values overlap. |
1269 | multiple numberlines are allowed using multiple 'xaxis' commmands for labeling several numberlines, including a x-axis label in command grid... |
||
1270 | numberline is mapped to xrange/yrange |
||
16849 | obado | 1271 | * 15/9 added command macro "numberline x0,x1,xmajor,xminor,y0,y1" |
15111 | schaersvoo | 1272 | |
1273 | solved long standing issue with color 0,0,0 (black) as fill border |
||
1274 | added 'fixed' pattern filling to primitives 'boxplot' and 'piechart' |
||
16849 | obado | 1275 | * 6/9 just for completeness: added pattern filling to all fillable userdraw primitives |
15111 | schaersvoo | 1276 | |
16849 | obado | 1277 | ``` |
15111 | schaersvoo | 1278 | clearbutton removed |
1279 | userdraw gridfill,red |
||
1280 | circle 10,10,100,red |
||
1281 | imagefill 0,0,0,gifs/en.gif |
||
1282 | # syntax: x,y,scale?,image |
||
1283 | plot blue,-x^2+4 |
||
1284 | plot red,x^2-4 |
||
11837 | schaersvoo | 1285 | yrange -5,5 |
15111 | schaersvoo | 1286 | xrange -5,5 |
1287 | size 150,150 |
||
16849 | obado | 1288 | ``` |
11839 | schaersvoo | 1289 | |
15111 | schaersvoo | 1290 | NOTE: special filling (hatch,dot,...,image) should be harmonized to include userdraw and drag&drop library objects !! |
1291 | 26/8 command imagefill x0,y0,URL now works like flydraw should |
||
1292 | |||
16849 | obado | 1293 | ``` |
15111 | schaersvoo | 1294 | fcircle 2,-3,100,cyan |
11854 | schaersvoo | 1295 | drag xy |
15111 | schaersvoo | 1296 | fillpattern gifs/fr.gif |
1297 | fcircle 2,3,100,green |
||
11854 | schaersvoo | 1298 | drag xy |
15111 | schaersvoo | 1299 | fillpattern gifs/de.gif |
11854 | schaersvoo | 1300 | fcircle -2,-3,100,red |
1301 | drag xy |
||
15111 | schaersvoo | 1302 | fillpattern gifs/nl.gif |
1303 | fcircle -2,3,100,blue |
||
11854 | schaersvoo | 1304 | drag xy |
15111 | schaersvoo | 1305 | fillpattern gifs/en.gif |
1306 | snaptogrid |
||
1307 | yrange -5,5 |
||
1308 | xrange -5,5 |
||
1309 | size 400,400 |
||
16849 | obado | 1310 | ``` |
14071 | bpr | 1311 | |
16849 | obado | 1312 | note: needs an alert for synchrone loading of images (TO DO: closures in fill routines ? ) |
1313 | |||
1314 | * 25/8 added commmand 'fillpattern image_url' to use an image as 'ctx.fillStyle()' |
||
1315 | * 20/8 added patternfilling to 'userdraw' family |
||
1316 | |||
1317 | ``` |
||
15111 | schaersvoo | 1318 | zoom red |
1319 | userdraw dotfill,blue |
||
1320 | fcircle 3,-3,160,cyan |
||
18571 | bpr | 1321 | fillpattern diamond |
15111 | schaersvoo | 1322 | fcircle 0,3,160,green |
1323 | fillpattern hatch |
||
1324 | fcircle -3,-3,160,red |
||
1325 | fillpattern dot |
||
1326 | fcircle -6,3,160,blue |
||
1327 | fillpattern grid |
||
1328 | opacity 165,160 |
||
1329 | yrange -5,5 |
||
11858 | schaersvoo | 1330 | xrange -5,5 |
15111 | schaersvoo | 1331 | size 370,370 |
16849 | obado | 1332 | ``` |
11874 | schaersvoo | 1333 | |
16849 | obado | 1334 | * 18/8 added command 'fillpattern grid | dot | hatch | diamond' |
1335 | * 14/8 added commands 'textfill x,y,color,sometext' and 'userdraw textfill,color,some_text' |
||
1336 | * 13/8 updated html docs |
||
11891 | schaersvoo | 1337 | |
16849 | obado | 1338 | ``` |
15111 | schaersvoo | 1339 | clearbutton REMOVE |
1340 | fill 0,5,red |
||
1341 | gridfill 4,0,3,3,blue |
||
1342 | diamondfill -4,0,6,6,cyan |
||
1343 | dotfill 0,0,6,6,green |
||
1344 | linewidth 1 |
||
1345 | userdraw hatchfill,red |
||
1346 | plot blue,-x^2+4 |
||
1347 | plot red,x^2-4 |
||
1348 | yrange -5,5 |
||
11891 | schaersvoo | 1349 | xrange -5,5 |
15111 | schaersvoo | 1350 | size 150,150 |
16849 | obado | 1351 | ``` |
11891 | schaersvoo | 1352 | |
15111 | schaersvoo | 1353 | userdraw clickfill,color (will use only color,no pattern) |
1354 | userdraw hatchfill,color |
||
1355 | userdraw dotfill,color |
||
1356 | userdraw gridfill,color |
||
1357 | userdraw diamondfill,color |
||
11893 | schaersvoo | 1358 | |
16849 | obado | 1359 | * 12/8 added to userdraw family (not yet 'cleaned' the js-code) the commands: |
1360 | * 11/8 function 'find_angle' was gone fishing in case of command 'protractor' |
||
1361 | added gridfill,hatchfill,diamondfill |
||
15111 | schaersvoo | 1362 | example: |
1363 | added pattern to command 'userdraw clickfill,color' |
||
1364 | other patterns will -hopefully- follow |
||
16849 | obado | 1365 | * 10/8 premature version of pattern filling ; for now only 'dotfill x,y,dx,dy,color' |
15111 | schaersvoo | 1366 | if set the text will not start at given (x:y) but end at (x:y) |
16849 | obado | 1367 | * 8/8 added keyword 'yoffset' for use with rotated text strings (command textup or stringup) |
1368 | * 4/8 multidraw primitive 'text' is now always x-centered on click-coordinates |
||
15111 | schaersvoo | 1369 | reorganized canvasdraw.c : commands in alfabetical order (cleaning & formatting not yet ready) |
1370 | (added 'this.use_once') |
||
16849 | obado | 1371 | * 3/8 corrected flaw introduced by keywords xyoffset etc... removed repeated shifting of text-strings in redraw of canvas |
15111 | schaersvoo | 1372 | the inputfields will be x/y centered on (x:y)... default was left top corner |
1373 | keyword xoffset also active for commands 'input x,y,size,editable,value' and 'userdraw input(s),color' |
||
16849 | obado | 1374 | * 2/8 added keywords xyoffset,xoffset|centered,resetoffset for easier text-label placing close to 'objects' like crosshairs,points... |
1375 | * 26/7 multidraw_button_table now centered in tooltip placeholder div element (using style="margin: 0 auto;" ) |
||
1376 | * 25/7 multidraw command 'text' now will place a 'text string' on canvas via a mouse-click or (if command multiuserinput is set to 1 for 'text') via x/y inputfields |
||
1377 | * 24/7 corrected multidraw text error (duplicate text) |
||
1378 | * 15/7 added command 'fillall color,x1,y1,x2,y2,x3,y3...xn,yn' for filling multiple speparated areas with the same color |
||
1379 | * 14/7 set timeout on clickfill and while waiting set cursor to 'wait' |
||
11996 | schaersvoo | 1380 | |
16849 | obado | 1381 | ``` |
15111 | schaersvoo | 1382 | clearbutton REMOVE |
1383 | userdraw clickfill,purple |
||
1384 | colorpalette orange,yellow,red,green,lightgreen,blue,lightblue,cyan |
||
1385 | # multifillcolors orange,yellow,red,green,lightgreen,blue,lightblue,cyan |
||
1386 | replyformat 10 |
||
1387 | snaptogrid |
||
1388 | grid 1,1,grey |
||
1389 | canvastype 4 |
||
1390 | # use the grid canvas 4 as fill borders |
||
1391 | yrange -5,5 |
||
1392 | xrange -5,5 |
||
13514 | schaersvoo | 1393 | size 400,400 |
16849 | obado | 1394 | ``` |
15111 | schaersvoo | 1395 | example of a simple clicktile in direct exec: |
13521 | schaersvoo | 1396 | |
16849 | obado | 1397 | this will bind coordinates with color...if the exercise wishes. |
15111 | schaersvoo | 1398 | added command 'colorpalette color1,color2...color2' for creation of color-buttons to change the click color. |
14038 | schaersvoo | 1399 | |
15111 | schaersvoo | 1400 | to identify the correct color on the correct area... |
1401 | When using something like 'replyformat 10' or another format reporting the 'userdraw_radius[]' the color-number will be part of 'read_canvas()' |
||
1402 | the colors will re-cycle when there are more clicks than colors... |
||
16849 | obado | 1403 | |
1404 | * 13/7 'userdraw clickfill,color' may now make use of command 'multifillcolors color1,color2,color3...color_n' |
||
15111 | schaersvoo | 1405 | fill commands may be used together with 'userdraw clickfill,color' |
1406 | (it will still ignore the bordercolor...I just can't make this work... grrr ) |
||
18571 | bpr | 1407 | command 'filltoborder x,y,bordercolor,color' is still the same as fill |
15111 | schaersvoo | 1408 | command 'fill x,y,color' or 'floodfill c,y,color' may now be used multiple times. |
14035 | schaersvoo | 1409 | |
15111 | schaersvoo | 1410 | read_canvas() will return the click-coordinates |
1411 | areas can be removed (after confirm 'clear ?' ) with command 'clearbutton some_text' |
||
16849 | obado | 1412 | * 11/7 now 'userdraw clickfill,color' can fill multiple selected area's |
15111 | schaersvoo | 1413 | (although this is possible through foreignobject --> blob --> image --> canvas ) |
16849 | obado | 1414 | will be located at (1:0) and the mathml will decide the width and height of the drag/click div's (the div's are added to the 'mother' div and not -of c ourse- to the html5 canvas |
1415 | |||
1416 | ```mathml 1,0,-10000,10000, <span style="font-size:1em;"> |
||
1417 | <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"> |
||
1418 | <mstyle id="wims_mathml347806" mathsize="110%"> |
||
1419 | <mstyle mathsize="200%"> |
||
1420 | <mstyle displaystyle="true"> |
||
1421 | <mfrac> |
||
1422 | <mi>?</mi> |
||
1423 | <mrow><mi>sin</mi> |
||
1424 | <mrow> |
||
1425 | <mo stretchy="true">(</mo> |
||
1426 | <mstyle displaystyle="true"> |
||
1427 | <mfrac><mi>?</mi><mi>?</mi></mfrac> |
||
1428 | </mstyle> |
||
1429 | <mo stretchy="true">)</mo> |
||
1430 | </mrow> |
||
1431 | </mrow> |
||
1432 | </mfrac> |
||
1433 | </mstyle> |
||
1434 | </mstyle> |
||
1435 | </mstyle> |
||
1436 | </math></span>``` |
||
1437 | |||
15111 | schaersvoo | 1438 | so the left top corner of |
1439 | however, the values must still be defined (syntax backwards compatibility) |
||
16849 | obado | 1440 | |
1441 | * 8/7 command mathml will use fill_color/fill_opacity when dragged / clicked ; x2,y2 (used for determining the width/height of the embedded mathml div, are no longer used |
||
1442 | * 6/7 improved onclick & (standard) reply format |
||
1443 | * 5/7 improved drag&drop in case of mathml (or better all xml/html inclusives) |
||
1444 | * 4/7 corrected -again?- color cludge in 'barchart'... |
||
1445 | * 20/5 added forgotten minimal touch-support for multidraw routines |
||
15111 | schaersvoo | 1446 | drag xy|x|y and [xy]snaptogrid are supproted |
1447 | (it's not really dragging , but selecting and moving to a new location by click) |
||
16849 | obado | 1448 | * 12/2 added very primitive dragging to 'mathml' |
14038 | schaersvoo | 1449 | |
16849 | obado | 1450 | ``` |
15111 | schaersvoo | 1451 | line 11 = text_x+";"+text_y+";"+text"\n" |
1452 | line 10 = parallelogram_x+";"+parallelogram_y+"\n" |
||
1453 | line 9 = closedpoly_x+";"+closedpoly_y+"\n" |
||
1454 | line 8 = rects_x +";"+rects_y+"\n" |
||
1455 | line 7 = polys[3-9]_x+";"+polys[3-9]_y+"\n" |
||
1456 | line 6 = triangles_x+";"+triangles_y+"\n" |
||
1457 | line 5 = lines_x+";"+lines_y+"\n" |
||
1458 | line 4 = arrows_x+";"+arrows_y+"\n" |
||
1459 | line 3 = segments_x+";"+segments_y+"\n" |
||
1460 | line 2 = circles_x+";"+circlespoint_y+";"+multi_radius+"\n" |
||
1461 | line 1 = points_x+";"+points_y+"\n" |
||
16849 | obado | 1462 | ``` |
15111 | schaersvoo | 1463 | The output is always a 11 lines string with fixed sequence. |
14038 | schaersvoo | 1464 | |
15111 | schaersvoo | 1465 | multiple parallograms may be used: the coordinates are stored in "line 10" in the reply |
1466 | multiple polys[3-9] may be used: poly[3-9] or polys[3-9] has "line 7" in the reply |
||
1467 | removed command poly[s][3-9] and parallelogram[s] from 'triangle' sub-command and used as additional commands. |
||
1468 | command multidraw |
||
16849 | obado | 1469 | * 9/2 |
1470 | |||
1471 | ## 2017 |
||
15111 | schaersvoo | 1472 | the same canvas :making it possible to do a 'userdraw clickfill,color' & pan & zoom on the single js-curves-canvas |
16849 | obado | 1473 | * 30/10 added some options to command jsplot/jscurve: multiple js-curves may now be plot in a single command and on |
15111 | schaersvoo | 1474 | But it's still a vary ugly cludge caused by the "Flydraw backwards compatibility" |
1475 | then this family&size will be used. |
||
1476 | if command "fontfamily 'size px Family'" was given and the size of "m" is larger then a set/default fontsize |
||
16849 | obado | 1477 | the context will use this fontsize in Arial... |
1478 | if command "fontsize int" is given and it's size is larger than the default fontfamily "12px Arial" |
||
1479 | |||
1480 | ``` |
||
15111 | schaersvoo | 1481 | ### |
16849 | obado | 1482 | if( font_size > tmp_font_size ){context_userdraw.font = font_size+\"px Arial\";}; |
15111 | schaersvoo | 1483 | var tmp_font_size = parseInt(context_userdraw.measureText(\"m\").width);\ |
1484 | ### |
||
16849 | obado | 1485 | ``` |
15111 | schaersvoo | 1486 | corrected cludge of fontsize versus fontfamily : |
1487 | color was taken from fontcolor... and not from userdraw command... which is color --> strokecolor |
||
16849 | obado | 1488 | * 29/10 corrected "userdraw text,color" : |
1489 | `x1,y1,text1 \n x2,y2,text2 \n` etc |
||
15111 | schaersvoo | 1490 | changed the default replyformat for 'userdraw text,color' and 'userdraw input(s),color' to the type: |
1491 | (in both cases a right | middle button click will always remove the drawings |
||
1492 | and added to 'clearbutton' the removal of inputfields produced by command "userdraw input(s),color" |
||
16849 | obado | 1493 | * 28/10 corrected ctx-reset flaw in "userdraw text,color" when removing text with the "clearbutton xxx" |
1494 | * 24/10 command vline | hline now have range -100*xmin | 100*ymax : so on "moderate" zooming there will still be a vline | hline |
||
1495 | * 13/10 added keywords "noxaxis" "noyaxis" to "grid" command family |
||
1496 | * 8/10 canvasinfo.sh will (after chmod +x) generate also canvasdraw.phtml and move it to "../../../public_html/scripts/help/en" |
||
15111 | schaersvoo | 1497 | so now every userdraw object may be deleted (indiviually) by a right mouse click...middle click still no good |
1498 | added 'oncontextmenu="return false;"' to main canvas_div to disable context menu with right click on image |
||
16849 | obado | 1499 | * 7/10 added snapto*** to "userdraw clickfill,color" |
1500 | * 6/10 moved command "clickfill color" to the userdraw command list e.g. userdraw clickfill,color: clickfill is per default on the drag_canvas (unless you specify an other canvastype) |
||
1501 | * 5/10 added support for touch devices |
||
1502 | * 30/9 `clear_draw_area()` used by "clearbutton txt" did not reset the internal click-count-variable "xy_cnt" |
||
1503 | * 29/9 corrected errors in replyformat 23 (B. Perrin) |
||
1504 | * 26/9 tried to solve the syntax issues with polyline etc |
||
1505 | * 11/9 added an option to command clock (and corrected the modulo bug :javascript remainder % is not the same as modulo) |
||
15111 | schaersvoo | 1506 | added some html info |
16849 | obado | 1507 | * 10/9 corrected slider display (arguments "display x" and "display y" always showed "x : y" values |
1508 | * 4/7 using '\t' as command separator (for use within OEF) |
||
1509 | * difference between 'arc' and 'angle': 'arc' may set width+height (ellipse) |
||
1510 | * 15/2 corrected filling in command 'arc' |
||
1511 | * 4/2 added command 'rotationcenter xc,yc' and keyword 'killrotate' |
||
1512 | * 3/1 corrected fontsize flaw in commands text / textup |
||
1513 | |||
1514 | ## 2016 |
||
1515 | removed nonexisting 'div' argument 'tabindex=0' (thx to Perrin) |
||
1516 | |||
1517 | * 29/12 clearbutton was incompatible with chromium etc (revert to button.style = "style_text" when all browsers are supporting this construct) |
||
1518 | * 18/9 corrected command 'centerstring' : forgotten clearRect() |
||
1519 | * 17/9 corrected command clock: colors are now -really- optional |
||
1520 | * corrected -fixed- interactive boxplot stuff (js-related) |
||
1521 | * 15/9 disabled 'crispy-lines' when zooming is activated (repeated translation of context) |
||
1522 | * e.g. producing crispy sharp lines : if(line_width %2 == 1){ctx.translate(0.5,0.5);} |
||
1523 | * 12/9 now linewidth 1 == 1px and linewidth 2 == 2px |
||
1524 | * 5/9 added command boxplot and jsboxplot |
||
1525 | * 3/9 added commands xerrorbars,yerrorbars to dragdrop library |
||
15111 | schaersvoo | 1526 | minor corrections in html-doc for fontsize ; although it will not compensate for 'not-reading-the-docs' ! |
1527 | corrected flaw in draw_points() |
||
1528 | (the single command 'userdraw type,color) will NOT ZOOM / PAN !!) |
||
16849 | obado | 1529 | * 30/8 multidraw primitives will now zoom / pan (added function redraw_all()) |
1530 | added several alternatives to html-doc |
||
1531 | * 25/8 added command 'cursor some_css_cursor' |
||
1532 | * 20/8 added 'rect' and 'rects' to multidraw command |
||
1533 | * 10/8 added 'xaxisup' and modified grid extension 'barchart' using the xminor/x2step for the bar-width... |
||
1534 | * 2/8 added 'text' to 'multidraw' |
||
1535 | * when status=done the image will be shown in the page --> canvas_div.style.display='block' |
||
1536 | * 28/7 read_canvas and read_dragdrop in popup window |
||
1537 | * no yet suitable for communication back to wims...[work in progress] |
||
1538 | * embedding canvasdraw into separate window xsize x ysize |
||
1539 | * 26/7 added keyword 'popup' |
||
1540 | * 21/7 added command `triangles color,x1,y1,x2,y2,x3,y3,...` |
||
14038 | schaersvoo | 1541 | |
16849 | obado | 1542 | ``` |
15111 | schaersvoo | 1543 | # reply[3]...reply[5] = protractor |
1544 | # reply[0]...reply[2] = ruler |
||
1545 | replyformat 32 |
||
14044 | schaersvoo | 1546 | |
15111 | schaersvoo | 1547 | protractor 2,-2,6,0,-1,1,1 |
1548 | ruler -4,3,5,1,-1,1 |
||
1549 | opacity 255,40 |
||
1550 | fillcolor orange |
||
14071 | bpr | 1551 | |
15111 | schaersvoo | 1552 | vline 0,0,black |
1553 | hline 0,0,black |
||
1554 | yrange -5,10 |
||
1555 | xrange -5,10 |
||
1556 | size 400,400 |
||
16849 | obado | 1557 | ``` |
14053 | schaersvoo | 1558 | |
16849 | obado | 1559 | * 14/7 combinations of ruler & protractor |
1560 | * 13/7 added command macro `ruler x,y,x-width ,y-height,passive_mode` |
||
15111 | schaersvoo | 1561 | snaptogrid implementes ( xy | x | y ) |
16849 | obado | 1562 | reply format implemented `(read_canvas()) reply[0] = x;reply[1] = y;reply[2]=angle_in_radians`, |
1563 | value display implemented, |
||
1564 | left-right rotation with mouse (left click & drag), |
||
1565 | zooming implemented, |
||
1566 | * 12/7 added 'macro' command 'protractor x,y,x-width,type,passive_mode,value_display |
||
1567 | * 8/7 revert to normal size of a point at 'linewidth = 1' (e.g. differ from ridiculous small point size of flydraw) |
||
15111 | schaersvoo | 1568 | This last -duplicated- point is removed from the answer array |
1569 | only 1 onject can be drawn (only with mouse).The poly is closed when clicking on the first point again (+/- 10px) |
||
16849 | obado | 1570 | * 7/7 added argument 'closedpoly' to command 'multidraw' |
14063 | schaersvoo | 1571 | |
15111 | schaersvoo | 1572 | When things are more mature and speed is no longer an issue, the 'single userdraw' command will be replaced by multi* |
1573 | And yes, these are horrible long command names. |
||
1574 | multifillopacity,multiuserinput,multilabel,multilinewidth,multisnaptogrid |
||
1575 | multidraw,multidash,multistrokecolors,multifill,multifillcolors,multistrokeopacity, |
||
16849 | obado | 1576 | * 26/6 multi-family of commands are 'finished' |
15111 | schaersvoo | 1577 | NOT READY: many issues are still unadressed |
14071 | bpr | 1578 | |
15111 | schaersvoo | 1579 | (to increase speed of execution) |
1580 | The js-canvas drawfunctions will be different (simpler) compared with the single 'userdraw obj,color' functions |
||
1581 | using buttons to switch drawing primitive... |
||
16849 | obado | 1582 | * 17/6 added experimental 'multidraw', allowing multiple drawing primitives in a single canvas image, |
14208 | schaersvoo | 1583 | |
15111 | schaersvoo | 1584 | added command 'snaptofunction some_fun_x,some_fun_y' |
14208 | schaersvoo | 1585 | |
16849 | obado | 1586 | frect -3,3,0,0,red |
1587 | slider -5,5,120,10,x function display,some_text |
||
1588 | sliderfunction_x 5*sin(x) |
||
17581 | bpr | 1589 | |
16849 | obado | 1590 | 'sliderfunction_y some_operation_on_y' |
1591 | 'sliderfunction_x some_operation_on_x' |
||
1592 | added command |
||
1593 | added argument 'function' to the slider objects. |
||
1594 | * 28/4 removed point2point... |
||
1595 | * 24/4 added experimental command 'point2point x,y,color1,color2,x-relation_1:y-relation_1: ... : x-relation_n_:y-relation_n |
||
15111 | schaersvoo | 1596 | make background color in generated <span> elements adjustable via command 'fillcolor' |
1597 | make font color in generated <span> elements adjustable via command 'strokecolor' |
||
1598 | todo: |
||
16849 | obado | 1599 | * 23/4 removed most static settings of fontsize and/or style. |
1600 | * 22/4 corrected 'static fontsize settings' in some js-user-input stuff, using size set by 'command fontsize int'... to be continued |
||
1601 | * 21/4 corrected missing 'ctx.restore()' in case of arrow (gives very strange rotations when using a slider to rotate only the arrow...) |
||
1602 | * 19/4 changing "abs" by "fabs" in case of floating point variables. (BPR) |
||
1603 | * 8/4 added forgotten /*<![CDATA[*/ .... /*]]>*/ to script tag |
||
1604 | * 25/2 Internet Explorer & "use strict" : changed 'span.style="color:..." into span.setAttribute('style','color:...'); |
||
14208 | schaersvoo | 1605 | |
15111 | schaersvoo | 1606 | (even those not set draggable) |
1607 | note: all external images positions will be present in the 'read_canvas' array |
||
1608 | the third image position is (-2:-5) |
||
1609 | the second image position is (6:2) and |
||
1610 | the first image position is (-5:4) , |
||
1611 | 0:-5:4,1:6:2,2:-2:-5 |
||
1612 | e.g. expect in case of 3 external images set draggable, something like |
||
1613 | read_canvas() will reply "object_number:x:y" of all external images introduced by commands 'copy copyresized' |
||
16849 | obado | 1614 | |
1615 | - corrected replyformat 20 (only used for external image drag&drop... outside the dragstuff library !!) |
||
1616 | - corrected resetting of 'reply array' in case of zooming... (why did I reset this?) |
||
1617 | * 17/2 |
||
1618 | - added check on wims_status=done when using 'onclick' (otherwise objects can be 'clicked/dragged' in an answer.phtml) |
||
1619 | - simplified onclick things in external images |
||
1620 | - fixed bug when onclick external images were mixed with static external images |
||
1621 | * 16/12 - corrected 'userdraw points,color' erase/redraw bug (using 'clearbutton buttontxt') |
||
1622 | * 7/12 - onclick objects may now be of any type (eg external images ,via copy /copyresized or any other canvas 'object') |
||
15111 | schaersvoo | 1623 | see canvassdraw.html for possible usage and limitations |
16849 | obado | 1624 | * 25/11 - added "onclick" to external images (via commands copy / copyresized) |
15111 | schaersvoo | 1625 | -again tried to fix copy/copyresized (grrr) |
1626 | and thus reset to "0,0,0" |
||
16849 | obado | 1627 | * 24/11 |
1628 | - corrected syntax-flaw in js-function draw_rects() ; both stroke_color and fill_color were not correctly defined |
||
15111 | schaersvoo | 1629 | analogue to command 'ellipse' |
16849 | obado | 1630 | - corrected command 'arc' : switched from width/height (width and height may now be different) in pixels to width / heigth in x/y-range |
15111 | schaersvoo | 1631 | now "linewidth 1" is almost invisible, just as in 'flydraw'...that is a clear improvement :) |
16849 | obado | 1632 | - synchronised size of point / points with flydraw |
15111 | schaersvoo | 1633 | The image may be of type BITMAP and SVG |
1634 | (even if there is no external image imported) |
||
16849 | obado | 1635 | * 23/11 - solved issue with drawing onto external images: now a empty 'external_image' canvas is created first / per default... |
15111 | schaersvoo | 1636 | image operations are now performed on a "real canvas" and no longer on a "canvas_div" |
16849 | obado | 1637 | * 22/11 |
1638 | - joined draw_external_images and drag_external_images |
||
15111 | schaersvoo | 1639 | - changed output "function distance()" from integer to floating point. (slightly better in case of snaptopoints) |
16849 | obado | 1640 | * 9/11 |
1641 | - fixed bug of increasing font_size when using multiple 'text' commands [perrin] |
||
15111 | schaersvoo | 1642 | - added "xsnaptogrid,ysnaptogrid,snaptogrid,snaptopoints" to dragging of 'external images' |
1643 | - "click_cnt" counter (to identify the object in reply) only incremented when 'onclick' and / or "drag x|y|xy" is set. |
||
1644 | - added "snaptopoints" to userdraw primitives and drag&onclick library |
||
16849 | obado | 1645 | * 6/11 - corrected dragging (dragging was missing...) of closed polygon (triangle etc) |
1646 | ``` |
||
15111 | schaersvoo | 1647 | userdraw arrow,blue |
1648 | #userdraw arrows2,blue |
||
1649 | arrowhead 10 |
||
1650 | linewidth 2 |
||
1651 | snaptopoints 0,0,-6,0,-3,3,0,6,3,3,6,0,3,-3,0,-6,-3,-3 |
||
1652 | points red,-6,0,-3,3,0,6,3,3,6,0,3,-3,0,-6,-3,-3 |
||
1653 | point 0,0,blue |
||
1654 | linewidth 3 |
||
1655 | yrange -10,10 |
||
1656 | xrange -10,10 |
||
1657 | size 400,400 |
||
16849 | obado | 1658 | ``` |
15111 | schaersvoo | 1659 | only implemented in command "userdraw arrow(s),color" |
16849 | obado | 1660 | * 5/11 |
1661 | - added experimental command "snaptopoints x1,y1,x2,y2,..." |
||
1662 | - added command "bezier color,xs,ys,x1,y1,x2,y2,x3,y3" |
||
1663 | - added alernative to command "polyline" : "path color,x1,y1,x2,y2,...." |
||
1664 | - added command "roundrects color,radius,x1,y1,x2,y2,...." |
||
1665 | - added command "vlines color,x1,y1,x2,y2,...." |
||
1666 | - added command "hlines color,x1,y1,x2,y2,...." |
||
1667 | - added command "demilines color,x1,y1,x2,y2,...." alternative "halflines" |
||
1668 | * 3/11 - added commands "rects color,x1,y1,x2,y2,...." and "frects color,x1,y1,x2,y2,...." |
||
1669 | * 2/11 - docs |
||
1670 | * 1/11 |
||
1671 | - corrected font behaviour of Flydraw text command. |
||
15111 | schaersvoo | 1672 | Flydraw command "lines" is equivalent to "polyline" |
1673 | "polyline" | "polylines" | "brokenline" | "brokenlines" will produce interconnected segments between the points (not closed) |
||
1674 | "lines" will produce not connected lines through points (x1:y1)--(x2:y) etc |
||
16849 | obado | 1675 | - syntax changed for command "lines color,x1,y1,x2,y2...x_n-1,y_n-1,x_n,y_n" |
1676 | - corrected command "clearbutton some_text" : multiple interactive scripts in web page may have individual 'clear drawing buttons' |
||
1677 | - corrected crosshair_size |
||
15111 | schaersvoo | 1678 | can be set draggable / onclick individually |
14208 | schaersvoo | 1679 | |
16849 | obado | 1680 | * 29/10 |
1681 | - added command "arrows2 color,head px,x_1a,y_1a,x_1b,y_1b,x_2a,y_2a,x_2b,y_2b....x_na,y_na,x_nb,y_nb |
||
1682 | - added 'replyformat 28' to reinput date from 'userdraw circles,color' [perrin] |
||
1683 | * 17/10 |
||
1684 | - removed empty string error warning in 'char *get_string_argument(); [perrin] |
||
1685 | - removed macro "iscalculation" and replace it by something better... |
||
1686 | - added command "arrows color,x1,y1,x2,y2...x_n,y_n |
||
15111 | schaersvoo | 1687 | note: radius is not in pixels but in xy-coordinate system ! (so dragging / onclick / scaling works ) |
16849 | obado | 1688 | * 11/10 |
1689 | - added command "circles color,x1,y1,r1,x2,y2,r2...x_n,y_n,r_n |
||
15111 | schaersvoo | 1690 | like: "0.2345^1.234x" will receive a warning : it should be "(0.2345)^(1.234x)" |
1691 | (but they have a small footprint...) |
||
16849 | obado | 1692 | - added warnings when plot function input has "syntax" issues...well it's more likely that my simple math-parsers are too simple |
1693 | - added command segments color,x1,y1,x2,y2....x_n,y_n [perrin] |
||
1694 | - added simple javascript "rawmath" to convert user function input (like : 4x --> 4*x) |
||
15111 | schaersvoo | 1695 | default value 'f(x)=' |
16849 | obado | 1696 | - added command 'functionlabel some_string' to label the specific inputfields for function input |
1697 | |||
1698 | * 9/10 |
||
1699 | - now multiple functions may be plotted by user via 'userinput function' and read via read_canvas() |
||
1700 | |||
1701 | ``` |
||
1702 | function read_dragdrop(){ |
||
1703 | var script_len = canvas_scripts.length;var dragdrop_reply = "";var found_result = false;for(var p = 0 ; p < script_len ; p++){var fun = eval("read_dragdrop"+canvas_scripts[p]);if(typeof fun === 'function'){var result = fun();if( result && result.length != 0 ){if(script_len == 1 ){ return result;};found_result = true;dragdrop_reply = dragdrop_reply + result +"\n";};};};if( found_result ){return dragdrop_reply;}else{return null;};}; |
||
15111 | schaersvoo | 1704 | <!-- will return all 'drag&drop' or 'onclick' data from all canvas javascript includes --> |
1705 | }; |
||
1706 | }; |
||
1707 | return null; |
||
1708 | { |
||
1709 | else |
||
1710 | } |
||
1711 | return draw_reply; |
||
1712 | if( found_result ){ |
||
1713 | }; |
||
1714 | }; |
||
1715 | }; |
||
1716 | draw_reply = draw_reply + result + "\n"; |
||
1717 | found_result = true; |
||
1718 | if(script_len == 1 ){ return result;}; |
||
1719 | if( result && result.length != 0){ |
||
1720 | var result = fun(); |
||
1721 | if( typeof fun === 'function'){ |
||
1722 | var fun = eval("read_canvas"+canvas_scripts[p]); |
||
1723 | for(var p = 0 ; p < script_len ; p++){ |
||
1724 | var found_result = false; |
||
1725 | var draw_reply = ""; |
||
1726 | var script_len = canvas_scripts.length; |
||
1727 | function read_canvas(){ |
||
1728 | <!-- will return all 'userdraw' or 'userinput' data from all canvas javascript includes --> |
||
16849 | obado | 1729 | ``` |
15111 | schaersvoo | 1730 | A special version of 'read_canvas()' and 'read_dragdrop()' should be included in the web page, something like this: |
14208 | schaersvoo | 1731 | |
16849 | obado | 1732 | In the C-program, the local functions will be called `read_canvas%d()` with '%d' is the random `canvas_root_id` |
1733 | array `canvas_scripts` will keep track of the `canvas_root_id` number of scripts included in the page. |
||
1734 | The native `read_canvas()` and `read_dragdrop()` are now linked to the `canvas_root_id` and a global |
||
14225 | schaersvoo | 1735 | |
16849 | obado | 1736 | * 1/10 -multiple interactive canvasdraw scripts in a single page may now work correctly in replying the userdrawarrays and the drag&drop data.. |
1737 | * 25/9 -added command 'demiline x1,y1,x2,y2,color` and commands 'userdraw demiline,color' 'userdraw demilines,color' |
||
1738 | * 22/9 -corrected missing js-variable declaration in 'userdraw path(s) ' [use strict] |
||
1739 | * 20/9 -added userinput function | input | textarea as alternative command + argment to keywords "userinput_function","userinput_textarea" and "userinput_xy" |
||
1740 | * 11/9 -tried to improve 'filltoborder x,y,bordercolor,fillcolor' |
||
1741 | * 10/9 -added keyword 'userinput_function' |
||
1742 | * 9/9 -corrected placement of inputfields 'userdraw inputs,color' (no longer can input fields be placed on top of each other |
||
1743 | * 30/8 |
||
1744 | - added command 'clearbutton button_text' to remove all user drawings from userdraw_canvas (and empty all userdraw data arrays) |
||
15111 | schaersvoo | 1745 | (although I'm not happy to increase the size of the general part of the include file) |
1746 | ...sometimes functions expect these array's to be defined [use strict] |
||
1747 | - added userdraw_x = [],yserdraw_y = [],userdraw_radius = [] to global section of javascript include |
||
16849 | obado | 1748 | * 29/8 |
1749 | - corrected 'display radius,color,fontsize' in case there is no 'userdraw circle,color' defined |
||
1750 | - corrected 'use strict' problems with 'clock' |
||
15111 | schaersvoo | 1751 | display x | y | xy | degree | radius ,color,fontsize |
16849 | obado | 1752 | |
1753 | * 28/8 |
||
1754 | - added argument 'radius' to mousedisplay (in case of 'userdraw circle,color' |
||
15111 | schaersvoo | 1755 | x_input_1:y_input_:1input_value_1,x_input_2:y_input_:2input_value_2... |
16849 | obado | 1756 | - added 'replyformat 27' : read_canvas() will return array |
1757 | * 27/8 - corrected flaw [sigalled by 'use strict'] in 'userdraw text,color' |
||
1758 | * 26/8 - added command 'userdraw input,color' and 'userdraw inputs,color' [work in progress] |
||
15111 | schaersvoo | 1759 | type: x display | y display | xy display | angle degree | angle radian |
1760 | display slider values, use: |
||
1761 | type: x | y | xy | angle |
||
1762 | slider min,max,width,height,type,string |
||
14230 | schaersvoo | 1763 | |
16849 | obado | 1764 | * 24/8 - reverted to originale command 'display' and modified slider arguments to support a per slider display of it's value in the main canvas window |
15111 | schaersvoo | 1765 | work in progress |
16849 | obado | 1766 | * 23/8 - added 'slider | slider_degree | slider_radian' to command "display x|y|xy|degree|slider|slider_degree|slider_radian,color,fontsize" |
14232 | schaersvoo | 1767 | |
16849 | obado | 1768 | ``` |
15111 | schaersvoo | 1769 | zoom blue |
1770 | userdraw segment,orange |
||
1771 | string black,0.9,0.1,P |
||
1772 | fontfamily italic 24px Courier |
||
1773 | point 1,0,orange |
||
1774 | linewidth 4 |
||
1775 | angle 0,0,0.3,0,0,green |
||
1776 | fillcolor yellow |
||
1777 | filled |
||
1778 | segment 0,0,1,0,orange |
||
1779 | linewidth 2 |
||
1780 | slider 0,2*pi,200,40,angle degree,use slider to rotate point P |
||
1781 | circle 0,0,200,red |
||
1782 | fillcolor white |
||
1783 | grid 1,1,grey,4,4,10,blue |
||
1784 | xaxis 0:0:1:1:2:2:3:3:4:4:5:5:6:6:0.5*pi:\u03c0/2:pi:\u03c0:1.5*pi:3\u03c0/2:2*pi:2\u03c0:3*pi:3\u03c0:4*pi:4\u03c0 |
||
16849 | obado | 1785 | fontfamily bold 14px Arial |
15111 | schaersvoo | 1786 | opacity 200,150 |
1787 | axis |
||
1788 | yrange -1,1 |
||
1789 | xrange -1,7 |
||
1790 | size 800,200 |
||
16849 | obado | 1791 | ``` |
1792 | for example: |
||
1793 | if the grid does not match the xaxis values:strings there will be extra tics |
||
15111 | schaersvoo | 1794 | - added x/y-tics in command 'grid xmajor,ymajor,color,xminor,yminor,tics-size,axiscolor' case of command 'xaxis' or 'yaxis' |
16849 | obado | 1795 | |
1796 | * 21/8 |
||
1797 | - corrected rotation direction in case of 'slider type angle' (anti-clockwise) |
||
15111 | schaersvoo | 1798 | - removed 'animate' from dragstuff library : this should be done with a kind of slider...TO DO !! |
1799 | hope this works for all browsers...tested on FreeBSD Opera/Firefox/Seamonkey/Chrome |
||
14234 | schaersvoo | 1800 | |
16849 | obado | 1801 | * 20/8 |
1802 | - added 'use strict'; to js-include [just to make sure the js-code is "properly written" |
||
15111 | schaersvoo | 1803 | - slider using 'xy' will start & end by clicking the 'slider rect' |
1804 | 'angle' will zoom in/out (using scale_x_radius();) and will use radians for slider values (in contrast to 'arc' which uses width/height in pixels) |
||
1805 | - added command 'angle x,y,width,start,end,color' as alternative to flydraw compatible command 'arc' |
||
16849 | obado | 1806 | |
1807 | * 19/8 - improved response speed of slider (in dragstuff library) |
||
15111 | schaersvoo | 1808 | The amount of sliders in not limited |
1809 | now a slider may adjust several different objects...until keyword 'killslider' or next 'slider' |
||
16849 | obado | 1810 | |
1811 | * 18/8 |
||
1812 | - added keyword 'killslider' |
||
15111 | schaersvoo | 1813 | - for all other object the slider will 'move' / 'rotate' the complete object |
1814 | - if slider is used for command 'arc' the angle will be set with the slider |
||
1815 | - javascript:read_dragdrop(); will return an array 'object number:slider value' |
||
16849 | obado | 1816 | * 17/8 - type: xy,x,y,angle : added slider 'rect' for xy movement |
1817 | * 15/8 - further integration of slider: all draggable objects may have sliders (x/y/angle) |
||
1818 | * 14/8 |
||
1819 | - adding slider to dragstuff library : work in "progress" |
||
15111 | schaersvoo | 1820 | - adapted 'rotate angle' to be compatible with flydraw... : -1*angle (Marina) |
1821 | - correct imagefill etc : reset() was missing (Marina) |
||
16849 | obado | 1822 | * 5/8 - added replyformat 25/26 : 'userdraw arc(s),color' with degrees or radians |
15111 | schaersvoo | 1823 | STILL NOT 100% CORRECT !! |
16849 | obado | 1824 | * 4/8 |
1825 | - corrected command 'userdraw arc,color' |
||
15111 | schaersvoo | 1826 | - added precision to the dragdrop library (eg. read_dragdrop() ) |
16849 | obado | 1827 | * 28/7 |
1828 | - added precision to the read_canvas() functions. |
||
15111 | schaersvoo | 1829 | - corrected command 'ellipse' : switched from Beziercurve to arc-method. Should now be a true ellipse |
1830 | - corrected command 'roundrect' : no inverted roundrect possible |
||
16849 | obado | 1831 | * 27/7 - corrected command 'square' ... |
1832 | * 26/7 |
||
1833 | - corrected a few flaws introduced by internal changing from 'translation' to 'affine' |
||
15111 | schaersvoo | 1834 | - corrected command 'lattice' (hope it's ok now) |
1835 | - corrected missing dashing of 'arrow' 'arrow2' |
||
1836 | to imitate flydraw's filling is too much work ... for both browser js-engine and me ... |
||
1837 | remark: hatchfill/dotfill/diamondfill are not the same as flydraw...I've not understood the flydraw filling correctly... |
||
1838 | - corrected 'filltoborder' and 'floodfill' ... it should / could work now |
||
1839 | - corrected command 'square x,y,side px,color' |
||
1840 | Changed several functions: new flaws in javascript may be introduced. |
||
1841 | the translation_ty being affine_matrix[5] |
||
1842 | the translation_tx being affine_matrix[4] |
||
1843 | - removed internal variable used by 'translate' and moved to generic 'affine matrix' |
||
1844 | - corrected affine : tx/ty now in x/y-range |
||
16849 | obado | 1845 | * 25/7 Thanks to Marina: |
1846 | |||
1847 | * 29/6 |
||
1848 | - added mousex / mousey commands : just show x or y values of mouse coordinates |
||
1849 | - changed command 'barchart' : now "unlimited" barchart commands will be plotted in a single graph. |
||
1850 | - reverted some correction mechanism for grid / axisnumbering when zooming out...need to rething |
||
15111 | schaersvoo | 1851 | 'userdraw vlines,color' |
1852 | 'userdraw vline,color' |
||
1853 | 'userdraw hlines,color' |
||
1854 | 'userdraw hline,color' |
||
16849 | obado | 1855 | - added |
15111 | schaersvoo | 1856 | Now the sequence is not important. However both commands should be called at the end of the script |
1857 | ('mouse' was only active when 'zoom' function was called before 'mouse') |
||
16849 | obado | 1858 | |
1859 | * 28/6 |
||
1860 | - corrected preference behaviour of commands 'zoom' and 'mouse' |
||
15111 | schaersvoo | 1861 | - removed some '\n' from js include code |
14234 | schaersvoo | 1862 | |
16849 | obado | 1863 | * 27/6 |
1864 | - "replyformat 15" will only report inputfields/textareas set 'write' (eg not set 'readonly') |
||
15111 | schaersvoo | 1865 | - added "replyformat 24" read all inputfields/textareas even those set 'readonly' |
16849 | obado | 1866 | * 23/6 - added command 'centerstring color,y,text' for placing a x-centered text in the canvas |
1867 | * 21/6 |
||
1868 | - corrected command jsplot : now more complex(...) functions may be used. |
||
1869 | - increased value MAX_INT from 64 -> 128 : this is used for several arrays in C |
||
1870 | - added some info on 'sgraph' (...) |
||
1871 | * 18/6 |
||
1872 | - solved small issue with removal of userdraw circle |
||
15111 | schaersvoo | 1873 | - solved issue with precision (multiple roundings x <--> px) in read_canvas() and js-functions x2px(x) / px2x(px):last precision in script is used for reply-precision |
1874 | - fix stupid error in 'replyformat 23' |
||
1875 | - zoom in y-direction was gone fishing... |
||
1876 | - if wims_status='done' all 'drawing' related input fields are removed (eg. userinput_xy etc) |
||
1877 | - added flag to avoid multiple including of safe_eval, usd by several optional things |
||
1878 | added some alert message when inputstring has unfinished calculations , 'like 123 + 10^5/678' |
||
1879 | - adapted 'safe_eval' to accept numbers like 2.345*10^5 (previous version only accepted 10^5...) |
||
1880 | (barchart and linegraph are closely linked to grid: there can be multiple linegraphs in a single grid...but there can only be 1 grid) |
||
16849 | obado | 1881 | |
1882 | * 17/6 |
||
1883 | - modified command 'piechart' and 'legend' : now multiple piecharts with legends may be present in a single canvas image |
||
15111 | schaersvoo | 1884 | - mouseup() in draglibrary corrected |
16849 | obado | 1885 | * 15/6 - added timeout for floodfill and filltoborder: the canvas was not yet 'drawn' in current setup , when floodfill was called... |
1886 | * 10/6 - added '(xy)snaptogrid' to drag library |
||
15111 | schaersvoo | 1887 | overide this default behaviour with keyword 'status' or 'nostatus' |
16849 | obado | 1888 | * 8/6 |
1889 | - inputfields/textarea's in canvasimage will be cleared and set 'readonly' when wims status variable is 'done' |
||
15111 | schaersvoo | 1890 | (in case you want to draw something...but not send the drawing to wims..) |
1891 | - added 'replyformat -1' to disable the javascript read_canvas() function |
||
1892 | added commands 'userdraw arrow2' and 'userdraw arrows2' |
||
16849 | obado | 1893 | * 7/6 |
1894 | - corrected more inbalance in save() / restore() in 'draw_arrow()' |
||
15111 | schaersvoo | 1895 | - corrected inbalance in save() / restore() causing annoying problems in command 'arc' |
1896 | todo CHECK THE REST !! |
||
1897 | - added forgotten rotate&angle arguments to commands 'string / text' |
||
1898 | - changed command 'grid' : now zooming and axisnumbering is slightly better...but it stays amateur scribling, grrrr... |
||
1899 | - corrected typo "};else{" in javascript replyformat 7 |
||
16849 | obado | 1900 | * 6/6 |
1901 | - removed randomness from command clock (was annoying) |
||
15111 | schaersvoo | 1902 | added a lightweight javascipt function to convert math into js-math (only suitable for basic stuff) |
1903 | for plotting curves using clientside calculations: formula is verbatim in page-source |
||
16849 | obado | 1904 | - added command jscurve color,formula_in_x |
1905 | * 5/6 - work in progress: |
||
1906 | * 2/6 - BPR: replace the dependance with libmatheval to the wims evaluation. |
||
15111 | schaersvoo | 1907 | allowing all combinations of 'setlimits', 'trace_jsmath' ,'jsmath' , 'userinput_xy+userdraw' , mouse , drag etc |
16849 | obado | 1908 | * 1/6 |
1909 | - added keyword 'setlimits' |
||
15111 | schaersvoo | 1910 | - work in progress: added keyword 'setlimits' |
16849 | obado | 1911 | * 31/5 - slightly modified "trace_jsmath some_js_math_function_in_x" and "jsmath some_js_math_function_in_x" |
1912 | * 30/5 - added commands `trace_jsmath some_js_math_function_in_x` and `jsmath some_js_math_function_in_x` |
||
1913 | * 27/5 - javascript variable 'precision' was gone fishing |
||
15111 | schaersvoo | 1914 | level curve may be set 'onclick' or 'draggable'; every single curve has an unique identifier |
16849 | obado | 1915 | * 23/5 - command 'levelcurve' : the quality of the curves is not to be compared with the 'Flydraw levelcurve' |
15111 | schaersvoo | 1916 | I'm not sure if this should be implemented in javascript... |
16849 | obado | 1917 | * 22/5 - work in progress: added command 'levelcurve' |
15111 | schaersvoo | 1918 | removed function get_double() from canvasdraw. |
1919 | corrected command 'rays color,xc,yc,x1,y1....xn,yn' (it was using pixels instead of x/y-range coordinates) |
||
16849 | obado | 1920 | * 21/5 - added forgotten commande 'dvline' and 'dhline' |
15111 | schaersvoo | 1921 | note: mouse coordinates (for drag / onclick) are not transformed....TODO) |
16849 | obado | 1922 | * 20/5 - added command 'affine a,b,c,d,tx,ty' and keyword 'killaffine' (Marina Cazzola) |
15111 | schaersvoo | 1923 | 'snaptogrid' " will snap to both xmajor and ymajor (or xminor and yminor, if defined) |
1924 | 'ysnaptogrid' : will snap to ymajor (or yminor, if defined) |
||
1925 | 'xsnaptogrid' : will snap to xmajor (or xminor, if defined) |
||
16849 | obado | 1926 | * 19/5 - added keywords |
15111 | schaersvoo | 1927 | - removed command 'debug' |
1928 | x1,y1,x2,y2,x3,y3,.....x(n-1),y(n-1),xn,yn |
||
1929 | x1,y1,x2,y2,x2,y2,x3,y3,x3,y3.....,x(n-1),y(n-1),x(n-1),y(n-1),xn,yn --replyformat 23--> |
||
16849 | obado | 1930 | * 18/5 - add replyformat 23 : used for 'userdraw polyline' : filtering out the second click on the same (+/- 5 px) point |
15111 | schaersvoo | 1931 | corrected mixup between userdraw polyline / polygon... |
1932 | if the mouse coordinate display or the student reply -in case of 'userdraw'- needs a higher precision, just use as last command something like 'precision 10000' |
||
16849 | obado | 1933 | |
1934 | * 16/5 - command 'precision' before ylogscale / xlogscale will set the number of decimals of the x-axis / y -axis (a local variable precision is set) |
||
15111 | schaersvoo | 1935 | corrected y-axis numbering in case of 'xlogscale' |
16849 | obado | 1936 | * 11/5 |
1937 | - added js function safe_eval() to command 'userinput_xy' to "safely" evaluate math inputs like 10^2 or sqrt(5) |
||
1938 | - corrected x-axis numbering in case of 'ylogscale' |
||
1939 | - corrected problems with ';' in html-text / text-arguments (the ';' is a command separator ... added 22/4) |
||
1940 | - forgotten to clearRect() |
||
15111 | schaersvoo | 1941 | (just more copy and paste "programming") |
16849 | obado | 1942 | * 10/5 - added 'userdraw polygon,color' 'userdraw line,color' and 'userdraw lines,color' to userinput_xy |
1943 | * 5/5 - added commands 'ylogscale' , 'xlogscale' , 'xylogscale' , 'xlogbase' and 'ylogbase' |
||
1944 | * 25/4 - add 'nok' button to remove last item from userdraw arrays |
||
15111 | schaersvoo | 1945 | add keyword usertextarea_xy (...) |
16849 | obado | 1946 | * 24/4 - add userdraw polyline,color |
1947 | * 23/4 - corrected sgraph |
||
1948 | * 22/4 - added semicolon ; as 'new line separator' (Marina Cazzola) |
||
1949 | * 21/4 - corrected command grid in case xmin > 0 and / or ymin > 0 |
||
15111 | schaersvoo | 1950 | for use as very (!) primitive 'broken axis graph' |
16849 | obado | 1951 | * 20/4 - work in progress: add command `sgraph xstart,ystart,xmajor,ymajor,xminor,yminor,majorgrid_color,minorgrid_color` |
14295 | schaersvoo | 1952 | |
16849 | obado | 1953 | ``` |
15111 | schaersvoo | 1954 | 'userdraw arrows,color' |
1955 | 'userdraw arrow,color' |
||
1956 | 'userdraw crosshairs,color' |
||
1957 | 'userdraw crosshair,color' |
||
1958 | 'userdraw circles,color' |
||
1959 | 'userdraw circle,color' |
||
1960 | 'userdraw points,color' |
||
1961 | 'userdraw point,color' |
||
1962 | 'userdraw segments,color' |
||
1963 | 'userdraw segment,color' |
||
1964 | for now: only implemented in |
||
16849 | obado | 1965 | ``` |
14295 | schaersvoo | 1966 | |
16849 | obado | 1967 | * 18/4 - added keyword 'userinput_xy' : if set 2 or 3 inputfields will be shown...the pupil will be able to 'draw' with mouse and/or by giving a x-value and y-value (or radius-value) |
1968 | * 14/4 - added 'snaptogrid' to gridfill and dotfill (e.g. userdraw will snap to the grid) |
||
1969 | * 11/4 - corrected flaw in snaptogrid : now works correctly for dividers xminor and yminor (only if they are even dividers e.g. 2,4,6,8 etc) |
||
1970 | * 8/4 - added to wims_svn |
||
1971 | |||
1972 | * 5/4 - corrected flaw in 'normal' userdraw (without snaptogrid) |
||
15111 | schaersvoo | 1973 | todo: other gridfill commands may use snaptogrid |
1974 | grid 1,1,black,2,2,6,grey : will snap to all minor grid lines n/2 |
||
1975 | grid 1,1,black : it will snap to all major grid lines 'n' |
||
16849 | obado | 1976 | * 2/4 - added command / keyword 'snaptogrid' : a userdrawing will snap to the given grid... |
15111 | schaersvoo | 1977 | added keyword 'status' to disable this default behaviour (e.g. pupils may draw in canvas when wims $status=done |
16849 | obado | 1978 | * 25/3 - userdraw functions only active if wims $status != done |
15111 | schaersvoo | 1979 | canvasdraw now only works in correct wims_environment : e.g. ./canvadraw < fly.txt will not work anymore |
1980 | No option anymore to gzip the include. |
||
1981 | The rest is printed in a fairly small buffer and printed to stdout at the end of parsing the fly-script. |
||
16849 | obado | 1982 | * 23/3 - simplified buffer usage : now js-include file in wims-getfile-directoy is standard. |
14295 | schaersvoo | 1983 | |
16849 | obado | 1984 | Probably have to look into str_replace() ! |
1985 | segfault occured in case "blah" was not present in "temp" (and no replacement was made) and string length wos big |
||
1986 | On 32/64 bits FreeBSD ; 32/64 bits OpenBSD no problems |
||
1987 | |||
1988 | ``` |
||
1989 | if( strstr(temp,"blah") != 0 ){ temp = str_replace( temp ,"blah","beh");} |
||
1990 | char *temp = getstring(infile,1); |
||
1991 | Changed into: |
||
1992 | char *temp = str_replace( getstring(infile,1),"blah","beh"); |
||
1993 | ``` |
||
1994 | * 21/3 - corrected spurious segfault on Gentoo 64 bits (leiden) and OpenSuSE-32 : |
||
1995 | * 14/3 - forgotten 'break;' |
||
1996 | * 3/3 - synchronized commands "arrow" and "arrow2" with flydraw syntax; e.g. arrow x1,y1,x2,y2,head_in_px,color |
||
15111 | schaersvoo | 1997 | It works if not too much cropping is required. |
1998 | The commands are still not equal to Flydraw: I'm giving up on this !! |
||
16849 | obado | 1999 | * 28/2 |
2000 | - tried to correct copy/ropyresized ; using image as background image of div (e.g. no canvas !) |
||
2001 | We just use the URL of the image...and add some CSS to it (no-repreat / Size / Position) and det the URL to the backgroundImage of the main div |
||
2002 | - an external image copied into a canvas / resized etc... can be set as background of the document.body... |
||
2003 | - an external image copied into a canvas / resized etc... can not be set as CSS backgroundImage of a div... (at least in firefox) |
||
2004 | - there is no way to paint on top of an external image loaded into a canvas... |
||
14295 | schaersvoo | 2005 | |
16849 | obado | 2006 | * 27/2 - solved nasty issue with "drawing on top of external image" with copy / copyresized |
2007 | * 19/2 - added command 'animate type' as primitive animation ; only 'point' on curve is implemented |
||
15111 | schaersvoo | 2008 | Using generic js-functions in wims-pages to read all mathml-inputs (including the ones in a canvas image !) |
16849 | obado | 2009 | * 12/2 - removed reading of mathml-inputfield in canvas (only "replyformat 16" will read it) |
14295 | schaersvoo | 2010 | |
15111 | schaersvoo | 2011 | canvas_div.style.background-size --> canvas_div.style.backgroundSize |
16849 | obado | 2012 | * 8/2 |
2013 | - corrected syntax in bgimage: |
||
15111 | schaersvoo | 2014 | - command "bgimage url" will scale to fit background image |
16849 | obado | 2015 | * 7/2 |
2016 | - corrected x-y mixup in case xrange/yrange was forgotten (eg xrange = 0 px ,sizex px) |
||
15111 | schaersvoo | 2017 | - added forgotten filling of an arc ;command 'filledarc' |
2018 | (something like:fontfamily bold italic 24px Courier) |
||
2019 | the rest of the gridfonts (numbering or x/yaxis text) is determined by the 'fontfamily' |
||
16849 | obado | 2020 | * 6/2 |
2021 | - added default fontfamily settings to 'legend', 'xlabel' and 'ylabel' ; size may be set by command 'fontsize' |
||
15111 | schaersvoo | 2022 | - add command 'dsegment' as alias for dashed segment |
2023 | eg only active inputfields will be read with read_canvas(); |
||
16849 | obado | 2024 | * 5/2 - if inputfield has attribute 'readonly', do not read the value when using javascript:read_canvas(); |
2025 | * 3/2 |
||
2026 | - added forgotten 'readonly' attribute to js-function 'draw_inputs()' |
||
2027 | - solved(?) some strange fill issues (pixel manipulation) added demo |
||
14295 | schaersvoo | 2028 | |
15111 | schaersvoo | 2029 | If legendcolors was not set , the default stroke_color will be used in a 'legend' |
2030 | for all other legends, we can specify. |
||
2031 | barchart & piechart will use -ofcourse- the same colours for legend |
||
16849 | obado | 2032 | * 1/2 |
2033 | - add command 'legendcolors color1:color2:color3:...:color_n' |
||
15111 | schaersvoo | 2034 | - command 'legend string1:string2:string3:..:string_n' may now be used with any 'grid' (e.g. not only for barchart/linegraph/piechart) |
2035 | - commands 'xlabel' 'ylabel' only depend on command 'grid' (eg without 'axis' and/or 'axisnumbering') |
||
2036 | - added commands 'xlabel some_string' ylabel some_string' |
||
2037 | - corrected tooltip when using images as 'linktext' |
||
14295 | schaersvoo | 2038 | |
15111 | schaersvoo | 2039 | will output reply[0]=x1 reply[1]=y1 reply[2]=x2 reply[3]=y2 ... reply[n-1]=x_n reply[n]=y_n |
16849 | obado | 2040 | |
2041 | * 31/1 |
||
2042 | - read_canvas() : Added 'replyformat 22' : single array output (just for use in my existing checkfile) |
||
15111 | schaersvoo | 2043 | will output words (x1:y1) (x2:y2) (x3:y3) ... (x_n:y_n) |
2044 | - read_canvas() : Added 'replyformat 21' : verbatim coordinate output (just for use in my existing checkfile) |
||
2045 | Command "intooltip tooltip_text" will accept html-text, images and now also Mathml as tooltip_text |
||
16849 | obado | 2046 | - Now "mouse red,24" will default to font '24px Arial' |
15111 | schaersvoo | 2047 | fontfamily [type] [size]px [family] |
2048 | was set, the argument fontsize of command "mouse color,fontsize" was ignored...due to the strict syntax in html/js |
||
16849 | obado | 2049 | |
2050 | * 29/1 - Corrected js-fontfamily kludge...when something like "fontfamily italic 14px Arial" |
||
15111 | schaersvoo | 2051 | (On multiple panning/zooming the mouse coordinate display will get 'sluggish' and not very quick in response) |
2052 | When 'x' is pressed the page will reload (location.reload();) so the panned/zoomed image or drawing will be reset to it's original state. |
||
16849 | obado | 2053 | |
2054 | * 23/1 Added a 'x' to pan/zoom-buttons (command "zoom color") |
||
2055 | `xaxis -4*pi:-4\u03c0:-3*pi:-3\u03c0:-2*pi:-2\u03c0:-1*pi:-\u03c0:pi/2:\u03c0/2:pi:\u03c0` |
||
15111 | schaersvoo | 2056 | example (unicode allowed; no html) |
16849 | obado | 2057 | |
2058 | yaxis y_value:y_text:y_value:y_text:y_value:y_text.... |
||
2059 | xaxis x_value:x_text:x_value:x_text:x_value:x_text.... |
||
2060 | |||
2061 | * 22/1 Corrected commands with "pi"... javascript did not calculate the x-value... |
||
2062 | |||
2063 | ## 2014 |
||
2064 | (was using keyword 'input' but changed wims_mathml to use a styled textarea as input...) |
||
2065 | |||
2066 | * 28/12 in case of command 'mathml' , look for 'mathml0' to trigger javascript:read_mathml() if no other ineractiveness was previously defined |
||
2067 | * 29/11 copy & copyresized of external images : preparing for drag&drop (outside the drag&drop shape library) |
||
15111 | schaersvoo | 2068 | correction of zoom_buttons (wrong panning in wrong direction...) |
16849 | obado | 2069 | * 27/11 improved plotting of asymptotic curves |
2070 | * 16/11 setting & reading clock (preliminiary: for now just html-buttons for adjusting H,M,S...should be active fields in canvas...) |
||
15111 | schaersvoo | 2071 | custom colours: clock 0,0,60,4,35,45,1,2,white,white,white,black,yellow |
2072 | custom colours: clock 0,0,60,4,35,45,1,2,,,,yellow,red |
||
2073 | default colours: clock 0,0,60,4,35,45,1,2,[space] |
||
2074 | clock x,y,r(px),H,M,S,type hourglass,interactive [ ,H_color,M_color,S_color,background_color,foreground_color ] |
||
16849 | obado | 2075 | * 15/11 changed basic syntax of command clock : all colours are now optional |
15111 | schaersvoo | 2076 | Temporarily removed check on 'valid wims-session' : it is not working for a 'chroot' environment (TODO correct this !!) |
2077 | (only when using canvasdraw in a 'chroot' environment , giving : Undefined symbol "_ThreadRuneLocale) |
||
2078 | I can not use the normal implementations found in 'ctypes.h' for this purpose, due to a bug in FreeBSD's C-library |
||
16849 | obado | 2079 | * 14/11 implemented own versions of "tolower()" and "toupper()"... |
15111 | schaersvoo | 2080 | clock x,y,r(px),H,M,S,type hourglass,interactive,H_color,M_color,S_color,background_color,foreground_color |
16849 | obado | 2081 | * 13/11 Added interactive=2 (multiple choice / onclick) to select a single clock |
15111 | schaersvoo | 2082 | (work in progress) |
2083 | Add basic interactivness |
||
2084 | Add argument 'hourglass type' to controle appearance of analogue clock |
||
16849 | obado | 2085 | * 12/11 Multiple clocks may be set interactive ; read_canvas() will read all active clocks in H:M:S |
15111 | schaersvoo | 2086 | Preparing for command clock (work in progress) |
2087 | (was x/y-range -10,10) |
||
2088 | ymin = 0 ymax = ysize |
||
2089 | xmin = 0 xmax = xsize |
||
16849 | obado | 2090 | * 11/11 If xrange / yrange is not given : |
15111 | schaersvoo | 2091 | Todo: check compatibility...I'm not sure it works the same as in 'flydraw' |
2092 | "copyresized x1,y2,x2,y2,dx1,dy1,dx2,dy2,filename_URL" and "copy x,y,x1,y1,x2,y2,filename_URL" |
||
16849 | obado | 2093 | * 08/11 Added commands |
15111 | schaersvoo | 2094 | Just use a fairly recent Firefox / Opera / Chrome |
2095 | E.g all non supported browsers will be excluded...no intention to offer 'canvas glue' library for IE < 9 |
||
2096 | try(document.createElement('canvas');)catch(e){alert("no support");return;} |
||
16849 | obado | 2097 | * 03/11 Added check on canvas-support in function 'create_canvas()'; |
2098 | * 01/11 Added 'userdraw text,color' to reply types |
||
15111 | schaersvoo | 2099 | a confirm will popup asking to delete the selected text.This text will be removed from the "userdraw_txt()" answer array. |
16849 | obado | 2100 | Placing the cursor somewhere on a typed text and hitting "delete/backspace/esc", |
15111 | schaersvoo | 2101 | You will need to hit "enter" to add the text to the array "userdraw_txt()" : lightblue background will disappear |
2102 | "backspace / delete / esc" will remove typed text. |
||
2103 | While typing the background of every typed char will be lightblue... |
||
2104 | Any string of multiple strings may be placed anywhere on the canvas. |
||
16849 | obado | 2105 | * 30/10 Finished command 'userdraw text,color' |
15111 | schaersvoo | 2106 | (it is ofcource possible, but at a very very high price) |
2107 | because the mouse coordinates do not follow the transformation matrix if in the proximity of a text-object. |
||
2108 | vertical or rotated text can not be set drag / onclick, |
||
16849 | obado | 2109 | * 29/10 add horizontal text to drag / onclick |
2110 | * 28/10 preparing for adding all 'text' commands to drag / click library |
||
15111 | schaersvoo | 2111 | Would be nice to have some feedback (...) |
2112 | need to find a way to bypass browser differences...using 'String.fromCharCode(evt.keyCode);' is not really a safe method ? |
||
16849 | obado | 2113 | * 27/10 add command "userdraw text,color" work in progress...just a single char, for now (no answer_type,yet) |
15111 | schaersvoo | 2114 | (for example to be used for a barchart created by students) |
2115 | add commands "userdraw rects,color" "userdraw roundrects,color" for drawing multiple rectangles |
||
2116 | Many different linegraphs may be used in a single plot. |
||
2117 | to be used together with commands 'grid'. May be combined with freestyle x-axis / y0-axis text (commands 'xaxis' 'yaxis') |
||
16849 | obado | 2118 | * 26/10 add command "linegraph x1:y1:x2:y2...x_n:y_n" : may be further controlled by commands 'strokecolor','linewidth','dashed','dashtype' |
15111 | schaersvoo | 2119 | to be used together with commands 'grid'. May be combined with freestyle x-axis / y0-axis text (commands 'xaxis' 'yaxis') |
2120 | add command "barchart x1:y1:color1:x2:y2:color2...x_n:y_n:color_n" to automate generation of barchart |
||
16849 | obado | 2121 | * 25/10 add command "legend string1:string2:...:string_n" to add an automatically sized legend to a graph |
2122 | * 24/10 add command "piechart xc,yc,radius,'data+colorlist'" |
||
14295 | schaersvoo | 2123 | |
15111 | schaersvoo | 2124 | add command "fontcolor color" (previously fontcolor=strokecolor) now x/y axis-texts color may be different from axis / xy-tics color |
16849 | obado | 2125 | * 22/10 grid: x/y major tics and x/y minor tics now different |
15111 | schaersvoo | 2126 | update 'drag curve fill mathml-input' example (selective removal of filled area) |
2127 | freestyle x/y-axistext move with panning (e.g stay in visual image) |
||
2128 | to automate filling axis with text insteadof default numbering xmin...xmax |
||
2129 | yaxis num1:string1:num2:string2:num3:string3:num4:string4:....num_n:string-n |
||
2130 | xaxis num1:string1:num2:string2:num3:string3:num4:string4:....num_n:string-n |
||
16849 | obado | 2131 | * 21/10 added commands: |
15111 | schaersvoo | 2132 | tried to improve 'axisnumbering' in command 'grid' ( avoiding number overlap ) |
16849 | obado | 2133 | * 20/10 added testresults flydraw versus canvasdraw. |
15111 | schaersvoo | 2134 | added "use_rotate" argument to shape library |
16849 | obado | 2135 | * 19/10 ellipse x,y,rx,ry,color is draggable/clickable and will scale/resize on zooming (like all other draggable 'massive' objects) |
15111 | schaersvoo | 2136 | multiple instances of tooltip are allowed (as ofcourse is true for multiple canvas) |
16849 | obado | 2137 | * 18/10 corrected tooltip to work / integrate in 'real' wims modules |
2138 | * 15/10 circle x,y,radius(px),color will scale/resize on zooming (like all other draggable 'massive' objects) |
||
2139 | * 13/10 corrected hexcolor input |
||
15111 | schaersvoo | 2140 | reading of useractions in canvas is only possible for a single instance (for now) |
2141 | (experimental work in progress) |
||
2142 | by using unique names for all potential conflicting functions |
||
16849 | obado | 2143 | * 12/10 added support for multi-canvasses in a single html-page |
2144 | * 10/10 added missing "userdraw polygone,color" |
||
2145 | * 9/10 added parallel to shape_library |
||
15111 | schaersvoo | 2146 | default distance is 20 pix from original 'fill click' |
2147 | size of 'measuring rectangle' may be tuned with "clickfillmarge" |
||
16849 | obado | 2148 | * 8/10 added specific removal of a 'click_filled' area. |
2149 | * 7/10 added arc to shape_library |
||
2150 | * 6/10 corrected syntax "fill" == "floodfill" = pixel filling to a border |
||
2151 | * 5/10 added missing "userdraw rect,color" "userdraw roundrect,color" "userdraw triangle,color" |
||
2152 | * 4/10 added missing "userdraw line,color" "userdraw lines,color" |
||
14381 | schaersvoo | 2153 | |
15111 | schaersvoo | 2154 | or search keywords 'html5' 'canvas' om leiden mirror |
2155 | For live testing: use "directexec" module on Leiden mirror. |
||
2156 | For demo: see demo-directory. |
||
2157 | For implemented commands: see canvasdraw.html |
||
2158 | (first need to solve re-draw issues; managing multiple canvasses in drag/click library) |
||
16849 | obado | 2159 | - Isolate static javascript code components/functions from C-"programs" |
2160 | - Some bitmap operations (like copyresize etc) |
||
2161 | - OEF interface |
||
15111 | schaersvoo | 2162 | Unadressed issues at this point : |
14544 | schaersvoo | 2163 | |
15111 | schaersvoo | 2164 | Opera (>9) |
2165 | Gecko browsers (Firefox > 17) |
||
2166 | Microsoft IE10 |
||
2167 | Tested on : |
||
14546 | schaersvoo | 2168 | |
15111 | schaersvoo | 2169 | (on Leiden mirror and intranet servers only) |
2170 | It will be used and tested to replace "flydraw" , "GeoGebra" and "flyapplet" in Schaersvoorde modules. |
||
2171 | Preliminary version. All javascript code is generated by 'C-program' |
||
14548 | schaersvoo | 2172 | |
16849 | obado | 2173 | * 4/10/2013 First version |