view Platforms/WebAssembly/wasm-application.js @ 223:d30a10d574ec am

refactoring continued - not working
author am@osimis.io
date Thu, 14 Jun 2018 10:57:02 +0200
parents
children 1fa4c65c7e1b
line wrap: on
line source



// Global context used by "library.js"
var viewport = null;
var WasmWebService_NotifyError = null;
var WasmWebService_NotifySuccess = null;
//var NotifyRestApiGet = null;
var NotifyUpdateContent = null;

function UpdateContentThread()
{
  if (NotifyUpdateContent != null) {
    NotifyUpdateContent();
  }
  
  setTimeout(UpdateContentThread, 100);  // Update the viewport content every 100ms if need be
}


function GetUriParameters()
{
  var parameters = window.location.search.substr(1);

  if (parameters != null &&
      parameters != '')
  {
    var result = {};
    var tokens = parameters.split('&');

    for (var i = 0; i < tokens.length; i++) {
      var tmp = tokens[i].split('=');
      if (tmp.length == 2) {
        result[tmp[0]] = decodeURIComponent(tmp[1]);
      }
    }
    
    return result;
  }
  else
  {
    return {};
  }
}



function InitializeWasmApplication(canvasId)
{
  console.log("Initializing wasm-app");
  viewport = WebAssemblyViewport(StoneFrameworkModule, 'canvas');

  /******************** */
  SetStartupParameter = StoneFrameworkModule.cwrap('SetStartupParameter', null, [ 'string', 'string' ]);
  CreateWasmApplication = StoneFrameworkModule.cwrap('CreateWasmApplication', null, [ ], [ ]);
  StartWasmApplication = StoneFrameworkModule.cwrap('StartWasmApplication', null, [ ], [ ]);
                                 
  /******************** */

  // NotifyGlobalParameter = StoneFrameworkModule.cwrap('NotifyGlobalParameter', null,
  //                                      [ 'string', 'string' ]);
  // ViewportUpdate = StoneFrameworkModule.cwrap('ViewportUpdate', null,
  //                                      [ 'string' ]);
  WasmWebService_NotifySuccess = StoneFrameworkModule.cwrap('WasmWebService_NotifySuccess', null,
                                              [ 'number', 'string', 'array', 'number', 'number' ]);
  WasmWebService_NotifyError = StoneFrameworkModule.cwrap('WasmWebService_NotifyError', null,
                                            [ 'number', 'string', 'number' ]);
  //NotifyRestApiGet = Module.cwrap('NotifyRestApiGet', null, [ 'number', 'array', 'number' ]);
  NotifyUpdateContent = StoneFrameworkModule.cwrap('NotifyUpdateContent', null, [  ]);

  // Prevent scrolling
  document.body.addEventListener('touchmove', function(event) {
    event.preventDefault();
  }, false);
  
  document.getElementById('canvas').onclick = function() {
    viewport.Redraw();
  };


  /************************************** */
  CreateWasmApplication();

  // parse uri and transmit the parameters to the app before initializing it
  var parameters = GetUriParameters();

  for (var key in parameters) {
    if (parameters.hasOwnProperty(key)) {  
      SetStartupParameter(key, parameters[key]);
    }
  }

  StartWasmApplication();
  /************************************** */

  UpdateContentThread();
}

if (!('WebAssembly' in window)) {
  alert('Sorry, your browser does not support WebAssembly :(');
} else {
  
}