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 |
|
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; |
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 | |
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 | |
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 | |
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 | |
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 | |
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: |
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 | |
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 |