<DOCTYPE html> <html> <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> <!-- Copyright (c) 2012 The Native Client Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> <head> <style type="text/css"> body { font:12px Consolas; } button { font:14px Consolas; } textarea { font:14px Consolas; } #id_div_progress_status { font:12px Consolas; } #id_div_progress { position: absolute; top: 20%; left: 30%; right: 30%; z-index: 3; background-color:white; border:1px solid #000000; visibility: hidden; z-index: 1; } progress { background-color: #f3f3f3; border: 0; height: 18px; width: 200px; border-radius: 9px; } progress::-webkit-progress-bar { background-color: #f3f3f3; border: 1px solid #000000; padding: 2px 2px; height: 20px; border-radius: 0px; } progress::-webkit-progress-value { background-color: #22BB22; border: 0px; height: 14px; border-radius: 0px; } #id_div_listener { position: relative; } #id_div_frame_embed { position: absolute; top: 2px; left: 2px; z-index: 0; } #BGCanvas { border:1px solid #000000; } #id_div_helper_cmd_0 { margin-left: 5px; } </style> <title>Mesh Viewer Web Edition</title> </head> <script type="text/javascript"> //Base data Setup : GLOBAL STYLE g_div_frame_embed_save = ''; g_div_frame_embed = null; g_txtarea_code_src = null; g_div_helper_cmd = [null, null]; g_div_helper_args = null; g_div_helper_cmnt = null; g_div_helper_vars = null; g_div_alphabet = null; g_div_progress = null; g_div_progress_status = null; g_progress_bar = null; g_var_progress_bar = -1; g_frame_embed = null; //This is the module pointer : can be either the NaCl or Em one depending on the context. g_embed_module = null; var g_autosave_timer = 4.0; var g_autosave_time = 4.0; var g_code_addin = [' custom setmesh "#CODE#" ', '#CODE#']; var g_code_base = []; var CodeDictionnary = []; var g_code_id = 0; g_code_base[0] = "//This is a comment\nsc#f8f afcb 1 1 1 0"; g_code_base[1] = "//This is a comment\naddlight 0.0 position (4 -1 -4) color (.0 .2 .5 1)\naddlight 0.0 position (8 2 6) color #ffff\nshowgizmo true\nshowlight true"; function machinchose() { return 'test machin '; } function GetTextAreaCodeSrc() { return g_txtarea_code_src; } function GetDivProgress() { return g_div_progress; } function GetProgressBar() { return g_progress_bar; } function GetDivProgressStatus() { return g_div_progress_status; } function GetDivEmbedData() { return g_div_frame_embed; } function GetDivEmbedDataSave() { return g_div_frame_embed_save; } function GetFrameData() { return g_frame_embed; } //Communication with iframe content. function InitModuleVar() { g_embed_module = GetiFrameModuleVar(); } function GetiFrameDivEmbed() { return (!g_frame_embed) ? (null) : (g_frame_embed.contentWindow.GetDivEmbed()); } function GetiFrameModuleVar() { return (!g_frame_embed) ? (null) : (g_frame_embed.contentWindow.GetEmbedModule()); } function IsUsingNaCl() { return window.chrome; } </script> <script src="../javascript/utils.js"></script> <script src="../javascript/progressstatus.js"></script> <script type="text/javascript"> //Used by typedictionnary.js function GetCmdDictionnary() { return CodeDictionnary[g_code_id]; } g_code_id = 1; </script> <script src="../javascript/typedictionnary.js"></script> <!-- Init Scene setup dictionnary --> <script type="text/javascript"> CodeDictionnary[g_code_id] = new TypeDictionnary("SceneSetup"); </script> <script src="./scenesetupdictionnary.js"></script> <!-- Init Easy mesh dictionnary --> <script type="text/javascript"> g_code_id--; CodeDictionnary[g_code_id] = new TypeDictionnary("EasyMesh"); </script> <script src="./easymeshdictionnary.js"></script> <!-- Revert datas to normal --> <script type="text/javascript"> g_code_id = 0; </script> <script type="text/javascript"> //Base init for all datas function VarInit() { //Init frame variable first. g_frame_embed = document.getElementById('id_frame_embed'); //This is in an iframe. g_div_frame_embed = g_frame_embed.contentDocument.getElementById('id_div_frame_embed'); //The rest of these are in this page. g_txtarea_code_src = document.getElementById('id_txtarea_code_src'); g_div_helper_cmd[0] = document.getElementById('id_div_helper_cmd_0'); g_div_helper_cmd[1] = document.getElementById('id_div_helper_cmd_1'); g_div_helper_args = document.getElementById('id_div_helper_args'); g_div_helper_cmnt = document.getElementById('id_div_helper_cmnt'); g_div_helper_vars = document.getElementById('id_div_helper_vars'); g_div_alphabet = document.getElementById('id_div_alphabet'); g_div_progress = document.getElementById('id_div_progress'); g_div_progress_status = document.getElementById('id_div_progress_status'); g_progress_bar = document.getElementById('id_progress_bar'); } //Base init function Init() { VarInit(); //Put here any cookie update if (DoesLolCookieExist("LolMeshViewerAutosave")) { var lol_cookie = GetLolCookie("LolMeshViewerAutosave", false); var value_list = lol_cookie.m_value.split(";"); for (var i = 0; i < g_code_base.length && i < value_list.length; i++) { g_code_base[i] = value_list[i]; var addins = g_code_addin[i].split('#CODE#'); for (var j = 0; j < addins.length; j++) if (addins[j] && addins[j] != '') g_code_base[i] = g_code_base[i].replace(addins[j], ""); } g_txtarea_code_src.value = g_code_base[g_code_id]; } else if (!g_txtarea_code_src.value) g_txtarea_code_src.value = g_code_base[g_code_id]; //Fill the TOC if (!g_div_alphabet.innerHTML) { for (var i = 0; i < CodeDictionnary.length; i++) { g_code_id = i; var new_toc = BuildTOC(true); var pattern = new RegExp("^[a-zA-Z\.]"); while (pattern.test(new_toc)) new_toc = new_toc.replace(pattern, "<b>$&"); pattern = new RegExp("[a-zA-Z\.]$"); while (pattern.test(new_toc)) new_toc = new_toc.replace(pattern, "$&</b>"); pattern = new RegExp("([a-zA-Z])([\.])"); while (pattern.test(new_toc)) new_toc = new_toc.replace(pattern, "$1</b>$2"); pattern = new RegExp("([\.])([a-zA-Z])"); while (pattern.test(new_toc)) new_toc = new_toc.replace(pattern, "$1<b>$2"); CodeDictionnary[i].m_alphabet = new_toc; } g_code_id = 0; InitEditValues(); } //NaCl Specific if (IsUsingNaCl()) { DynLoadFile("../javascript/naclloading.js"); g_frame_embed.src = 'meshviewer.nacl.html'; } else g_frame_embed.src = 'meshviewer.em.html'; g_frame_embed.onload = function() { VarInit(); } //Tick has been done, start Tick window.setTimeout("Tick(.2)", 200); } function Tick(seconds) { window.setTimeout("Tick(.1)", 100); var text_src = g_txtarea_code_src; var div_cmds = g_div_helper_cmd; var div_args = g_div_helper_args; var div_cmnt = g_div_helper_cmnt; var div_vars = g_div_helper_vars; CmdLookup(div_cmds, div_args, div_cmnt, div_vars, text_src); g_autosave_timer -= seconds; if (g_autosave_timer < 0.0) { g_autosave_timer = g_autosave_time; StoreCodeCookie(); } } function StoreCodeCookie() { var result = ''; for (var i = 0; i < g_code_base.length; i++) { result += g_code_addin[i].replace('#CODE#', g_code_base[i]) + ";"; } StoreLolCookie(new LolCookieDays("LolMeshViewerAutosave", result, 10)); } function StoreTextAreaValue() { g_code_base[g_code_id] = GetTextAreaCodeSrc().value; } function ExchangeSetup() { StoreTextAreaValue(); g_code_id = (g_code_id + 1) % 2; InitEditValues(); } function InitEditValues() { GetTextAreaCodeSrc().value = g_code_base[g_code_id]; g_div_alphabet.innerHTML = ' Table of content<br> [' + CodeDictionnary[g_code_id].m_alphabet + '] <br> '; } //Handle message from the NaCl module function ModuleSentMessage(message) { alert('Module sent message: ' + message.data); } //When module is live, it calls this. function ModuleIsLive() { for (var i = 0; i < g_code_base.length; i++) { SendMessageToModule(); ExchangeSetup(); } } //Called by the "Send Mesh Command !" button function SendMessageToModule() { StoreTextAreaValue(); if (g_embed_module) { StoreCodeCookie(); g_embed_module.SendMessage(g_code_addin[g_code_id].replace('#CODE#', g_code_base[g_code_id])); } else alert("Module not loaded !"); } </script> <body> <h1>Mesh Viewer : Web version.</h1> <table border="0" cellpadding="0" cellspacing="0"> <tr height="404"> <td> <p> <div id="final_div"> <div id="id_div_listener" align="center" style="width:800px;height:400px"> <canvas id="BGCanvas" width="802" height="402"></canvas> <div id="id_div_progress"> <br> <progress id="id_progress_bar" align="left"></progress> <div id="id_div_progress_status">....</div> </div> <div id="id_div_frame_embed"> <iframe onload="Init();" id="id_frame_embed" src="../javascript/empty.html" width=800 height=400 frameborder=0 scrolling=no></iframe> </div> </div> </div> </p> </td> <td> </td> </tr> <tr> <td rowspan="2"> <table border="0" cellpadding="0" cellspacing="0" width="802"> <tr> <td align="left"> <div><button onclick="SendMessageToModule()">Update program</button></div> </td> <td align="right"> <div><button onclick="ExchangeSetup()">Change edit data</button></div> </td> </tr> </table> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td height="1%"> <div id="bouton"> <textarea autofocus id="id_txtarea_code_src" rows="6" cols="94" style="font: 14px Consolas; resize: none;"></textarea> </div> </td> <td valign="top" rowspan="3"> </td> <td valign="top" rowspan="3"> <div><b><u>Variable Types usage :</u></b></div> <div id="id_div_helper_vars"></div> </td> </tr> <tr> <td height="1%"> <div id="id_div_alphabet"></div> </td> </tr> <tr> <td valign="top"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td valign="top"><div id="id_div_helper_cmd_0"></div></td> <td valign="top"><div id="id_div_helper_cmd_1"></div></td> <td valign="top"><div id="id_div_helper_args" ></div></td> <td valign="top"><div id="id_div_helper_cmnt" ></div></td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </body> </html>