Subversion Repositories wimsdev

Rev

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

Rev 16834 Rev 16844
Line 70... Line 70...
70
 var reg = /(?:[a-z$_][a-z0-9$_]*)|(?:[;={}\\[\\]\"'!&<>^\\\\?:])/ig;\
70
 var reg = /(?:[a-z$_][a-z0-9$_]*)|(?:[;={}\\[\\]\"'!&<>^\\\\?:])/ig;\
71
 var valid = true;\
71
 var valid = true;\
72
 exp = exp.replace(reg,function($0){\
72
 exp = exp.replace(reg,function($0){\
73
  if(Math.hasOwnProperty($0)){\
73
  if(Math.hasOwnProperty($0)){\
74
   return \"Math.\"+$0;\
74
   return \"Math.\"+$0;\
75
  }\
-
 
76
  else\
75
  } else {\
77
  {\
-
 
78
   valid = false;\
76
   valid = false;\
79
  }\
77
  }\
80
 }\
78
 }\
81
 );\
79
 );\
82
 if( !valid ){\
80
 if( !valid ){\
83
  alert(\"hmmm \"+exp+\" ?\"); exp = null;\
81
  alert(\"hmmm \"+exp+\" ?\"); exp = null;\
84
 }\
-
 
85
 else\
82
 } else {\
86
 {\
-
 
87
  try{ exp = eval(exp); } catch(e){alert(\"Invalid arithmetic expression\"); exp = null;};\
83
  try{ exp = eval(exp); } catch(e){alert(\"Invalid arithmetic expression\"); exp = null;};\
88
 };\
84
 };\
89
 return exp;\
85
 return exp;\
90
};");
86
};");
91
break;
87
break;
Line 229... Line 225...
229
    tab.push(math_fun);w_cnt = 0;math_fun = small_trick + (tab.length - 1);\
225
    tab.push(math_fun);w_cnt = 0;math_fun = small_trick + (tab.length - 1);\
230
    while (math_fun.indexOf(small_trick) != -1){\
226
    while (math_fun.indexOf(small_trick) != -1){\
231
     math_fun = math_fun.replace(new RegExp(small_trick + \"(\\\\d+)\", \"g\"), function(m, d){return tab[d].replace(/(\\w*)\\^(\\w*)/g, out_fun+\"($1,$2)\");});\
227
     math_fun = math_fun.replace(new RegExp(small_trick + \"(\\\\d+)\", \"g\"), function(m, d){return tab[d].replace(/(\\w*)\\^(\\w*)/g, out_fun+\"($1,$2)\");});\
232
     w_cnt++;if(w_cnt>1000){alert(\"hmmm \"+math_fun+\" ?\\nUse command plot for more complex math functions...\");return null;};\
228
     w_cnt++;if(w_cnt>1000){alert(\"hmmm \"+math_fun+\" ?\\nUse command plot for more complex math functions...\");return null;};\
233
    };\
229
    };\
234
   }\
-
 
235
   else\
230
   } else {\
236
   {\
-
 
237
    while( math_fun.indexOf(in_fun) != -1 ){\
231
    while( math_fun.indexOf(in_fun) != -1 ){\
238
     math_fun = math_fun.replace(in_fun,out_fun);\
232
     math_fun = math_fun.replace(in_fun,out_fun);\
239
     math_fun = math_fun.replace(in_fun,In_Fun);\
233
     math_fun = math_fun.replace(in_fun,In_Fun);\
240
     w_cnt++;if(w_cnt>1000){alert(\"hmmm \"+math_fun+\" ?\\nUse command plot for more complex math functions...\");return null;};\
234
     w_cnt++;if(w_cnt>1000){alert(\"hmmm \"+math_fun+\" ?\\nUse command plot for more complex math functions...\");return null;};\
241
    };\
235
    };\
Line 543... Line 537...
543
      };\
537
      };\
544
     };\
538
     };\
545
    };\
539
    };\
546
   };\
540
   };\
547
  };\
541
  };\
548
 }\
-
 
549
 else\
542
 } else {\
550
 {\
-
 
551
  selected_image = null;\
543
  selected_image = null;\
552
 };\
544
 };\
553
};");
545
};");
554
break;
546
break;
555
 
547
 
Line 594... Line 586...
594
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
586
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
595
function draw_bezier(canvas_type,linewidth,xy_points,fill_color,fill_opacity,stroke_color,stroke_opacity,use_filled,use_dashed,dashtype0,dashtype1,use_rotate,angle){\
587
function draw_bezier(canvas_type,linewidth,xy_points,fill_color,fill_opacity,stroke_color,stroke_opacity,use_filled,use_dashed,dashtype0,dashtype1,use_rotate,angle){\
596
 var obj;\
588
 var obj;\
597
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
589
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
598
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
590
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
599
 }\
-
 
600
 else\
591
 } else {\
601
 {\
-
 
602
  obj = create_canvas%d(canvas_type,xsize,ysize);\
592
  obj = create_canvas%d(canvas_type,xsize,ysize);\
603
 };\
593
 };\
604
 var ctx = obj.getContext(\"2d\");\
594
 var ctx = obj.getContext(\"2d\");\
605
 ctx.save();\
595
 ctx.save();\
606
 ctx.strokeStyle=\"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
596
 ctx.strokeStyle=\"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
Line 645... Line 635...
645
  ctx.closePath();\
635
  ctx.closePath();\
646
  ctx.stroke();\
636
  ctx.stroke();\
647
 };\
637
 };\
648
 if( use_userdraw ){\
638
 if( use_userdraw ){\
649
  grid_fill_pattern = ctx;\
639
  grid_fill_pattern = ctx;\
650
 }\
-
 
651
 else\
640
 } else {\
652
 {\
-
 
653
  setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);};return;\
641
  setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);};return;\
654
};",canvas_root_id,canvas_root_id);
642
};",canvas_root_id,canvas_root_id);
655
break;
643
break;
656
 
644
 
657
case DRAW_IMAGEFILL:/* not  used for userdraw */
645
case DRAW_IMAGEFILL:/* not  used for userdraw */
Line 674... Line 662...
674
    };\
662
    };\
675
   };\
663
   };\
676
  };\
664
  };\
677
  if( use_userdraw ){\
665
  if( use_userdraw ){\
678
   image_pattern = ctx;\
666
   image_pattern = ctx;\
679
  }\
-
 
680
  else\
667
  } else {\
681
  {\
-
 
682
   setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\
668
   setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\
683
  };\
669
  };\
684
 };\
670
 };\
685
};",canvas_root_id,canvas_root_id);
671
};",canvas_root_id,canvas_root_id);
686
break;
672
break;
Line 707... Line 693...
707
   ctx.fill();\
693
   ctx.fill();\
708
  };\
694
  };\
709
 };\
695
 };\
710
 if( use_userdraw ){\
696
 if( use_userdraw ){\
711
  dot_fill_pattern = ctx;\
697
  dot_fill_pattern = ctx;\
712
 }\
-
 
713
 else\
698
 } else {\
714
 {\
-
 
715
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
699
 setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\
716
 };\
700
 };\
717
return;\
701
return;\
718
};",canvas_root_id,canvas_root_id);
702
};",canvas_root_id,canvas_root_id);
719
break;
703
break;
Line 1062... Line 1046...
1062
  xml_div.style.position = \"absolute\";\
1046
  xml_div.style.position = \"absolute\";\
1063
  xml_div.style.color = \"rgba(\"+obj.stroke_color+\",\"+obj.stroke_opacity+\")\";\
1047
  xml_div.style.color = \"rgba(\"+obj.stroke_color+\",\"+obj.stroke_opacity+\")\";\
1064
  xml_div.style.font = obj.fontfamily;\
1048
  xml_div.style.font = obj.fontfamily;\
