/*! Hype EasyPad 1.07 copyright (c) 2020 RSWE. All rights reserved. */ /* * Version-History * 0.90 (Alpha) Initial release skeleton * 0.91 Sanctioned Interface by client * 0.92 State machine ready * 0.93 PAN States and initial video state * 0.94 Interface and corrections * 0.95 Image viewer, refactoring and corrections * 0.96 CEPH States * 0.97 States reside now in StateMachineGenerator * 0.99 3D States * 1.00 Beta, corrections before trial with client * 1.01 Minimal corrections * 1.02 Updates on Video Player * 1.03 Internet Explorer 11 and Video Player * 1.04 Updates on some states * 1.05 Minor 3D State update, setMode in API * 1.06 Minor corrections from client * 1.07 Added US-Features */ if("HypeEasyPad" in window === false) window['HypeEasyPad'] = (function () { // hold our single hypeDocument API var _hypeDocument; // remember all symbols on current scene var _symbolsOnScene; // remember state history changes var _stateHistory = []; // language used in interface var _language = 'DE'; // state shorthand and object var state = {}; // current scene name var _currentStateName = '_START'; // logging off by default var _log = false; // mode of application var _mode = 'web'; // asset URL with trainling slash var _assetFolderBaseUrl = null; // simple interface tranformations var _interface = {} // fetch state from generator (later JSON or server if wanted) var stateMachine = StateMachineGenerator.asObject(); /** * setHypeSingleton * @param {Object} singelton Hype API */ function setHypeDocumentSingleton(hypeDocumentSingelton) { _hypeDocument = hypeDocumentSingelton } /** * setAssetFolderBaseUrl * @param {String} asset URL with trainling slash */ function setAssetFolderBaseUrl(assetFolderBaseUrl) { _assetFolderBaseUrl = assetFolderBaseUrl; } /** * notifyWebKit * @param {Object} paramter for webkit instance */ function notifyWebkit(cmd, obj) { if(window.webkit) { window.webkit.messageHandlers[cmd].postMessage(obj); } else { log ('No webkit object found!'); } } /** * notifyHype * @param {String} name of command * @param {Object} parameter as object */ function notifyHype(cmd, obj) { if (_hypeDocument) { switch(cmd) { case 'setMode': setMode(obj.mode); break; case 'setLanguage': setLanguage(obj.language); break; case 'gotoStateByName': gotoStateByName(obj.name); break; case 'redrawCurrentState': redrawCurrentState(); break; case 'setExposureList': setExposureList(obj.list); break; case 'setUserInterfaceTransforms': setUserInterfaceTransforms(obj); break; } } else { log ('HypeDocument not initilized!'); } } /* Most public and notfy functions */ function enableLogging(bol){ _log = (bol==true); } function redrawCurrentState() { if (_currentStateName) { gotoStateByName (_currentStateName); } else { log('Please provide a state name!') } } function setMode(mode) { _mode = mode.toUpperCase()=='IOS'? 'iOS':'web'; redrawCurrentState(); } function setLanguage(language) { _language = language.toUpperCase()=='DE'? 'DE':'EN'; redrawCurrentState(); } function setExposureList(list) { // 12.08.2020 US features allows for movies so preprocess Exposure_List_Videos = []; for (var i=0; i