Rev 17351 | Rev 18572 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 17351 | Rev 18556 | ||
---|---|---|---|
Line 23... | Line 23... | ||
23 | ctx.stroke();\ |
23 | ctx.stroke();\ |
24 | };draw_zoom_buttons();",BG_CANVAS,canvas_root_id,canvas_root_id,canvas_root_id,stroke_color,stroke_opacity); |
24 | };draw_zoom_buttons();",BG_CANVAS,canvas_root_id,canvas_root_id,canvas_root_id,stroke_color,stroke_opacity); |
25 | } |
25 | } |
26 | 26 | ||
27 | void add_js_popup(char *getfile_cmd){ |
27 | void add_js_popup(char *getfile_cmd){ |
28 | fprintf(stdout,"\n<!-- begin command popup %d -->\n\ |
28 | fprintf(stdout,"\n<!-- begin command popup %d -->\n\ |
29 | <script>\n\ |
29 | <script>\n\ |
30 | if( wims_status != 'done'){\ |
30 | if( wims_status != 'done'){\ |
31 | var popup = window.open('','','toolbar=no,scrollbars=yes,menubar=no,location=no,resizable=yes,top=4,left=4,status=no, width = %dpx, height = %dpx');\ |
31 | var popup = window.open('','','toolbar=no,scrollbars=yes,menubar=no,location=no,resizable=yes,top=4,left=4,status=no, width = %dpx, height = %dpx');\ |
32 | var popupHTML =\"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\\n<html><head></head>\\n<body><div style='width:%dpx;height:%dpx;position:relative' id='canvas_div%d'></div><div id='tooltip_placeholder_div%d' style='display:block;position:relative;margin-left:auto;margin-right:auto;margin-bottom:4px;'><span id='tooltip_placeholder%d' style='display:none;'></span></div></body></html>\";\ |
32 | var popupHTML =\"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\\n<html><head></head>\\n<body><div style='width:%dpx;height:%dpx;position:relative' id='canvas_div%d'></div><div id='tooltip_placeholder_div%d' style='display:block;position:relative;margin-left:auto;margin-right:auto;margin-bottom:4px;'><span id='tooltip_placeholder%d' style='display:none;'></span></div></body></html>\";\ |
33 | popup.document.write(popupHTML);\ |
33 | popup.document.write(popupHTML);\ |
Line 53... | Line 53... | ||
53 | canvas_root_id, |
53 | canvas_root_id, |
54 | canvas_root_id); |
54 | canvas_root_id); |
55 | } |
55 | } |
56 | 56 | ||
57 | void add_js_tooltip(char *tooltip_text,char *bgcolor){ |
57 | void add_js_tooltip(char *tooltip_text,char *bgcolor){ |
58 | fprintf(stdout,"\n<!-- begin command intooltip %d -->\n\ |
58 | fprintf(stdout,"\n<!-- begin command intooltip %d -->\n\ |
59 | <script>\n\ |
59 | <script>\n\ |
60 | var xsize = %d;\ |
60 | var xsize = %d;\ |
61 | var ysize = %d;\ |
61 | var ysize = %d;\ |
62 | var tooltip%d_obj_x = 0;\ |
62 | var tooltip%d_obj_x = 0;\ |
63 | var tooltip%d_obj_y = 0;\ |
63 | var tooltip%d_obj_y = 0;\ |
Line 117... | Line 117... | ||
117 | } else {\ |
117 | } else {\ |
118 | tooltip%d_flipflop = 0;\ |
118 | tooltip%d_flipflop = 0;\ |
119 | tooltip%d_obj.style.display = \"none\";\ |
119 | tooltip%d_obj.style.display = \"none\";\ |
120 | };\ |
120 | };\ |
121 | };\n</script>\n<!-- end command intooltip %d -->\n",canvas_root_id,xsize,ysize,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,tooltip_text,canvas_root_id,bgcolor,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id); |
121 | };\n</script>\n<!-- end command intooltip %d -->\n",canvas_root_id,xsize,ysize,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,tooltip_text,canvas_root_id,bgcolor,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id); |
122 | - | ||
123 | } |
122 | } |
124 | - | ||
125 | 123 | ||
126 | /* |
124 | /* |
127 | 125 | ||
128 | type = 0 : x-values only [command mousex] |
126 | type = 0 : x-values only [command mousex] |
129 | type = 1 : y-values only [command mousey] |
127 | type = 1 : y-values only [command mousey] |
Line 136... | Line 134... | ||
136 | var x = evt.clientX - mouse_canvas_rect.left;\ |
134 | var x = evt.clientX - mouse_canvas_rect.left;\ |
137 | var y = evt.clientY - mouse_canvas_rect.top;\ |
135 | var y = evt.clientY - mouse_canvas_rect.top;\ |
138 | 136 | ||
139 | */ |
137 | */ |
140 | void add_js_mouse(int canvas_cnt,int precision,char *stroke_color,int font_size,double stroke_opacity,int type){ |
138 | void add_js_mouse(int canvas_cnt,int precision,char *stroke_color,int font_size,double stroke_opacity,int type){ |
141 | fprintf(js_include_file,"\n/* command mouse on mouse canvas */\ |
139 | fprintf(js_include_file,"\n/* command mouse on mouse canvas */\ |
142 | function use_mouse_coordinates(){\ |
140 | function use_mouse_coordinates(){\ |
143 | var display_type = %d;\ |
141 | var display_type = %d;\ |
144 | var canvas_type = %d;\ |
142 | var canvas_type = %d;\ |
145 | var mouse_canvas = create_canvas%d(canvas_type,xsize,ysize);\ |
143 | var mouse_canvas = create_canvas%d(canvas_type,xsize,ysize);\ |
146 | var mouse_context = mouse_canvas.getContext(\"2d\");\ |
144 | var mouse_context = mouse_canvas.getContext(\"2d\");\ |
Line 181... | Line 179... | ||
181 | show_display = 4 delta degrees |
179 | show_display = 4 delta degrees |
182 | show_display = 5 delta X:Y |
180 | show_display = 5 delta X:Y |
183 | 181 | ||
184 | */ |
182 | */ |
185 | void add_slider_display(int precision,int font_size,char *font_color,double stroke_opacity){ |
183 | void add_slider_display(int precision,int font_size,char *font_color,double stroke_opacity){ |
186 | fprintf(js_include_file,"\n/* add_slider_display */\ |
184 | fprintf(js_include_file,"\n/* add_slider_display */\ |
187 | var slider_prec = Math.log(%d)/(Math.log(10));\ |
185 | var slider_prec = Math.log(%d)/(Math.log(10));\ |
188 | function show_slider_value(value,use_slider_display){\ |
186 | function show_slider_value(value,use_slider_display){\ |
189 | var current_canvas = create_canvas%d(%d,xsize,ysize);\ |
187 | var current_canvas = create_canvas%d(%d,xsize,ysize);\ |
190 | var current_context = current_canvas.getContext(\"2d\");\ |
188 | var current_context = current_canvas.getContext(\"2d\");\ |
191 | current_context.clearRect(0,0,xsize,ysize);\ |
189 | current_context.clearRect(0,0,xsize,ysize);\ |
Line 205... | Line 203... | ||
205 | current_context.clearRect(0,0,s,1.2*%d);\ |
203 | current_context.clearRect(0,0,s,1.2*%d);\ |
206 | current_context.fillText(string,0,%d);};",precision,canvas_root_id,MOUSE_CANVAS,font_size,font_size,font_color,stroke_opacity,font_size,font_size); |
204 | current_context.fillText(string,0,%d);};",precision,canvas_root_id,MOUSE_CANVAS,font_size,font_size,font_color,stroke_opacity,font_size,font_size); |
207 | } |
205 | } |
208 | 206 | ||
209 | void add_slider(int anim){ |
207 | void add_slider(int anim){ |
210 | if(anim != 2 ){ |
208 | if(anim != 2 ){ |
211 | fprintf(js_include_file,"\n/* add_slider aux*/\ |
209 | fprintf(js_include_file,"\n/* add_slider aux*/\ |
212 | if( typeof( slidergroup) !== 'object'){var slidergroup = [];};\ |
210 | if( typeof( slidergroup) !== 'object'){var slidergroup = [];};\ |
213 | function rotateXY(obj,angle){\ |
211 | function rotateXY(obj,angle){\ |
214 | if( typeof(angle) === 'undefined' ){console.log('rotateXY() angle undefined');return obj;};\ |
212 | if( typeof(angle) === 'undefined' ){console.log('rotateXY() angle undefined');return obj;};\ |
215 | var len = obj.x.length;\ |
213 | var len = obj.x.length;\ |
216 | if( typeof(len) === 'undefined' ){obj.angle = angle;return obj;};\ |
214 | if( typeof(len) === 'undefined' ){obj.angle = angle;return obj;};\ |
Line 229... | Line 227... | ||
229 | for(var p = 0 ; p < len ; p++ ){\ |
227 | for(var p = 0 ; p < len ; p++ ){\ |
230 | x = obj.x[p];\ |
228 | x = obj.x[p];\ |
231 | y = obj.y[p];\ |
229 | y = obj.y[p];\ |
232 | obj.x[p] = (cos * (x - xc)) + (sin * (y - yc)) + xc;\ |
230 | obj.x[p] = (cos * (x - xc)) + (sin * (y - yc)) + xc;\ |
233 | obj.y[p] = (cos * (y - yc)) - (sin * (x - xc)) + yc;\ |
231 | obj.y[p] = (cos * (y - yc)) - (sin * (x - xc)) + yc;\ |
234 | };\ |
232 | };\ |
235 | return obj;\ |
233 | return obj;\ |
236 | };\ |
234 | };\ |
237 | function rotateARC(obj,angle){\ |
235 | function rotateARC(obj,angle){\ |
238 | obj.h[0] = angle;\ |
236 | obj.h[0] = angle;\ |
239 | obj.angle = -1*angle;\ |
237 | obj.angle = -1*angle;\ |
Line 265... | Line 263... | ||
265 | };\ |
263 | };\ |
266 | };\ |
264 | };\ |
267 | return;\ |
265 | return;\ |
268 | };\ |
266 | };\ |
269 | "); |
267 | "); |
270 | } |
268 | } |
271 | if(anim == 0){fprintf(js_include_file,"\n/* add_slider */\ |
269 | if(anim == 0){fprintf(js_include_file,"\n/* add_slider */\ |
272 | if( typeof(unit_x) === 'undefined' ){var unit_x = ' ';};\ |
270 | if( typeof(unit_x) === 'undefined' ){var unit_x = ' ';};\ |
273 | if( typeof(unit_y) === 'undefined' ){var unit_y = ' ';};\ |
271 | if( typeof(unit_y) === 'undefined' ){var unit_y = ' ';};\ |
274 | function slider(XYR,text,slider_id ,width,height,linewidth,fillcolor,strokecolor,opacity,min,max,fontfamily,display){\ |
272 | function slider(XYR,text,slider_id ,width,height,linewidth,fillcolor,strokecolor,opacity,min,max,fontfamily,display){\ |
275 | if( wims_status == \"done\" ){return;};var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
273 | if( wims_status == \"done\" ){return;};var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
276 | var xcenter = 0.5*width;var rcenter = 0.5*width;fillcolor = 'rgba('+fillcolor+','+opacity[0]+')' || 'rgba(200,200,0,0.2)';\ |
274 | var xcenter = 0.5*width;var rcenter = 0.5*width;fillcolor = 'rgba('+fillcolor+','+opacity[0]+')' || 'rgba(200,200,0,0.2)';\ |
Line 304... | Line 302... | ||
304 | if( display > 0 ){show_slider_value(value,display);};\ |
302 | if( display > 0 ){show_slider_value(value,display);};\ |
305 | var dx = px - xcenter;xcenter = px;\ |
303 | var dx = px - xcenter;xcenter = px;\ |
306 | slider_show_it(XYR,dx,value,slider_id);\ |
304 | slider_show_it(XYR,dx,value,slider_id);\ |
307 | };\ |
305 | };\ |
308 | };",canvas_root_id); |
306 | };",canvas_root_id); |
309 | } |
307 | } |
310 | if( anim == 1){ |
308 | if( anim == 1){ |
311 | fprintf(js_include_file,"\n/* add_anim_slider */\ |
309 | fprintf(js_include_file,"\n/* add_anim_slider */\ |
312 | function animslider(XYR,text,slider_id ,width,height,linewidth,fillcolor,strokecolor,opacity,min,max,fontfamily,display)\ |
310 | function animslider(XYR,text,slider_id ,width,height,linewidth,fillcolor,strokecolor,opacity,min,max,fontfamily,display)\ |
313 | {\ |
311 | {\ |
314 | document.addEventListener('readystatechange',function(event){\ |
312 | document.addEventListener('readystatechange',function(event){\ |
315 | if(event.target.readyState === 'complete'){\ |
313 | if(event.target.readyState === 'complete'){\ |
316 | var value= 0;\ |
314 | var value= 0;\ |
Line 319... | Line 317... | ||
319 | if( value > width ){clearInterval( timer );}\ |
317 | if( value > width ){clearInterval( timer );}\ |
320 | },240);\ |
318 | },240);\ |
321 | };\ |
319 | };\ |
322 | },false);\ |
320 | },false);\ |
323 | };"); |
321 | };"); |
324 | } |
322 | } |
325 | 323 | ||
326 | if( anim == 2 ){/* use mouse in stead of a X|Y slider... external images -via command 'copy' NOT supported !! need to add 'copy' to dragstuff library or introduce another command*/ |
324 | if( anim == 2 ){/* use mouse in stead of a X|Y slider... external images -via command 'copy' NOT supported !! need to add 'copy' to dragstuff library or introduce another command*/ |
327 | fprintf(js_include_file,"\n/* add group move_ */\ |
325 | fprintf(js_include_file,"\n/* add group move_ */\ |
328 | if( typeof( slidergroup) !== 'object'){var slidergroup = [];};\ |
326 | if( typeof( slidergroup) !== 'object'){var slidergroup = [];};\ |
329 | var move_group = function(num){\ |
327 | var move_group = function(num){\ |
330 | canvas_div.addEventListener( 'mousemove' ,slidegroup_m,false);\ |
328 | canvas_div.addEventListener( 'mousemove' ,slidegroup_m,false);\ |
331 | canvas_div.addEventListener( 'mousedown' ,slidegroup_d,false);\ |
329 | canvas_div.addEventListener( 'mousedown' ,slidegroup_d,false);\ |
332 | canvas_div.addEventListener( 'mouseup' ,slidegroup_u,false);\ |
330 | canvas_div.addEventListener( 'mouseup' ,slidegroup_u,false);\ |
Line 355... | Line 353... | ||
355 | };\ |
353 | };\ |
356 | };\ |
354 | };\ |
357 | dragstuff.valid = true;\ |
355 | dragstuff.valid = true;\ |
358 | };\ |
356 | };\ |
359 | };"); |
357 | };"); |
360 | } |
358 | } |
361 | 359 | ||
362 | } |
360 | } |
363 | /* dragdrop_reply[obj.object_cnt] = obj; |
361 | /* dragdrop_reply[obj.object_cnt] = obj; |
364 | */ |
362 | */ |
365 | /* |
363 | /* |
366 | adds inputfield for x-value: returns the js-calculated y-value after click on 'OK' button |
364 | adds inputfield for x-value: returns the js-calculated y-value after click on 'OK' button |
367 | draws a non-configurable crosshair on this calculated location |
365 | draws a non-configurable crosshair on this calculated location |
368 | */ |
366 | */ |
369 | void add_calc_y(char *jsmath,int font_size,char *css_class){ |
367 | void add_calc_y(char *jsmath,int font_size,char *css_class){ |
370 | fprintf(js_include_file,"\n/* add_calc_y */\ |
368 | fprintf(js_include_file,"\n/* add_calc_y */\ |
371 | use_jsmath=1;\ |
369 | use_jsmath=1;\ |
372 | function add_calc_y(){\ |
370 | function add_calc_y(){\ |
373 | if( wims_status == \"done\" ){return;};\ |
371 | if( wims_status == \"done\" ){return;};\ |
374 | var fun = to_js_math(\"%s\");if(fun == null){return;};\ |
372 | var fun = to_js_math(\"%s\");if(fun == null){return;};\ |
375 | function eval_jsmath(x){return parseFloat(eval(fun));};\ |
373 | function eval_jsmath(x){return parseFloat(eval(fun));};\ |
376 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
374 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
377 | var calc_div = document.createElement('div');\ |
375 | var calc_div = document.createElement('div');\ |
378 | calc_div.id = \"calc_div\";\ |
376 | calc_div.id = \"calc_div\";\ |
379 | tooltip_div.appendChild(calc_div);\ |
377 | tooltip_div.appendChild(calc_div);\ |
380 | var label_x = \"x\";var label_y = \"y\";\ |
378 | var label_x = \"x\";var label_y = \"y\";\ |
381 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
379 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
Line 402... | Line 400... | ||
402 | function is called "use_mouse_coordinates() and thus can not be combined with command 'mouse' |
400 | function is called "use_mouse_coordinates() and thus can not be combined with command 'mouse' |
403 | */ |
401 | */ |
404 | void add_trace_js_mouse(int canvas_cnt, char *stroke_color, char *jsmath, |
402 | void add_trace_js_mouse(int canvas_cnt, char *stroke_color, char *jsmath, |
405 | int font_size, double stroke_opacity, int line_width, |
403 | int font_size, double stroke_opacity, int line_width, |
406 | int crosshair_size,char *css_class){ |
404 | int crosshair_size,char *css_class){ |
407 | fprintf(js_include_file,"\n/* add_trace_jsmath */\ |
405 | fprintf(js_include_file,"\n/* add_trace_jsmath */\ |
408 | use_jsmath=1;\ |
406 | use_jsmath=1;\ |
409 | function use_trace_jsmath(){\ |
407 | function use_trace_jsmath(){\ |
410 | if( wims_status == \"done\" ){return;};\ |
408 | if( wims_status == \"done\" ){return;};\ |
411 | var label_x = \"x\";var label_y = \"y\";\ |
409 | var label_x = \"x\";var label_y = \"y\";\ |
412 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
410 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
Line 434... | Line 432... | ||
434 | document.getElementById(\"trace_input_x\").value = x;\ |
432 | document.getElementById(\"trace_input_x\").value = x;\ |
435 | document.getElementById(\"trace_input_y\").value = y;\ |
433 | document.getElementById(\"trace_input_y\").value = y;\ |
436 | };\ |
434 | };\ |
437 | return;\ |
435 | return;\ |
438 | };use_trace_jsmath();",canvas_root_id,canvas_cnt,canvas_root_id,font_size,css_class,css_class,jsmath,line_width,crosshair_size,stroke_color,stroke_opacity); |
436 | };use_trace_jsmath();",canvas_root_id,canvas_cnt,canvas_root_id,font_size,css_class,css_class,jsmath,line_width,crosshair_size,stroke_color,stroke_opacity); |
439 | } |
437 | } |
440 | 438 | ||
441 | /* |
439 | /* |
442 | add a table with 2 textarea's labeled 'x' 'y' ( or 'xlabel' 'ylabel' if defined) |
440 | add a table with 2 textarea's labeled 'x' 'y' ( or 'xlabel' 'ylabel' if defined) |
443 | add two buttons: OK and NOK (OK draws; NOK will delete last item pair from userdraw_x / userdraw_y array's |
441 | add two buttons: OK and NOK (OK draws; NOK will delete last item pair from userdraw_x / userdraw_y array's |
444 | */ |
442 | */ |
445 | void add_textarea_xy(char *css_class){ |
443 | void add_textarea_xy(char *css_class){ |
446 | fprintf(js_include_file,"\n/* add_textarea_xy */\ |
444 | fprintf(js_include_file,"\n/* add_textarea_xy */\ |
447 | function add_textarea_xy(){\ |
445 | function add_textarea_xy(){\ |
448 | if( wims_status == \"done\" ){return;};\ |
446 | if( wims_status == \"done\" ){return;};\ |
449 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
447 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
450 | var textarea_div = document.createElement('div');\ |
448 | var textarea_div = document.createElement('div');\ |
451 | textarea_div.id = \"textarea_div\";\ |
449 | textarea_div.id = \"textarea_div\";\ |
Line 472... | Line 470... | ||
472 | var textarea_nok_button = document.getElementById(\"textarea_nok_button\");\ |
470 | var textarea_nok_button = document.getElementById(\"textarea_nok_button\");\ |
473 | textarea_ok_button.addEventListener(\"mousedown\",function(e){redraw_userdraw();return;},false);\ |
471 | textarea_ok_button.addEventListener(\"mousedown\",function(e){redraw_userdraw();return;},false);\ |
474 | textarea_nok_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
472 | textarea_nok_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
475 | return;\ |
473 | return;\ |
476 | };add_textarea_xy();",canvas_root_id,css_class,css_class); |
474 | };add_textarea_xy();",canvas_root_id,css_class,css_class); |
477 | } |
475 | } |
478 | 476 | ||
479 | /* |
477 | /* |
480 | - | ||
481 | */ |
478 | */ |
482 | void add_setlimits(int font_size,char *css_class){ |
479 | void add_setlimits(int font_size,char *css_class){ |
483 | fprintf(js_include_file,"\n/* add_setlimits */\ |
480 | fprintf(js_include_file,"\n/* add_setlimits */\ |
484 | function use_setlimits(){\ |
481 | function use_setlimits(){\ |
485 | if( wims_status == \"done\" ){return;};\ |
482 | if( wims_status == \"done\" ){return;};\ |
486 | var label_x = \"x\";var label_y = \"y\";\ |
483 | var label_x = \"x\";var label_y = \"y\";\ |
487 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
484 | if( typeof(xaxislabel) !== 'undefined' ){label_x = xaxislabel;}\ |
488 | if( typeof(yaxislabel) !== 'undefined' ){label_y = yaxislabel;}\ |
485 | if( typeof(yaxislabel) !== 'undefined' ){label_y = yaxislabel;}\ |
Line 504... | Line 501... | ||
504 | setlimit_button.addEventListener(\"mousedown\",function(e){set_limits();},false);\ |
501 | setlimit_button.addEventListener(\"mousedown\",function(e){set_limits();},false);\ |
505 | };use_setlimits();",canvas_root_id,font_size,css_class,css_class,css_class,css_class); |
502 | };use_setlimits();",canvas_root_id,font_size,css_class,css_class,css_class,css_class); |
506 | } |
503 | } |
507 | 504 | ||
508 | void add_input_jsfunction(char *css_class,char *input_label,int input_cnt,char *stroke_color,float stroke_opacity,int line_width,int use_dashed,int dashtype0,int dashtype1,int font_size){ |
505 | void add_input_jsfunction(char *css_class,char *input_label,int input_cnt,char *stroke_color,float stroke_opacity,int line_width,int use_dashed,int dashtype0,int dashtype1,int font_size){ |
509 | fprintf(js_include_file,"\n/* add_input_jsfunction */\ |
506 | fprintf(js_include_file,"\n/* add_input_jsfunction */\ |
510 | function clear_jsfunction(canvas_plot_id,input_field){\ |
507 | function clear_jsfunction(canvas_plot_id,input_field){\ |
511 | try{\ |
508 | try{\ |
512 | var canvas_plot = document.getElementById(\"wims_canvas%d\"+canvas_plot_id);\ |
509 | var canvas_plot = document.getElementById(\"wims_canvas%d\"+canvas_plot_id);\ |
513 | var canvas_plot_ctx = canvas_plot.getContext(\"2d\");\ |
510 | var canvas_plot_ctx = canvas_plot.getContext(\"2d\");\ |
514 | if( confirm(\"clear function plot?\") ){\ |
511 | if( confirm(\"clear function plot?\") ){\ |
Line 537... | Line 534... | ||
537 | update_button.addEventListener(\"mousedown\",function(e){jsplot(canvas_plot_id,[rawmath(document.getElementById(input_field).value)],[line_width],[stroke_color],[stroke_opacity],[use_dashed],dashtype0,dashtype1,0,0,300,0,1);return;},false);\ |
534 | update_button.addEventListener(\"mousedown\",function(e){jsplot(canvas_plot_id,[rawmath(document.getElementById(input_field).value)],[line_width],[stroke_color],[stroke_opacity],[use_dashed],dashtype0,dashtype1,0,0,300,0,1);return;},false);\ |
538 | delete_button.addEventListener(\"mousedown\",function(e){clear_jsfunction(canvas_plot_id,input_field);return;},false);\ |
535 | delete_button.addEventListener(\"mousedown\",function(e){clear_jsfunction(canvas_plot_id,input_field);return;},false);\ |
539 | };\ |
536 | };\ |
540 | add_input_jsfunction(%d,\"%s\",%s,%d,\"%s\",%.2f,%d,%d,%d);",canvas_root_id,USERDRAW_JSPLOT,canvas_root_id,font_size,input_cnt,css_class,input_label,line_width,stroke_color,stroke_opacity,use_dashed,dashtype0,dashtype1); |
537 | add_input_jsfunction(%d,\"%s\",%s,%d,\"%s\",%.2f,%d,%d,%d);",canvas_root_id,USERDRAW_JSPLOT,canvas_root_id,font_size,input_cnt,css_class,input_label,line_width,stroke_color,stroke_opacity,use_dashed,dashtype0,dashtype1); |
541 | } |
538 | } |
542 | - | ||
543 | - | ||
544 | /* |
539 | /* |
545 | adds 2 inputfields (x:y) and 'ok' | 'nok' button |
540 | adds 2 inputfields (x:y) and 'ok' | 'nok' button |
546 | these are used for user drawing with inputfields... |
541 | these are used for user drawing with inputfields... |
547 | function update_me(){\ |
542 | function update_me(){\ |
548 | var x = safe_eval(document.getElementById('userinput_x').value);\ |
543 | var x = safe_eval(document.getElementById('userinput_x').value);\ |
549 | var y = safe_eval(document.getElementById('userinput_y').value);\ |
544 | var y = safe_eval(document.getElementById('userinput_y').value);\ |
550 | userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\ |
545 | userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\ |
551 | return;\ |
546 | return;\ |
552 | };\ |
547 | };\ |
553 | */ |
548 | */ |
554 | - | ||
555 | void add_input_xy(int font_size,char *css_class){ |
549 | void add_input_xy(int font_size,char *css_class){ |
556 | fprintf(js_include_file,"\n/* add_input_xy */\ |
550 | fprintf(js_include_file,"\n/* add_input_xy */\ |
557 | function add_input_xy(){\ |
551 | function add_input_xy(){\ |
558 | if( wims_status == \"done\" ){return;};\ |
552 | if( wims_status == \"done\" ){return;};\ |
559 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
553 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
560 | var input_xy_div = document.createElement('div');\ |
554 | var input_xy_div = document.createElement('div');\ |
561 | input_xy_div.id = \"input_xy_div\";\ |
555 | input_xy_div.id = \"input_xy_div\";\ |
Line 565... | Line 559... | ||
565 | var update_button = document.getElementById(\"update_button\");\ |
559 | var update_button = document.getElementById(\"update_button\");\ |
566 | var delete_button = document.getElementById(\"delete_button\");\ |
560 | var delete_button = document.getElementById(\"delete_button\");\ |
567 | update_button.addEventListener(\"mousedown\",function(e){update_me();redraw_userdraw();return;},false);\ |
561 | update_button.addEventListener(\"mousedown\",function(e){update_me();redraw_userdraw();return;},false);\ |
568 | delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
562 | delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
569 | };add_input_xy();",canvas_root_id,font_size,css_class,css_class); |
563 | };add_input_xy();",canvas_root_id,font_size,css_class,css_class); |
570 | } |
564 | } |
571 | 565 | ||
572 | /* adds 4 inputfields (x1:y1) --- (x2:y2) and 'ok' + 'nok' button */ |
566 | /* adds 4 inputfields (x1:y1) --- (x2:y2) and 'ok' + 'nok' button */ |
573 | void add_input_x1y1x2y2(int font_size,char *css_class){ |
567 | void add_input_x1y1x2y2(int font_size,char *css_class){ |
574 | fprintf(js_include_file,"\n/* add_input_x1y1x2y2 */\ |
568 | fprintf(js_include_file,"\n/* add_input_x1y1x2y2 */\ |
575 | function add_input_x1y1x2y2(){\ |
569 | function add_input_x1y1x2y2(){\ |
576 | if( wims_status == \"done\" ){return;};\ |
570 | if( wims_status == \"done\" ){return;};\ |
577 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
571 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
578 | var input_x1y1x2y2_div = document.createElement('div');\ |
572 | var input_x1y1x2y2_div = document.createElement('div');\ |
579 | input_x1y1x2y2_div.id = \"input_x1y1x2y2_div\";\ |
573 | input_x1y1x2y2_div.id = \"input_x1y1x2y2_div\";\ |
Line 582... | Line 576... | ||
582 | var update_button = document.getElementById(\"update_button\");\ |
576 | var update_button = document.getElementById(\"update_button\");\ |
583 | var delete_button = document.getElementById(\"delete_button\");\ |
577 | var delete_button = document.getElementById(\"delete_button\");\ |
584 | update_button.addEventListener(\"mousedown\",function(e){redraw_userdraw();return;},false);\ |
578 | update_button.addEventListener(\"mousedown\",function(e){redraw_userdraw();return;},false);\ |
585 | delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
579 | delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\ |
586 | };add_input_x1y1x2y2();",canvas_root_id,font_size,css_class,css_class,css_class,css_class); |
580 | };add_input_x1y1x2y2();",canvas_root_id,font_size,css_class,css_class,css_class,css_class); |
587 | } |
581 | } |
588 | 582 | ||
589 | /* adds 3 inputfields Center (x:y) Radius r and 'ok'+'nok' buttons */ |
583 | /* adds 3 inputfields Center (x:y) Radius r and 'ok'+'nok' buttons */ |
590 | void add_input_xyr(int font_size,char *css_class){ |
584 | void add_input_xyr(int font_size,char *css_class){ |
591 | fprintf(js_include_file,"\n/* add_input_xyr */\ |
585 | fprintf(js_include_file,"\n/* add_input_xyr */\ |
592 | function add_input_xyr(){\ |
586 | function add_input_xyr(){\ |
593 | if( wims_status == \"done\" ){return;};\ |
587 | if( wims_status == \"done\" ){return;};\ |
594 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
588 | var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
595 | var input_xyr_div = document.createElement('div');\ |
589 | var input_xyr_div = document.createElement('div');\ |
596 | input_xyr_div.id = \"input_xyr_div\";\ |
590 | input_xyr_div.id = \"input_xyr_div\";\ |
Line 611... | Line 605... | ||
611 | type = 0 : a point ...radius is fixed |
605 | type = 0 : a point ...radius is fixed |
612 | type = 1 : a circle ... read inputfield userinput_r |
606 | type = 1 : a circle ... read inputfield userinput_r |
613 | num = 1 : a single point / circle |
607 | num = 1 : a single point / circle |
614 | num = 2 : multiple points / circles |
608 | num = 2 : multiple points / circles |
615 | */ |
609 | */ |
616 | fprintf(js_include_file,"\n/* add_input_circle */\ |
610 | fprintf(js_include_file,"\n/* add_input_circle */\ |
617 | function user_redraw(t){\ |
611 | function user_redraw(t){\ |
618 | var type = %d;\ |
612 | var type = %d;\ |
619 | var num = %d;\ |
613 | var num = %d;\ |
620 | var lu = userdraw_x.length;\ |
614 | var lu = userdraw_x.length;\ |
621 | if( t == -1 && lu > 0){userdraw_x.splice(lu-1,1);userdraw_y.splice(lu-1,1);if(type == 1){userdraw_radius.splice(lu-1,1);};context_userdraw.clearRect(0,0,xsize,ysize);draw_circles(context_userdraw,userdraw_x,userdraw_y,userdraw_radius,line_width,stroke_color,stroke_opacity,use_filled,fill_color,fill_opacity,use_dashed,dashtype0,dashtype1);xy_cnt = userdraw_x.length;return;};\ |
615 | if( t == -1 && lu > 0){userdraw_x.splice(lu-1,1);userdraw_y.splice(lu-1,1);if(type == 1){userdraw_radius.splice(lu-1,1);};context_userdraw.clearRect(0,0,xsize,ysize);draw_circles(context_userdraw,userdraw_x,userdraw_y,userdraw_radius,line_width,stroke_color,stroke_opacity,use_filled,fill_color,fill_opacity,use_dashed,dashtype0,dashtype1);xy_cnt = userdraw_x.length;return;};\ |
Line 625... | Line 619... | ||
625 | return;\ |
619 | return;\ |
626 | };",type,num); |
620 | };",type,num); |
627 | } |
621 | } |
628 | /* draw crosshairs via inputfields x/y */ |
622 | /* draw crosshairs via inputfields x/y */ |
629 | void add_input_crosshair(int num){ |
623 | void add_input_crosshair(int num){ |
630 | fprintf(js_include_file,"\n/* add_input_crosshair */\ |
624 | fprintf(js_include_file,"\n/* add_input_crosshair */\ |
631 | function user_redraw(t){\ |
625 | function user_redraw(t){\ |
632 | var lu = userdraw_x.length;\ |
626 | var lu = userdraw_x.length;\ |
633 | if( t == -1 && lu > 0){\ |
627 | if( t == -1 && lu > 0){\ |
634 | userdraw_x.splice(lu-1,1);\ |
628 | userdraw_x.splice(lu-1,1);\ |
635 | userdraw_y.splice(lu-1,1);\ |
629 | userdraw_y.splice(lu-1,1);\ |
Line 655... | Line 649... | ||
655 | };",num); |
649 | };",num); |
656 | } |
650 | } |
657 | 651 | ||
658 | /* draw arrows via inputfields x/y */ |
652 | /* draw arrows via inputfields x/y */ |
659 | void add_input_arrow(int num){ |
653 | void add_input_arrow(int num){ |
660 | fprintf(js_include_file,"\n/* add_input_arrow */\ |
654 | fprintf(js_include_file,"\n/* add_input_arrow */\ |
661 | function user_redraw(t){\ |
655 | function user_redraw(t){\ |
662 | var lu = userdraw_x.length;\ |
656 | var lu = userdraw_x.length;\ |
663 | if( t == -1 && lu > 1 ){\ |
657 | if( t == -1 && lu > 1 ){\ |
664 | userdraw_x.splice(lu-2,2);\ |
658 | userdraw_x.splice(lu-2,2);\ |
665 | userdraw_y.splice(lu-2,2);\ |
659 | userdraw_y.splice(lu-2,2);\ |
666 | context_userdraw.clearRect(0,0,xsize,ysize);\ |
660 | context_userdraw.clearRect(0,0,xsize,ysize);\ |
667 | draw_arrows(context_userdraw,userdraw_x,userdraw_y,arrow_head,line_width,stroke_color,stroke_opacity,use_dashed,dashtype0,dashtype1,type,use_rotate,angle,0,[1,0,0,1,0,0]);\ |
661 | draw_arrows(context_userdraw,userdraw_x,userdraw_y,arrow_head,line_width,stroke_color,stroke_opacity,use_dashed,dashtype0,dashtype1,type,use_rotate,angle,0,[1,0,0,1,0,0]);\ |
668 | return;\ |
662 | return;\ |
669 | };\ |
663 | };\ |
670 | var add_x1 = safe_eval( document.getElementById(\"userinput_x1\").value );\ |
664 | var add_x1 = safe_eval( document.getElementById(\"userinput_x1\").value );\ |
671 | var add_y1 = safe_eval( document.getElementById(\"userinput_y1\").value );\ |
665 | var add_y1 = safe_eval( document.getElementById(\"userinput_y1\").value );\ |
672 | var add_x2 = safe_eval( document.getElementById(\"userinput_x2\").value );\ |
666 | var add_x2 = safe_eval( document.getElementById(\"userinput_x2\").value );\ |
673 | var add_y2 = safe_eval( document.getElementById(\"userinput_y2\").value );\ |
667 | var add_y2 = safe_eval( document.getElementById(\"userinput_y2\").value );\ |
674 | if( add_x1 != null && add_y1 != null && add_x2 != null && add_y2 != null ){\ |
668 | if( add_x1 != null && add_y1 != null && add_x2 != null && add_y2 != null ){\ |
675 | if( %d == 2 ){\ |
669 | if( %d == 2 ){\ |
676 | var s = userdraw_x.length;\ |
670 | var s = userdraw_x.length;\ |
677 | userdraw_x[lu] = x2px(add_x1);\ |
671 | userdraw_x[lu] = x2px(add_x1);\ |
678 | userdraw_y[lu] = y2px(add_y1);\ |
672 | userdraw_y[lu] = y2px(add_y1);\ |
679 | userdraw_x[lu+1] = x2px(add_x2);\ |
673 | userdraw_x[lu+1] = x2px(add_x2);\ |
680 | userdraw_y[lu+1] = y2px(add_y2);\ |
674 | userdraw_y[lu+1] = y2px(add_y2);\ |
681 | } else {\ |
675 | } else {\ |
682 | userdraw_x[0] = x2px(add_x1);\ |
676 | userdraw_x[0] = x2px(add_x1);\ |
683 | userdraw_y[0] = y2px(add_y1);\ |
677 | userdraw_y[0] = y2px(add_y1);\ |
684 | userdraw_x[1] = x2px(add_x2);\ |
678 | userdraw_x[1] = x2px(add_x2);\ |
685 | userdraw_y[1] = y2px(add_y2);\ |
679 | userdraw_y[1] = y2px(add_y2);\ |
Line 691... | Line 685... | ||
691 | };",num); |
685 | };",num); |
692 | } |
686 | } |
693 | 687 | ||
694 | /* draw line via inputfields x/y */ |
688 | /* draw line via inputfields x/y */ |
695 | void add_input_line(int num){ |
689 | void add_input_line(int num){ |
696 | fprintf(js_include_file,"\n/* line via inputfields */\ |
690 | fprintf(js_include_file,"\n/* line via inputfields */\ |
697 | function user_redraw(t){\ |
691 | function user_redraw(t){\ |
698 | var lu = userdraw_x.length;\ |
692 | var lu = userdraw_x.length;\ |
699 | if( t == -1 && lu > 1){\ |
693 | if( t == -1 && lu > 1){\ |
700 | userdraw_x.splice(lu-2,2);\ |
694 | userdraw_x.splice(lu-2,2);\ |
701 | userdraw_y.splice(lu-2,2);\ |
695 | userdraw_y.splice(lu-2,2);\ |
Line 727... | Line 721... | ||
727 | } |
721 | } |
728 | 722 | ||
729 | 723 | ||
730 | /* draw polyline via inputfields x/y */ |
724 | /* draw polyline via inputfields x/y */ |
731 | void add_input_polyline(){ |
725 | void add_input_polyline(){ |
732 | fprintf(js_include_file,"\n/* polyline_segment via inputfields */\ |
726 | fprintf(js_include_file,"\n/* polyline_segment via inputfields */\ |
733 | function user_redraw(t){\ |
727 | function user_redraw(t){\ |
734 | var lu = userdraw_x.length;\ |
728 | var lu = userdraw_x.length;\ |
735 | cnt = 1;\ |
729 | cnt = 1;\ |
736 | if( t == -1 && lu > 0){\ |
730 | if( t == -1 && lu > 0){\ |
737 | userdraw_x.splice(lu-1,1);\ |
731 | userdraw_x.splice(lu-1,1);\ |
Line 751... | Line 745... | ||
751 | return;\ |
745 | return;\ |
752 | };"); |
746 | };"); |
753 | } |
747 | } |
754 | /* draw segment(s) via inputfields x/y */ |
748 | /* draw segment(s) via inputfields x/y */ |
755 | void add_input_segment(int num){ |
749 | void add_input_segment(int num){ |
756 | fprintf(js_include_file,"\n/* add_input_segment */\ |
750 | fprintf(js_include_file,"\n/* add_input_segment */\ |
757 | function user_redraw(t){\ |
751 | function user_redraw(t){\ |
758 | var lu = userdraw_x.length;\ |
752 | var lu = userdraw_x.length;\ |
759 | if( t == -1 && lu > 1){\ |
753 | if( t == -1 && lu > 1){\ |
760 | userdraw_x.splice(lu-2,2);\ |
754 | userdraw_x.splice(lu-2,2);\ |
761 | userdraw_y.splice(lu-2,2);\ |
755 | userdraw_y.splice(lu-2,2);\ |
Line 787... | Line 781... | ||
787 | };",num); |
781 | };",num); |
788 | } |
782 | } |
789 | 783 | ||
790 | /* draw demilines(s) via inputfields x/y */ |
784 | /* draw demilines(s) via inputfields x/y */ |
791 | void add_input_demiline(int num){ |
785 | void add_input_demiline(int num){ |
792 | fprintf(js_include_file,"\n/* add_input_segment */\ |
786 | fprintf(js_include_file,"\n/* add_input_segment */\ |
793 | function user_redraw(t){\ |
787 | function user_redraw(t){\ |
794 | var lu = userdraw_x.length;\ |
788 | var lu = userdraw_x.length;\ |
795 | if( t == -1 && lu > 1){\ |
789 | if( t == -1 && lu > 1){\ |
796 | userdraw_x.splice(lu-2,2);\ |
790 | userdraw_x.splice(lu-2,2);\ |
797 | userdraw_y.splice(lu-2,2);\ |
791 | userdraw_y.splice(lu-2,2);\ |
Line 835... | Line 829... | ||
835 | 829 | ||
836 | 7/2022: preserve all div's with html ('<' && '/>') eg mathml,katex,html and all external objects placed with function 'place_image_on_canvas(id)' |
830 | 7/2022: preserve all div's with html ('<' && '/>') eg mathml,katex,html and all external objects placed with function 'place_image_on_canvas(id)' |
837 | ...hope this does not interfere with other things |
831 | ...hope this does not interfere with other things |
838 | https://wimsedu.info/?topic=geometrie-interactive-avec-canvasdraw |
832 | https://wimsedu.info/?topic=geometrie-interactive-avec-canvasdraw |
839 | */ |
833 | */ |
840 | fprintf(js_include_file,"\n/* add clear button */\ |
834 | fprintf(js_include_file,"\n/* add clear button */\ |
841 | clear_draw_area%d = function(){\ |
835 | clear_draw_area%d = function(){\ |
842 | if(typeof(fill_canvas_no) === 'number'){\ |
836 | if(typeof(fill_canvas_no) === 'number'){\ |
843 | var chk = document.getElementById('wims_canvas%d'+fill_canvas_no);\ |
837 | var chk = document.getElementById('wims_canvas%d'+fill_canvas_no);\ |
844 | if( chk ){\ |
838 | if( chk ){\ |
845 | var fill_ctx = chk.getContext(\"2d\");fill_ctx.clearRect(0,0,xsize,ysize);\ |
839 | var fill_ctx = chk.getContext(\"2d\");fill_ctx.clearRect(0,0,xsize,ysize);\ |
Line 888... | Line 882... | ||
888 | };\ |
882 | };\ |
889 | add_clear_button();",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,css_class,button_text,canvas_root_id); |
883 | add_clear_button();",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id,css_class,button_text,canvas_root_id); |
890 | } |
884 | } |
891 | 885 | ||
892 | void add_color_palette(char *css_class){ |
886 | void add_color_palette(char *css_class){ |
893 | fprintf(js_include_file,"\n/* add color palette */\ |
887 | fprintf(js_include_file,"\n/* add color palette */\ |
894 | function add_color_palette(){\ |
888 | function add_color_palette(){\ |
895 | var tooltip_placeholder_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
889 | var tooltip_placeholder_div = document.getElementById(\"tooltip_placeholder_div%d\");\ |
896 | var clen = palettecolors.length;\ |
890 | var clen = palettecolors.length;\ |
897 | for( var p = 0 ; p < clen ; p++ ){\ |
891 | for( var p = 0 ; p < clen ; p++ ){\ |
898 | var button = document.createElement('input');\ |
892 | var button = document.createElement('input');\ |
Line 1056... | Line 1050... | ||
1056 | }; |
1050 | }; |
1057 | int NUMBER_OF_COLORNAMES=(sizeof(colors)/sizeof(colors[0])); |
1051 | int NUMBER_OF_COLORNAMES=(sizeof(colors)/sizeof(colors[0])); |
1058 | 1052 | ||
1059 | /* 10/2016 does not react to border color !! just any border will stop the filling */ |
1053 | /* 10/2016 does not react to border color !! just any border will stop the filling */ |
1060 | void add_js_filltoborder(int canvas_type){ |
1054 | void add_js_filltoborder(int canvas_type){ |
1061 | fprintf(js_include_file,"\n/* command filltoborder */\ |
1055 | fprintf(js_include_file,"\n/* command filltoborder */\ |
1062 | function filltoborder(xs,ys,bordercolors,colors,fill_canvas_no,use_special_filling,fill_ctx){\ |
1056 | function filltoborder(xs,ys,bordercolors,colors,fill_canvas_no,use_special_filling,fill_ctx){\ |
1063 | document.body.style.cursor = 'wait';\ |
1057 | document.body.style.cursor = 'wait';\ |
1064 | var canvas = document.getElementById(\"wims_canvas%d%d\");\ |
1058 | var canvas = document.getElementById(\"wims_canvas%d%d\");\ |
1065 | if( ! canvas ){ return; };\ |
1059 | if( ! canvas ){ return; };\ |
1066 | document.body.style.cursor = 'wait';\ |
1060 | document.body.style.cursor = 'wait';\ |
Line 1185... | Line 1179... | ||
1185 | } |
1179 | } |
1186 | 1180 | ||
1187 | void add_js_ruler(double x,double y,double sizex,double sizey,char *font, |
1181 | void add_js_ruler(double x,double y,double sizex,double sizey,char *font, |
1188 | char *stroke_color,double stroke_opacity,char *fill_color,double fill_opacity, |
1182 | char *stroke_color,double stroke_opacity,char *fill_color,double fill_opacity, |
1189 | int line_width,int dynamic,int use_snap){ |
1183 | int line_width,int dynamic,int use_snap){ |
1190 | fprintf(js_include_file,"\n/* command ruler */\ |
1184 | fprintf(js_include_file,"\n/* command ruler */\ |
1191 | var ruler_data = new Array(3);\ |
1185 | var ruler_data = new Array(3);\ |
1192 | var ruler%d = function(){\ |
1186 | var ruler%d = function(){\ |
1193 | var use_snap = %d;\ |
1187 | var use_snap = %d;\ |
1194 | var full = 2*Math.PI;\ |
1188 | var full = 2*Math.PI;\ |
1195 | var once = true;\ |
1189 | var once = true;\ |
Line 1340... | Line 1334... | ||
1340 | ruler%d();",dynamic,canvas_root_id); |
1334 | ruler%d();",dynamic,canvas_root_id); |
1341 | } |
1335 | } |
1342 | } |
1336 | } |
1343 | 1337 | ||
1344 | void add_js_protractor(int type,double xcenter,double ycenter,int size,char *font,char *stroke_color,double stroke_opacity,char *fill_color,double fill_opacity,int line_width,int use_scale,int dynamic,int use_snap){ |
1338 | void add_js_protractor(int type,double xcenter,double ycenter,int size,char *font,char *stroke_color,double stroke_opacity,char *fill_color,double fill_opacity,int line_width,int use_scale,int dynamic,int use_snap){ |
1345 | - | ||
1346 | /* |
1339 | /* |
1347 | use_slider_display = 2 : angle in degrees |
1340 | use_slider_display = 2 : angle in degrees |
1348 | use_slider_display = 3 : angle in radians |
1341 | use_slider_display = 3 : angle in radians |
1349 | void add_slider_display(FILE *js_include_file,int canvas_root_id,int precision,int font_size,char *font_color,double stroke_opacity){ |
1342 | void add_slider_display(FILE *js_include_file,int canvas_root_id,int precision,int font_size,char *font_color,double stroke_opacity){ |
1350 | */ |
1343 | */ |
1351 | 1344 | ||
1352 | if( type == 1 ){ /* geodriehoek */ |
1345 | if( type == 1 ){ /* geodriehoek */ |
1353 | fprintf(js_include_file,"\n/* command protractor type 1 */\ |
1346 | fprintf(js_include_file,"\n/* command protractor type 1 */\ |
1354 | var protractor_data = new Array(3);\ |
1347 | var protractor_data = new Array(3);\ |
1355 | var protractor%d = function(){\ |
1348 | var protractor%d = function(){\ |
1356 | var once = true;\ |
1349 | var once = true;\ |
1357 | var use_snap = %d;\ |
1350 | var use_snap = %d;\ |
1358 | var full = 2*Math.PI;\ |
1351 | var full = 2*Math.PI;\ |
Line 1380... | Line 1373... | ||
1380 | ctx_temp.beginPath();\ |
1373 | ctx_temp.beginPath();\ |
1381 | ctx_temp.moveTo(xcenter-half,ycenter );\ |
1374 | ctx_temp.moveTo(xcenter-half,ycenter );\ |
1382 | ctx_temp.lineTo(xcenter,ycenter-half);\ |
1375 | ctx_temp.lineTo(xcenter,ycenter-half);\ |
1383 | ctx_temp.lineTo(xcenter+half,ycenter);\ |
1376 | ctx_temp.lineTo(xcenter+half,ycenter);\ |
1384 | ctx_temp.lineTo(xcenter-half,ycenter);\ |
1377 | ctx_temp.lineTo(xcenter-half,ycenter);\ |
1385 | ctx_temp.moveTo(xcenter,ycenter );\ |
1378 | ctx_temp.moveTo(xcenter,ycenter );\ |
1386 | ctx_temp.lineTo(xcenter+0.5*half,ycenter-0.5*half);\ |
1379 | ctx_temp.lineTo(xcenter+0.5*half,ycenter-0.5*half);\ |
1387 | ctx_temp.moveTo(xcenter,ycenter );\ |
1380 | ctx_temp.moveTo(xcenter,ycenter );\ |
1388 | ctx_temp.lineTo(xcenter-0.5*half,ycenter-0.5*half);\ |
1381 | ctx_temp.lineTo(xcenter-0.5*half,ycenter-0.5*half);\ |
1389 | ctx_temp.moveTo(xcenter,ycenter );\ |
1382 | ctx_temp.moveTo(xcenter,ycenter );\ |
1390 | ctx_temp.lineTo(xcenter,ycenter-half);\ |
1383 | ctx_temp.lineTo(xcenter,ycenter-half);\ |
1391 | ctx_temp.closePath();\ |
1384 | ctx_temp.closePath();\ |
1392 | ctx_temp.fill();\ |
1385 | ctx_temp.fill();\ |
1393 | ctx_temp.stroke();\ |
1386 | ctx_temp.stroke();\ |
1394 | ctx_temp.beginPath();\ |
1387 | ctx_temp.beginPath();\ |
1395 | ctx_temp.arc(xcenter,ycenter,radius1,0,Math.PI,false);\ |
1388 | ctx_temp.arc(xcenter,ycenter,radius1,0,Math.PI,false);\ |
1396 | ctx_temp.closePath();\ |
1389 | ctx_temp.closePath();\ |
1397 | if( use_scale == 1 ){\ |
1390 | if( use_scale == 1 ){\ |
1398 | ctx_temp.fillStyle = ctx_temp.strokeStyle;\ |
1391 | ctx_temp.fillStyle = ctx_temp.strokeStyle;\ |
Line 1421... | Line 1414... | ||
1421 | ctx_temp.drawImage(canvas,xcenter,ycenter);\ |
1414 | ctx_temp.drawImage(canvas,xcenter,ycenter);\ |
1422 | ctx_temp.save();\ |
1415 | ctx_temp.save();\ |
1423 | once = false;\ |
1416 | once = false;\ |
1424 | };\ |
1417 | };\ |
1425 | ",canvas_root_id,use_snap,canvas_root_id,size,type,xcenter,ycenter,font,stroke_color,stroke_opacity,fill_color,fill_opacity,line_width,use_scale); |
1418 | ",canvas_root_id,use_snap,canvas_root_id,size,type,xcenter,ycenter,font,stroke_color,stroke_opacity,fill_color,fill_opacity,line_width,use_scale); |
1426 | } |
1419 | } |
1427 | - | ||
1428 | if( type != 1 ){ |
1420 | if( type != 1 ){ |
1429 | fprintf(js_include_file,"\n/* command protractor type 0 */\ |
1421 | fprintf(js_include_file,"\n/* command protractor type 0 */\ |
1430 | var protractor_data = new Array(3);\ |
1422 | var protractor_data = new Array(3);\ |
1431 | var protractor%d = function(){\ |
1423 | var protractor%d = function(){\ |
1432 | var once = true;\ |
1424 | var once = true;\ |
1433 | var use_snap = %d;\ |
1425 | var use_snap = %d;\ |
1434 | var full = 2*Math.PI;\ |
1426 | var full = 2*Math.PI;\ |
Line 1492... | Line 1484... | ||
1492 | };\ |
1484 | };\ |
1493 | ctx_temp.drawImage(canvas,0,0);\ |
1485 | ctx_temp.drawImage(canvas,0,0);\ |
1494 | ctx_temp.save();\ |
1486 | ctx_temp.save();\ |
1495 | once = false;\ |
1487 | once = false;\ |
1496 | };",canvas_root_id,use_snap,canvas_root_id,size,type,xcenter,ycenter,font,stroke_color,stroke_opacity,fill_color,fill_opacity,line_width,use_scale); |
1488 | };",canvas_root_id,use_snap,canvas_root_id,size,type,xcenter,ycenter,font,stroke_color,stroke_opacity,fill_color,fill_opacity,line_width,use_scale); |
1497 | } |
1489 | } |
1498 | if( dynamic == -1 ){ /* rotate the protractors */ |
1490 | if( dynamic == -1 ){ /* rotate the protractors */ |
1499 | fprintf(js_include_file,"\ |
1491 | fprintf(js_include_file,"\ |
1500 | var protractor_x = xcenter;\ |
1492 | var protractor_x = xcenter;\ |
1501 | var protractor_y = ycenter;\ |
1493 | var protractor_y = ycenter;\ |
1502 | ctx.drawImage(canvas_temp,0,0);\ |
1494 | ctx.drawImage(canvas_temp,0,0);\ |
1503 | var angle = 0;\ |
1495 | var angle = 0;\ |
1504 | if(wims_status != \"done\"){\ |
1496 | if(wims_status != \"done\"){\ |
Line 1561... | Line 1553... | ||
1561 | default:protractor_stop(evt);\ |
1553 | default:protractor_stop(evt);\ |
1562 | };\ |
1554 | };\ |
1563 | };\ |
1555 | };\ |
1564 | };\ |
1556 | };\ |
1565 | protractor%d();",canvas_root_id); |
1557 | protractor%d();",canvas_root_id); |
1566 | - | ||
1567 | } |
1558 | } |
1568 | else |
1559 | else |
1569 | { |
1560 | { |
1570 | fprintf(js_include_file,"\ |
1561 | fprintf(js_include_file,"\ |
1571 | ctx.save();\ |
1562 | ctx.save();\ |
1572 | ctx.translate(xcenter,ycenter);\ |
1563 | ctx.translate(xcenter,ycenter);\ |
1573 | ctx.rotate(%d*Math.PI/180);\ |
1564 | ctx.rotate(%d*Math.PI/180);\ |
1574 | ctx.translate( -1*xcenter, -1*ycenter );\ |
1565 | ctx.translate( -1*xcenter, -1*ycenter );\ |
1575 | ctx.drawImage( canvas_temp,0,0 );\ |
1566 | ctx.drawImage( canvas_temp,0,0 );\ |
1576 | ctx.restore();\ |
1567 | ctx.restore();\ |
1577 | };\ |
1568 | };\ |
1578 | protractor%d();\ |
1569 | protractor%d();\ |
1579 | ",dynamic,canvas_root_id); |
1570 | ",dynamic,canvas_root_id); |
1580 | } /* end dynamic == -1*/ |
1571 | } /* end dynamic == -1*/ |
1581 | - | ||
1582 | } |
1572 | } |
1583 | - | ||
1584 | - | ||
1585 | - | ||
1586 | - |