1065
  if( ! obj.rotation_center){obj.rotation_center = [obj.x[0],obj.y[0]];}else{obj.rotation_center=[x2px(obj.rotation_center[0]) ,y2px(obj.rotation_center[1]) ];};\
1049
  if( ! obj.rotation_center){obj.rotation_center = [obj.x[0],obj.y[0]];}else{obj.rotation_center=[x2px(obj.rotation_center[0]) ,y2px(obj.rotation_center[1]) ];};\
1066
  if( obj.use_center == 1 ){if( obj.type == 'image' ){xml_div.addEventListener('load',function(e){centered(xml_div,obj);},true);}else{%s};};\
1050
  if( obj.use_center == 1 ){if( obj.type == 'image' ){xml_div.addEventListener('load',function(e){centered(xml_div,obj);},true);}else{%s};};\
1067
 }\
-
 
1068
 else\
1051
 } else {\
1069
 {\
-
 
1070
  xml_div = document.getElementById('xml_div'+obj.id );\
1052
  xml_div = document.getElementById('xml_div'+obj.id );\
1071
 };\
1053
 };\
1072
 if( typeof(xml_div) === 'undefined' ){console.log('hmmmmm'); return;};\
1054
 if( typeof(xml_div) === 'undefined' ){console.log('hmmmmm'); return;};\
1073
 xml_div.style.left = parseInt(obj.x[0] - obj.offset[0]) +'px';\
1055
 xml_div.style.left = parseInt(obj.x[0] - obj.offset[0]) +'px';\
1074
 xml_div.style.top  = parseInt(obj.y[0] - obj.offset[1]) +'px';\
1056
 xml_div.style.top  = parseInt(obj.y[0] - obj.offset[1]) +'px';\
