Subversion Repositories wimsdev

Rev

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

Rev 15663 Rev 15665
Line 918... Line 918...
918
  else
918
  else
919
  {
919
  {
920
   fprintf(js_include_file,"userdraw_primitive = %d;",u);
920
   fprintf(js_include_file,"userdraw_primitive = %d;",u);
921
  }
921
  }
922
  break;
922
  break;
-
 
923
  /*
923
  /* images : identical ! to userdraw images,bogus_color */
924
  images : identical ! to userdraw images,bogus_color
-
 
925
  15/1/2021 : corrected long standing flaw regarding "centered" on external stuff
-
 
926
  tested: bitmap,svg,TeX [tested KaTeX]
-
 
927
  */
924
  case 20:
928
  case 20:
925
  fprintf(js_include_file,"var current_id = null;var external_div_cnt=0;function image_adjust(image,x,y){\
929
  fprintf(js_include_file,"var current_id = null;var external_div_cnt=0;\
-
 
930
  function image_adjust(image,x,y){\
926
   var centered = %d;\
931
   var centered = %d;\
927
   var w = parseInt(image.width);var h = parseInt(image.height);\
932
   var w = parseInt(image.width);var h = parseInt(image.height);\
-
 
933
   if(w == 0 || h == 0 ){\
-
 
934
    w = parseInt(window.getComputedStyle(image).width);\
-
 
935
    h = parseInt(window.getComputedStyle(image).height);\
-
 
936
   };\
928
   switch(centered){\
937
   switch(centered){\
929
    case 0: return [x,y];break;\
938
    case 0: return [x,y];break;\
930
    case 1: return [x,parseInt(y-0.5*h)];break;\
939
    case 1: return [x,parseInt(y-0.5*h)];break;\
931
    case 2: return [parseInt(x+0.5*h),y];break;\
940
    case 2: return [parseInt(x+0.5*h),y];break;\
932
    case 3: return [parseInt(x+0.5*h),parseInt(y-0.5*h)];break;\
941
    case 3: return [parseInt(x+0.5*h),parseInt(y-0.5*h)];break;\
933
    case 4: return [parseInt(x-0.5*w),parseInt(y-0.5*h)];break;\
942
    case 4: return [parseInt(x-0.5*w),parseInt(y-0.5*h)];break;\
934
    default: return [x,y];break;\
943
    default: return [x,y];break;\
935
   };\
944
   };\
-
 
945
  };\
936
  };place_image_on_canvas = function(id){\
946
  place_image_on_canvas = function(id){\
937
   var thing = document.getElementById(id);\
947
   var thing = document.getElementById(id);\
938
   var tag = thing.tagName;\
948
   var tag = thing.tagName;\
939
   if(tag == 'SVG'){draw_mathml_svg(thing,id);return;};\
949
   if(tag == 'SVG'){draw_mathml_svg(thing,id);return;};\
940
   if(tag == 'DIV' || tag == 'SPAN' || tag == 'P' || tag == 'TD' || tag == 'TH'){draw_mathml_div(thing,id);return;};\
950
   if(tag == 'DIV' || tag == 'SPAN' || tag == 'P' || tag == 'TD' || tag == 'TH'){draw_mathml_div(thing,id);return;};\
941
   var src = thing.src;\
951
   var src = thing.src;\
Line 944... Line 954...
944
   image.id = 'placed_'+id;\
954
   image.id = 'placed_'+id;\
945
   image.width = thing.width;\
955
   image.width = thing.width;\
946
   image.height = thing.height;\
956
   image.height = thing.height;\
947
   image.onload = function(){ current_id = id; };\
957
   image.onload = function(){ current_id = id; };\
948
   return;\
958
   return;\
-
 
959
  };\
949
  };function draw_mathml_div(thing,id){\
960
  function draw_mathml_div(thing,id){\
950
   var fix_div = document.createElement('DIV');\
961
   var fix_div = document.createElement('DIV');\
951
   var new_id='placed_'+external_div_cnt+'_'+id;\
962
   var new_id='placed_'+external_div_cnt+'_'+id;\
952
   fix_div.setAttribute('id',new_id);\
963
   fix_div.setAttribute('id',new_id);\
953
   var w = parseInt(thing.clientWidth);\
964
   var w = parseInt(thing.clientWidth);\
954
   var h = parseInt(thing.clientHeight);\
965
   var h = parseInt(thing.clientHeight);\
955
   fix_div.innerHTML = thing.innerHTML;\
966
   fix_div.innerHTML = thing.innerHTML;\
956
   fix_div.setAttribute('style','display:none;position;absolute;width:'+w+'px;height:'+h+'px');\
967
   fix_div.setAttribute('style','display:none;position;absolute;width:'+w+'px;height:'+h+'px');\
957
   fix_div.width = w;fix_div.height = h;\
968
   fix_div.width = w;fix_div.height = h;\
958
   canvas_div.appendChild(fix_div);\
969
   canvas_div.appendChild(fix_div);\
959
   current_id = new_id;\
970
   current_id = new_id;\
960
   external_div_cnt++;\
971
   external_div_cnt++;\
961
   return;\
972
   return;\
-
 
973
  };\
962
  };function draw_mathml_svg(thing,id){\
974
  function draw_mathml_svg(thing,id){\
963
   var fix_div = document.createElement('DIV');\
975
   var fix_div = document.createElement('DIV');\
964
   fix_div.setAttribute('style','display:none;position;relative');\
976
   fix_div.setAttribute('style','display:none;position;relative');\
965
   canvas_div.appendChild(fix_div);\
977
   canvas_div.appendChild(fix_div);\
966
   var image = new Image();\
978
   var image = new Image();\
967
   var svg_string = new XMLSerializer().serializeToString(thing);\
979
   var svg_string = new XMLSerializer().serializeToString(thing);\
Line 971... Line 983...
971
   image.src= url;\
983
   image.src= url;\
972
   image.id = 'placed_'+id;\
984
   image.id = 'placed_'+id;\
973
   image.onload = function(){\
985
   image.onload = function(){\
974
    current_id = image.id;\
986
    current_id = image.id;\
975
    fix_div.innerHTML='<img src='+image.src+' id='+image.id+' alt=\"this should not happen today...!\"/>';\
987
    fix_div.innerHTML='<img src='+image.src+' id='+image.id+' alt=\"this should not happen today...!\"/>';\
976
   };\
988
   };\
977
   return;\
989
   return;\
-
 
990
  };\
978
  };function images(x,y,event_which,num){\
991
  function images(x,y,event_which,num){\
979
   if(event_which == 1){ return;};\
992
   if(event_which == 1){ return;};\
980
   if(num == 1 && current_id){\
993
   if(num == 1 && current_id){\
981
    var xy = multi_snap_check(x,y,images_snap);\
994
    var xy = multi_snap_check(x,y,images_snap);\
982
    images_x.push(xy[0]);\
995
    images_x.push(xy[0]);\
983
    images_y.push(xy[1]);\
996
    images_y.push(xy[1]);\
984
    images_id.push(current_id);\
997
    images_id.push(current_id);\
985
    current_id = null;\
998
    current_id = null;\
986
   };\
999
   };\
987
   draw_images();\
1000
   draw_images();\
-
 
1001
  };\
988
  };function draw_images(){\
1002
  function draw_images(){\
989
   context_images.clearRect(0,0,xsize,ysize);\
-
 
990
   var xy;var img;var tag;\
1003
   var xy;var img;var tag;\
-
 
1004
   for(var i=0; i<2;i++){\
991
   for(var p = 0 ; p < images_x.length; p++){\
1005
    for(var p = 0 ; p < images_x.length; p++){\
992
    if( images_id[p] ){\
1006
     if( images_id[p] ){\
993
     img = document.getElementById(images_id[p]);\
1007
      img = document.getElementById(images_id[p]);\
994
     tag = img.tagName;\
1008
      tag = img.tagName;\
995
     xy = image_adjust(img,images_x[p],images_y[p]);\
1009
      xy = image_adjust(img,images_x[p],images_y[p]);\
996
     if( tag != 'IMG' ){\
1010
      if( tag != 'IMG' ){\
997
       img.setAttribute('style','display:inline-block;position:absolute;top:'+xy[1]+'px;left:'+xy[0]+'px;');\
1011
       img.setAttribute('style','display:block;position:absolute;top:'+xy[1]+'px;left:'+xy[0]+'px;');\
998
     }else{\
1012
      }else{\
999
      context_images.drawImage(img,xy[0],xy[1],img.width,img.height);\
1013
       context_images.drawImage(img,xy[0],xy[1],img.width,img.height);\
-
 
1014
      };\
1000
     };\
1015
     };\
1001
    };\
1016
    };\
1002
   };\
1017
   };\
-
 
1018
  };\
1003
  };var canvas_images = create_canvas%d(10%d,xsize,ysize);\
1019
  var canvas_images = create_canvas%d(10%d,xsize,ysize);\
1004
  var context_images = canvas_images.getContext(\"2d\");\
1020
  var context_images = canvas_images.getContext(\"2d\");\
1005
  context_images.font = multifont_family;\
1021
  context_images.font = multifont_family;\
1006
  context_images.fillStyle = \"rgba(\"+multifont_color+\",\"+multistrokeopacity[%d]+\")\";\
1022
  context_images.fillStyle = \"rgba(\"+multifont_color+\",\"+multistrokeopacity[%d]+\")\";\
1007
  var images_snap = multisnaptogrid[%d];\
1023
  var images_snap = multisnaptogrid[%d];\
1008
  var images_x = new Array();var images_y = new Array();\
1024
  var images_x = new Array();var images_y = new Array();\
Line 1305... Line 1321...
1305
   u,i,canvas_root_id,u,i,canvas_root_id,u);
1321
   u,i,canvas_root_id,u,i,canvas_root_id,u);
1306
 
1322
 
1307
 
1323
 
1308
 
1324
 
1309
*/
1325
*/
-
 
1326