Subversion Repositories wimsdev

Rev

Rev 18218 | Rev 18556 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18218 Rev 18553
Line 12... Line 12...
12
int type;
12
int type;
13
for(i = 0 ; i < MAX_JS_FUNCTIONS; i++){
13
for(i = 0 ; i < MAX_JS_FUNCTIONS; i++){
14
/*
14
/*
15
fprintf(stdout,"checking js_function[%d] = %d<br>",i,js_function[i]);
15
fprintf(stdout,"checking js_function[%d] = %d<br>",i,js_function[i]);
16
*/
16
*/
17
 if( js_function[i] == 1){
17
  if( js_function[i] == 1){
18
    switch(i){
18
    switch(i){
19
 
-
 
20
case JS_ARROWHEAD:
19
      case JS_ARROWHEAD:
21
/* draw an arrowhead on object ; arrowhead on (x:y) from direction (x0:y0) */
20
/* draw an arrowhead on object ; arrowhead on (x:y) from direction (x0:y0) */
22
fprintf(js_include_file,"\n/* draw an arrowhead on object ; arrowhead on (x:y) from direction (x0:y0) */\
21
        fprintf(js_include_file,"\n/* draw an arrowhead on object ; arrowhead on (x:y) from direction (x0:y0) */\
23
function draw_arrowhead(x,y,x0,y0,ctx){\
22
function draw_arrowhead(x,y,x0,y0,ctx){\
24
var angle = Math.atan2(x - x0,y - y0) + Math.PI;\
23
var angle = Math.atan2(x - x0,y - y0) + Math.PI;\
25
var pie = Math.PI/6;\
24
var pie = Math.PI/6;\
26
ctx.save();\
25
ctx.save();\
27
ctx.fillStyle=ctx.strokeStyle;\
26
ctx.fillStyle=ctx.strokeStyle;\
Line 33... Line 32...
33
ctx.closePath();\
32
ctx.closePath();\
34
ctx.stroke();\
33
ctx.stroke();\
35
ctx.fill();\
34
ctx.fill();\
36
ctx.restore();\
35
ctx.restore();\
37
};");
36
};");
38
break;
37
        break;
39
case JS_LOAD_IMAGE:
38
      case JS_LOAD_IMAGE:
40
fprintf(js_include_file,"\n/* get_image_from_url */\
39
        fprintf(js_include_file,"\n/* get_image_from_url */\
41
var image_cnt = 0;\
40
var image_cnt = 0;\
42
if( typeof(image_patterns) !== 'object'){var image_patterns = [];};\
41
if( typeof(image_patterns) !== 'object'){var image_patterns = [];};\
43
var get_image_from_url = function(url){\
42
var get_image_from_url = function(url){\
44
 var idx = Math.ceil(1000*(Math.random()));\
43
 var idx = Math.ceil(1000*(Math.random()));\
45
 var canvas = create_canvas%d(idx,xsize,ysize);\
44
 var canvas = create_canvas%d(idx,xsize,ysize);\
Line 50... Line 49...
50
 img.onload = function(){\
49
 img.onload = function(){\
51
  var pat = ctx.createPattern(img,\"repeat\");\
50
  var pat = ctx.createPattern(img,\"repeat\");\
52
  image_patterns.push(pat);\
51
  image_patterns.push(pat);\
53
 };\
52
 };\
54
};",canvas_root_id);
53
};",canvas_root_id);
55
break;
54
        break;
56
 
-
 
57
case JS_SAFE_EVAL:
55
      case JS_SAFE_EVAL:
58
/* to avoid easy js-code injection...but is it a real problem ? */
56
/* to avoid easy js-code injection...but is it a real problem ? */
59
fprintf(js_include_file," \n/* add safe eval function */function safe_eval(exp){\
57
        fprintf(js_include_file," \n/* add safe eval function */function safe_eval(exp){\
60
 exp = exp.replace(/pi/g,'3.14159');\
58
 exp = exp.replace(/pi/g,'3.14159');\
61
 if(exp.indexOf('^') != -1){\
59
 if(exp.indexOf('^') != -1){\
62
  exp = exp.replace(/[a-zA-Z]/g,' ');\
60
  exp = exp.replace(/[a-zA-Z]/g,' ');\
63
  exp = exp.replace(/\\*10\\^-/g,'e-');\
61
  exp = exp.replace(/\\*10\\^-/g,'e-');\
64
  exp = exp.replace(/\\*10\\^/g,'e+');\
62
  exp = exp.replace(/\\*10\\^/g,'e+');\
Line 82... Line 80...
82
 } else {\
80
 } else {\
83
  try{ exp = eval(exp); } catch(e){alert(\"Invalid arithmetic expression\"); exp = null;};\
81
  try{ exp = eval(exp); } catch(e){alert(\"Invalid arithmetic expression\"); exp = null;};\
84
 };\
82
 };\
85
 return exp;\
83
 return exp;\
86
};");
84
};");
87
break;
85
        break;
88
 
-
 
89
case JS_RAWMATH:
86
      case JS_RAWMATH:
90
fprintf(js_include_file,"\n/* add_rawmath() */\
87
        fprintf(js_include_file,"\n/* add_rawmath() */\
91
function rawmath(i){\
88
function rawmath(i){\
92
 i=i.toLowerCase();\
89
 i=i.toLowerCase();\
93
 i=i.replace(/\\ /g,\"\");i=i.replace(/\\*\\*/g,\"^\");\
90
 i=i.replace(/\\ /g,\"\");i=i.replace(/\\*\\*/g,\"^\");\
94
 if(i.indexOf(\"e+\")!=-1){i=i.replace(\"e+\",\"*10^\");};\
91
 if(i.indexOf(\"e+\")!=-1){i=i.replace(\"e+\",\"*10^\");};\
95
 if(i.indexOf(\"e-\")!=-1){i=i.replace(\"e-\",\"*10^-\");};\
92
 if(i.indexOf(\"e-\")!=-1){i=i.replace(\"e-\",\"*10^-\");};\
Line 125... Line 122...
125
  };\
122
  };\
126
  i = i.replace(/\\)\\(/g,\")*(\");\
123
  i = i.replace(/\\)\\(/g,\")*(\");\
127
 };\
124
 };\
128
 return i;\
125
 return i;\
129
};");
126
};");
130
break;
127
        break;
131
 
-
 
132
case JS_PLOT:
128
      case JS_PLOT:
133
fprintf(js_include_file,"\n/* jsplot() */\
129
        fprintf(js_include_file,"\n/* jsplot() */\
134
var x_anim_points;var y_anim_points;var animation_steps;var animation_funs;\
130
var x_anim_points;var y_anim_points;var animation_steps;var animation_funs;\
135
function jsplot(canvas_type,funs,linewidth,color,opacity,use_dashed,dashtype0,dashtype1,trange,plotsteps,use_parametric,use_animate,origin){\
131
function jsplot(canvas_type,funs,linewidth,color,opacity,use_dashed,dashtype0,dashtype1,trange,plotsteps,use_parametric,use_animate,origin){\
136
 var obj = create_canvas%d(canvas_type,xsize,ysize);\
132
 var obj = create_canvas%d(canvas_type,xsize,ysize);\
137
 var ctx = obj.getContext(\"2d\");\
133
 var ctx = obj.getContext(\"2d\");\
138
 ctx.clearRect(0,0,xsize,ysize);\
134
 ctx.clearRect(0,0,xsize,ysize);\
Line 202... Line 198...
202
   ctx.stroke();\
198
   ctx.stroke();\
203
  };\
199
  };\
204
 };\
200
 };\
205
 if( use_animate == 1 ){animation_steps = idx;animate_this();}\
201
 if( use_animate == 1 ){animation_steps = idx;animate_this();}\
206
};",canvas_root_id);
202
};",canvas_root_id);
207
break;
203
        break;
208
 
-
 
209
case JS_MATH:
204
      case JS_MATH:
210
/* 5/2024 added exp -> e^ -> (2.718281828459045)^ */
205
/* 5/2024 added exp -> e^ -> (2.718281828459045)^ */
211
fprintf(js_include_file,"\n/* to_js_math() */\
206
        fprintf(js_include_file,"\n/* to_js_math() */\
212
function to_js_math(math_fun){\
207
function to_js_math(math_fun){\
213
 if(math_fun == null){return;};\
208
 if(math_fun == null){return;};\
214
 var infun=[\"exp\",\"sqrt\",\"^\",\"asin\",\"acos\",\"atan\",\"log\",\"pi\",\"abs\",\"sin\",\"cos\",\"tan\",\"e\"];\
209
 var infun=[\"exp\",\"sqrt\",\"^\",\"asin\",\"acos\",\"atan\",\"log\",\"pi\",\"abs\",\"sin\",\"cos\",\"tan\",\"e\"];\
215
 var outfun=[\"(2.718281828459045)^\",\"Math.sqrt\",\"Math.pow\",\"Math.asin\",\"Math.acos\",\"Math.atan\",\"Math.log\",\"(3.14159265358979)\",\"Math.abs\",\"Math.sin\",\"Math.cos\",\"Math.tan\",\"(2.718281828459045)\"];\
210
 var outfun=[\"(2.718281828459045)^\",\"Math.sqrt\",\"Math.pow\",\"Math.asin\",\"Math.acos\",\"Math.atan\",\"Math.log\",\"(3.14159265358979)\",\"Math.abs\",\"Math.sin\",\"Math.cos\",\"Math.tan\",\"(2.718281828459045)\"];\
216
 var len = infun.length;var in_fun;var In_Fun;var out_fun;var w_cnt;\
211
 var len = infun.length;var in_fun;var In_Fun;var out_fun;var w_cnt;\
Line 246... Line 241...
246
   };\
241
   };\
247
  };\
242
  };\
248
 };\
243
 };\
249
 return math_fun;\
244
 return math_fun;\
250
};");
245
};");
251
break;
246
        break;
252
 
-
 
253
case INTERACTIVE:
247
      case INTERACTIVE:
254
/* 1/8/2022 NOTE : getMouse() code should run at maximum speed and not be bothered with all kind of fancy tests !!
248
/* 1/8/2022 NOTE : getMouse() code should run at maximum speed and not be bothered with all kind of fancy tests !!
255
  1/8/2022 : latest improvements related to 'reponsiveness' will fatally lockup browsers in the pixel-by-pixel filling...at least in userdraw clickfill...*/
249
  1/8/2022 : latest improvements related to 'reponsiveness' will fatally lockup browsers in the pixel-by-pixel filling...at least in userdraw clickfill...*/
256
 fprintf(js_include_file,"\n/* add mouse support */\
250
        fprintf(js_include_file,"\n/* add mouse support */\
257
var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));\
251
var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));\
258
var getMouse = function(e, element){\
252
var getMouse = function(e, element){\
259
   var mx,my;var offsetX = 0,offsetY = 0;\
253
   var mx,my;var offsetX = 0,offsetY = 0;\
260
   while( ( element = element.offsetParent) ){\
254
   while( ( element = element.offsetParent) ){\
261
     offsetX += element.offsetLeft;offsetY += element.offsetTop;\
255
     offsetX += element.offsetLeft;offsetY += element.offsetTop;\
Line 281... Line 275...
281
   mx = (mx * xsize / canvas_div.offsetWidth);\
275
   mx = (mx * xsize / canvas_div.offsetWidth);\
282
   /*console.log('mx after='+mx);*/\
276
   /*console.log('mx after='+mx);*/\
283
   my = (my * ysize / canvas_div.offsetHeight);\
277
   my = (my * ysize / canvas_div.offsetHeight);\
284
   return {x: mx, y: my};};\
278
   return {x: mx, y: my};};\
285
};");
279
};");
286
break;
280
        break;
287
case USERDRAW_AND_ZOOM:
281
      case USERDRAW_AND_ZOOM:
288
fprintf(js_include_file,"\n/* add zoom support for multidraw */\
282
        fprintf(js_include_file,"\n/* add zoom support for multidraw */\
289
function recalculate_userdraw(xmin0,ymin0,xmax0,ymax0){\
283
function recalculate_userdraw(xmin0,ymin0,xmax0,ymax0){\
290
 function x_zoom(px){\
284
 function x_zoom(px){\
291
  var x = parseFloat(px*(xmax0 - xmin0)/xsize + xmin0);\
285
  var x = parseFloat(px*(xmax0 - xmin0)/xsize + xmin0);\
292
  return parseFloat(x*xsize/(xmax - xmin) - xsize*xmin/(xmax - xmin));\
286
  return parseFloat(x*xsize/(xmax - xmin) - xsize*xmin/(xmax - xmin));\
293
 };\
287
 };\
Line 644... Line 638...
644
 ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\
638
 ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\
645
 for( x = 0 ; x <= xsize ; x = x + dx ){\
639
 for( x = 0 ; x <= xsize ; x = x + dx ){\
646
  ctx.beginPath();\
640
  ctx.beginPath();\
647
  ctx.moveTo(x,0);\
641
  ctx.moveTo(x,0);\
648
  ctx.lineTo(x,ysize);\
642
  ctx.lineTo(x,ysize);\
649
  ctx.closePath();\
643
  ctx.closePath();\
650
  ctx.stroke();\
644
  ctx.stroke();\
651
 };\
645
 };\
652
 for( y = 0 ; y <= ysize; y = y + dy ){\
646
 for( y = 0 ; y <= ysize; y = y + dy ){\
653
  ctx.beginPath();\
647
  ctx.beginPath();\
654
  ctx.moveTo(0,y);\
648
  ctx.moveTo(0,y);\
655
  ctx.lineTo(xsize,y);\
649
  ctx.lineTo(xsize,y);\
Line 688... Line 682...
688
  } else {\
682
  } else {\
689
   setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\
683
   setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\
690
  };\
684
  };\
691
 };\
685
 };\
692
};",canvas_root_id,canvas_root_id);
686
};",canvas_root_id,canvas_root_id);
693
break;
687
        break;
694
 
688
 
695
case DRAW_DOTFILL:/* not  used for userdraw */
689
      case DRAW_DOTFILL:/* not  used for userdraw */
696
fprintf(js_include_file,"\n/* draw dotfill */\
690
        fprintf(js_include_file,"\n/* draw dotfill */\
697
var dot_fill_pattern;\
691
var dot_fill_pattern;\
698
function draw_dotfill(canvas_type,x0,y0,dx,dy,radius,color,opacity,xsize,ysize,use_userdraw){\
692
function draw_dotfill(canvas_type,x0,y0,dx,dy,radius,color,opacity,xsize,ysize,use_userdraw){\
699
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
693
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
700
var fc = %d+canvas_type;\
694
var fc = %d+canvas_type;\
701
 var obj = create_canvas%d(fc,xsize,ysize);\
695
 var obj = create_canvas%d(fc,xsize,ysize);\
Line 711... Line 705...
711
   ctx.beginPath();\
705
   ctx.beginPath();\
712
   ctx.arc(x,y,radius,0,2*Math.PI,false);\
706
   ctx.arc(x,y,radius,0,2*Math.PI,false);\
713
   ctx.closePath();\
707
   ctx.closePath();\
714
   ctx.fill();\
708
   ctx.fill();\
715
  };\
709
  };\
716
 };\
710
 };\
717
 if( use_userdraw ){\
711
 if( use_userdraw ){\
718
  dot_fill_pattern = ctx;\
712
  dot_fill_pattern = ctx;\
719
 } else {\
713
 } else {\
720
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
714
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
721
 };\
715
 };\
722
return;\
716
return;\
723
};",canvas_root_id,canvas_root_id);
717
};",canvas_root_id,canvas_root_id);
724
break;
718
        break;
725
 
-
 
726
case DRAW_SUBSUP:/* Uses 'script-size for numbers and for sub & sup strings */
719
      case DRAW_SUBSUP:/* Uses 'script-size for numbers and for sub & sup strings */
727
/* use_offset
720
/* use_offset
728
 0=none;
721
 0=none;
729
 1=yoffset
722
 1=yoffset
730
 2=xoffset
723
 2=xoffset
731
 3=xyoffset
724
 3=xyoffset
732
 4=centered
725
 4=centered
733
*/
726
*/
734
fprintf(js_include_file,"\n/* draw sub sup imitation in canvas */\
727
        fprintf(js_include_file,"\n/* draw sub sup imitation in canvas */\
735
function draw_subsup(ctx,x,y,txt,use_offset){\
728
function draw_subsup(ctx,x,y,txt,use_offset){\
736
 var C;var c;var len = txt.length;var baseline = 'middle';var space = 0;ctx.save();var subsup=0;\
729
 var C;var c;var len = txt.length;var baseline = 'middle';var space = 0;ctx.save();var subsup=0;\
737
 var m = 0.4*(ctx.measureText(txt).width);\
730
 var m = 0.4*(ctx.measureText(txt).width);\
738
 var h = ctx.measureText('M').width;\
731
 var h = ctx.measureText('M').width;\
739
 switch(use_offset){\
732
 switch(use_offset){\
Line 768... Line 761...
768
 };\
761
 };\
769
 ctx.stroke();\
762
 ctx.stroke();\
770
 ctx.restore();\
763
 ctx.restore();\
771
 return;\
764
 return;\
772
};");
765
};");
773
break;
766
        break;
774
 
-
 
775
case DRAW_TEXTFILL:/* not  used for userdraw */
767
      case DRAW_TEXTFILL:/* not  used for userdraw */
776
fprintf(js_include_file,"\n/* draw textfill */\
768
        fprintf(js_include_file,"\n/* draw textfill */\
777
var text_fill_pattern;\
769
var text_fill_pattern;\
778
function draw_textfill(canvas_type,x0,y0,color,fontfamily,xsize,ysize,txt,use_userdraw){\
770
function draw_textfill(canvas_type,x0,y0,color,fontfamily,xsize,ysize,txt,use_userdraw){\
779
var fc = %d+canvas_type;\
771
var fc = %d+canvas_type;\
780
var obj = create_canvas%d(fc,xsize,ysize);\
772
var obj = create_canvas%d(fc,xsize,ysize);\
781
var ctx = obj.getContext('2d');\
773
var ctx = obj.getContext('2d');\
Line 789... Line 781...
789
ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\
781
ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\
790
for(var x = 0 ; x <= xsize ; x = x + dx ){\
782
for(var x = 0 ; x <= xsize ; x = x + dx ){\
791
 for(var y = 0 ; y <= ysize ; y = y + dy ){\
783
 for(var y = 0 ; y <= ysize ; y = y + dy ){\
792
  ctx.fillText(txt, x, y);\
784
  ctx.fillText(txt, x, y);\
793
 };\
785
 };\
794
};\
786
};\
795
if( use_userdraw ){\
787
if( use_userdraw ){\
796
 text_fill_pattern = ctx;\
788
 text_fill_pattern = ctx;\
797
}\
789
}\
798
else\
790
else\
799
{\
791
{\
800
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
792
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
801
};\
793
};\
802
return;};",canvas_root_id,canvas_root_id);
794
return;};",canvas_root_id,canvas_root_id);
803
break;
795
        break;
804
 
-
 
805
case DRAW_DIAMONDFILL:/* not used for userdraw */
796
      case DRAW_DIAMONDFILL:/* not used for userdraw */
806
fprintf(js_include_file,"\n/* draw hatch fill */\
797
        fprintf(js_include_file,"\n/* draw hatch fill */\
807
var diamond_fill_pattern;\
798
var diamond_fill_pattern;\
808
function draw_diamondfill(canvas_type,x0,y0,dx,dy,linewidth,color,stroke_opacity,xsize,ysize,use_userdraw){\
799
function draw_diamondfill(canvas_type,x0,y0,dx,dy,linewidth,color,stroke_opacity,xsize,ysize,use_userdraw){\
809
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
800
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
810
var fc = %d+canvas_type;\
801
var fc = %d+canvas_type;\
811
var obj = create_canvas%d(fc,xsize,ysize);\
802
var obj = create_canvas%d(fc,xsize,ysize);\
Line 851... Line 842...
851
{\
842
{\
852
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
843
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
853
};\
844
};\
854
return;\
845
return;\
855
}",canvas_root_id,canvas_root_id);
846
}",canvas_root_id,canvas_root_id);
856
break;
847
        break;
857
 
-
 
858
case DRAW_HATCHFILL:/* not used for userdraw */
848
      case DRAW_HATCHFILL:/* not used for userdraw */
859
fprintf(js_include_file,"\n/* draw hatch fill */\
849
        fprintf(js_include_file,"\n/* draw hatch fill */\
860
var hatch_fill_pattern;\
850
var hatch_fill_pattern;\
861
function draw_hatchfill(canvas_type,x0,y0,dx,dy,linewidth,color,stroke_opacity,xsize,ysize,use_userdraw){\
851
function draw_hatchfill(canvas_type,x0,y0,dx,dy,linewidth,color,stroke_opacity,xsize,ysize,use_userdraw){\
862
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
852
if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\
863
var fc = %d+canvas_type;\
853
var fc = %d+canvas_type;\
864
var obj = create_canvas%d(fc,xsize,ysize);\
854
var obj = create_canvas%d(fc,xsize,ysize);\
Line 890... Line 880...
890
else\
880
else\
891
{\
881
{\
892
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
882
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
893
};\
883
};\
894
return;};",canvas_root_id,canvas_root_id);
884
return;};",canvas_root_id,canvas_root_id);
895
break;
885
        break;
896
 
886
 
897
case DRAW_LINES:/*  used for js-tracing */
887
      case DRAW_LINES:/*  used for js-tracing */
898
fprintf(js_include_file,"\n/* draw lines */\
888
        fprintf(js_include_file,"\n/* draw lines */\
899
function calc_line(x1,x2,y1,y2){\
889
function calc_line(x1,x2,y1,y2){\
900
 var marge = 2;\
890
 var marge = 2;\
901
 if(x1 < x2+marge && x1>x2-marge){\
891
 if(x1 < x2+marge && x1>x2-marge){\
902
  return [x1,0,x1,ysize];\
892
  return [x1,0,x1,ysize];\
903
 };\
893
 };\
Line 924... Line 914...
924
  ctx.stroke();\
914
  ctx.stroke();\
925
  }\
915
  }\
926
  ctx.restore();\
916
  ctx.restore();\
927
  return;\
917
  return;\
928
 };");
918
 };");
929
break;
919
        break;
930
 
920
 
931
case DRAW_CROSSHAIRS:/*  used for tracing */
921
      case DRAW_CROSSHAIRS:/*  used for tracing */
932
fprintf(js_include_file,"\n/* draw crosshairs  */\
922
        fprintf(js_include_file,"\n/* draw crosshairs  */\
933
var draw_crosshairs = function(ctx,x_points,y_points,line_width,crosshair_size,stroke_color,stroke_opacity,use_rotate,angle){\
923
var draw_crosshairs = function(ctx,x_points,y_points,line_width,crosshair_size,stroke_color,stroke_opacity,use_rotate,angle){\
934
 ctx.save();\
924
 ctx.save();\
935
 if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\
925
 if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\
936
 ctx.lineWidth = line_width;\
926
 ctx.lineWidth = line_width;\
937
 ctx.strokeStyle=\"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
927
 ctx.strokeStyle=\"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
Line 939... Line 929...
939
 for(var p = 0 ; p < x_points.length ; p++ ){\
929
 for(var p = 0 ; p < x_points.length ; p++ ){\
940
  x1 = x_points[p] - crosshair_size;\
930
  x1 = x_points[p] - crosshair_size;\
941
  x2 = x_points[p] + crosshair_size;\
931
  x2 = x_points[p] + crosshair_size;\
942
  y1 = y_points[p] - crosshair_size;\
932
  y1 = y_points[p] - crosshair_size;\
943
  y2 = y_points[p] + crosshair_size;\
933
  y2 = y_points[p] + crosshair_size;\
944
  ctx.beginPath();\
934
  ctx.beginPath();\
945
  ctx.moveTo(x1,y1);\
935
  ctx.moveTo(x1,y1);\
946
  ctx.lineTo(x2,y2);\
936
  ctx.lineTo(x2,y2);\
947
  ctx.closePath();\
937
  ctx.closePath();\
948
  ctx.stroke();\
938
  ctx.stroke();\
949
  ctx.beginPath();\
939
  ctx.beginPath();\
950
  ctx.moveTo(x2,y1);\
940
  ctx.moveTo(x2,y1);\
951
  ctx.lineTo(x1,y2);\
941
  ctx.lineTo(x1,y2);\
952
  ctx.closePath();\
942
  ctx.closePath();\
953
  ctx.stroke();\
943
  ctx.stroke();\
954
 }\
944
 }\
955
 ctx.restore();\
945
 ctx.restore();\
956
  return;\
946
  return;\
957
};");
947
};");
958
break;
948
        break;
959
 
-
 
960
case DRAW_VIDEO:/* not  used for userdraw */
949
      case DRAW_VIDEO:/* not  used for userdraw */
961
fprintf(js_include_file,"\n/* draw video */\
950
        fprintf(js_include_file,"\n/* draw video */\
962
var draw_video = function(canvas_root_id,x,y,w,h,URL){\
951
var draw_video = function(canvas_root_id,x,y,w,h,URL){\
963
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
952
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
964
 var video_div = document.createElement(\"div\");\
953
 var video_div = document.createElement(\"div\");\
965
 canvas_div.appendChild(video_div);\
954
 canvas_div.appendChild(video_div);\
966
 video_div.style.position = \"absolute\";\
955
 video_div.style.position = \"absolute\";\
Line 979... Line 968...
979
 src.src = URL;\
968
 src.src = URL;\
980
 video.appendChild(src);\
969
 video.appendChild(src);\
981
 video.load();\
970
 video.load();\
982
 return;\
971
 return;\
983
};");
972
};");
984
break;
973
        break;
985
 
-
 
986
case DRAW_AUDIO:/* not used for userdraw */
974
      case DRAW_AUDIO:/* not used for userdraw */
987
fprintf(js_include_file,"\n/* draw audio */\
975
        fprintf(js_include_file,"\n/* draw audio */\
988
var draw_audio = function(canvas_root_id,x,y,w,h,loop,visible,URL1,URL2){\
976
var draw_audio = function(canvas_root_id,x,y,w,h,loop,visible,URL1,URL2){\
989
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
977
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
990
 var audio_div = document.createElement(\"div\");\
978
 var audio_div = document.createElement(\"div\");\
991
 canvas_div.appendChild(audio_div);\
979
 canvas_div.appendChild(audio_div);\
992
 audio_div.style.position = \"absolute\";\
980
 audio_div.style.position = \"absolute\";\
Line 1009... Line 997...
1009
 src2.src = URL2;\
997
 src2.src = URL2;\
1010
 audio.appendChild(src2);\
998
 audio.appendChild(src2);\
1011
 audio.load();\
999
 audio.load();\
1012
 return;\
1000
 return;\
1013
};");
1001
};");
1014
break;
1002
        break;
1015
 
-
 
1016
case DRAW_HTTP:/* not  used for userdraw */
1003
      case DRAW_HTTP:/* not  used for userdraw */
1017
fprintf(js_include_file,"\n/* draw http */\
1004
        fprintf(js_include_file,"\n/* draw http */\
1018
var draw_http = function(canvas_root_id,x,y,w,h,URL){\
1005
var draw_http = function(canvas_root_id,x,y,w,h,URL){\
1019
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
1006
 var canvas_div = document.getElementById(\"canvas_div\"+canvas_root_id);\
1020
 var http_div = document.createElement(\"div\");\
1007
 var http_div = document.createElement(\"div\");\
1021
 var iframe = document.createElement(\"iframe\");\
1008
 var iframe = document.createElement(\"iframe\");\
1022
 canvas_div.appendChild(http_div);\
1009
 canvas_div.appendChild(http_div);\
1023
 http_div.appendChild(iframe);\
1010
 http_div.appendChild(iframe);\
1024
 iframe.src = URL;\
1011
 iframe.src = URL;\
1025
 iframe.setAttribute(\"width\",w);\
1012
 iframe.setAttribute(\"width\",w);\
1026
 iframe.setAttribute(\"height\",h);\
1013
 iframe.setAttribute(\"height\",h);\
1027
 return;\
1014
 return;\
1028
};");
1015
};");
1029
break;
1016
        break;
1030
 
-
 
1031
case DRAW_XML:
1017
      case DRAW_XML:
1032
/*
1018
/*
1033
!! function draw_xml(object)
1019
!! function draw_xml(object)
1034
!! produced by : DRAW_XML
1020
!! produced by : DRAW_XML
1035
!! used by commands: katex,latex,mathml,html,obabel
1021
!! used by commands: katex,latex,mathml,html,obabel
1036
!! uses js-functions: calculate_size(xml_div),rad2deg(rad)
1022
!! uses js-functions: calculate_size(xml_div),rad2deg(rad)
Line 1048... Line 1034...
1048
y:   drag_type = 2;
1034
y:   drag_type = 2;
1049
 
1035
 
1050
obj.type: mathml,katex,html,svg,image(bitmap) (attention: for centering image needs to be measured after loading page !!)
1036
obj.type: mathml,katex,html,svg,image(bitmap) (attention: for centering image needs to be measured after loading page !!)
1051
*/
1037
*/
1052
 
1038
 
1053
fprintf(js_include_file,"\n/* draw xml */\
1039
        fprintf(js_include_file,"\n/* draw xml */\
1054
function centered(xml_div,obj){\
1040
function centered(xml_div,obj){\
1055
 var ww = 0.5*(parseFloat(window.getComputedStyle(xml_div).width));\
1041
 var ww = 0.5*(parseFloat(window.getComputedStyle(xml_div).width));\
1056
 var hh = 0.5*(parseFloat(window.getComputedStyle(xml_div).height));\
1042
 var hh = 0.5*(parseFloat(window.getComputedStyle(xml_div).height));\
1057
 obj.offset = [ ww , hh ];\
1043
 obj.offset = [ ww , hh ];\
1058
 /*xml_div.style.left = obj.x[0] - obj.offset[0] +'px';\
1044
 /*xml_div.style.left = obj.x[0] - obj.offset[0] +'px';\
Line 1132... Line 1118...
1132
};",mathjax);
1118
};",mathjax);
1133
 
1119
 
1134
/*
1120
/*
1135
console.log('angle='+obj.angle+'obj.use_center='+obj.use_center+'id='+obj.id+'xml_div.id = '+xml_div.id+' once ='+obj.once+' offset='+ obj.offset+' div x = '+xml_div.style.left+' div y ='+xml_div.style.top+' obj.x='+px2x(obj.x)+'obj.y='+px2y(obj.y));\
1121
console.log('angle='+obj.angle+'obj.use_center='+obj.use_center+'id='+obj.id+'xml_div.id = '+xml_div.id+' once ='+obj.once+' offset='+ obj.offset+' div x = '+xml_div.style.left+' div y ='+xml_div.style.top+' obj.x='+px2x(obj.x)+'obj.y='+px2y(obj.y));\
1136
*/
1122
*/
1137
break;
1123
        break;
1138
 
-
 
1139
case DRAW_SGRAPH:
1124
      case DRAW_SGRAPH:
1140
/*
1125
/*
1141
 xstart = given
1126
 xstart = given
1142
 ystart = given
1127
 ystart = given
1143
 sgraph(canvas_type,precision,xmajor,ymajor,xminor,yminor,majorcolor,minorcolor,fontfamily)
1128
 sgraph(canvas_type,precision,xmajor,ymajor,xminor,yminor,majorcolor,minorcolor,fontfamily)
1144
*/
1129
*/
1145
fprintf(js_include_file,"\n/* draw sgraph */\
1130
        fprintf(js_include_file,"\n/* draw sgraph */\
1146
var draw_sgraph = function(canvas_type,precision,xmajor,ymajor,xminor,yminor,majorcolor,minorcolor,fontfamily,opacity,font_size){\
1131
var draw_sgraph = function(canvas_type,precision,xmajor,ymajor,xminor,yminor,majorcolor,minorcolor,fontfamily,opacity,font_size){\
1147
 var obj;if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{ obj = create_canvas%d(canvas_type,xsize,ysize);};\
1132
 var obj;if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{ obj = create_canvas%d(canvas_type,xsize,ysize);};\
1148
 var ctx = obj.getContext(\"2d\");\
1133
 var ctx = obj.getContext(\"2d\");\
1149
 ctx.font = fontfamily;\
1134
 ctx.font = fontfamily;\
1150
 var minor_opacity = 0.8*opacity;\
1135
 var minor_opacity = 0.8*opacity;\
Line 1328... Line 1313...
1328
   ctx.rotate(-0.5*Math.PI);\
1313
   ctx.rotate(-0.5*Math.PI);\
1329
   ctx.fillText(yaxislabel,0,0);\
1314
   ctx.fillText(yaxislabel,0,0);\
1330
   ctx.restore();\
1315
   ctx.restore();\
1331
 };\
1316
 };\
1332
};",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);
1317
};",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);
1333
break;
1318
        break;
1334
 
-
 
1335
case DRAW_NUMBERLINE:
1319
      case DRAW_NUMBERLINE:
1336
fprintf(js_include_file,"\n/* draw numberline */\
1320
fprintf(js_include_file,"\n/* draw numberline */\
1337
var draw_numberline = function(canvas_type,use_axis_numbering,x0,x1,xmajor,xminor,y0,y1,linewidth,strokecolor,strokeopacity,fontfamily,fontcolor,precision){\
1321
var draw_numberline = function(canvas_type,use_axis_numbering,x0,x1,xmajor,xminor,y0,y1,linewidth,strokecolor,strokeopacity,fontfamily,fontcolor,precision){\
1338
 var obj = create_canvas%d(canvas_type,xsize,ysize);\
1322
 var obj = create_canvas%d(canvas_type,xsize,ysize);\
1339
 var ctx = obj.getContext(\"2d\");\
1323
 var ctx = obj.getContext(\"2d\");\
1340
 ctx.lineWidth = linewidth || 1;\
1324
 ctx.lineWidth = linewidth || 1;\
Line 1401... Line 1385...
1401
   if( corr > xmajor){ if(flipflop == 0 ){flipflop = 1; off = ybase2;}else{flipflop = 0; off = ybase1;};};\
1385
   if( corr > xmajor){ if(flipflop == 0 ){flipflop = 1; off = ybase2;}else{flipflop = 0; off = ybase1;};};\
1402
   ctx.fillText(num,parseInt(p - 0.5*corr),off);\
1386
   ctx.fillText(num,parseInt(p - 0.5*corr),off);\
1403
  };\
1387
  };\
1404
 };\
1388
 };\
1405
};",canvas_root_id);
1389
};",canvas_root_id);
1406
break;
1390
        break;
1407
 
-
 
1408
case DRAW_GRID:/* not used for userdraw */
1391
      case DRAW_GRID:/* not used for userdraw */
1409
fprintf(js_include_file,"\n/* draw grid */\
1392
        fprintf(js_include_file,"\n/* draw grid */\
1410
var draw_grid%d = function(canvas_type,precision,stroke_opacity,xmajor,ymajor,xminor,yminor,tics_length,line_width,stroke_color,axis_color,font_size,font_family,use_axis,use_axis_numbering,use_dashed,dashtype0,dashtype1,font_color,fill_opacity){\
1393
var draw_grid%d = function(canvas_type,precision,stroke_opacity,xmajor,ymajor,xminor,yminor,tics_length,line_width,stroke_color,axis_color,font_size,font_family,use_axis,use_axis_numbering,use_dashed,dashtype0,dashtype1,font_color,fill_opacity){\
1411
var obj;if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{obj = create_canvas%d(canvas_type,xsize,ysize);};\
1394
var obj;if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{obj = create_canvas%d(canvas_type,xsize,ysize);};\
1412
var ctx = obj.getContext(\"2d\");ctx.clearRect(0,0,xsize,ysize);\
1395
var ctx = obj.getContext(\"2d\");ctx.clearRect(0,0,xsize,ysize);\
1413
if(use_dashed == 1){if(ctx.setLineDash){ctx.setLineDash([dashtype0,dashtype1]);}else{ctx.mozDash = [dashtype0,dashtype1];};};\
1396
if(use_dashed == 1){if(ctx.setLineDash){ctx.setLineDash([dashtype0,dashtype1]);}else{ctx.mozDash = [dashtype0,dashtype1];};};\
1414
ctx.save();\
1397
ctx.save();\
Line 1460... Line 1443...
1460
 ctx.restore();\
1443
 ctx.restore();\
1461
};\
1444
};\
1462
ctx.stroke();\
1445
ctx.stroke();\
1463
ctx.closePath();",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
1446
ctx.closePath();",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
1464
 
1447
 
1465
if( use_axis == 1 ){
1448
        if( use_axis == 1 ){
1466
fprintf(js_include_file,"\
1449
          fprintf(js_include_file,"\
1467
 ctx.save();\
1450
 ctx.save();\
1468
 ctx.beginPath();\
1451
 ctx.beginPath();\
1469
 ctx.strokeStyle = stroke_color;\
1452
 ctx.strokeStyle = stroke_color;\
1470
 ctx.lineWidth = 0.6*line_width;\
1453
 ctx.lineWidth = 0.6*line_width;\
1471
 for(var p = zero_x ; p < xsize; p = p + x2step){\
1454
 for(var p = zero_x ; p < xsize; p = p + x2step){\
Line 1481... Line 1464...
1481
  ctx.lineTo(xsize,p);\
1464
  ctx.lineTo(xsize,p);\
1482
 };\
1465
 };\
1483
 for(var p = zero_y ; p > 0; p = p - y2step){\
1466
 for(var p = zero_y ; p > 0; p = p - y2step){\
1484
  ctx.moveTo(0,p);\
1467
  ctx.moveTo(0,p);\
1485
  ctx.lineTo(xsize,p);\
1468
  ctx.lineTo(xsize,p);\
1486
 };\
1469
 };\
1487
 ctx.stroke();\
1470
 ctx.stroke();\
1488
 ctx.closePath();\
1471
 ctx.closePath();\
1489
 ctx.beginPath();\
1472
 ctx.beginPath();\
1490
 ctx.lineWidth = 2*line_width;\
1473
 ctx.lineWidth = 2*line_width;\
1491
 ctx.strokeStyle = axis_color;\
1474
 ctx.strokeStyle = axis_color;\
1492
 ctx.moveTo(0,zero_y);\
1475
 ctx.moveTo(0,zero_y);\
1493
 ctx.lineTo(xsize,zero_y);\
1476
 ctx.lineTo(xsize,zero_y);\
Line 1496... Line 1479...
1496
 ctx.stroke();\
1479
 ctx.stroke();\
1497
 ctx.closePath();\
1480
 ctx.closePath();\
1498
 ctx.lineWidth = line_width+0.5;\
1481
 ctx.lineWidth = line_width+0.5;\
1499
 ctx.beginPath();\
1482
 ctx.beginPath();\
1500
 for(var p = zero_x ; p < xsize; p = p + xstep){\
1483
 for(var p = zero_x ; p < xsize; p = p + xstep){\
1501
  ctx.moveTo(p,zero_y-tics_length);\
1484
  ctx.moveTo(p,zero_y-tics_length);\
1502
  ctx.lineTo(p,zero_y+tics_length);\
1485
  ctx.lineTo(p,zero_y+tics_length);\
1503
 };\
1486
 };\
1504
 for(var p = zero_x ; p > 0; p = p - xstep){\
1487
 for(var p = zero_x ; p > 0; p = p - xstep){\
1505
  ctx.moveTo(p,zero_y-tics_length);\
1488
  ctx.moveTo(p,zero_y-tics_length);\
1506
  ctx.lineTo(p,zero_y+tics_length);\
1489
  ctx.lineTo(p,zero_y+tics_length);\
1507
 };\
1490
 };\
1508
 for(var p = zero_y ; p < ysize; p = p + ystep){\
1491
 for(var p = zero_y ; p < ysize; p = p + ystep){\
1509
  ctx.moveTo(zero_x-tics_length,p);\
1492
  ctx.moveTo(zero_x-tics_length,p);\
1510
  ctx.lineTo(zero_x+tics_length,p);\
1493
  ctx.lineTo(zero_x+tics_length,p);\
1511
 };\
1494
 };\
1512
 for(var p = zero_y ; p > 0; p = p - ystep){\
1495
 for(var p = zero_y ; p > 0; p = p - ystep){\
1513
  ctx.moveTo(zero_x-tics_length,p);\
1496
  ctx.moveTo(zero_x-tics_length,p);\
1514
  ctx.lineTo(zero_x+tics_length,p);\
1497
  ctx.lineTo(zero_x+tics_length,p);\
1515
 };\
1498
 };\
1516
 for(var p = zero_x ; p < xsize; p = p + x2step){\
1499
 for(var p = zero_x ; p < xsize; p = p + x2step){\
1517
  ctx.moveTo(p,zero_y-0.5*tics_length);\
1500
  ctx.moveTo(p,zero_y-0.5*tics_length);\
1518
  ctx.lineTo(p,zero_y+0.5*tics_length);\
1501
  ctx.lineTo(p,zero_y+0.5*tics_length);\
1519
 };\
1502
 };\
1520
 for(var p = zero_x ; p > 0; p = p - x2step){\
1503
 for(var p = zero_x ; p > 0; p = p - x2step){\
1521
  ctx.moveTo(p,zero_y-0.5*tics_length);\
1504
  ctx.moveTo(p,zero_y-0.5*tics_length);\
1522
  ctx.lineTo(p,zero_y+0.5*tics_length);\
1505
  ctx.lineTo(p,zero_y+0.5*tics_length);\
1523
 };\
1506
 };\
1524
 for(var p = zero_y ; p < ysize; p = p + y2step){\
1507
 for(var p = zero_y ; p < ysize; p = p + y2step){\
1525
  ctx.moveTo(zero_x-0.5*tics_length,p);\
1508
  ctx.moveTo(zero_x-0.5*tics_length,p);\
1526
  ctx.lineTo(zero_x+0.5*tics_length,p);\
1509
  ctx.lineTo(zero_x+0.5*tics_length,p);\
1527
 };\
1510
 };\
1528
 for(var p = zero_y ; p > 0; p = p - y2step){\
1511
 for(var p = zero_y ; p > 0; p = p - y2step){\
1529
  ctx.moveTo(zero_x-0.5*tics_length,p);\
1512
  ctx.moveTo(zero_x-0.5*tics_length,p);\
1530
  ctx.lineTo(zero_x+0.5*tics_length,p);\
1513
  ctx.lineTo(zero_x+0.5*tics_length,p);\
1531
 };\
1514
 };\
1532
 ctx.stroke();\
1515
 ctx.stroke();\
1533
 ctx.closePath();\
1516
 ctx.closePath();\
1534
 ctx.restore();");
1517
 ctx.restore();");
1535
}
1518
        }
1536
 
-
 
1537
if( use_axis_numbering != -1 ){
1519
        if( use_axis_numbering != -1 ){
1538
fprintf(js_include_file,"\
1520
          fprintf(js_include_file,"\
1539
 ctx.save();\
1521
 ctx.save();\
1540
 ctx.fillColor = axis_color;\
1522
 ctx.fillColor = axis_color;\
1541
 ctx.strokeStyle = axis_color;\
1523
 ctx.strokeStyle = axis_color;\
1542
 ctx.lineWidth = 2*line_width;\
1524
 ctx.lineWidth = 2*line_width;\
1543
 ctx.font = font_family;\
1525
 ctx.font = font_family;\
Line 1643... Line 1625...
1643
   cnt = cnt + ymajor;\
1625
   cnt = cnt + ymajor;\
1644
  };\
1626
  };\
1645
 };\
1627
 };\
1646
 ctx.stroke();\
1628
 ctx.stroke();\
1647
 ctx.restore();");
1629
 ctx.restore();");
1648
}
1630
        }
1649
 
-
 
1650
if( legend_cnt != -1 ){
1631
        if( legend_cnt != -1 ){
1651
fprintf(js_include_file,"ctx.save();\
1632
          fprintf(js_include_file,"ctx.save();\
1652
 ctx.globalAlpha = 1.0;\
1633
 ctx.globalAlpha = 1.0;\
1653
 ctx.font = \"bold \"+font_size+\"px Arial\";\
1634
 ctx.font = \"bold \"+font_size+\"px Arial\";\
1654
 var y_offset = 2*font_size;\
1635
 var y_offset = 2*font_size;\
1655
 var txt;var txt_size;\
1636
 var txt;var txt_size;\
1656
 var x_offset = xsize - 2*font_size;\
1637
 var x_offset = xsize - 2*font_size;\
Line 1663... Line 1644...
1663
  if( barcolor.length == 0 ){\
1644
  if( barcolor.length == 0 ){\
1664
   for(var p = 0 ; p < l_length ; p++){\
1645
   for(var p = 0 ; p < l_length ; p++){\
1665
    barcolor[p] = stroke_color;\
1646
    barcolor[p] = stroke_color;\
1666
   };\
1647
   };\
1667
  };\
1648
  };\
1668
 };\
1649
 };\
1669
 for(var p = 0; p < l_length; p++){\
1650
 for(var p = 0; p < l_length; p++){\
1670
  ctx.fillStyle = barcolor[p];\
1651
  ctx.fillStyle = barcolor[p];\
1671
  txt = legend0[p];\
1652
  txt = legend0[p];\
1672
  txt_size = ctx.measureText(txt).width;\
1653
  txt_size = ctx.measureText(txt).width;\
1673
  ctx.fillText(legend0[p],x_offset - txt_size, y_offset);\
1654
  ctx.fillText(legend0[p],x_offset - txt_size, y_offset);\
1674
  y_offset = parseInt(y_offset + 1.5*font_size);\
1655
  y_offset = parseInt(y_offset + 1.5*font_size);\
1675
 };\
1656
 };\
1676
 ctx.restore();");
1657
 ctx.restore();");
1677
}
1658
        }
1678
 
-
 
1679
if( barchart_cnt != 0 ){
1659
        if( barchart_cnt != 0 ){
1680
fprintf(js_include_file,"ctx.save();\
1660
          fprintf(js_include_file,"ctx.save();\
1681
 var num_barcharts = 0;\
1661
 var num_barcharts = 0;\
1682
 var bar_name = eval('barchart_0');\
1662
 var bar_name = eval('barchart_0');\
1683
 while( typeof(bar_name) !== 'undefined' ){\
1663
 while( typeof(bar_name) !== 'undefined' ){\
1684
    try{ bar_name = eval('barchart_'+num_barcharts);num_barcharts++;}catch(e){break;};\
1664
    try{ bar_name = eval('barchart_'+num_barcharts);num_barcharts++;}catch(e){break;};\
1685
 };\
1665
 };\
Line 1707... Line 1687...
1707
   ctx.stroke();\
1687
   ctx.stroke();\
1708
   ctx.closePath();\
1688
   ctx.closePath();\
1709
  };\
1689
  };\
1710
 };\
1690
 };\
1711
 ctx.restore();");
1691
 ctx.restore();");
1712
}
1692
        }
1713
 
-
 
1714
if( linegraph_cnt != 0 ){
1693
        if( linegraph_cnt != 0 ){
1715
fprintf(js_include_file,"ctx.save();\
1694
          fprintf(js_include_file,"ctx.save();\
1716
 ctx.globalAlpha = 1.0;\
1695
 ctx.globalAlpha = 1.0;\
1717
 var i = 0;\
1696
 var i = 0;\
1718
 var line_name = eval('linegraph_'+i);\
1697
 var line_name = eval('linegraph_'+i);\
1719
 while ( typeof(line_name) !== 'undefined' ){\
1698
 while ( typeof(line_name) !== 'undefined' ){\
1720
  ctx.strokeStyle = 'rgba('+line_name[0]+','+stroke_opacity+')';\
1699
  ctx.strokeStyle = 'rgba('+line_name[0]+','+stroke_opacity+')';\
Line 1742... Line 1721...
1742
  };\
1721
  };\
1743
  i++;\
1722
  i++;\
1744
  try{ line_name = eval('linegraph_'+i); }catch(e){ break; }\
1723
  try{ line_name = eval('linegraph_'+i); }catch(e){ break; }\
1745
 };\
1724
 };\
1746
 ctx.restore();return;");
1725
 ctx.restore();return;");
1747
}
1726
        }
1748
fprintf(js_include_file,"};");
1727
        fprintf(js_include_file,"};");
1749
 
-
 
1750
break;
1728
        break;
1751
 
-
 
1752
case DRAW_PIECHART:
1729
      case DRAW_PIECHART:
1753
fprintf(js_include_file,"\n/* draw piecharts */\
1730
        fprintf(js_include_file,"\n/* draw piecharts */\
1754
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1731
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1755
function draw_piechart(canvas_type,x_center,y_center,radius, data_color_list,fill_opacity,legend_cnt,font_family,use_filled,use_offset){\
1732
function draw_piechart(canvas_type,x_center,y_center,radius, data_color_list,fill_opacity,legend_cnt,font_family,use_filled,use_offset){\
1756
 var obj;\
1733
 var obj;\
1757
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1734
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1758
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1735
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
Line 1822... Line 1799...
1822
   };\
1799
   };\
1823
  };\
1800
  };\
1824
 };\
1801
 };\
1825
 ctx.restore();\
1802
 ctx.restore();\
1826
};",canvas_root_id,canvas_root_id,canvas_root_id);
1803
};",canvas_root_id,canvas_root_id,canvas_root_id);
1827
break;
1804
        break;
1828
 
1805
 
1829
case DRAW_JSBOXPLOT:
1806
      case DRAW_JSBOXPLOT:
1830
fprintf(js_include_file,"\n/* draw jsboxplots */\
1807
        fprintf(js_include_file,"\n/* draw jsboxplots */\
1831
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1808
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1832
function statistics(data){\
1809
function statistics(data){\
1833
 var len = data.length;\
1810
 var len = data.length;\
1834
 var min = 10000000;\
1811
 var min = 10000000;\
1835
 var max = -10000000;\
1812
 var max = -10000000;\
Line 1862... Line 1839...
1862
  Q1 = (data[q1 - 1] + data[q1] )/2;\
1839
  Q1 = (data[q1 - 1] + data[q1] )/2;\
1863
  Q3 = (data[q3 - 1] + data[q3] )/2;\
1840
  Q3 = (data[q3 - 1] + data[q3] )/2;\
1864
 };\
1841
 };\
1865
 return [min,Q1,median,Q3,max];\
1842
 return [min,Q1,median,Q3,max];\
1866
};");
1843
};");
1867
break;
1844
        break;
1868
 
-
 
1869
case DRAW_BOXPLOT:
1845
      case DRAW_BOXPLOT:
1870
fprintf(js_include_file,"\n/* draw boxplots */\
1846
        fprintf(js_include_file,"\n/* draw boxplots */\
1871
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1847
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1872
draw_boxplot = function(canvas_type,xy,hw,cxy,data,line_width,stroke_color,stroke_opacity,fill_color,fill_opacity,use_filled,use_dashed,dashtype0,dashtype1){\
1848
draw_boxplot = function(canvas_type,xy,hw,cxy,data,line_width,stroke_color,stroke_opacity,fill_color,fill_opacity,use_filled,use_dashed,dashtype0,dashtype1){\
1873
 var obj;\
1849
 var obj;\
1874
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{obj = create_canvas%d(canvas_type,xsize,ysize);};\
1850
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){obj = document.getElementById(\"wims_canvas%d\"+canvas_type);}else{obj = create_canvas%d(canvas_type,xsize,ysize);};\
1875
 var ctx = obj.getContext(\"2d\");\
1851
 var ctx = obj.getContext(\"2d\");\
Line 1959... Line 1935...
1959
   ctx.fill();\
1935
   ctx.fill();\
1960
  };\
1936
  };\
1961
  ctx.stroke();\
1937
  ctx.stroke();\
1962
 };\
1938
 };\
1963
 ctx.restore();};",canvas_root_id,canvas_root_id,canvas_root_id);
1939
 ctx.restore();};",canvas_root_id,canvas_root_id,canvas_root_id);
1964
break;
1940
        break;
1965
 
-
 
1966
case DRAW_CENTERSTRING:
1941
      case DRAW_CENTERSTRING:
1967
fprintf(js_include_file,"\n/* draw centerstring */\
1942
        fprintf(js_include_file,"\n/* draw centerstring */\
1968
var draw_centerstring = function(canvas_type,y,font_family,stroke_color,stroke_opacity,text){\
1943
var draw_centerstring = function(canvas_type,y,font_family,stroke_color,stroke_opacity,text){\
1969
 var obj;\
1944
 var obj;\
1970
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1945
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1971
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1946
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1972
 } else {\
1947
 } else {\
Line 1981... Line 1956...
1981
 var x = parseInt((xsize - stringwidth)/2);if( x < 0 ){x = 0;};\
1956
 var x = parseInt((xsize - stringwidth)/2);if( x < 0 ){x = 0;};\
1982
 ctx.fillText(text,x,y2px(y));\
1957
 ctx.fillText(text,x,y2px(y));\
1983
 ctx.restore();\
1958
 ctx.restore();\
1984
return;\
1959
return;\
1985
};",canvas_root_id,canvas_root_id,canvas_root_id);
1960
};",canvas_root_id,canvas_root_id,canvas_root_id);
1986
break;
1961
        break;
1987
 
-
 
1988
case DRAW_TEXTS:
1962
      case DRAW_TEXTS:
1989
fprintf(js_include_file,"\n/* draw text */\
1963
        fprintf(js_include_file,"\n/* draw text */\
1990
var draw_text = function(canvas_type,x,y,font_size,font_family,stroke_color,stroke_opacity,angle2,text,use_rotate,angle,use_offset){\
1964
var draw_text = function(canvas_type,x,y,font_size,font_family,stroke_color,stroke_opacity,angle2,text,use_rotate,angle,use_offset){\
1991
 var obj;\
1965
 var obj;\
1992
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1966
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1993
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1967
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1994
 } else {\
1968
 } else {\
Line 2017... Line 1991...
2017
 } else {\
1991
 } else {\
2018
  ctx.fillText(text,x,y);\
1992
  ctx.fillText(text,x,y);\
2019
 };\
1993
 };\
2020
 return;\
1994
 return;\
2021
};",canvas_root_id,canvas_root_id,canvas_root_id);
1995
};",canvas_root_id,canvas_root_id,canvas_root_id);
2022
break;
1996
        break;
2023
 
-
 
2024
case DRAW_INPUTS:
1997
      case DRAW_INPUTS:
2025
/* function center_input may be used for other centering...if not? integrate it in draw_static_inputs...*/
1998
/* function center_input may be used for other centering...if not? integrate it in draw_static_inputs...*/
2026
fprintf(js_include_file,"\n/* draw static input fields */\
1999
        fprintf(js_include_file,"\n/* draw static input fields */\
2027
if(typeof(input_cnt) !== 'undefined' ){var input_cnt = 0;};\
2000
if(typeof(input_cnt) !== 'undefined' ){var input_cnt = 0;};\
2028
var draw_static_inputs = function(root_id,num,x,y,size,readonly,css_class,value,use_offset){\
2001
var draw_static_inputs = function(root_id,num,x,y,size,readonly,css_class,value,use_offset){\
2029
var input = document.createElement(\"input\");\
2002
var input = document.createElement(\"input\");\
2030
input.setAttribute(\"id\",\"canvas_input\"+num);\
2003
input.setAttribute(\"id\",\"canvas_input\"+num);\
2031
input.setAttribute(\"style\",\"text-align:center;position:absolute;left:\"+x+\"px;top:\"+y+\"px;\");\
2004
input.setAttribute(\"style\",\"text-align:center;position:absolute;left:\"+x+\"px;top:\"+y+\"px;\");\
Line 2044... Line 2017...
2044
 var center_x = parseInt(x - 0.5*(pos.width));\
2017
 var center_x = parseInt(x - 0.5*(pos.width));\
2045
 var center_y = parseInt(y - 0.5*(pos.height));\
2018
 var center_y = parseInt(y - 0.5*(pos.height));\
2046
 try{if(css_class != \"none\"){inp.setAttribute(\"class\",css_class);};inp.setAttribute(\"style\",\"text-align:center;position:absolute;left:\"+center_x+\"px;top:\"+center_y+\"px;\");}\
2019
 try{if(css_class != \"none\"){inp.setAttribute(\"class\",css_class);};inp.setAttribute(\"style\",\"text-align:center;position:absolute;left:\"+center_x+\"px;top:\"+center_y+\"px;\");}\
2047
 catch(e){console.log('error :'+e);return;};\
2020
 catch(e){console.log('error :'+e);return;};\
2048
};");
2021
};");
2049
break;
2022
        break;
2050
 
-
 
2051
case DRAW_TEXTAREAS:
2023
      case DRAW_TEXTAREAS:
2052
fprintf(js_include_file,"\n/* draw text area inputfields */\
2024
        fprintf(js_include_file,"\n/* draw text area inputfields */\
2053
var draw_textareas = function(root_id,num,x,y,cols,rows,readonly,style,value){\
2025
var draw_textareas = function(root_id,num,x,y,cols,rows,readonly,style,value){\
2054
var canvas_div = document.getElementById(\"canvas_div\"+root_id);\
2026
var canvas_div = document.getElementById(\"canvas_div\"+root_id);\
2055
var textarea = document.createElement(\"textarea\");\
2027
var textarea = document.createElement(\"textarea\");\
2056
textarea.setAttribute(\"id\",\"canvas_input\"+num);\
2028
textarea.setAttribute(\"id\",\"canvas_input\"+num);\
2057
textarea.setAttribute(\"style\",\"position:absolute;left:\"+x+\"px;top:\"+y+\"px;\"+style);\
2029
textarea.setAttribute(\"style\",\"position:absolute;left:\"+x+\"px;top:\"+y+\"px;\"+style);\
2058
textarea.setAttribute(\"cols\",cols);\
2030
textarea.setAttribute(\"cols\",cols);\
2059
textarea.setAttribute(\"rows\",rows);\
2031
textarea.setAttribute(\"rows\",rows);\
2060
textarea.value = value;\
2032
textarea.value = value;\
2061
if( readonly == 0 || wims_status == \"done\" ){ textarea.setAttribute(\"readonly\",\"readonly\");if( wims_status == \"done\" ){textarea.value=\"\";};};\
2033
if( readonly == 0 || wims_status == \"done\" ){ textarea.setAttribute(\"readonly\",\"readonly\");if( wims_status == \"done\" ){textarea.value=\"\";};};\
2062
canvas_div.appendChild(textarea);};");
2034
canvas_div.appendChild(textarea);};");
2063
break;
2035
        break;
2064
 
-
 
2065
case DRAW_PIXELS:
2036
      case DRAW_PIXELS:
2066
fprintf(js_include_file,"\n/* draw pixel */\
2037
        fprintf(js_include_file,"\n/* draw pixel */\
2067
var draw_setpixel = function(x,y,color,opacity,pixelsize){\
2038
var draw_setpixel = function(x,y,color,opacity,pixelsize){\
2068
 var idx = 2000+Math.ceil(1000*(Math.random()));\
2039
 var idx = 2000+Math.ceil(1000*(Math.random()));\
2069
 var canvas = create_canvas%d(idx,xsize,ysize);\
2040
 var canvas = create_canvas%d(idx,xsize,ysize);\
2070
 var d = 0.5*pixelsize;\
2041
 var d = 0.5*pixelsize;\
2071
 var ctx = canvas.getContext(\"2d\");\
2042
 var ctx = canvas.getContext(\"2d\");\
Line 2075... Line 2046...
2075
 for(var p=0; p<x.length;p++){\
2046
 for(var p=0; p<x.length;p++){\
2076
  ctx.fillRect( x2px(x[p]) - d, y2px(y[p]) - d , pixelsize, pixelsize );\
2047
  ctx.fillRect( x2px(x[p]) - d, y2px(y[p]) - d , pixelsize, pixelsize );\
2077
 };\
2048
 };\
2078
 ctx.fill();ctx.stroke();\
2049
 ctx.fill();ctx.stroke();\
2079
};",canvas_root_id);
2050
};",canvas_root_id);
2080
break;
2051
        break;
2081
 
-
 
2082
case DRAW_CLOCK:
2052
      case DRAW_CLOCK:
2083
fprintf(js_include_file,"\n/* command clock */\
2053
        fprintf(js_include_file,"\n/* command clock */\
2084
var clock_canvas = create_canvas%d(%d,xsize,ysize);\
2054
var clock_canvas = create_canvas%d(%d,xsize,ysize);\
2085
var clock_ctx = clock_canvas.getContext(\"2d\");\
2055
var clock_ctx = clock_canvas.getContext(\"2d\");\
2086
var clock = function(xc,yc,radius,H,M,S,type,interaction,h_color,m_color,s_color,bg_color,fg_color){\
2056
var clock = function(xc,yc,radius,H,M,S,type,interaction,h_color,m_color,s_color,bg_color,fg_color){\
2087
 clock_ctx.clearRect(xc - radius,yc - radius,2*radius,2*radius);\
2057
 clock_ctx.clearRect(xc - radius,yc - radius,2*radius,2*radius);\
2088
 clock_ctx.save();\
2058
 clock_ctx.save();\
Line 2185... Line 2155...
2185
 clock_ctx.lineTo(this.radius  * 0.9, -1);\
2155
 clock_ctx.lineTo(this.radius  * 0.9, -1);\
2186
 clock_ctx.strokeStyle = this.S_color;\
2156
 clock_ctx.strokeStyle = this.S_color;\
2187
 clock_ctx.stroke();\
2157
 clock_ctx.stroke();\
2188
 clock_ctx.restore();\
2158
 clock_ctx.restore();\
2189
};",canvas_root_id,CLOCK_CANVAS);
2159
};",canvas_root_id,CLOCK_CANVAS);
2190
break;
2160
        break;
2191
 
-
 
2192
case DRAW_LATTICE:
2161
      case DRAW_LATTICE:
2193
fprintf(js_include_file,"\n/* draw lattice */\
2162
        fprintf(js_include_file,"\n/* draw lattice */\
2194
var draw_lattice = function(canvas_type,line_width,x0,y0,dx1,dy1,dx2,dy2,n1,n2,fill_color,fill_opacity,stroke_color,stroke_opacity,use_rotate,angle,use_filled){\
2163
var draw_lattice = function(canvas_type,line_width,x0,y0,dx1,dy1,dx2,dy2,n1,n2,fill_color,fill_opacity,stroke_color,stroke_opacity,use_rotate,angle,use_filled){\
2195
 var obj;\
2164
 var obj;\
2196
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2165
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2197
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2166
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2198
 } else {\
2167
 } else {\
Line 2225... Line 2194...
2225
  };\
2194
  };\
2226
 };\
2195
 };\
2227
 ctx.restore();\
2196
 ctx.restore();\
2228
 return;\
2197
 return;\
2229
};",canvas_root_id,canvas_root_id,canvas_root_id);
2198
};",canvas_root_id,canvas_root_id,canvas_root_id);
2230
break;
2199
        break;
2231
 
-
 
2232
case DRAW_XYLOGSCALE:
2200
      case DRAW_XYLOGSCALE:
2233
fprintf(js_include_file,"\n/* draw xylogscale */\
2201
        fprintf(js_include_file,"\n/* draw xylogscale */\
2234
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,precision){\
2202
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,precision){\
2235
 var obj;\
2203
 var obj;\
2236
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2204
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2237
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2205
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2238
 } else {\
2206
 } else {\
Line 2247... Line 2215...
2247
 var y_min = Math.log(ymin)/Math.log(ylogbase);\
2215
 var y_min = Math.log(ymin)/Math.log(ylogbase);\
2248
 var y_max = Math.log(ymax)/Math.log(ylogbase);\
2216
 var y_max = Math.log(ymax)/Math.log(ylogbase);\
2249
 if(use_axis_numbering != -1){\
2217
 if(use_axis_numbering != -1){\
2250
  ctx.font = font_family;\
2218
  ctx.font = font_family;\
2251
  xmarge = ctx.measureText(ylogbase+'^'+y_max.toFixed(0)+' ').width;\
2219
  xmarge = ctx.measureText(ylogbase+'^'+y_max.toFixed(0)+' ').width;\
2252
  ymarge = parseInt(1.5*font_size);\
2220
  ymarge = parseInt(1.5*font_size);\
2253
  ctx.save();\
2221
  ctx.save();\
2254
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2222
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2255
  ctx.rect(0,0,xmarge,ysize);\
2223
  ctx.rect(0,0,xmarge,ysize);\
2256
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2224
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2257
  ctx.fill();\
2225
  ctx.fill();\
2258
  ctx.restore();\
2226
  ctx.restore();\
2259
 }else{xmarge = 0;ymarge = 0;};\
2227
 }else{xmarge = 0;ymarge = 0;};\
2260
 if( typeof(xaxislabel) !== 'undefined' ){\
2228
 if( typeof(xaxislabel) !== 'undefined' ){\
2261
  ctx.save();\
2229
  ctx.save();\
2262
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2230
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2263
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2231
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2264
  corr =  ctx.measureText(xaxislabel).width;\
2232
  corr =  ctx.measureText(xaxislabel).width;\
2265
  ctx.fillText(xaxislabel,xsize - 1.5*corr,ysize - 2*font_size);\
2233
  ctx.fillText(xaxislabel,xsize - 1.5*corr,ysize - 2*font_size);\
2266
  ctx.restore();\
2234
  ctx.restore();\
2267
 };\
2235
 };\
2268
 if( typeof(yaxislabel) !== 'undefined' ){\
2236
 if( typeof(yaxislabel) !== 'undefined' ){\
2269
  ctx.save();\
2237
  ctx.save();\
2270
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2238
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2271
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2239
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2272
  corr = ctx.measureText(yaxislabel).width;\
2240
  corr = ctx.measureText(yaxislabel).width;\
2273
  ctx.translate(xmarge+font_size,corr+font_size);\
2241
  ctx.translate(xmarge+font_size,corr+font_size);\
2274
  ctx.rotate(-0.5*Math.PI);\
2242
  ctx.rotate(-0.5*Math.PI);\
2275
  ctx.fillText(yaxislabel,0,0);\
2243
  ctx.fillText(yaxislabel,0,0);\
2276
  ctx.restore();\
2244
  ctx.restore();\
2277
 };\
2245
 };\
2278
 ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2246
 ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
Line 2283... Line 2251...
2283
   x_e = x2px(i*num);\
2251
   x_e = x2px(i*num);\
2284
   if( i == 1 ){\
2252
   if( i == 1 ){\
2285
    ctx.lineWidth = line_width;\
2253
    ctx.lineWidth = line_width;\
2286
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2254
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2287
    if( use_axis_numbering != -1 && p > x_min){\
2255
    if( use_axis_numbering != -1 && p > x_min){\
2288
      xtxt = xlogbase+'^'+p.toFixed(0);\
2256
      xtxt = xlogbase+'^'+p.toFixed(0);\
2289
      corr = 0.5*(ctx.measureText(xtxt).width);\
2257
      corr = 0.5*(ctx.measureText(xtxt).width);\
2290
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2258
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2291
    };\
2259
    };\
2292
   }else{\
2260
   }else{\
2293
    ctx.lineWidth = 0.2*line_width;\
2261
    ctx.lineWidth = 0.2*line_width;\
2294
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2262
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2295
   };\
2263
   };\
2296
   if( x_e >= xmarge ){\
2264
   if( x_e >= xmarge ){\
2297
    ctx.beginPath();\
2265
    ctx.beginPath();\
2298
    ctx.moveTo(x_e,0);\
2266
    ctx.moveTo(x_e,0);\
2299
    ctx.lineTo(x_e,ysize - ymarge);\
2267
    ctx.lineTo(x_e,ysize - ymarge);\
2300
    ctx.stroke();\
2268
    ctx.stroke();\
2301
    ctx.closePath();\
2269
    ctx.closePath();\
2302
   };\
2270
   };\
2303
  };\
2271
  };\
2304
 };\
2272
 };\
2305
 for(var p = y_min; p <= y_max ; p++){\
2273
 for(var p = y_min; p <= y_max ; p++){\
2306
  num = Math.pow(ylogbase,p);\
2274
  num = Math.pow(ylogbase,p);\
2307
  for(var i = 1 ; i < ylogbase ; i++){\
2275
  for(var i = 1 ; i < ylogbase ; i++){\
2308
   y_e = y2px(i*num);\
2276
   y_e = y2px(i*num);\
2309
   if( i == 1 ){\
2277
   if( i == 1 ){\
2310
    ctx.lineWidth = line_width;\
2278
    ctx.lineWidth = line_width;\
2311
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2279
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2312
    if( use_axis_numbering != -1 && p > y_min){\
2280
    if( use_axis_numbering != -1 && p > y_min){\
2313
     ctx.fillText(ylogbase+'^'+p.toFixed(0),0,y_e);\
2281
     ctx.fillText(ylogbase+'^'+p.toFixed(0),0,y_e);\
2314
    };\
2282
    };\
2315
   }else{\
2283
   }else{\
2316
    ctx.lineWidth = 0.2*line_width;\
2284
    ctx.lineWidth = 0.2*line_width;\
Line 2323... Line 2291...
2323
   ctx.closePath();\
2291
   ctx.closePath();\
2324
  };\
2292
  };\
2325
 };\
2293
 };\
2326
 ctx.restore();\
2294
 ctx.restore();\
2327
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2295
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2328
break;
2296
        break;
2329
 
-
 
2330
case DRAW_XLOGSCALE:
2297
      case DRAW_XLOGSCALE:
2331
fprintf(js_include_file,"\n/* draw xlogscale */\
2298
        fprintf(js_include_file,"\n/* draw xlogscale */\
2332
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,ymajor,yminor,precision){\
2299
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,ymajor,yminor,precision){\
2333
 var obj;\
2300
 var obj;\
2334
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2301
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2335
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2302
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2336
 } else {\
2303
 } else {\
Line 2347... Line 2314...
2347
 var xtxt;var ytxt;var num;var xmarge;var ymarge;\
2314
 var xtxt;var ytxt;var num;var xmarge;var ymarge;\
2348
 if(use_axis_numbering != -1){\
2315
 if(use_axis_numbering != -1){\
2349
  ctx.font = font_family;\
2316
  ctx.font = font_family;\
2350
  xmarge = ctx.measureText(ymax.toFixed(prec)+' ').width;\
2317
  xmarge = ctx.measureText(ymax.toFixed(prec)+' ').width;\
2351
  ymarge = parseInt(1.5*font_size);\
2318
  ymarge = parseInt(1.5*font_size);\
2352
  ctx.save();\
2319
  ctx.save();\
2353
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2320
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2354
  ctx.rect(0,0,xmarge,ysize);\
2321
  ctx.rect(0,0,xmarge,ysize);\
2355
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2322
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2356
  ctx.fill();\
2323
  ctx.fill();\
2357
  ctx.restore();\
2324
  ctx.restore();\
2358
 }else{xmarge = 0;ymarge = 0;};\
2325
 }else{xmarge = 0;ymarge = 0;};\
Line 2385... Line 2352...
2385
     ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2352
     ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2386
    if( use_axis_numbering != -1 && p > x_min ){\
2353
    if( use_axis_numbering != -1 && p > x_min ){\
2387
      xtxt = xlogbase+'^'+p.toFixed(0);\
2354
      xtxt = xlogbase+'^'+p.toFixed(0);\
2388
      corr = 0.5*(ctx.measureText(xtxt).width);\
2355
      corr = 0.5*(ctx.measureText(xtxt).width);\
2389
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2356
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2390
    };\
2357
    };\
2391
   }else{\
2358
   }else{\
2392
    ctx.lineWidth = 0.2*line_width;\
2359
    ctx.lineWidth = 0.2*line_width;\
2393
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2360
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2394
   };\
2361
   };\
2395
   if( x_e >= xmarge ){\
2362
   if( x_e >= xmarge ){\
2396
    ctx.beginPath();\
2363
    ctx.beginPath();\
2397
    ctx.moveTo(x_e,0);\
2364
    ctx.moveTo(x_e,0);\
2398
    ctx.lineTo(x_e,ysize - ymarge);\
2365
    ctx.lineTo(x_e,ysize - ymarge);\
2399
    ctx.stroke();\
2366
    ctx.stroke();\
2400
    ctx.closePath();\
2367
    ctx.closePath();\
2401
   };\
2368
   };\
2402
  };\
2369
  };\
2403
 };\
2370
 };\
2404
 var stepy = Math.abs(y2px(ymajor) - y2px(0));\
2371
 var stepy = Math.abs(y2px(ymajor) - y2px(0));\
2405
 var minor_step = stepy / yminor;\
2372
 var minor_step = stepy / yminor;\
2406
 for(var y = 0 ; y < ysize - stepy ; y = y + stepy){\
2373
 for(var y = 0 ; y < ysize - stepy ; y = y + stepy){\
2407
  ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2374
  ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
Line 2419... Line 2386...
2419
   ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2386
   ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2420
   ctx.lineWidth = 0.2*line_width;\
2387
   ctx.lineWidth = 0.2*line_width;\
2421
   ctx.beginPath();\
2388
   ctx.beginPath();\
2422
   ctx.moveTo(xmarge,y+dy*minor_step);\
2389
   ctx.moveTo(xmarge,y+dy*minor_step);\
2423
   ctx.lineTo(xsize,y+dy*minor_step);\
2390
   ctx.lineTo(xsize,y+dy*minor_step);\
2424
   ctx.stroke();\
2391
   ctx.stroke();\
2425
   ctx.closePath();\
2392
   ctx.closePath();\
2426
  };\
2393
  };\
2427
 };\
2394
 };\
2428
 ctx.restore();\
2395
 ctx.restore();\
2429
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2396
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2430
break;
2397
        break;
2431
 
-
 
2432
case DRAW_YLOGSCALE:
2398
      case DRAW_YLOGSCALE:
2433
fprintf(js_include_file,"\n/* draw ylogscale */\
2399
        fprintf(js_include_file,"\n/* draw ylogscale */\
2434
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,xmajor,xminor,precision){\
2400
var draw_grid%d = function(canvas_type,line_width,major_color,minor_color,major_opacity,minor_opacity,font_size,font_family,font_color,use_axis_numbering,xmajor,xminor,precision){\
2435
 var obj;\
2401
 var obj;\
2436
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2402
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2437
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2403
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2438
 } else {\
2404
 } else {\
Line 2525... Line 2491...
2525
   ctx.closePath();\
2491
   ctx.closePath();\
2526
  };\
2492
  };\
2527
 };\
2493
 };\
2528
 ctx.restore();\
2494
 ctx.restore();\
2529
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2495
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2530
break;
2496
        break;
2531
 
-
 
2532
case ADD_USER_INPUTS:
2497
      case ADD_USER_INPUTS:
2533
fprintf(js_include_file,"\n/* add_input_xy */\
2498
        fprintf(js_include_file,"\n/* add_input_xy */\
2534
function add_input_xy(){\
2499
function add_input_xy(){\
2535
if( wims_status == \"done\" ){return;};\
2500
if( wims_status == \"done\" ){return;};\
2536
var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\
2501
var tooltip_div = document.getElementById(\"tooltip_placeholder_div%d\");\
2537
var input_xy_div = document.createElement('div');\
2502
var input_xy_div = document.createElement('div');\
2538
input_xy_div.id = \"input_xy_div\";\
2503
input_xy_div.id = \"input_xy_div\";\
2539
tooltip_div.appendChild(input_xy_div);",canvas_root_id);
2504
tooltip_div.appendChild(input_xy_div);",canvas_root_id);
2540
 
2505
 
2541
if(strstr(draw_type,"polyline") != NULL || strstr(draw_type,"point") != NULL || strstr(draw_type,"cross") != NULL ){ /* ( input_x : input_y )*/
2506
      if(strstr(draw_type,"polyline") != NULL || strstr(draw_type,"point") != NULL || strstr(draw_type,"cross") != NULL ){ /* ( input_x : input_y )*/
2542
type=1;
2507
        type=1;
2543
fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x'/> : <input type='text' size='2' value='' id='userinput_y'/>)<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2508
        fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x'/> : <input type='text' size='2' value='' id='userinput_y'/>)<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2544
}else{
2509
      }else{
2545
if(strstr(draw_type,"circle") != NULL ){/* M: (input_x :input_y) R:input_r*/
2510
        if(strstr(draw_type,"circle") != NULL ){/* M: (input_x :input_y) R:input_r*/
2546
type=2;
2511
          type=2;
2547
fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>M:&nbsp;(<input type='text' size='2' value='' id='userinput_x'/> : <input type='text' size='2' value='' id='userinput_y'/>) &nbsp;&nbsp;R:&nbsp;<input type='text' size='2' value='' id='userinput_r'/><input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2512
          fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>M:&nbsp;(<input type='text' size='2' value='' id='userinput_x'/> : <input type='text' size='2' value='' id='userinput_y'/>) &nbsp;&nbsp;R:&nbsp;<input type='text' size='2' value='' id='userinput_r'/><input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2548
}else{
2513
        }else{
2549
type=3;
2514
            type=3;
2550
if(strstr(draw_type,"segment") != NULL  ||  strstr(draw_type,"line") != NULL  ||  strstr(draw_type,"arrow") != NULL  ){  /* ( input_x1 : input_y1) --- ( input_x2 : input_y2) */
2515
            if(strstr(draw_type,"segment") != NULL  ||  strstr(draw_type,"line") != NULL  ||  strstr(draw_type,"arrow") != NULL  ){  /* ( input_x1 : input_y1) --- ( input_x2 : input_y2) */
2551
fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x1'/> : <input type='text' size='2' value='' id='userinput_y1'/>) &minus;&minus;&minus; (<input type='text' size='2' value='' id='userinput_x2'/> : <input type='text' size='2' value='' id='userinput_y2'/>)<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2516
              fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x1'/> : <input type='text' size='2' value='' id='userinput_y1'/>) &minus;&minus;&minus; (<input type='text' size='2' value='' id='userinput_x2'/> : <input type='text' size='2' value='' id='userinput_y2'/>)<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2552
}else{
2517
            }else{
2553
type=4;
2518
              type=4;
2554
if(strstr(draw_type,"triang") != NULL ){ /* ( input_x1 : input_y1) --- ( input_x2 : input_y2) --- ( input_x3 : input_y3) */
2519
              if(strstr(draw_type,"triang") != NULL ){ /* ( input_x1 : input_y1) --- ( input_x2 : input_y2) --- ( input_x3 : input_y3) */
2555
fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>&#8420;&nbsp;&nbsp;<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/><br/>(<input type='text' size='2' value='' id='userinput_x1'/> : <input type='text' size='2' value='' id='userinput_y1'/>)<br/>(<input type='text' size='2' value='' id='userinput_x2'/> : <input type='text' size='2' value='' id='userinput_y2'/>)<br/>(<input type='text' size='2' value='' id='userinput_x3'/> : <input type='text' size='2' value='' id='userinput_y3'/>)</span> \";",css_class);
2520
                fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>&#8420;&nbsp;&nbsp;<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/><br/>(<input type='text' size='2' value='' id='userinput_x1'/> : <input type='text' size='2' value='' id='userinput_y1'/>)<br/>(<input type='text' size='2' value='' id='userinput_x2'/> : <input type='text' size='2' value='' id='userinput_y2'/>)<br/>(<input type='text' size='2' value='' id='userinput_x3'/> : <input type='text' size='2' value='' id='userinput_y3'/>)</span> \";",css_class);
2556
}else{
2521
              }else{
2557
type=5;
2522
                type=5;
2558
if(strstr(draw_type,"text") != NULL ){ /*Text: input_r ( input_x1 : input_y1)  */
2523
                if(strstr(draw_type,"text") != NULL ){ /*Text: input_r ( input_x1 : input_y1)  */
2559
fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x'/>:<input type='text' size='2' value='' id='userinput_y'/>)&nbsp;<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2524
                  fprintf(js_include_file,"input_xy_div.innerHTML=\"<br><span class='%s'>(<input type='text' size='2' value='' id='userinput_x'/>:<input type='text' size='2' value='' id='userinput_y'/>)&nbsp;<input id='update_button' type='button' value='OK' onclick='' style='color:red;background-color:lightblue;'/><input id='delete_button' type='button' value='NOK' onclick='' style='color:blue;background-color:red;'/></span> \";",css_class);
2560
}else{canvas_error("command 'userinput' or 'userinput_xy' is not supported for your 'userdraw' type...");
2525
                }else{canvas_error("command 'userinput' or 'userinput_xy' is not supported for your 'userdraw' type...");
-
 
2526
              }
-
 
2527
            }
-
 
2528
          }
2561
}}}}}
2529
        }
2562
 
2530
      }
2563
fprintf(js_include_file,"\
2531
      fprintf(js_include_file,"\
2564
var update_button = document.getElementById(\"update_button\");\
2532
var update_button = document.getElementById(\"update_button\");\
2565
var delete_button = document.getElementById(\"delete_button\");\
2533
var delete_button = document.getElementById(\"delete_button\");\
2566
update_button.addEventListener(\"mousedown\",function(e){update_me();redraw_userdraw();return;},false);\
2534
update_button.addEventListener(\"mousedown\",function(e){update_me();redraw_userdraw();return;},false);\
2567
delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\
2535
delete_button.addEventListener(\"mousedown\",function(e){remove_last();return;},false);\
2568
};add_input_xy();");
2536
};add_input_xy();");
2569
 
2537
 
2570
switch(type){
2538
      switch(type){
2571
 case 1:
2539
        case 1:
2572
fprintf(js_include_file,"\n/* add_input_xy */\
2540
          fprintf(js_include_file,"\n/* add_input_xy */\
2573
function update_me(){\
2541
function update_me(){\
2574
 var x = safe_eval(document.getElementById('userinput_x').value);\
2542
 var x = safe_eval(document.getElementById('userinput_x').value);\
2575
 var y = safe_eval(document.getElementById('userinput_y').value);\
2543
 var y = safe_eval(document.getElementById('userinput_y').value);\
2576
 userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2544
 userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2577
 return;\
2545
 return;\
2578
};");break;
2546
};");break;
2579
 case 2:
2547
        case 2:
2580
fprintf(js_include_file,"\n/* add_input_xy */\
2548
          fprintf(js_include_file,"\n/* add_input_xy */\
2581
function update_me(){\
2549
function update_me(){\
2582
 var x = safe_eval(document.getElementById('userinput_x').value);\
2550
 var x = safe_eval(document.getElementById('userinput_x').value);\
2583
 var y = safe_eval(document.getElementById('userinput_y').value);\
2551
 var y = safe_eval(document.getElementById('userinput_y').value);\
2584
 var r = safe_eval(document.getElementById('userinput_r').value);\
2552
 var r = safe_eval(document.getElementById('userinput_r').value);\
2585
 r = scale_x_radius(r);\
2553
 r = scale_x_radius(r);\
2586
 userdraw_radius.push(r);userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2554
 userdraw_radius.push(r);userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2587
 return;\
2555
 return;\
2588
};");break;
2556
};");break;
2589
 case 3:
2557
        case 3:
2590
fprintf(js_include_file,"\n/* add_input_xy */\
2558
          fprintf(js_include_file,"\n/* add_input_xy */\
2591
function update_me(){\
2559
function update_me(){\
2592
 var x,y;\
2560
 var x,y;\
2593
 for(var p=1; p<3;p++){\
2561
 for(var p=1; p<3;p++){\
2594
  x = safe_eval(document.getElementById('userinput_x'+p).value);\
2562
  x = safe_eval(document.getElementById('userinput_x'+p).value);\
2595
  y = safe_eval(document.getElementById('userinput_y'+p).value);\
2563
  y = safe_eval(document.getElementById('userinput_y'+p).value);\
2596
  userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2564
  userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2597
 };\
2565
 };\
2598
 return;\
2566
 return;\
2599
};");
2567
};");
2600
 break;
2568
          break;
2601
 case 4:
2569
        case 4:
2602
fprintf(js_include_file,"\n/* add_input_xy */\
2570
          fprintf(js_include_file,"\n/* add_input_xy */\
2603
function update_me(){\
2571
function update_me(){\
2604
 var x,y;\
2572
 var x,y;\
2605
 for(var p=1; p<4;p++){\
2573
 for(var p=1; p<4;p++){\
2606
  x = safe_eval(document.getElementById('userinput_x'+p).value);\
2574
  x = safe_eval(document.getElementById('userinput_x'+p).value);\
2607
  y = safe_eval(document.getElementById('userinput_y'+p).value);\
2575
  y = safe_eval(document.getElementById('userinput_y'+p).value);\
2608
  userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2576
  userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));\
2609
 };\
2577
 };\
2610
 return;\
2578
 return;\
2611
};");
2579
};");
2612
 break;
2580
          break;
2613
 case 5:
2581
        case 5:
2614
 /* a inputfield with 'id=userdraw_text_abc' is provided by command 'userdraw text,color'*/
2582
 /* a inputfield with 'id=userdraw_text_abc' is provided by command 'userdraw text,color'*/
2615
fprintf(js_include_file,"\n/* add_input_xy */\
2583
          fprintf(js_include_file,"\n/* add_input_xy */\
2616
function update_me(){\
2584
function update_me(){\
2617
 var x = safe_eval(document.getElementById('userinput_x').value);\
2585
 var x = safe_eval(document.getElementById('userinput_x').value);\
2618
 var y = safe_eval(document.getElementById('userinput_y').value);\
2586
 var y = safe_eval(document.getElementById('userinput_y').value);\
2619
 var txt = conv_to_unicode(document.getElementById('userdraw_text_abc').value);\
2587
 var txt = conv_to_unicode(document.getElementById('userdraw_text_abc').value);\
2620
 userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));userdraw_text.push(txt.replace(/\\\\/g,' '));\
2588
 userdraw_x.push(x2px(x));userdraw_y.push(y2px(y));userdraw_text.push(txt.replace(/\\\\/g,' '));\
2621
 return;\
2589
 return;\
2622
};");
2590
};");
2623
 break;
2591
          break;
2624
 default: canvas_error("hmmm, I've no idea...");break;
2592
        default: canvas_error("hmmm, I've no idea...");break;
2625
}
2593
      }
2626
 
-
 
2627
break;
2594
      break;
2628
 
-
 
2629
default:break;
2595
      default:break;
-
 
2596
      }
2630
   }
2597
    }
2631
  }
2598
  }
2632
 }
-
 
2633
  return;
2599
  return;
2634
}
2600
}