Line 1084... Line 1066...
1084
    if(isTouch){\
1066
    if(isTouch){\
1085
     canvas_div.addEventListener('touchmove' ,function(evt){ evt.preventDefault();if(!dragging){return;};mouse = getMouse(evt.changedTouches[0],xml_div);xy = multisnap_check( mouse.x,mouse.y,obj.use_snap);xml_div.style.left = xy[0] - obj.offset[0] - obj.transform[4] + 'px';xml_div.style.top = xy[1] - obj.offset[1] - obj.transform[5] + 'px';},false);\
1067
     canvas_div.addEventListener('touchmove' ,function(evt){ evt.preventDefault();if(!dragging){return;};mouse = getMouse(evt.changedTouches[0],xml_div);xy = multisnap_check( mouse.x,mouse.y,obj.use_snap);xml_div.style.left = xy[0] - obj.offset[0] - obj.transform[4] + 'px';xml_div.style.top = xy[1] - obj.offset[1] - obj.transform[5] + 'px';},false);\
1086
     canvas_div.addEventListener('touchend'  ,function(evt){ evt.preventDefault();dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1068
     canvas_div.addEventListener('touchend'  ,function(evt){ evt.preventDefault();dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1087
     xml_div.addEventListener('touchstart',function(evt){evt.preventDefault();if(dragging){dragging = false;xml_div.style.backgroundColor = no_color;}else{dragging = true;xml_div.style.backgroundColor = back_color;};},false);\
1069
     xml_div.addEventListener('touchstart',function(evt){evt.preventDefault();if(dragging){dragging = false;xml_div.style.backgroundColor = no_color;}else{dragging = true;xml_div.style.backgroundColor = back_color;};},false);\
1088
     xml_div.addEventListener('touchend'  ,function(evt){ evt.preventDefault();dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1070
     xml_div.addEventListener('touchend'  ,function(evt){ evt.preventDefault();dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1089
    }else{\
1071
    } else {\
1090
     canvas_div.addEventListener('mousemove',function(evt){if(!dragging){return;};mouse = getMouse(evt,xml_div);xy = multisnap_check( mouse.x,mouse.y,obj.use_snap);xml_div.style.left = xy[0] - obj.offset[0] - obj.transform[4] + 'px';xml_div.style.top = xy[1] - obj.offset[1] - obj.transform[5] + 'px';},false);\
1072
     canvas_div.addEventListener('mousemove',function(evt){if(!dragging){return;};mouse = getMouse(evt,xml_div);xy = multisnap_check( mouse.x,mouse.y,obj.use_snap);xml_div.style.left = xy[0] - obj.offset[0] - obj.transform[4] + 'px';xml_div.style.top = xy[1] - obj.offset[1] - obj.transform[5] + 'px';},false);\
1091
     canvas_div.addEventListener('mouseup',function(evt){dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1073
     canvas_div.addEventListener('mouseup',function(evt){dragging = false;xml_div.style.backgroundColor = no_color;dragdrop_reply[obj.object_cnt] = {object_cnt:obj.object_cnt,type:obj.onclick,x:xy[0],y:xy[1],r:0,angle:obj.angle,clicked:0};obj.x[0] = xy[0];obj.y[0] = xy[1];},false);\
1092
     xml_div.addEventListener('mousedown', function(evt){if(dragging){dragging = false;xml_div.style.backgroundColor = no_color;}else{dragging = true;xml_div.style.backgroundColor = back_color;};},false);\
1074
     xml_div.addEventListener('mousedown', function(evt){if(dragging){dragging = false;xml_div.style.backgroundColor = no_color;}else{dragging = true;xml_div.style.backgroundColor = back_color;};},false);\
1093
    };\
1075
    };\
1094
    break;\
1076
    break;\
1095
   case 1:\
1077
   case 1:\
1096
    if(isTouch ){\
1078
    if(isTouch){\
1097
     xml_div.addEventListener('touchstart', function(e){ e.preventDefault();if(dragdrop_reply[obj.object_cnt].clicked == 0){ dragdrop_reply[obj.object_cnt].clicked = 1;xml_div.style.backgroundColor = back_color;}else{dragdrop_reply[obj.object_cnt].clicked = 0;xml_div.style.backgroundColor = no_color;};} ,false);\
1079
     xml_div.addEventListener('touchstart', function(e){ e.preventDefault();if(dragdrop_reply[obj.object_cnt].clicked == 0){ dragdrop_reply[obj.object_cnt].clicked = 1;xml_div.style.backgroundColor = back_color;}else{dragdrop_reply[obj.object_cnt].clicked = 0;xml_div.style.backgroundColor = no_color;};} ,false);\
1098
    }else{\
1080
    } else {\
1099
     xml_div.addEventListener('mousedown'  , function(evt){if(dragdrop_reply[obj.object_cnt].clicked == 0){ dragdrop_reply[obj.object_cnt].clicked = 1;xml_div.style.backgroundColor = back_color;}else{dragdrop_reply[obj.object_cnt].clicked = 0;xml_div.style.backgroundColor = no_color;};} ,false);\
1081
     xml_div.addEventListener('mousedown'  , function(evt){if(dragdrop_reply[obj.object_cnt].clicked == 0){ dragdrop_reply[obj.object_cnt].clicked = 1;xml_div.style.backgroundColor = back_color;}else{dragdrop_reply[obj.object_cnt].clicked = 0;xml_div.style.backgroundColor = no_color;};} ,false);\
1100
    };\
1082
    };\
1101
    break;\
1083
    break;\
1102
   case 3:\
1084
   case 3:\
1103
    if(isTouch ){\
1085
    if(isTouch){\
1104
     xml_div.addEventListener('touchstart',function(evt){ if(slidergroup[obj.object_cnt] == null ){ slidergroup[obj.object_cnt] = obj;xml_div.style.backgroundColor = back_color;}else{ slidergroup[obj.object_cnt] = null;xml_div.style.backgroundColor = no_color;};} ,false);\
1086
     xml_div.addEventListener('touchstart',function(evt){ if(slidergroup[obj.object_cnt] == null ){ slidergroup[obj.object_cnt] = obj;xml_div.style.backgroundColor = back_color;}else{ slidergroup[obj.object_cnt] = null;xml_div.style.backgroundColor = no_color;};} ,false);\
1105
    }else{\
1087
    } else {\
1106
     xml_div.addEventListener('mousedown' ,function(evt){ if(slidergroup[obj.object_cnt] == null ){ slidergroup[obj.object_cnt] = obj;xml_div.style.backgroundColor = back_color;}else{ slidergroup[obj.object_cnt] = null;xml_div.style.backgroundColor = no_color;};} ,false);\
1088
     xml_div.addEventListener('mousedown' ,function(evt){ if(slidergroup[obj.object_cnt] == null ){ slidergroup[obj.object_cnt] = obj;xml_div.style.backgroundColor = back_color;}else{ slidergroup[obj.object_cnt] = null;xml_div.style.backgroundColor = no_color;};} ,false);\
1107
    };\
1089
    };\
1108
    break;\
1090
    break;\
1109
   case 4:slidergroup[obj.object_cnt] = obj;break;\
1091
   case 4:slidergroup[obj.object_cnt] = obj;break;\
1110
   case 5:slidergroup[obj.object_cnt] = obj;\
1092
   case 5:slidergroup[obj.object_cnt] = obj;\
Line 1139... Line 1121...
1139
 var zero_x = 0.1*xsize;\
1121
 var zero_x = 0.1*xsize;\
1140
 var zero_y = 0.9*ysize;\
1122
 var zero_y = 0.9*ysize;\
1141
 var snor_x;var snor_y;\
1123
 var snor_x;var snor_y;\
1142
 if( xstart != xmin){\
1124
 if( xstart != xmin){\
1143
  snor_x = 0.1*xsize;\
1125
  snor_x = 0.1*xsize;\
1144
 }\
-
 
1145
 else\
1126
 }else{\
1146
 {\
-
 
1147
  snor_x = 0;\
1127
  snor_x = 0;\
1148
  xstart = xmin;\
1128
  xstart = xmin;\
1149
 };\
1129
 };\
1150
 ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
1130
 ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
1151
 ctx.lineWidth = 2;\
1131
 ctx.lineWidth = 2;\
Line 1171... Line 1151...
1171
 for(var x = zero_x+snor_x ; x < xsize;x = x + step_x){\
1151
 for(var x = zero_x+snor_x ; x < xsize;x = x + step_x){\
1172
  txtsize = ctx.measureText(num).width;\
1152
  txtsize = ctx.measureText(num).width;\
1173
  if( txtsize > txt_marge ){if( flipflop == 1 ){flipflop = 0;}else{flipflop = 1;};};\
1153
  if( txtsize > txt_marge ){if( flipflop == 1 ){flipflop = 0;}else{flipflop = 1;};};\
1174
  if( flipflop == 1){\
1154
  if( flipflop == 1){\
1175
   ctx.fillText(num,x - 0.5*txtsize,zero_y+font_size);\
1155
   ctx.fillText(num,x - 0.5*txtsize,zero_y+font_size);\
1176
  }\
-
 
1177
  else\
1156
  } else {\
1178
  {\
-
 
1179
   ctx.fillText(num,x - 0.5*txtsize,zero_y+2*font_size);\
1157
   ctx.fillText(num,x - 0.5*txtsize,zero_y+2*font_size);\
1180
  };\
1158
  };\
1181
  num = num + xmajor;\
1159
  num = num + xmajor;\
1182
 };\
1160
 };\
1183
 ctx.stroke();\
1161
 ctx.stroke();\
Line 1202... Line 1180...
1202
     nx = x + num*minor_step_x;\
1180
     nx = x + num*minor_step_x;\
1203
     ctx.moveTo(nx,zero_y);\
1181
     ctx.moveTo(nx,zero_y);\
1204
     ctx.lineTo(nx,0);\
1182
     ctx.lineTo(nx,0);\
1205
     num++;\
1183
     num++;\
1206
    };\
1184
    };\
1207
  };\
1185
  };\
1208
  ctx.stroke();\
1186
  ctx.stroke();\
1209
  ctx.closePath();\
1187
  ctx.closePath();\
1210
  ctx.beginPath();\
1188
  ctx.beginPath();\
1211
  ctx.lineWidth = 2;\
1189
  ctx.lineWidth = 2;\
1212
  ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
1190
  ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
Line 1221... Line 1199...
1221
  ctx.lineWidth = 0.5;\
1199
  ctx.lineWidth = 0.5;\
1222
 };\
1200
 };\
1223
 xmin = xstart - (xmajor*(zero_x+snor_x)/step_x);\
1201
 xmin = xstart - (xmajor*(zero_x+snor_x)/step_x);\
1224
 if( ystart != ymin){\
1202
 if( ystart != ymin){\
1225
  snor_y = 0.1*ysize;\
1203
  snor_y = 0.1*ysize;\
1226
 }\
-
 
1227
 else\
1204
 } else {\
1228
 {\
-
 
1229
  snor_y = 0;\
1205
  snor_y = 0;\
1230
  ystart = ymin;\
1206
  ystart = ymin;\
1231
 };\
1207
 };\
1232
 ctx.lineWidth = 2;\
1208
 ctx.lineWidth = 2;\
1233
 ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
1209
 ctx.strokeStyle = \"rgba(\"+majorcolor+\",\"+opacity+\")\";\
Line 1291... Line 1267...
1291
  var l_length = legend%d.length;var barcolor = new Array();\
1267
  var l_length = legend%d.length;var barcolor = new Array();\
1292
  if( typeof(legendcolors%d) !== 'undefined' ){\
1268
  if( typeof(legendcolors%d) !== 'undefined' ){\
1293
   for(var p = 0 ; p < l_length ; p++){\
1269
   for(var p = 0 ; p < l_length ; p++){\
1294
    barcolor[p] = legendcolors%d[p];\
1270
    barcolor[p] = legendcolors%d[p];\
1295
   };\
1271
   };\
1296
  }else{\
1272
  } else {\
1297
   if( barcolor.length == 0 ){\
1273
   if( barcolor.length == 0 ){\
1298
    for(var p = 0 ; p < l_length ; p++){\
1274
    for(var p = 0 ; p < l_length ; p++){\
1299
     barcolor[p] = stroke_color;\
1275
     barcolor[p] = stroke_color;\
1300
    };\
1276
    };\
1301
   };\
1277
   };\
Line 1370... Line 1346...
1370
    var x_nums = x2px(eval(str[p]));\
1346
    var x_nums = x2px(eval(str[p]));\
1371
    var x_text = str[p+1];\
1347
    var x_text = str[p+1];\
1372
    corr = ctx.measureText(x_text).width;\
1348
    corr = ctx.measureText(x_text).width;\
1373
    if( corr > xmajor){ if(flipflop == 0 ){flipflop = 1; off = ybase2;}else{flipflop = 0; off = ybase1;};};\
1349
    if( corr > xmajor){ if(flipflop == 0 ){flipflop = 1; off = ybase2;}else{flipflop = 0; off = ybase1;};};\
1374
    ctx.fillText(x_text,parseInt(x_nums-0.5*corr),off);\
1350
    ctx.fillText(x_text,parseInt(x_nums-0.5*corr),off);\
1375
   };\
1351
   };\
1376
  }\
-
 
1377
  else\
1352
  } else {\
1378
  {\
-
 
1379
   for(var p = 0 ; p < len ; p = p+2){\
1353
   for(var p = 0 ; p < len ; p = p+2){\
1380
    x_nums = x2px(eval(str[p]));\
1354
    x_nums = x2px(eval(str[p]));\
1381
    x_text = str[p+1];\
1355
    x_text = str[p+1];\
1382
    corr = ctx.measureText(x_text).width + ybase1 - fontsize;\
1356
    corr = ctx.measureText(x_text).width + ybase1 - fontsize;\
1383
    ctx.save();\
1357
    ctx.save();\
Line 1385... Line 1359...
1385
    ctx.rotate(-1.5708);\
1359
    ctx.rotate(-1.5708);\
1386
    ctx.fillText(x_text,0,0);\
1360
    ctx.fillText(x_text,0,0);\
1387
    ctx.restore();\
1361
    ctx.restore();\
1388
   };\
1362
   };\
1389
  }\
1363
  }\
1390
 }\
-
 
1391
 else\
1364
 } else {\
1392
 {\
-
 
1393
  var corr;var num;var flipflop = 0;var off = ybase1;\
1365
  var corr;var num;var flipflop = 0;var off = ybase1;\
1394
  var prec = parseInt(Math.log(precision)/Math.log(10));\
1366
  var prec = parseInt(Math.log(precision)/Math.log(10));\
1395
  for(var p = x0 ; p < x1+xmajor ; p = p+xmajor){\
1367
  for(var p = x0 ; p < x1+xmajor ; p = p+xmajor){\
1396
   num = (px2x(p)).toFixed(prec);\
1368
   num = (px2x(p)).toFixed(prec);\
1397
   corr = ctx.measureText(num).width;\
1369
   corr = ctx.measureText(num).width;\
Line 1553... Line 1525...
1553
    if( skip > 1 ){if(flip == 0 ){flip = 1; shift = shift + font_size;}else{flip = 0; shift = shift - font_size;};};\
1525
    if( skip > 1 ){if(flip == 0 ){flip = 1; shift = shift + font_size;}else{flip = 0; shift = shift - font_size;};};\
1554
    ctx.fillText(x_text,parseInt(x_nums-0.5*corr),shift);\
1526
    ctx.fillText(x_text,parseInt(x_nums-0.5*corr),shift);\
1555
    ctx.moveTo(x_nums,zero_y - tics_length);\
1527
    ctx.moveTo(x_nums,zero_y - tics_length);\
1556
    ctx.lineTo(x_nums,zero_y + tics_length);\
1528
    ctx.lineTo(x_nums,zero_y + tics_length);\
1557
   };\
1529
   };\
1558
  }\
-
 
1559
  else\
1530
  } else {\
1560
  {\
-
 
1561
   for(var p = 0 ; p < len ; p = p+2){\
1531
   for(var p = 0 ; p < len ; p = p+2){\
1562
    var x_nums = x2px(eval(str[p]));\
1532
    var x_nums = x2px(eval(str[p]));\
1563
    var x_text = str[p+1];\
1533
    var x_text = str[p+1];\
1564
    corr = 2 + tics_length + zero_y + ctx.measureText(x_text).width;\
1534
    corr = 2 + tics_length + zero_y + ctx.measureText(x_text).width;\
1565
    if( corr > ysize ){corr = ysize;};\
1535
    if( corr > ysize ){corr = ysize;};\
Line 1571... Line 1541...
1571
    ctx.moveTo(x_nums,zero_y - tics_length);\
1541
    ctx.moveTo(x_nums,zero_y - tics_length);\
1572
    ctx.lineTo(x_nums,zero_y + tics_length);\
1542
    ctx.lineTo(x_nums,zero_y + tics_length);\
1573
   };\
1543
   };\
1574
  };\
1544
  };\
