Rev 18553 | Rev 18572 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 18553 | Rev 18556 | ||
---|---|---|---|
Line 303... | Line 303... | ||
303 | r = userdraw_radius[p];\ |
303 | r = userdraw_radius[p];\ |
304 | userdraw_radius[p] = r_zoom(r);\ |
304 | userdraw_radius[p] = r_zoom(r);\ |
305 | };\ |
305 | };\ |
306 | };\ |
306 | };\ |
307 | };"); |
307 | };"); |
308 | break; |
308 | break; |
309 | 309 | ||
310 | case DRAG_AND_ZOOM: |
310 | case DRAG_AND_ZOOM: |
311 | fprintf(js_include_file,"\n/* add zoom support for drag&drop */\ |
311 | fprintf(js_include_file,"\n/* add zoom support for drag&drop */\ |
312 | function recalculate_dragdrop(xmin0,ymin0,xmax0,ymax0){\ |
312 | function recalculate_dragdrop(xmin0,ymin0,xmax0,ymax0){\ |
313 | function x_zoom(px){\ |
313 | function x_zoom(px){\ |
314 | var x = parseFloat(px*(xmax0 - xmin0)/xsize + xmin0);\ |
314 | var x = parseFloat(px*(xmax0 - xmin0)/xsize + xmin0);\ |
315 | return parseFloat(x*xsize/(xmax - xmin) - xsize*xmin/(xmax - xmin));\ |
315 | return parseFloat(x*xsize/(xmax - xmin) - xsize*xmin/(xmax - xmin));\ |
316 | };\ |
316 | };\ |
Line 329... | Line 329... | ||
329 | dragstuff.shapes[p].x[i] = x_zoom(x);\ |
329 | dragstuff.shapes[p].x[i] = x_zoom(x);\ |
330 | dragstuff.shapes[p].y[i] = y_zoom(y);\ |
330 | dragstuff.shapes[p].y[i] = y_zoom(y);\ |
331 | };\ |
331 | };\ |
332 | };\ |
332 | };\ |
333 | };"); |
333 | };"); |
334 | break; |
334 | break; |
335 | - | ||
336 | case JSPLOT_AND_ZOOM: |
335 | case JSPLOT_AND_ZOOM: |
337 | fprintf(js_include_file,"\n/* add zoom support for jscurves */\ |
336 | fprintf(js_include_file,"\n/* add zoom support for jscurves */\ |
338 | function redraw_jsplot(){for(var p=0; p <= all_jsplots;p++){try{var fun = eval('js_plot'+p);fun();}catch(e){};};};"); |
337 | function redraw_jsplot(){for(var p=0; p <= all_jsplots;p++){try{var fun = eval('js_plot'+p);fun();}catch(e){};};};"); |
339 | break; |
338 | break; |
340 | - | ||
341 | case JS_ZOOM: |
339 | case JS_ZOOM: |
342 | fprintf(js_include_file,"\n/* add zoom support */\ |
340 | fprintf(js_include_file,"\n/* add zoom support */\ |
343 | var x_min_start = xmin;var x_max_start = xmax;var y_min_start = ymin;var y_max_start = ymax;\ |
341 | var x_min_start = xmin;var x_max_start = xmax;var y_min_start = ymin;var y_max_start = ymax;\ |
344 | var zoomcanvas = create_canvas%d(%d,xsize,ysize);\ |
342 | var zoomcanvas = create_canvas%d(%d,xsize,ysize);\ |
345 | function redraw_canvas%d(key){\ |
343 | function redraw_canvas%d(key){\ |
346 | var xmin0 = xmin;var xmax0 = xmax;var ymin0 = ymin;var ymax0 = ymax;\ |
344 | var xmin0 = xmin;var xmax0 = xmax;var ymin0 = ymin;var ymax0 = ymax;\ |
347 | switch(key){\ |
345 | switch(key){\ |
Line 386... | Line 384... | ||
386 | return;\ |
384 | return;\ |
387 | };\ |
385 | };\ |
388 | };\ |
386 | };\ |
389 | return;\ |
387 | return;\ |
390 | };",canvas_root_id,ZOOM_CANVAS,canvas_root_id,canvas_root_id,canvas_root_id); |
388 | };",canvas_root_id,ZOOM_CANVAS,canvas_root_id,canvas_root_id,canvas_root_id); |
391 | break; |
389 | break; |
392 | 390 | ||
393 | case DRAW_FILL_PATTERN: |
391 | case DRAW_FILL_PATTERN: |
394 | fprintf(js_include_file,"\n /* add fill pattern */ \ |
392 | fprintf(js_include_file,"\n /* add fill pattern */ \ |
395 | function create_Pattern(x0,y0,type,color){document.body.style.cursor = 'wait';var idx = Math.ceil(1000*(Math.random()));var canvas = create_canvas%d(idx,xsize,ysize);canvas.style.visibility = 'hidden';var ctx = canvas.getContext(\"2d\");var x;var y;var dx = 6;var dy = 6;ctx.lineWidth = 1;ctx.strokeStyle = color;ctx.fillStyle = color;var pat;\ |
393 | function create_Pattern(x0,y0,type,color){document.body.style.cursor = 'wait';var idx = Math.ceil(1000*(Math.random()));var canvas = create_canvas%d(idx,xsize,ysize);canvas.style.visibility = 'hidden';var ctx = canvas.getContext(\"2d\");var x;var y;var dx = 6;var dy = 6;ctx.lineWidth = 1;ctx.strokeStyle = color;ctx.fillStyle = color;var pat;\ |
396 | switch(type){\ |
394 | switch(type){\ |
397 | case 2: for( x = 0 ; x < xsize ; x = x + dx ){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,ysize);ctx.closePath();ctx.stroke();};for( y = 0 ; y < ysize; y = y + dy ){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(xsize,y);ctx.closePath();ctx.stroke();}; pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
395 | case 2: for( x = 0 ; x < xsize ; x = x + dx ){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,ysize);ctx.closePath();ctx.stroke();};for( y = 0 ; y < ysize; y = y + dy ){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(xsize,y);ctx.closePath();ctx.stroke();}; pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
398 | case 3: y = ysize;ctx.beginPath();for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0);ctx.lineTo(xsize,y);y = y - dy;};y = 0;for( x = xsize ; x > 0 ; x = x - dx){ctx.moveTo(x,ysize);ctx.lineTo(0,y); y = y + dy;};ctx.closePath();ctx.stroke(); pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
396 | case 3: y = ysize;ctx.beginPath();for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0);ctx.lineTo(xsize,y);y = y - dy;};y = 0;for( x = xsize ; x > 0 ; x = x - dx){ctx.moveTo(x,ysize);ctx.lineTo(0,y); y = y + dy;};ctx.closePath();ctx.stroke(); pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
399 | case 4: y = ysize;ctx.beginPath();for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0); ctx.lineTo(xsize,y); y = y - dy;};y = 0;for( x = xsize ; x > 0 ; x = x - dx){ctx.moveTo(x,ysize);ctx.lineTo(0,y);y = y + dy;};y = 0;for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0); ctx.lineTo(0,y); y = y + dy;};y = 0;for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(xsize,y);ctx.lineTo(x,ysize);y = y + dy;};ctx.closePath(); ctx.stroke(); pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
397 | case 4: y = ysize;ctx.beginPath();for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0); ctx.lineTo(xsize,y); y = y - dy;};y = 0;for( x = xsize ; x > 0 ; x = x - dx){ctx.moveTo(x,ysize);ctx.lineTo(0,y);y = y + dy;};y = 0;for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(x,0); ctx.lineTo(0,y); y = y + dy;};y = 0;for( x = 0 ; x < xsize ; x = x + dx ){ctx.moveTo(xsize,y);ctx.lineTo(x,ysize);y = y + dy;};ctx.closePath(); ctx.stroke(); pat = ctx.createPattern(canvas,\"no-repeat\");break;\ |
Line 401... | Line 399... | ||
401 | case 6: alert('wait for image '+(image_cnt+1)+'...');pat = image_patterns[image_cnt];image_cnt++;break;\ |
399 | case 6: alert('wait for image '+(image_cnt+1)+'...');pat = image_patterns[image_cnt];image_cnt++;break;\ |
402 | default: break;\ |
400 | default: break;\ |
403 | };\ |
401 | };\ |
404 | document.body.style.cursor = 'default';return pat;\ |
402 | document.body.style.cursor = 'default';return pat;\ |
405 | };",canvas_root_id); |
403 | };",canvas_root_id); |
406 | break; |
404 | break; |
407 | 405 | ||
408 | case JS_TRANSFORM_MOUSE: |
406 | case JS_TRANSFORM_MOUSE: |
409 | /* identify mouse coordinates on transformed objects using command affine */ |
407 | /* identify mouse coordinates on transformed objects using command affine */ |
410 | fprintf(js_include_file,"\n/* translate mouse */\ |
408 | fprintf(js_include_file,"\n/* translate mouse */\ |
411 | function transform_mouse(mx,my,obj){\ |
409 | function transform_mouse(mx,my,obj){\ |
412 | if( typeof(obj.affine_matrix) === 'undefined' ){console.log('translate_mouse() affine_matrix undefined');{x:mx,y:my};};\ |
410 | if( typeof(obj.affine_matrix) === 'undefined' ){console.log('translate_mouse() affine_matrix undefined');{x:mx,y:my};};\ |
413 | var m = obj.affine_matrix;\ |
411 | var m = obj.affine_matrix;\ |
414 | var d = 1/(m[0]*m[3]-m[1]*m[2]);\ |
412 | var d = 1/(m[0]*m[3]-m[1]*m[2]);\ |
415 | var im = [ m[3]*d, -m[1]*d,-m[2]*d,m[0]*d,d*(m[2]*m[5]-m[3]*m[4]),d*(m[1]*m[4]-m[0]*m[5]) ];\ |
413 | var im = [ m[3]*d, -m[1]*d,-m[2]*d,m[0]*d,d*(m[2]*m[5]-m[3]*m[4]),d*(m[1]*m[4]-m[0]*m[5]) ];\ |
416 | return { x:mx*im[0]+my*im[2]+im[4], y:mx*im[1]+my*im[3]+im[5] };};"); |
414 | return { x:mx*im[0]+my*im[2]+im[4], y:mx*im[1]+my*im[3]+im[5] };};"); |
417 | break; |
415 | break; |
418 | - | ||
419 | case JS_ROTATE_MOUSE: |
416 | case JS_ROTATE_MOUSE: |
420 | /* |
417 | /* |
421 | identify mouse coordinates on rotated STRING (no 14) objects used for command rotate : |
418 | identify mouse coordinates on rotated STRING (no 14) objects used for command rotate : |
422 | faster than transform matrix |
419 | faster than transform matrix |
423 | */ |
420 | */ |
424 | fprintf(js_include_file,"\n/* rotate mouse */\ |
421 | fprintf(js_include_file,"\n/* rotate mouse */\ |
425 | function rotate_mouse(mx,my,obj){\ |
422 | function rotate_mouse(mx,my,obj){\ |
426 | if( typeof(obj.angle) === 'undefined' ){console.log('rotate_mouse() angle undefined');return {x:mx,y:my};};\ |
423 | if( typeof(obj.angle) === 'undefined' ){console.log('rotate_mouse() angle undefined');return {x:mx,y:my};};\ |
427 | var cos = Math.cos(obj.angle);\ |
424 | var cos = Math.cos(obj.angle);\ |
428 | var sin = Math.sin(obj.angle);\ |
425 | var sin = Math.sin(obj.angle);\ |
429 | var xc = obj.rotation_center[0];\ |
426 | var xc = obj.rotation_center[0];\ |
430 | var yc = obj.rotation_center[1];\ |
427 | var yc = obj.rotation_center[1];\ |
431 | var x_r = parseInt((cos * (mx - xc)) + (sin * (my - yc)) + xc);\ |
428 | var x_r = parseInt((cos * (mx - xc)) + (sin * (my - yc)) + xc);\ |
432 | var y_r = parseInt((cos * (my - yc)) - (sin * (mx - xc)) + yc);\ |
429 | var y_r = parseInt((cos * (my - yc)) - (sin * (mx - xc)) + yc);\ |
433 | return {x:x_r,y:y_r};};"); |
430 | return {x:x_r,y:y_r};};"); |
434 | break; |
431 | break; |
435 | - | ||
436 | case JS_FIND_ANGLE: |
432 | case JS_FIND_ANGLE: |
437 | fprintf(js_include_file,"\n/* function find_angle() */ function find_angle(xc,yc,x1,y1){var dx = x1 - xc;var dy = yc - y1;return Math.atan2(dx,dy);};"); |
433 | fprintf(js_include_file,"\n/* function find_angle() */ function find_angle(xc,yc,x1,y1){var dx = x1 - xc;var dy = yc - y1;return Math.atan2(dx,dy);};"); |
438 | break; |
434 | break; |
439 | - | ||
440 | case DRAG_EXTERNAL_IMAGE: |
435 | case DRAG_EXTERNAL_IMAGE: |
441 | /* |
436 | /* |
442 | the external_canvas is already created: it needs to be FIRST in order to do some drawing onto it |
437 | the external_canvas is already created: it needs to be FIRST in order to do some drawing onto it |
443 | reply is object{} and identical to reply from dragstuff library for drag&drop&click |
438 | reply is object{} and identical to reply from dragstuff library for drag&drop&click |
444 | */ |
439 | */ |
445 | fprintf(js_include_file,"\n/* drag external images */\ |
440 | fprintf(js_include_file,"\n/* drag external images */\ |
446 | var external_ctx = external_canvas.getContext(\"2d\");\ |
441 | var external_ctx = external_canvas.getContext(\"2d\");\ |
447 | var external_canvas_rect = external_canvas.getBoundingClientRect();\ |
442 | var external_canvas_rect = external_canvas.getBoundingClientRect();\ |
448 | canvas_div.addEventListener(\"mousedown\",setxy,false);\ |
443 | canvas_div.addEventListener(\"mousedown\",setxy,false);\ |
449 | canvas_div.addEventListener(\"mouseup\",dragstop,false);\ |
444 | canvas_div.addEventListener(\"mouseup\",dragstop,false);\ |
450 | canvas_div.addEventListener(\"mousemove\",dragxy,false);\ |
445 | canvas_div.addEventListener(\"mousemove\",dragxy,false);\ |
Line 556... | Line 551... | ||
556 | };\ |
551 | };\ |
557 | } else {\ |
552 | } else {\ |
558 | selected_image = null;\ |
553 | selected_image = null;\ |
559 | };\ |
554 | };\ |
560 | };"); |
555 | };"); |
561 | break; |
556 | break; |
562 | - | ||
563 | case DRAW_EXTERNAL_IMAGE: |
557 | case DRAW_EXTERNAL_IMAGE: |
564 | /* |
558 | /* |
565 | the external_canvas is already created: it needs to be FIRST in order to do some drawing onto it |
559 | the external_canvas is already created: it needs to be FIRST in order to do some drawing onto it |
566 | only drag_xy ! |
560 | only drag_xy ! |
567 | snaptogrid | xsnaptogrid | ysnaptogrid works |
561 | snaptogrid | xsnaptogrid | ysnaptogrid works |
568 | 14/5/2019 |
562 | 14/5/2019 |
569 | on heavy styled wims (unice.fr etc problems with mouse? |
563 | on heavy styled wims (unice.fr etc problems with mouse? |
570 | now uniform method of retreiving mouse coordinates getMouse() |
564 | now uniform method of retreiving mouse coordinates getMouse() |
571 | */ |
565 | */ |
572 | fprintf(js_include_file,"\n/* draw external images */\ |
566 | fprintf(js_include_file,"\n/* draw external images */\ |
573 | function draw_external_image(URL,sx,sy,swidth,sheight,x0,y0,width,height,use_offset,resize){\ |
567 | function draw_external_image(URL,sx,sy,swidth,sheight,x0,y0,width,height,use_offset,resize){\ |
574 | var external_ctx = image_copy_canvas.getContext(\"2d\");\n\ |
568 | var external_ctx = image_copy_canvas.getContext(\"2d\");\n\ |
575 | var image = new Image();\ |
569 | var image = new Image();\ |
576 | image.src = URL;\ |
570 | image.src = URL;\ |
577 | image.onload = function(){\ |
571 | image.onload = function(){\ |
Line 592... | Line 586... | ||
592 | if(use_offset == 4 ){img[5] = parseInt(img[5] - 0.5*width);img[6] = parseInt(img[6] - 0.5*height);};\ |
586 | if(use_offset == 4 ){img[5] = parseInt(img[5] - 0.5*width);img[6] = parseInt(img[6] - 0.5*height);};\ |
593 | img[7] = width;img[8] = height;\ |
587 | img[7] = width;img[8] = height;\ |
594 | external_ctx.drawImage(img[0],img[1],img[2],img[3],img[4],img[5],img[6],img[7],img[8]);\ |
588 | external_ctx.drawImage(img[0],img[1],img[2],img[3],img[4],img[5],img[6],img[7],img[8]);\ |
595 | };\ |
589 | };\ |
596 | };"); |
590 | };"); |
597 | break; |
591 | break; |
598 | - | ||
599 | case DRAW_BEZIER: |
592 | case DRAW_BEZIER: |
600 | fprintf(js_include_file,"\n/* draw bezier curve */\ |
593 | fprintf(js_include_file,"\n/* draw bezier curve */\ |
601 | if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\ |
594 | if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\ |
602 | 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){\ |
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){\ |
603 | var obj;\ |
596 | var obj;\ |
604 | if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\ |
597 | if( document.getElementById(\"wims_canvas%d\"+canvas_type) ){\ |
605 | obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\ |
598 | obj = document.getElementById(\"wims_canvas%d\"+canvas_type);\ |
Line 618... | Line 611... | ||
618 | var color = \"rgba(\"+fill_color+\",\"+fill_opacity+\")\";\ |
611 | var color = \"rgba(\"+fill_color+\",\"+fill_opacity+\")\";\ |
619 | if(use_filled > 1 ){ if(! all_fill_patterns[use_filled] ){ var pat = create_Pattern(0,0,use_filled,color); all_fill_patterns[use_filled] = pat;};ctx.fillStyle = all_fill_patterns[use_filled]; } else { ctx.fillStyle = color;};\ |
612 | if(use_filled > 1 ){ if(! all_fill_patterns[use_filled] ){ var pat = create_Pattern(0,0,use_filled,color); all_fill_patterns[use_filled] = pat;};ctx.fillStyle = all_fill_patterns[use_filled]; } else { ctx.fillStyle = color;};\ |
620 | ctx.stroke();\ |
613 | ctx.stroke();\ |
621 | ctx.restore();\ |
614 | ctx.restore();\ |
622 | };",canvas_root_id,canvas_root_id,canvas_root_id); |
615 | };",canvas_root_id,canvas_root_id,canvas_root_id); |
623 | break; |
616 | break; |
624 | - | ||
625 | case DRAW_GRIDFILL:/* not used for userdraw */ |
617 | case DRAW_GRIDFILL:/* not used for userdraw */ |
626 | fprintf(js_include_file,"\n/* draw gridfill */\ |
618 | fprintf(js_include_file,"\n/* draw gridfill */\ |
627 | var grid_fill_pattern;\ |
619 | var grid_fill_pattern;\ |
628 | function draw_gridfill(canvas_type,x0,y0,dx,dy,linewidth,color,opacity,xsize,ysize,use_userdraw){\ |
620 | function draw_gridfill(canvas_type,x0,y0,dx,dy,linewidth,color,opacity,xsize,ysize,use_userdraw){\ |
629 | if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\ |
621 | if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\ |
630 | var fc = %d+canvas_type;\ |
622 | var fc = %d+canvas_type;\ |
631 | var obj = create_canvas%d(fc,xsize,ysize);\ |
623 | var obj = create_canvas%d(fc,xsize,ysize);\ |
632 | var ctx = obj.getContext('2d');\ |
624 | var ctx = obj.getContext('2d');\ |
633 | var x,y;\ |
625 | var x,y;\ |
634 | ctx.fillStyle='rgba(255,255,255,0.01)';\ |
626 | ctx.fillStyle='rgba(255,255,255,0.01)';\ |
635 | ctx.rect(0,0,xsize,ysize);\ |
627 | ctx.rect(0,0,xsize,ysize);\ |
636 | ctx.fill();\ |
628 | ctx.fill();\ |
637 | ctx.lineWidth = linewidth;\ |
629 | ctx.lineWidth = linewidth;\ |
638 | ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\ |
630 | ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\ |
639 | for( x = 0 ; x <= xsize ; x = x + dx ){\ |
631 | for( x = 0 ; x <= xsize ; x = x + dx ){\ |
640 | ctx.beginPath();\ |
632 | ctx.beginPath();\ |
641 | ctx.moveTo(x,0);\ |
633 | ctx.moveTo(x,0);\ |
Line 653... | Line 645... | ||
653 | if( use_userdraw ){\ |
645 | if( use_userdraw ){\ |
654 | grid_fill_pattern = ctx;\ |
646 | grid_fill_pattern = ctx;\ |
655 | } else {\ |
647 | } else {\ |
656 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);};return;\ |
648 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);};return;\ |
657 | };",canvas_root_id,canvas_root_id); |
649 | };",canvas_root_id,canvas_root_id); |
658 | break; |
650 | break; |
659 | - | ||
660 | case DRAW_IMAGEFILL:/* not used for userdraw */ |
651 | case DRAW_IMAGEFILL:/* not used for userdraw */ |
661 | fprintf(js_include_file,"\n/* draw imagefill */\ |
652 | fprintf(js_include_file,"\n/* draw imagefill */\ |
662 | function draw_imagefill(canvas_type,x0,y0,URL,xsize,ysize,use_userdraw,use_scaling){\ |
653 | function draw_imagefill(canvas_type,x0,y0,URL,xsize,ysize,use_userdraw,use_scaling){\ |
663 | var fc = %d+canvas_type;\ |
654 | var fc = %d+canvas_type;\ |
664 | var obj = create_canvas%d(fc,xsize,ysize);\ |
655 | var obj = create_canvas%d(fc,xsize,ysize);\ |
665 | var ctx = obj.getContext('2d');\ |
656 | var ctx = obj.getContext('2d');\ |
666 | var img = new Image();\ |
657 | var img = new Image();\ |
Line 683... | Line 674... | ||
683 | setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\ |
674 | setTimeout(function(){ filltoborder( x0,y0,'red','red',canvas_type,true,ctx); },500);\ |
684 | };\ |
675 | };\ |
685 | };\ |
676 | };\ |
686 | };",canvas_root_id,canvas_root_id); |
677 | };",canvas_root_id,canvas_root_id); |
687 | break; |
678 | break; |
688 | - | ||
689 | case DRAW_DOTFILL:/* not used for userdraw */ |
679 | case DRAW_DOTFILL:/* not used for userdraw */ |
690 | fprintf(js_include_file,"\n/* draw dotfill */\ |
680 | fprintf(js_include_file,"\n/* draw dotfill */\ |
691 | var dot_fill_pattern;\ |
681 | var dot_fill_pattern;\ |
692 | function draw_dotfill(canvas_type,x0,y0,dx,dy,radius,color,opacity,xsize,ysize,use_userdraw){\ |
682 | function draw_dotfill(canvas_type,x0,y0,dx,dy,radius,color,opacity,xsize,ysize,use_userdraw){\ |
693 | if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\ |
683 | if( dx == 0 || dy == 0 ){alert(\"increment is zero !!! \");return;};\ |
Line 702... | Line 692... | ||
702 | ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\ |
692 | ctx.strokeStyle=\"rgba(\"+color+\",0.01)\";\ |
703 | for( x = 0 ; x < xsize ; x = x + dx ){\ |
693 | for( x = 0 ; x < xsize ; x = x + dx ){\ |
704 | for( y = 0 ; y < ysize ; y = y + dy ){\ |
694 | for( y = 0 ; y < ysize ; y = y + dy ){\ |
705 | ctx.beginPath();\ |
695 | ctx.beginPath();\ |
706 | ctx.arc(x,y,radius,0,2*Math.PI,false);\ |
696 | ctx.arc(x,y,radius,0,2*Math.PI,false);\ |
707 | ctx.closePath();\ |
697 | ctx.closePath();\ |
708 | ctx.fill();\ |
698 | ctx.fill();\ |
709 | };\ |
699 | };\ |
710 | };\ |
700 | };\ |
711 | if( use_userdraw ){\ |
701 | if( use_userdraw ){\ |
712 | dot_fill_pattern = ctx;\ |
702 | dot_fill_pattern = ctx;\ |
Line 835... | Line 825... | ||
835 | };\ |
825 | };\ |
836 | ctx.closePath();\ |
826 | ctx.closePath();\ |
837 | ctx.stroke();\ |
827 | ctx.stroke();\ |
838 | if( use_userdraw ){\ |
828 | if( use_userdraw ){\ |
839 | diamond_fill_pattern = ctx;\ |
829 | diamond_fill_pattern = ctx;\ |
840 | }\ |
830 | }\ |
841 | else\ |
831 | else\ |
842 | {\ |
832 | {\ |
843 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\ |
833 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\ |
844 | };\ |
834 | };\ |
845 | return;\ |
835 | return;\ |
846 | }",canvas_root_id,canvas_root_id); |
836 | }",canvas_root_id,canvas_root_id); |
Line 881... | Line 871... | ||
881 | {\ |
871 | {\ |
882 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\ |
872 | setTimeout(function(){ filltoborder( x0,y0,color,color,canvas_type,true,ctx); },500);\ |
883 | };\ |
873 | };\ |
884 | return;};",canvas_root_id,canvas_root_id); |
874 | return;};",canvas_root_id,canvas_root_id); |
885 | break; |
875 | break; |
886 | - | ||
887 | case DRAW_LINES:/* used for js-tracing */ |
876 | case DRAW_LINES:/* used for js-tracing */ |
888 | fprintf(js_include_file,"\n/* draw lines */\ |
877 | fprintf(js_include_file,"\n/* draw lines */\ |
889 | function calc_line(x1,x2,y1,y2){\ |
878 | function calc_line(x1,x2,y1,y2){\ |
890 | var marge = 2;\ |
879 | var marge = 2;\ |
891 | if(x1 < x2+marge && x1>x2-marge){\ |
880 | if(x1 < x2+marge && x1>x2-marge){\ |
Line 915... | Line 904... | ||
915 | }\ |
904 | }\ |
916 | ctx.restore();\ |
905 | ctx.restore();\ |
917 | return;\ |
906 | return;\ |
918 | };"); |
907 | };"); |
919 | break; |
908 | break; |
920 | - | ||
921 | case DRAW_CROSSHAIRS:/* used for tracing */ |
909 | case DRAW_CROSSHAIRS:/* used for tracing */ |
922 | fprintf(js_include_file,"\n/* draw crosshairs */\ |
910 | fprintf(js_include_file,"\n/* draw crosshairs */\ |
923 | var draw_crosshairs = function(ctx,x_points,y_points,line_width,crosshair_size,stroke_color,stroke_opacity,use_rotate,angle){\ |
911 | var draw_crosshairs = function(ctx,x_points,y_points,line_width,crosshair_size,stroke_color,stroke_opacity,use_rotate,angle){\ |
924 | ctx.save();\ |
912 | ctx.save();\ |
925 | if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\ |
913 | if(use_rotate == 1 ){ctx.rotate(angle*Math.PI/180);}\ |
Line 1617... | Line 1605... | ||
1617 | if(skip == 0 ){\ |
1605 | if(skip == 0 ){\ |
1618 | skip = parseInt(1.4*font_size/ystep);\ |
1606 | skip = parseInt(1.4*font_size/ystep);\ |
1619 | disp_cnt = cnt.toFixed(prec);\ |
1607 | disp_cnt = cnt.toFixed(prec);\ |
1620 | if(f_x == -1 ){corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\ |
1608 | if(f_x == -1 ){corr = parseInt(zero_x - (2 + tics_length + ctx.measureText(disp_cnt).width));};\ |
1621 | ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\ |
1609 | ctx.fillText(disp_cnt,parseInt(corr),parseInt(p+(0.4*font_size)));\ |
1622 | } else {\ |
1610 | } else {\ |
1623 | skip--;\ |
1611 | skip--;\ |
1624 | };\ |
1612 | };\ |
1625 | cnt = cnt + ymajor;\ |
1613 | cnt = cnt + ymajor;\ |
1626 | };\ |
1614 | };\ |
1627 | };\ |
1615 | };\ |
Line 1800... | Line 1788... | ||
1800 | };\ |
1788 | };\ |
1801 | };\ |
1789 | };\ |
1802 | ctx.restore();\ |
1790 | ctx.restore();\ |
1803 | };",canvas_root_id,canvas_root_id,canvas_root_id); |
1791 | };",canvas_root_id,canvas_root_id,canvas_root_id); |
1804 | break; |
1792 | break; |
1805 | - | ||
1806 | case DRAW_JSBOXPLOT: |
1793 | case DRAW_JSBOXPLOT: |
1807 | fprintf(js_include_file,"\n/* draw jsboxplots */\ |
1794 | fprintf(js_include_file,"\n/* draw jsboxplots */\ |
1808 | if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\ |
1795 | if( typeof(all_fill_patterns) != 'object' ){ var all_fill_patterns = []; };\ |
1809 | function statistics(data){\ |
1796 | function statistics(data){\ |
1810 | var len = data.length;\ |
1797 | var len = data.length;\ |