| @@ -0,0 +1,187 @@ | |||||
| <!doctype html> | |||||
| <html lang="en-us"> | |||||
| <head> | |||||
| <meta charset="utf-8"> | |||||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |||||
| <title>YOUR PAGE NAME HERE</title> | |||||
| <style> | |||||
| .emscripten | |||||
| { | |||||
| padding-right: 0; | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| display: block; | |||||
| } | |||||
| textarea.emscripten | |||||
| { | |||||
| font-family: monospace; | |||||
| width: 80%; | |||||
| } | |||||
| div.emscripten | |||||
| { | |||||
| text-align: center; | |||||
| } | |||||
| div.emscripten_border | |||||
| { | |||||
| border: 1px solid black; | |||||
| position: absolute; | |||||
| left: 0px; | |||||
| top: 0px; | |||||
| } | |||||
| /* the canvas *must not* have any border or padding, or mouse coords will be wrong */ | |||||
| canvas.emscripten | |||||
| { | |||||
| border: 0px none; | |||||
| } | |||||
| </style> | |||||
| </head> | |||||
| <body> | |||||
| <div class="emscripten_border" id="id_div_embed_data"> | |||||
| <canvas class="emscripten" id="id_cvas_render" oncontextmenu="event.preventDefault()"></canvas> | |||||
| </div> | |||||
| <!-- this part is a little weird, I don't really know what to do with it. --> | |||||
| <div class="emscripten"> | |||||
| <input type="checkbox" id="id_ckbox_resize">Resize canvas | |||||
| <input type="checkbox" id="id_ckbox_pointer_lock" checked>Lock/hide mouse pointer | |||||
| | |||||
| <input type="button" value="Fullscreen" onclick="ClickFullscreen()"> | |||||
| </div> | |||||
| <textarea class="emscripten" id="id_txt_output" rows="8"> </textarea> | |||||
| <script type='text/javascript'> | |||||
| // connect to canvas | |||||
| var Module = | |||||
| { | |||||
| output: document.getElementById('id_txt_output'), | |||||
| canvas: document.getElementById('id_cvas_render'), | |||||
| preRun: [], | |||||
| postRun: [], | |||||
| clickFullsreen: function() | |||||
| { | |||||
| Module.requestFullScreen(document.getElementById('id_ckbox_pointer_lock').checked, | |||||
| document.getElementById('id_ckbox_resize').checked); | |||||
| }, | |||||
| print: (function() | |||||
| { | |||||
| if (this.output) | |||||
| { | |||||
| this.output.value = ''; // clear browser cache | |||||
| return function(text) | |||||
| { | |||||
| this.text = Array.prototype.slice.call(arguments).join(' '); | |||||
| // These replacements are necessary if you render to raw HTML | |||||
| /* | |||||
| text = text.replace(/&/g, "&"); | |||||
| text = text.replace(/</g, "<"); | |||||
| text = text.replace(/ >/g, ">"); | |||||
| text = text.replace('\n', '<br>', 'g'); | |||||
| */ | |||||
| this.output.value += text + "\n"; | |||||
| this.output.scrollTop = 99999; // focus on bottom | |||||
| }; | |||||
| } | |||||
| else | |||||
| return ''; | |||||
| })(), | |||||
| printErr: function(text) | |||||
| { | |||||
| text = Array.prototype.slice.call(arguments).join(' '); | |||||
| if (0) // XXX disabled for safety typeof dump == 'function') | |||||
| dump(text + '\n'); // fast, straight to the real console | |||||
| else | |||||
| console.log(text); | |||||
| }, | |||||
| //Load Status handling | |||||
| setStatus: function(text, new_value, new_max) | |||||
| { | |||||
| var tmp_status = ''; | |||||
| var tmp_value = undefined; | |||||
| var tmp_max = undefined; | |||||
| var should_hide = false; | |||||
| //Clear any interval put on this Status. | |||||
| if (Module.setStatus.interval) | |||||
| clearInterval(Module.setStatus.interval); | |||||
| //If value and max have been set, directly go for the win. | |||||
| if (new_value != undefined && new_max != undefined) | |||||
| { | |||||
| tmp_status = text; | |||||
| tmp_value = new_value; | |||||
| tmp_max = new_max; | |||||
| } | |||||
| else | |||||
| //Else do the complicated stuff. | |||||
| { | |||||
| var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); | |||||
| if (m) | |||||
| { | |||||
| text = m[1]; | |||||
| tmp_value = parseInt(m[2]) * 100; | |||||
| tmp_max = parseInt(m[4]) * 100; | |||||
| } | |||||
| else | |||||
| should_hide = true; | |||||
| } | |||||
| if (parent) | |||||
| { | |||||
| //parent.UpdateProgressBarValue(tmp_status, tmp_value, tmp_max); | |||||
| //parent.HideProgressStatus(should_hide); | |||||
| } | |||||
| }, | |||||
| totalDependencies: 0, | |||||
| monitorRunDependencies: | |||||
| function(left) | |||||
| { | |||||
| this.totalDependencies = Math.max(this.totalDependencies, left); | |||||
| if (left) | |||||
| Module.setStatus('Downloading dependencies ', (this.totalDependencies - left), this.totalDependencies); | |||||
| else | |||||
| Module.setStatus('All downloads complete.', 1, 1); | |||||
| }, | |||||
| //IMPORTANT : This is the C -> Javascript wraping, add your functions list here. | |||||
| wrapup_list: [ {src_obj: null, func_name: 'DoSendMessage', c_func_name: 'C_Send', return_var: 'number', args: ['number', 'string'] } ], | |||||
| do_wrapup: function() | |||||
| { | |||||
| for (var i = 0; i < this.wrapup_list.length; i++) | |||||
| { | |||||
| if (!this.wrapup_list[i].src_obj) | |||||
| this.wrapup_list[i].src_obj = this; | |||||
| this.wrapup_list[i].src_obj[this.wrapup_list[i].func_name] = | |||||
| cwrap(this.wrapup_list[i].c_func_name, | |||||
| this.wrapup_list[i].return_var, | |||||
| this.wrapup_list[i].args); | |||||
| } | |||||
| }, | |||||
| //Module <-> Page communication setup | |||||
| SendMessage:function(message) | |||||
| { | |||||
| this.DoSendMessage(0, message); | |||||
| }, | |||||
| ModuleSendMessage:function(message) | |||||
| { | |||||
| alert(message); | |||||
| } | |||||
| }; | |||||
| </script> | |||||
| <!-- Copy this HTML in your site folder and put your built program script in the src. --> | |||||
| <script src="./meshviewer.em.js"></script> | |||||
| <!-- --> | |||||
| <script type='text/javascript'> | |||||
| //This call NEEDS TO BE after the .js include, because "cwrap" is set in it. | |||||
| Module.do_wrapup(); | |||||
| //Parent communication datas | |||||
| function GetDivEmbed() { return document.getElementById('id_div_embed_data'); } | |||||
| function GetEmbedModule() { return Module; } | |||||
| parent.InitModuleVar(); | |||||
| Module.setStatus('Please wait, calculating load balance ...', 0, 1); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||