1575
  ctx.closePath();\
1545
  ctx.closePath();\
1576
 }\
-
 
1577
 else\
1546
 } else {\
1578
 {\
-
 
1579
  skip = 1;cnt = px2x(zero_x);\
1547
  skip = 1;cnt = px2x(zero_x);\
1580
  prec = Math.log(precision)/(Math.log(10));\
1548
  prec = Math.log(precision)/(Math.log(10));\
1581
  var y_basis;if(f_y == 1){ y_basis = ysize }else{ y_basis = zero_y + 1.4*font_size;};\
1549
  var y_basis;if(f_y == 1){ y_basis = ysize }else{ y_basis = zero_y + 1.4*font_size;};\
1582
  for( var p = zero_x ; p < xsize ; p = p+xstep){\
1550
  for( var p = zero_x ; p < xsize ; p = p+xstep){\
1583
   if(skip == 0 ){\
1551
   if(skip == 0 ){\
1584
    disp_cnt = cnt.toFixed(prec);\
1552
    disp_cnt = cnt.toFixed(prec);\
1585
    corr = ctx.measureText(disp_cnt).width;\
1553
    corr = ctx.measureText(disp_cnt).width;\
1586
    skip = parseInt(1.2*corr/xstep);\
1554
    skip = parseInt(1.2*corr/xstep);\
1587
    ctx.fillText(disp_cnt,p-0.5*corr,y_basis);\
1555
    ctx.fillText(disp_cnt,p-0.5*corr,y_basis);\
1588
   }\
-
 
1589
   else\
1556
   } else {\
1590
   {\
-
 
1591
    skip--;\
1557
    skip--;\
1592
   };\
1558
   };\
1593
   cnt = cnt + xmajor;\
1559
   cnt = cnt + xmajor;\
1594
  };\
1560
  };\
1595
  cnt = px2x(zero_x);skip = 1;\
1561
  cnt = px2x(zero_x);skip = 1;\
Line 1597... Line 1563...
1597
   if(skip == 0 ){\
1563
   if(skip == 0 ){\
1598
    disp_cnt = cnt.toFixed(prec);\
1564
    disp_cnt = cnt.toFixed(prec);\
1599
    corr = ctx.measureText(disp_cnt).width;\
1565
    corr = ctx.measureText(disp_cnt).width;\
1600
    skip = parseInt(1.2*corr/xstep);\
1566
    skip = parseInt(1.2*corr/xstep);\
1601
    ctx.fillText(disp_cnt,p-0.5*corr,y_basis);\
1567
    ctx.fillText(disp_cnt,p-0.5*corr,y_basis);\
1602
   }\
-
 
1603
   else\
1568
   } else {\
1604
   {\
-
 
1605
    skip--;\
1569
    skip--;\
1606
   };\
1570
   };\
1607
   cnt = cnt - xmajor;\
1571
   cnt = cnt - xmajor;\
1608
  };\
1572
  };\
1609
 };\
1573
 };\
Line 1618... Line 1582...
1618
   ctx.fillText(y_text,zero_x - corr,y_nums + 0.5*font_size);\
1582
   ctx.fillText(y_text,zero_x - corr,y_nums + 0.5*font_size);\
1619
   ctx.moveTo(zero_x - tics_length,y_nums);\
1583
   ctx.moveTo(zero_x - tics_length,y_nums);\
1620
   ctx.lineTo(zero_x + tics_length,y_nums);\
1584
   ctx.lineTo(zero_x + tics_length,y_nums);\
1621
  };\
1585
  };\
1622
  ctx.closePath();\
1586
  ctx.closePath();\
1623
 }\
-
 
1624
 else\
1587
 } else {\
1625
 {\
-
 
1626
  if(f_x == 1){ corr = 1.5*tics_length; }\
1588
  if(f_x == 1){ corr = 1.5*tics_length; }\
1627
  cnt = px2y(zero_y);skip = 1;\
1589
  cnt = px2y(zero_y);skip = 1;\
1628
  for( var p = zero_y ; p < ysize ; p = p+ystep){\
1590
  for( var p = zero_y ; p < ysize ; p = p+ystep){\
1629
   if(skip == 0 ){\
1591
   if(skip == 0 ){\
1630
    skip = parseInt(1.4*font_size/ystep);\
1592
    skip = parseInt(1.4*font_size/ystep);\
1631
    disp_cnt = cnt.toFixed(prec);\
1593
    disp_cnt = cnt.toFixed(prec);\
1632
    if(f_x == -1 ){ corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\
1594
    if(f_x == -1 ){ corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\
1633
    ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\
1595
    ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\
1634
   }\
-
 
1635
   else\
1596
   } else {\
1636
   {\
-
 
1637
    skip--;\
1597
    skip--;\
1638
   };\
1598
   };\
1639
   cnt = cnt - ymajor;\
1599
   cnt = cnt - ymajor;\
1640
  };\
1600
  };\
1641
  corr = 0;cnt = px2y(zero_y);skip = 1;\
1601
  corr = 0;cnt = px2y(zero_y);skip = 1;\
Line 1644... Line 1604...
1644
   if(skip == 0 ){\
1604
   if(skip == 0 ){\
1645
    skip = parseInt(1.4*font_size/ystep);\
1605
    skip = parseInt(1.4*font_size/ystep);\
1646
    disp_cnt = cnt.toFixed(prec);\
1606
    disp_cnt = cnt.toFixed(prec);\
1647
    if(f_x == -1 ){corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\
1607
    if(f_x == -1 ){corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\
1648
    ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\
1608
    ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\
1649
   }\
-
 
1650
   else\
1609
   } else {\
1651
   {\
-
 
1652
    skip--;\
1610
    skip--;\
1653
   };\
1611
   };\
1654
   cnt = cnt + ymajor;\
1612
   cnt = cnt + ymajor;\
1655
  };\
1613
  };\
1656
 };\
1614
 };\
Line 1668... Line 1626...
1668
 var l_length = legend0.length;\
1626
 var l_length = legend0.length;\
1669
 if( typeof(legendcolors0) !== 'undefined' ){\
1627
 if( typeof(legendcolors0) !== 'undefined' ){\
1670
  for(var p = 0 ; p < l_length ; p++){\
1628
  for(var p = 0 ; p < l_length ; p++){\
1671
    barcolor[p] = legendcolors0[p];\
1629
    barcolor[p] = legendcolors0[p];\
1672
  };\
1630
  };\
1673
 }\
-
 
1674
 else\
1631
 } else {\
1675
 {\
-
 
1676
  if( barcolor.length == 0 ){\
1632
  if( barcolor.length == 0 ){\
1677
   for(var p = 0 ; p < l_length ; p++){\
1633
   for(var p = 0 ; p < l_length ; p++){\
1678
    barcolor[p] = stroke_color;\
1634
    barcolor[p] = stroke_color;\
1679
   };\
1635
   };\
1680
  };\
1636
  };\
Line 1715... Line 1671...
1715
   ctx.beginPath();\
1671
   ctx.beginPath();\
1716
   ctx.strokeStyle = barcolor[p];\
1672
   ctx.strokeStyle = barcolor[p];\
1717
   ctx.fillStyle = barcolor[p];\
1673
   ctx.fillStyle = barcolor[p];\
1718
   ctx.rect(bar_x[p]-0.4*x2step+dx,bar_y[p],bar_width,zero_y - bar_y[p]);\
1674
   ctx.rect(bar_x[p]-0.4*x2step+dx,bar_y[p],bar_width,zero_y - bar_y[p]);\
1719
   ctx.fill();\
1675
   ctx.fill();\
1720
   ctx.stroke();\
1676
   ctx.stroke();\
1721
   ctx.closePath();\
1677
   ctx.closePath();\
1722
  };\
1678
  };\
1723
 };\
1679
 };\
1724
 ctx.restore();");
1680
 ctx.restore();");
1725
}
1681
}
1726
 
1682
 
1727
if( linegraph_cnt != 0 ){
1683
if( linegraph_cnt != 0 ){
1728
fprintf(js_include_file,"ctx.save();\
1684
fprintf(js_include_file,"ctx.save();\
Line 1734... Line 1690...
1734
  ctx.lineWidth = parseInt(line_name[1]);\
1690
  ctx.lineWidth = parseInt(line_name[1]);\
1735
  if(line_name[2] == \"1\"){\
1691
  if(line_name[2] == \"1\"){\
1736
   var d1 = parseInt(line_name[3]);\
1692
   var d1 = parseInt(line_name[3]);\
1737
   var d2 = parseInt(line_name[4]);\
1693
   var d2 = parseInt(line_name[4]);\
1738
   if(ctx.setLineDash){ ctx.setLineDash([d1,d2]); } else { ctx.mozDash = [d1,d2];};\
1694
   if(ctx.setLineDash){ ctx.setLineDash([d1,d2]); } else { ctx.mozDash = [d1,d2];};\
1739
  }\
-
 
1740
  else\
1695
  } else {\
1741
  {\
-
 
1742
  if(ctx.setLineDash){ctx.setLineDash = null;};if(ctx.mozDash){ctx.mozDash = null;}\
1696
  if(ctx.setLineDash){ctx.setLineDash = null;};if(ctx.mozDash){ctx.mozDash = null;}\
1743
  };\
1697
  };\
1744
  var data_x = new Array();var data_y = new Array();\
1698
  var data_x = new Array();var data_y = new Array();\
1745
  var lb = line_name.length;var idx = 0;\
1699
  var lb = line_name.length;var idx = 0;\
1746
  for( var p = 5 ; p < lb ; p = p + 2 ){\
1700
  for( var p = 5 ; p < lb ; p = p + 2 ){\
1747
   data_x[idx] = x2px(line_name[p]);\
1701
   data_x[idx] = x2px(line_name[p]);\
1748
   data_y[idx] = y2px(line_name[p+1]);\
1702
   data_y[idx] = y2px(line_name[p+1]);\
1749
   idx++;\
1703
   idx++;\
1750
  };\
1704
  };\
1751
  for( var p = 0; p < idx ; p++){\
1705
  for( var p = 0; p < idx ; p++){\
1752
   ctx.beginPath();\
1706
   ctx.beginPath();\
1753
   ctx.moveTo(data_x[p],data_y[p]);\
1707
   ctx.moveTo(data_x[p],data_y[p]);\
1754
   ctx.lineTo(data_x[p+1],data_y[p+1]);\
1708
   ctx.lineTo(data_x[p+1],data_y[p+1]);\
1755
   ctx.stroke();\
1709
   ctx.stroke();\
Line 1769... Line 1723...
1769
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1723
if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\
1770
function draw_piechart(canvas_type,x_center,y_center,radius, data_color_list,fill_opacity,legend_cnt,font_family,use_filled,use_offset){\
1724
function draw_piechart(canvas_type,x_center,y_center,radius, data_color_list,fill_opacity,legend_cnt,font_family,use_filled,use_offset){\
1771
 var obj;\
1725
 var obj;\
1772
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1726
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1773
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1727
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1774
 }\
-
 
1775
 else\
1728
 } else {\
1776
 {\
-
 
1777
  obj = create_canvas%d(canvas_type,xsize,ysize);\
1729
  obj = create_canvas%d(canvas_type,xsize,ysize);\
1778
 };\
1730
 };\
1779
 var center_text = use_offset || 0;\
1731
 var center_text = use_offset || 0;\
1780
 var ld = data_color_list.length;\
1732
 var ld = data_color_list.length;\
1781
 var sum = 0;\
1733
 var sum = 0;\
Line 1830... Line 1782...
1830
    ctx.save();\
1782
    ctx.save();\
1831
    ctx.translate(x_center, y_center);\
1783
    ctx.translate(x_center, y_center);\
1832
    ctx.rotate(angles[p]);\
1784
    ctx.rotate(angles[p]);\
1833
    ctx.fillText(txt,radius-txt_size,0);\
1785
    ctx.fillText(txt,radius-txt_size,0);\
1834
    ctx.restore();\
1786
    ctx.restore();\
1835
   }\
-
 
1836
   else\
1787
   } else {\
1837
   {\
-
 
1838
    if( x_center + radius + txt_size > xsize ){ x_offset =  x_center + radius + txt_size - xsize;} else { x_offset = 0; };\
1788
    if( x_center + radius + txt_size > xsize ){ x_offset =  x_center + radius + txt_size - xsize;} else { x_offset = 0; };\
1839
    ctx.fillText(txt,x_center + radius - x_offset, y_center - radius + y_offset);\
1789
    ctx.fillText(txt,x_center + radius - x_offset, y_center - radius + y_offset);\
1840
    y_offset = parseInt(y_offset + 1.5*font_size);\
1790
    y_offset = parseInt(y_offset + 1.5*font_size);\
1841
   };\
1791
   };\
1842
  };\
1792
  };\
Line 1874... Line 1824...
1874
 var half = Math.floor(0.5*len);\
1824
 var half = Math.floor(0.5*len);\
1875
 if(len %%2 == 1){\
1825
 if(len %%2 == 1){\
1876
  median = data[half];\
1826
  median = data[half];\
1877
  Q1 = data[q1];\
1827
  Q1 = data[q1];\
1878
  Q3 = data[q3];\
1828
  Q3 = data[q3];\
1879
 }\
-
 
1880
 else\
1829
 } else {\
1881
 {\
-
 
1882
  median = (data[half - 1] + data[half] )/2;\
1830
  median = (data[half - 1] + data[half] )/2;\
1883
  Q1 = (data[q1 - 1] + data[q1] )/2;\
1831
  Q1 = (data[q1 - 1] + data[q1] )/2;\
1884
  Q3 = (data[q3 - 1] + data[q3] )/2;\
1832
  Q3 = (data[q3 - 1] + data[q3] )/2;\
1885
 };\
1833
 };\
1886
 return [min,Q1,median,Q3,max];\
1834
 return [min,Q1,median,Q3,max];\
1887
};");
1835
};");
1888
break;
1836
break;
1889
 
1837
 
1890
case DRAW_BOXPLOT:
1838
case DRAW_BOXPLOT:
Line 1912... Line 1860...
1912
 switch(boxplot_source){\
1860
 switch(boxplot_source){\
1913
  case 1: if( typeof(jsboxplot_data) === 'undefined'){return;};data = statistics(jsboxplot_data);break;\
1861
  case 1: if( typeof(jsboxplot_data) === 'undefined'){return;};data = statistics(jsboxplot_data);break;\
1914
  case 2: if( typeof(student_boxplot_data) === 'undefined'){return;};data = statistics(student_boxplot_data);break;\
1862
  case 2: if( typeof(student_boxplot_data) === 'undefined'){return;};data = statistics(student_boxplot_data);break;\
1915
  case 3: if( typeof(student_boxplot) === 'undefined'){return;};data = student_boxplot;break;\
1863
  case 3: if( typeof(student_boxplot) === 'undefined'){return;};data = student_boxplot;break;\
1916
  default: break;\
1864
  default: break;\
1917
 };\
1865
 };\
1918
 var min,Q1,median,Q3,max;\
1866
 var min,Q1,median,Q3,max;\
1919
 if(xy == 1 ){\
1867
 if(xy == 1 ){\
1920
  min=x2px(data[0]);Q1=x2px(data[1]);median=x2px(data[2]);Q3=x2px(data[3]);max=x2px(data[4]);\
1868
  min=x2px(data[0]);Q1=x2px(data[1]);median=x2px(data[2]);Q3=x2px(data[3]);max=x2px(data[4]);\
1921
  hh = Math.abs(y2px(hh) - y2px(ystart));\
1869
  hh = Math.abs(y2px(hh) - y2px(ystart));\
1922
  hw = Math.abs(y2px(hw) - y2px(ystart));\
1870
  hw = Math.abs(y2px(hw) - y2px(ystart));\
Line 1988... Line 1936...
1988
fprintf(js_include_file,"\n/* draw centerstring */\
1936
fprintf(js_include_file,"\n/* draw centerstring */\
1989
var draw_centerstring = function(canvas_type,y,font_family,stroke_color,stroke_opacity,text){\
1937
var draw_centerstring = function(canvas_type,y,font_family,stroke_color,stroke_opacity,text){\
1990
 var obj;\
1938
 var obj;\
1991
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1939
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1992
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1940
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1993
 }\
-
 
1994
 else\
1941
 } else {\
1995
 {\
-
 
1996
  obj = create_canvas%d(canvas_type,xsize,ysize);\
1942
  obj = create_canvas%d(canvas_type,xsize,ysize);\
1997
 };\
1943
 };\
1998
 var ctx = obj.getContext(\"2d\");\
1944
 var ctx = obj.getContext(\"2d\");\
1999
 ctx.save();\
1945
 ctx.save();\
2000
 ctx.clearRect(0,0,xsize,ysize);\
1946
 ctx.clearRect(0,0,xsize,ysize);\
Line 2012... Line 1958...
2012
fprintf(js_include_file,"\n/* draw text */\
1958
fprintf(js_include_file,"\n/* draw text */\
2013
var draw_text = function(canvas_type,x,y,font_size,font_family,stroke_color,stroke_opacity,angle2,text,use_rotate,angle,use_offset){\
1959
var draw_text = function(canvas_type,x,y,font_size,font_family,stroke_color,stroke_opacity,angle2,text,use_rotate,angle,use_offset){\
2014
 var obj;\
1960
 var obj;\
2015
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
1961
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2016
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
1962
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2017
 }\
-
 
2018
 else\
1963
 } else {\
2019
 {\
-
 
2020
  obj = create_canvas%d(canvas_type,xsize,ysize);\
1964
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2021
 };\
1965
 };\
2022
 var ctx = obj.getContext(\"2d\");\
1966
 var ctx = obj.getContext(\"2d\");\
2023
 if( font_family != 'null' ){\
1967
 if( font_family != 'null' ){\
2024
  ctx.font = font_family;\
1968
  ctx.font = font_family;\
2025
 }\
-
 
2026
 else\
1969
 } else {\
2027
 {\
-
 
2028
  ctx.font = font_size+'px Arial';\
1970
  ctx.font = font_size+'px Arial';\
2029
 };\
1971
 };\
2030
 if( use_offset == 3 ){if(angle2 < 0 ){ y = y + 0.8*font_size; x = x + (Math.cos(angle2))*font_size; }else{y = y - 0.8*font_size; x = x + (Math.sin(angle2))*font_size;};};\
1972
 if( use_offset == 3 ){if(angle2 < 0 ){ y = y + 0.8*font_size; x = x + (Math.cos(angle2))*font_size; }else{y = y - 0.8*font_size; x = x + (Math.sin(angle2))*font_size;};};\
2031
 if(angle2 == 0 && angle != 0){\
1973
 if(angle2 == 0 && angle != 0){\
2032
  ctx.save();\
1974
  ctx.save();\
2033
  if(use_rotate == 1 ){\
1975
  if(use_rotate == 1 ){\
2034
  ctx.rotate(angle*Math.PI/180);};\
1976
  ctx.rotate(angle*Math.PI/180);};\
2035
  ctx.restore();\
1977
  ctx.restore();\
2036
 };\
1978
 };\
2037
 ctx.fillStyle = \"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
1979
 ctx.fillStyle = \"rgba(\"+stroke_color+\",\"+stroke_opacity+\")\";\
2038
 if(angle2 != 0){\
1980
 if(angle2 != 0){\
2039
  ctx.save();\
1981
  ctx.save();\
2040
  ctx.translate(x,y);\
1982
  ctx.translate(x,y);\
2041
  ctx.rotate((360-angle2)*(Math.PI / 180));\
1983
  ctx.rotate((360-angle2)*(Math.PI / 180));\
2042
  ctx.fillText(text,0,0);\
1984
  ctx.fillText(text,0,0);\
2043
  ctx.restore();\
1985
  ctx.restore();\
2044
 }\
-
 
2045
 else\
1986
 } else {\
2046
 {\
-
 
2047
  ctx.fillText(text,x,y);\
1987
  ctx.fillText(text,x,y);\
2048
 };\
1988
 };\
2049
 return;\
1989
 return;\
2050
};",canvas_root_id,canvas_root_id,canvas_root_id);
1990
};",canvas_root_id,canvas_root_id,canvas_root_id);
2051
break;
1991
break;
Line 2101... Line 2041...
2101
 if(pixelsize%%2 == 1){ ctx.translate(0.5,0.5);};\
2041
 if(pixelsize%%2 == 1){ ctx.translate(0.5,0.5);};\
2102
 ctx.fillStyle = \"rgba(\"+color+\",\"+opacity+\")\";\
2042
 ctx.fillStyle = \"rgba(\"+color+\",\"+opacity+\")\";\
2103
 ctx.clearRect(0,0,xsize,ysize);\
2043
 ctx.clearRect(0,0,xsize,ysize);\
2104
 for(var p=0; p<x.length;p++){\
2044
 for(var p=0; p<x.length;p++){\
2105
  ctx.fillRect( x2px(x[p]) - d, y2px(y[p]) - d , pixelsize, pixelsize );\
2045
  ctx.fillRect( x2px(x[p]) - d, y2px(y[p]) - d , pixelsize, pixelsize );\
2106
 };\
2046
 };\
2107
 ctx.fill();ctx.stroke();\
2047
 ctx.fill();ctx.stroke();\
2108
};",canvas_root_id);
2048
};",canvas_root_id);
2109
break;
2049
break;
2110
 
2050
 
2111
case DRAW_CLOCK:
2051
case DRAW_CLOCK:
Line 2170... Line 2110...
2170
 clock_ctx.beginPath();\
2110
 clock_ctx.beginPath();\
2171
 for(var p = 1; p <= 12 ; p++){\
2111
 for(var p = 1; p <= 12 ; p++){\
2172
  angle_cos = this.radius*(Math.cos(p * (Math.PI * 2) / 12));\
2112
  angle_cos = this.radius*(Math.cos(p * (Math.PI * 2) / 12));\
2173
  angle_sin = this.radius*(Math.sin(p * (Math.PI * 2) / 12));\
2113
  angle_sin = this.radius*(Math.sin(p * (Math.PI * 2) / 12));\
2174
  x1 = 0.9*angle_cos;y1 = 0.9*angle_sin;x2 = angle_cos;y2 = angle_sin;\
2114
  x1 = 0.9*angle_cos;y1 = 0.9*angle_sin;x2 = angle_cos;y2 = angle_sin;\
2175
  clock_ctx.moveTo(x1,y1);\
2115
  clock_ctx.moveTo(x1,y1);\
2176
  clock_ctx.lineTo(x2,y2);\
2116
  clock_ctx.lineTo(x2,y2);\
2177
 };\
2117
 };\
2178
 for(var p = 1; p <= 60 ; p++){\
2118
 for(var p = 1; p <= 60 ; p++){\
2179
  angle_cos = this.radius*(Math.cos(p * (Math.PI * 2) / 60));\
2119
  angle_cos = this.radius*(Math.cos(p * (Math.PI * 2) / 60));\
2180
  angle_sin = this.radius*(Math.sin(p * (Math.PI * 2) / 60));\
2120
  angle_sin = this.radius*(Math.sin(p * (Math.PI * 2) / 60));\
2181
  x1 = 0.95*angle_cos;y1 = 0.95*angle_sin;x2 = angle_cos;y2 = angle_sin;\
2121
  x1 = 0.95*angle_cos;y1 = 0.95*angle_sin;x2 = angle_cos;y2 = angle_sin;\
Line 2222... Line 2162...
2222
fprintf(js_include_file,"\n/* draw lattice */\
2162
fprintf(js_include_file,"\n/* draw lattice */\
2223
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){\
2224
 var obj;\
2164
 var obj;\
2225
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2165
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2226
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2166
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2227
 }\
-
 
2228
 else\
2167
 } else {\
2229
 {\
-
 
2230
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2168
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2231
 };\
2169
 };\
2232
 var ctx = obj.getContext(\"2d\");\
2170
 var ctx = obj.getContext(\"2d\");\
2233
 ctx.save();\
2171
 ctx.save();\
2234
 if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\
2172
 if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\
Line 2246... Line 2184...
2246
 var yv2 = dy2*y_step_px;\
2184
 var yv2 = dy2*y_step_px;\
2247
 for(var p = 0; p < n1 ;p++){\
2185
 for(var p = 0; p < n1 ;p++){\
2248
  x = p*xv1 + x0;\
2186
  x = p*xv1 + x0;\
2249
  y = p*yv1 + y0;\
2187
  y = p*yv1 + y0;\
2250
  for(var c = 0; c < n2 ; c++){\
2188
  for(var c = 0; c < n2 ; c++){\
2251
   ctx.beginPath();\
2189
   ctx.beginPath();\
2252
   ctx.arc(x+c*xv2,y+c*yv2,radius,0,2*Math.PI,false);\
2190
   ctx.arc(x+c*xv2,y+c*yv2,radius,0,2*Math.PI,false);\
2253
   ctx.fill();\
2191
   ctx.fill();\
2254
   ctx.stroke();\
2192
   ctx.stroke();\
2255
   ctx.closePath();\
2193
   ctx.closePath();\
2256
  };\
2194
  };\
Line 2264... Line 2202...
2264
fprintf(js_include_file,"\n/* draw xylogscale */\
2202
fprintf(js_include_file,"\n/* draw xylogscale */\
2265
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){\
2203
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){\
2266
 var obj;\
2204
 var obj;\
2267
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2205
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2268
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2206
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2269
 }\
-
 
2270
 else\
2207
 } else {\
2271
 {\
-
 
2272
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2208
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2273
 };\
2209
 };\
2274
 var ctx = obj.getContext(\"2d\");\
2210
 var ctx = obj.getContext(\"2d\");\
2275
 ctx.clearRect(0,0,xsize,ysize);\
2211
 ctx.clearRect(0,0,xsize,ysize);\
2276
 ctx.save();\
2212
 ctx.save();\
Line 2280... Line 2216...
2280
 var y_min = Math.log(ymin)/Math.log(ylogbase);\
2216
 var y_min = Math.log(ymin)/Math.log(ylogbase);\
2281
 var y_max = Math.log(ymax)/Math.log(ylogbase);\
2217
 var y_max = Math.log(ymax)/Math.log(ylogbase);\
2282
 if(use_axis_numbering != -1){\
2218
 if(use_axis_numbering != -1){\
2283
  ctx.font = font_family;\
2219
  ctx.font = font_family;\
2284
  xmarge = ctx.measureText(ylogbase+'^'+y_max.toFixed(0)+' ').width;\
2220
  xmarge = ctx.measureText(ylogbase+'^'+y_max.toFixed(0)+' ').width;\
2285
  ymarge = parseInt(1.5*font_size);\
2221
  ymarge = parseInt(1.5*font_size);\
2286
  ctx.save();\
2222
  ctx.save();\
2287
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2223
  ctx.fillStyle=\"rgba(255,215,0,0.2)\";\
2288
  ctx.rect(0,0,xmarge,ysize);\
2224
  ctx.rect(0,0,xmarge,ysize);\
2289
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2225
  ctx.rect(0,ysize-ymarge,xsize,ysize);\
2290
  ctx.fill();\
2226
  ctx.fill();\
2291
  ctx.restore();\
2227
  ctx.restore();\
2292
 }else{xmarge = 0;ymarge = 0;};\
2228
 }else{xmarge = 0;ymarge = 0;};\
2293
 if( typeof(xaxislabel) !== 'undefined' ){\
2229
 if( typeof(xaxislabel) !== 'undefined' ){\
2294
  ctx.save();\
2230
  ctx.save();\
2295
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2231
  ctx.font = \"italic \"+font_size+\"px Arial\";\
Line 2316... Line 2252...
2316
   x_e = x2px(i*num);\
2252
   x_e = x2px(i*num);\
2317
   if( i == 1 ){\
2253
   if( i == 1 ){\
2318
    ctx.lineWidth = line_width;\
2254
    ctx.lineWidth = line_width;\
2319
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2255
    ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2320
    if( use_axis_numbering != -1 && p > x_min){\
2256
    if( use_axis_numbering != -1 && p > x_min){\
2321
      xtxt = xlogbase+'^'+p.toFixed(0);\
2257
      xtxt = xlogbase+'^'+p.toFixed(0);\
2322
      corr = 0.5*(ctx.measureText(xtxt).width);\
2258
      corr = 0.5*(ctx.measureText(xtxt).width);\
2323
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2259
      ctx.fillText(xtxt,x_e - corr,ysize - 4);\
2324
    };\
2260
    };\
2325
   }else{\
2261
   }else{\
2326
    ctx.lineWidth = 0.2*line_width;\
2262
    ctx.lineWidth = 0.2*line_width;\
2327
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2263
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2328
   };\
2264
   };\
2329
   if( x_e >= xmarge ){\
2265
   if( x_e >= xmarge ){\
2330
    ctx.beginPath();\
2266
    ctx.beginPath();\
2331
    ctx.moveTo(x_e,0);\
2267
    ctx.moveTo(x_e,0);\
2332
    ctx.lineTo(x_e,ysize - ymarge);\
2268
    ctx.lineTo(x_e,ysize - ymarge);\
2333
    ctx.stroke();\
2269
    ctx.stroke();\
2334
    ctx.closePath();\
2270
    ctx.closePath();\
2335
   };\
2271
   };\
2336
  };\
2272
  };\
2337
 };\
2273
 };\
2338
 for(var p = y_min; p <= y_max ; p++){\
2274
 for(var p = y_min; p <= y_max ; p++){\
2339
  num = Math.pow(ylogbase,p);\
2275
  num = Math.pow(ylogbase,p);\
2340
  for(var i = 1 ; i < ylogbase ; i++){\
2276
  for(var i = 1 ; i < ylogbase ; i++){\
2341
   y_e = y2px(i*num);\
2277
   y_e = y2px(i*num);\
2342
   if( i == 1 ){\
2278
   if( i == 1 ){\
Line 2350... Line 2286...
2350
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2286
    ctx.strokeStyle=\"rgba(\"+minor_color+\",\"+minor_opacity+\")\";\
2351
   };\
2287
   };\
2352
   ctx.beginPath();\
2288
   ctx.beginPath();\
2353
   ctx.moveTo(xmarge,y_e);\
2289
   ctx.moveTo(xmarge,y_e);\
2354
   ctx.lineTo(xsize,y_e);\
2290
   ctx.lineTo(xsize,y_e);\
2355
   ctx.stroke();\
2291
   ctx.stroke();\
2356
   ctx.closePath();\
2292
   ctx.closePath();\
2357
  };\
2293
  };\
2358
 };\
2294
 };\
2359
 ctx.restore();\
2295
 ctx.restore();\
2360
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2296
};",canvas_root_id,canvas_root_id,canvas_root_id,canvas_root_id);
2361
break;
2297
break;
2362
 
2298
 
2363
case DRAW_XLOGSCALE:
2299
case DRAW_XLOGSCALE:
2364
fprintf(js_include_file,"\n/* draw xlogscale */\
2300
fprintf(js_include_file,"\n/* draw xlogscale */\
2365
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){\
2301
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){\
2366
 var obj;\
2302
 var obj;\
2367
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2303
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2368
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2304
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2369
 }\
-
 
2370
 else\
2305
 } else {\
2371
 {\
-
 
2372
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2306
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2373
 };\
2307
 };\
2374
 var ctx = obj.getContext(\"2d\");\
2308
 var ctx = obj.getContext(\"2d\");\
2375
 ctx.clearRect(0,0,xsize,ysize);\
2309
 ctx.clearRect(0,0,xsize,ysize);\
2376
 ctx.save();\
2310
 ctx.save();\
Line 2395... Line 2329...
2395
  ctx.save();\
2329
  ctx.save();\
2396
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2330
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2397
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2331
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2398
  corr =  ctx.measureText(xaxislabel).width;\
2332
  corr =  ctx.measureText(xaxislabel).width;\
2399
  ctx.fillText(xaxislabel,xsize - 1.5*corr,ysize - 2*font_size);\
2333
  ctx.fillText(xaxislabel,xsize - 1.5*corr,ysize - 2*font_size);\
2400
  ctx.restore();\
2334
  ctx.restore();\
2401
 };\
2335
 };\
2402
 if( typeof(yaxislabel) !== 'undefined' ){\
2336
 if( typeof(yaxislabel) !== 'undefined' ){\
2403
  ctx.save();\
2337
  ctx.save();\
2404
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2338
  ctx.font = \"italic \"+font_size+\"px Arial\";\
2405
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2339
  ctx.fillStyle = \"rgba(\"+font_color+\",\"+major_opacity+\")\";\
2406
  corr = ctx.measureText(yaxislabel).width;\
2340
  corr = ctx.measureText(yaxislabel).width;\
Line 2432... Line 2366...
2432
    ctx.moveTo(x_e,0);\
2366
    ctx.moveTo(x_e,0);\
2433
    ctx.lineTo(x_e,ysize - ymarge);\
2367
    ctx.lineTo(x_e,ysize - ymarge);\
2434
    ctx.stroke();\
2368
    ctx.stroke();\
2435
    ctx.closePath();\
2369
    ctx.closePath();\
2436
   };\
2370
   };\
2437
  };\
2371
  };\
2438
 };\
2372
 };\
2439
 var stepy = Math.abs(y2px(ymajor) - y2px(0));\
2373
 var stepy = Math.abs(y2px(ymajor) - y2px(0));\
2440
 var minor_step = stepy / yminor;\
2374
 var minor_step = stepy / yminor;\
2441
 for(var y = 0 ; y < ysize - stepy ; y = y + stepy){\
2375
 for(var y = 0 ; y < ysize - stepy ; y = y + stepy){\
2442
  ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
2376
  ctx.strokeStyle=\"rgba(\"+major_color+\",\"+major_opacity+\")\";\
Line 2468... Line 2402...
2468
fprintf(js_include_file,"\n/* draw ylogscale */\
2402
fprintf(js_include_file,"\n/* draw ylogscale */\
2469
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){\
2403
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){\
2470
 var obj;\
2404
 var obj;\
2471
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2405
 if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\
2472
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2406
  obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\
2473
 }\
-
 
2474
 else\
2407
 } else {\
2475
 {\
-
 
2476
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2408
  obj = create_canvas%d(canvas_type,xsize,ysize);\
2477
 };\
2409
 };\
2478
 var ctx = obj.getContext(\"2d\");\
2410
 var ctx = obj.getContext(\"2d\");\
2479
 ctx.clearRect(0,0,xsize,ysize);\
2411
 ctx.clearRect(0,0,xsize,ysize);\
2480
 ctx.save();\
2412
 ctx.save();\