Commit 22a0fb759b5b93077ef998d8d525f116674fad12

Authored by Tom Robinson
1 parent a593ca51

Dali-Toy Javascript demo

Change-Id: I6a663c46a6592bbb3aaa24f3a12ff5937664b262
build/tizen/CMakeLists.txt
@@ -16,6 +16,10 @@ ELSE() @@ -16,6 +16,10 @@ ELSE()
16 SET(BINDIR ${PREFIX}/bin) 16 SET(BINDIR ${PREFIX}/bin)
17 ENDIF() 17 ENDIF()
18 18
  19 +# Directory for compiled Emscripten artifacts along with Emscripten examples and demos.
  20 +SET(EMSCRIPTEN_ENV_DIR ${PREFIX}/share/emscripten)
  21 +SET(EMSCRIPTEN_EXAMPLE_DIR ${ROOT_SRC_DIR}/emscripten-examples/)
  22 +
19 SET(RESOURCE_DIR ${ROOT_SRC_DIR}/resources) 23 SET(RESOURCE_DIR ${ROOT_SRC_DIR}/resources)
20 SET(LOCAL_IMAGES_DIR ${RESOURCE_DIR}/images) 24 SET(LOCAL_IMAGES_DIR ${RESOURCE_DIR}/images)
21 SET(LOCAL_MODELS_DIR ${RESOURCE_DIR}/models) 25 SET(LOCAL_MODELS_DIR ${RESOURCE_DIR}/models)
@@ -93,3 +97,7 @@ INCLUDE_DIRECTORIES(${DEMO_SRC_DIR}) @@ -93,3 +97,7 @@ INCLUDE_DIRECTORIES(${DEMO_SRC_DIR})
93 ADD_SUBDIRECTORY(demo) 97 ADD_SUBDIRECTORY(demo)
94 ADD_SUBDIRECTORY(examples) 98 ADD_SUBDIRECTORY(examples)
95 ADD_SUBDIRECTORY(builder) 99 ADD_SUBDIRECTORY(builder)
  100 +
  101 +CONFIGURE_FILE( ${EMSCRIPTEN_EXAMPLE_DIR}/dali-toy.js ${EMSCRIPTEN_ENV_DIR} )
  102 +CONFIGURE_FILE( ${EMSCRIPTEN_EXAMPLE_DIR}/dali-toy.html ${EMSCRIPTEN_ENV_DIR} )
  103 +CONFIGURE_FILE( ${EMSCRIPTEN_EXAMPLE_DIR}/dali-doc-demo.html ${EMSCRIPTEN_ENV_DIR} )
emscripten-examples/dali-doc-demo.html 0 → 100644
  1 +<html>
  2 + <body>
  3 +
  4 + <script>
  5 + function native2ascii(str) {
  6 + "use strict";
  7 + // really this function allows only GLSL permittable chars
  8 + // It should probably raise if it changes the source.
  9 + var out = "";
  10 + for (var i = 0; i < str.length; i++) {
  11 + if ( 0x20 <= str.charCodeAt(i) && str.charCodeAt(i) <= 0x7E) {
  12 + // normal characters
  13 + out += str.charAt(i);
  14 + } else if( 0x9 <= str.charCodeAt(i) && str.charCodeAt(i) <= 0xD) {
  15 + // new lines and tabs
  16 + out += str.charAt(i);
  17 + }
  18 + }
  19 + return out;
  20 + }
  21 +
  22 + function clearAndEval = function(code) {
  23 + "use strict";
  24 + var ascii = native2ascii(code);
  25 + clear();
  26 + // as of ecma5 an indirect call like this is in global scope
  27 + var globalEval = eval;
  28 + globalEval(ascii);
  29 + };
  30 + </script>
  31 +
  32 + <h1>Dali Docs</h1>
  33 +
  34 + <code>
  35 + mScript = Dali::Toolkit::Script::New();
  36 + mScript.ExecuteFile( mScriptFileName);
  37 + </code>
  38 + <input id="clickMe" type="button" value="clickme"
  39 + onclick="doFunction();"/>
  40 +
  41 + <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" width="600" height="800" style="background-color: black;"></canvas>
  42 +
  43 + <script type="text/javascript"> // emscripten
  44 +
  45 + var statusElement = document.getElementById('status');
  46 + var progressElement = document.getElementById('progress');
  47 +
  48 + var Module = {
  49 + doNotCaptureKeyboard:true,
  50 + preRun: [],
  51 + postRun: [],
  52 + print: (function() {
  53 + var element = document.getElementById('output');
  54 + if (element) element.value = ''; // clear browser cache
  55 + return function(text) {
  56 + text = Array.prototype.slice.call(arguments).join(' ');
  57 + // These replacements are necessary if you render to raw HTML
  58 + //text = text.replace(/&/g, "&amp;");
  59 + //text = text.replace(/</g, "&lt;");
  60 + //text = text.replace(/>/g, "&gt;");
  61 + //text = text.replace('\n', '<br>', 'g');
  62 + console.log("STDOUT:", text);
  63 + if (element) {
  64 + element.value += text + "\n";
  65 + element.scrollTop = element.scrollHeight; // focus on bottom
  66 + }
  67 + };
  68 + })(),
  69 + printErr: function(text) {
  70 + text = Array.prototype.slice.call(arguments).join(' ');
  71 + if (0) { // XXX disabled for safety typeof dump == 'function') {
  72 + dump(text + '\n'); // fast, straight to the real console
  73 + } else {
  74 + console.error("STDERR:", text);
  75 + }
  76 + },
  77 + canvas: document.getElementById('canvas'),
  78 + setStatus: function(text) {
  79 + if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
  80 + if (text === Module.setStatus.text) return;
  81 + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
  82 + var now = Date.now();
  83 + if (m && now - Date.now() < 30) return; // if this is a progress update, skip it if too soon
  84 + if (m) {
  85 + text = m[1];
  86 + progressElement.value = parseInt(m[2])*100;
  87 + progressElement.max = parseInt(m[4])*100;
  88 + progressElement.hidden = false;
  89 + } else {
  90 + progressElement.value = null;
  91 + progressElement.max = null;
  92 + progressElement.hidden = true;
  93 + }
  94 + statusElement.innerHTML = text;
  95 + },
  96 + totalDependencies: 0,
  97 + monitorRunDependencies: function(left) {
  98 + this.totalDependencies = Math.max(this.totalDependencies, left);
  99 + Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
  100 + },
  101 +
  102 + postRun: function () {
  103 + // postRun; so that dali-emscripten.js is loaded first
  104 + // (postMainLoop to run all the time)
  105 + var s = document.createElement("script");
  106 + s.src = "dali-wrapper.js";
  107 + document.body.appendChild(s);
  108 + },
  109 +
  110 + postDaliWrapperRun: function() {
  111 + }
  112 + }; // Module
  113 +
  114 + Module.setStatus('Downloading...');
  115 + window.onerror = function() {
  116 + Module.setStatus('Exception thrown, see JavaScript console');
  117 + Module.setStatus = function(text) {
  118 + if (text) Module.printErr('[post-exception status] ' + text);
  119 + };
  120 + };
  121 +
  122 + </script>
  123 +
  124 + <!-- load dali-emscripten.js. Then use dali-emscripten.js::postRun callback function (see postRun above) -->
  125 + <script async type="text/javascript" src="dali-emscripten.js"></script>
  126 +
  127 + </body>
  128 +</html>
  129 +
  130 +
emscripten-examples/dali-toy.html 0 → 100644
  1 +<!--
  2 +/*
  3 + * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  4 + *
  5 + * Licensed under the Apache License, Version 2.0 (the "License");
  6 + * you may not use this file except in compliance with the License.
  7 + * You may obtain a copy of the License at
  8 + *
  9 + * http://www.apache.org/licenses/LICENSE-2.0
  10 + *
  11 + * Unless required by applicable law or agreed to in writing, software
  12 + * distributed under the License is distributed on an "AS IS" BASIS,
  13 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14 + * See the License for the specific language governing permissions and
  15 + * limitations under the License.
  16 + *
  17 + */
  18 +-->
  19 +
  20 +<html>
  21 + <head>
  22 + <script src="/skewer"></script>
  23 +
  24 + <style src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-colorpicker/2.1.0/css/bootstrap-colorpicker.min.css"></style>
  25 +
  26 + <style>
  27 + body, html {
  28 + overflow: hidden;
  29 + height:100%;
  30 + }
  31 +
  32 + @media{
  33 + #left {
  34 + position: absolute;
  35 + bottom: 0;
  36 + left: 0;
  37 + overflow-y: scroll;
  38 + }
  39 +
  40 + #right {
  41 + position: absolute;
  42 + bottom: 0;
  43 + right: 0;
  44 + overflow-y: scroll;
  45 + }
  46 + }
  47 +
  48 + #left {
  49 + height:100%;
  50 + }
  51 +
  52 + #right {
  53 + height:100%;
  54 + text-align:center;
  55 + }
  56 +
  57 + /* 1st level */
  58 + .nav label {
  59 + color: blue;
  60 + }
  61 +
  62 + /* 2nd level */
  63 + .tree > li > label {
  64 + padding:10px 15px;
  65 + }
  66 + /* 2nd level */
  67 + .tree > li > label {
  68 + padding:10px 15px;
  69 + }
  70 +
  71 + /* 3rd level */
  72 + .tree > li > ul > li > a {
  73 + color:#cc0000;
  74 + font-size:10pt;
  75 + margin-left:15px;
  76 + }
  77 +
  78 + #editorVertex {
  79 + position: relative;
  80 + height: 300;
  81 + }
  82 +
  83 + #editorFragment {
  84 + position: relative;
  85 + height: 300;
  86 + }
  87 +
  88 + #editorJavascript {
  89 + position: relative;
  90 + height: 600;
  91 + }
  92 +
  93 + #solidActorBackgroundColour {
  94 + position: relative;
  95 + height: 150px;
  96 + }
  97 +
  98 +
  99 + .popover {
  100 + /* max-width:600px; */
  101 + /* width: auto; */
  102 + }
  103 +
  104 + .tooltip-inner {
  105 + max-width: 600px;
  106 + /* If max-width does not work, try using width instead */
  107 + width: 800px;
  108 + white-space:pre-wrap;
  109 + text-align:left;
  110 + }
  111 +
  112 + .modal.modal-wide .modal-dialog {
  113 + width: 90%;
  114 + }
  115 + .modal-wide .modal-body {
  116 + overflow-y: auto;
  117 + }
  118 +
  119 + </style>
  120 +<!-- Latest compiled and minified CSS -->
  121 + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
  122 +
  123 +<!-- Optional theme -->
  124 + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
  125 +
  126 + <link rel="shortcut icon" href="data:image/png;base64,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">
  127 +
  128 + </head>
  129 +
  130 + <body>
  131 + <img alt="Brand" width="50" id="testImage1" style="visibility: hidden" src="data:image/png;base64,/9j/4QCGRXhpZgAASUkqAAgAAAABAJiCAgBiAAAAGgAAAAAAAABDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wAAAA/+EC12h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcDpDcmVhdG9yVG9vbD0iS2lwaS1wbHVnaW5zLTIuNS4wIgogICB0aWZmOlNvZnR3YXJlPSJLaXBpLXBsdWdpbnMtMi41LjAiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5Db3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9yZGY6bGk+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K/+0ArlBob3Rv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">
  132 + <img alt="Brand" width="50" id="testImage2" style="visibility: hidden" src="data:image/png;base64,/9j/4QCGRXhpZgAASUkqAAgAAAABAJiCAgBiAAAAGgAAAAAAAABDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wAAAA/+EC12h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcDpDcmVhdG9yVG9vbD0iS2lwaS1wbHVnaW5zLTIuNS4wIgogICB0aWZmOlNvZnR3YXJlPSJLaXBpLXBsdWdpbnMtMi41LjAiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5Db3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9yZGY6bGk+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K/+0ArlBob3Rv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">
  133 + <img alt="Brand" width="50" id="testImage3" style="visibility: hidden" src="data:image/png;base64,/9j/4QCGRXhpZgAASUkqAAgAAAABAJiCAgBiAAAAGgAAAAAAAABDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wAAAA/+EC12h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcDpDcmVhdG9yVG9vbD0iS2lwaS1wbHVnaW5zLTIuNS4wIgogICB0aWZmOlNvZnR3YXJlPSJLaXBpLXBsdWdpbnMtMi41LjAiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5Db3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9yZGY6bGk+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K/+0ArlBob3Rv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">
  134 + <img alt="Brand" width="50" id="testImage4" style="visibility: hidden" src="data:image/png;base64,/9j/4QCGRXhpZgAASUkqAAgAAAABAJiCAgBiAAAAGgAAAAAAAABDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wAAAA/+EC12h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcDpDcmVhdG9yVG9vbD0iS2lwaS1wbHVnaW5zLTIuNS4wIgogICB0aWZmOlNvZnR3YXJlPSJLaXBpLXBsdWdpbnMtMi41LjAiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5Db3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcywgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9yZGY6bGk+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K/+0ArlBob3Rv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">
  135 +
  136 + <div class="container">
  137 + <div class="row">
  138 + <div class="col-md-6" id="left">
  139 + <div class="panel with-nav-tabs panel-default">
  140 + <div class="panel-heading">
  141 + <ul class="nav nav-tabs">
  142 + <li>
  143 + <img alt="Brand" width="50" src="data:image/png;base64,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"><b style="font-size:24"><sub>toy<sub/></b></image>
  144 + </a>
  145 + </li>
  146 + <li class="active"><a href="#tab1primary" id="actorTab" data-toggle="tab">Javascript buffers</a></li>
  147 + <li><a href="#tab2primary" id="imagesTab" data-toggle="tab">Image buffers</a></li>
  148 + <li><a href="#tab3primary" id="shadersTab" data-toggle="tab">Shader buffers</a></li>
  149 + <li><a href="#tab4primary" id="propertiesTab" data-toggle="tab">Properties</a></li>
  150 + <li><a href="#tab5primary" id="helpTab" data-toggle="tab">Help</a></li>
  151 + </ul>
  152 + </div>
  153 + <div class="panel-body">
  154 + <div class="tab-content">
  155 +
  156 + <div class="tab-pane fade in active" id="tab1primary">
  157 +
  158 + <div class="btn-group">
  159 + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  160 + Select Javacript Buffer <span class="caret"></span>
  161 + </button>
  162 + <ul class="dropdown-menu" role="menu" id="javascriptDropDown">
  163 + </ul>
  164 + </div>
  165 +
  166 + <button type="button" class="btn btn-default" id="btnJavascriptAddBuffer">Add Buffer</button>
  167 + <button type="button" class="btn btn-default" id="btnJavascriptRenameBuffer">Rename Buffer</button>
  168 + <button type="button" class="btn btn-default" id="btnJavascriptClearRun">Clear stage & Run</button>
  169 + <button type="button" class="btn btn-default" id="btnJavascriptRun">Run</button>
  170 + <button type="button" class="btn btn-default" id="btnJavascriptSourceJson">Json</button>
  171 + <div>
  172 + <p id="textJavascriptName"></p>
  173 + </div>
  174 +
  175 + <div id="editorJavascript" align="left">
  176 + </div>
  177 + </div>
  178 +
  179 + <div class="tab-pane fade" id="tab2primary">
  180 +
  181 + <div class="btn-group">
  182 + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  183 + Select Image <span class="caret"></span>
  184 + </button>
  185 + <ul class="dropdown-menu" role="menu" id="imageDropDown">
  186 + </ul>
  187 + Add Image <input type="file" id="btnImageAddBuffer">
  188 + <button type="button" class="btn btn-default" id="btnImageRenameBuffer">Rename Image</button>
  189 + </div>
  190 + <div>
  191 + <canvas id="imageViewCanvas" width="200" height="50"></canvas>
  192 + </div>
  193 + </div>
  194 +
  195 + <div class="tab-pane fade" id="tab3primary">
  196 + <div class="btn-group">
  197 + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  198 + Load Shader Buffer <span class="caret"></span>
  199 + </button>
  200 + <ul class="dropdown-menu" role="menu" id="shaderDropDown">
  201 + <li><a href="javascript:selectShader(1)">Emboss</a></li>
  202 + <li><a href="javascript:selectShader(2)">eg shader2</a></li>
  203 + <li><a href="javascript:selectShader(3)">eg shader3</a></li>
  204 + <li class="divider"></li>
  205 + <li><a href="javascript:selectShader(0)">Passthrough</a></li>
  206 + </ul>
  207 + </div>
  208 +
  209 + <div class="btn-group">
  210 + <button type="button" class="btn btn-default" id="dropdownShaderHints">Shader Hints</button>
  211 + <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  212 + <span class="caret"></span>
  213 + </button>
  214 +
  215 + <ul class="dropdown-menu" role="menu" id="shaderHintsDropDown">
  216 + <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox" id="requiresSelfDepthTest"/>Requires self depth test</a></li>
  217 + <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox" id="outputIsTransparent"/>Output is transparent</a></li>
  218 + <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox" id="outputIsOpaque"/>Output is opaque</a></li>
  219 + <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox" id="modifiesGeometry"/>Modifies geometry</a></li>
  220 + </ul>
  221 + </div>
  222 + <button type="button" class="btn btn-default" id="btnShaderAddBuffer">Add Shader buffer</button>
  223 + <button type="button" class="btn btn-default" id="btnShaderRenameBuffer">Rename buffer</button>
  224 + <button type="button" class="btn btn-default" id="btnShaderSourceC">C++</button>
  225 + <button type="button" class="btn btn-default" id="btnShaderSourceJS">JS</button>
  226 + <button type="button" class="btn btn-default" id="btnShaderSourceJSON">Json</button>
  227 + <p></p>
  228 + <div>
  229 + <p id="textShaderName"></p>
  230 + </div>
  231 + <div id="editorVertex" align="left">
  232 + </div>
  233 + <p></p>
  234 + <div id="editorFragment" align="left">
  235 + </div>
  236 +
  237 + <div>
  238 + <text id="textShaderErrors"></textarea>
  239 + </div>
  240 +
  241 + </div>
  242 + <div class="tab-pane" id="tab4primary">
  243 + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
  244 + <div class="panel panel-default">
  245 + <div class="panel-heading" role="tab" id="headingOne">
  246 + <h4 class="panel-title">
  247 + <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
  248 + Tree
  249 + </a>
  250 + </h4>
  251 + </div>
  252 + <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
  253 + <div class="panel-body">
  254 + <ul class="well" id="tree">
  255 + </ul>
  256 + </div>
  257 + </div>
  258 + </div>
  259 + <div class="panel panel-default">
  260 + <div class="panel-heading" role="tab" id="headingTwo">
  261 + <h4 class="panel-title">
  262 + <a>
  263 + Properties
  264 + </a>
  265 + </h4>
  266 + </div>
  267 + <div>
  268 + <div class="panel-body">
  269 + <div class="well" id="selected"> </div>
  270 + </div>
  271 + </div>
  272 + </div>
  273 + </div>
  274 +
  275 +
  276 + </div>
  277 +
  278 + <div class="tab-pane fade" id="tab5primary">
  279 + <u>Quick Start</u>
  280 + <ol>
  281 + <li> Click "Javascript Buffers" tab. </li>
  282 + <li> Click "Select Javscript Buffer" dropdown and choose "02. Textured Quad".</li>
  283 + <li> Click "Clear and Run" to clear the stage and execute the selected Javascript buffer</li>
  284 + <li> Click on the image in the Dali view to select the created actor</li>
  285 + <li> Click "Properties" tab to view the actor properties</li>
  286 + <li> Press F12 or Tools|Javascript Console to open the console. The selected actor can be accessed by typing "dali.actor" in the console.</li>
  287 + </ol>
  288 + <ul>
  289 + <li>The example uses the function shaderFromUIBuffer(name) which gets a shader from one of the buffers in the "Shader buffers" tab.</li>
  290 + <li>You can load images to the "Image Buffers" and create shaders in "Shader Buffers" and retrieve them in Javascript with the functions
  291 + shaderFromUIBuffer(name) and imageFromUIBuffer(name) which create a Dali::Shader() or Dali::Image()</li>
  292 + <li>The example uses the "Pass Through Texture" shader so you can select and edit that shader buffer and then re-click "Clear and Run" to
  293 + run with your modified shader</li>
  294 + </ul>
  295 + <u>Tips</u>
  296 + <ul>
  297 + <li>"dali.stage.add(actor)" adds actors to a root actor for rudamentary scene rotation</li>
  298 + <li>Data is saved to the browser IndexedBuffer so will persist over sessions. However the browser has control over when this data may be dropped.</li>
  299 + The button below will remove this persisted data and reload the page (sometimes needed if upgrading dali-toy)
  300 + <li>There are some helper functions useable in the developer console (see below).</li>
  301 + <li>The functions imageFromUiBuffer(name) and shaderFromUiBuffer(name) will return a Dali.Image() or Dali.Shader() by name from the tabs.</li>
  302 + <li>The shader buffers will attempt to compile the shader and display errors in the margin</li>
  303 + </ul>
  304 + <u>Mouse</u>
  305 + <ul>
  306 + <li>Left click - select actor. Left drag - move actor in X/Y plane</li>
  307 + <li>Middle drag - rotate root rotation actor</li>
  308 + <li>Right drag up/down - move actor in Z plane</li>
  309 + </ul>
  310 + <u>DALi Javascript wrapping</u>
  311 + <p>See numbered examples in Javascript Buffer tab.</p>
  312 + <u>DALi helper variables</u>
  313 + <pre>
  314 +dali.actor; // currently selected (clicked) actor or null
  315 + </pre>
  316 + <u>DALi toy helper functions</u>
  317 + <pre>
  318 +dali.actor.position = [0,100,0]; // property access via dot notation
  319 +shader.weight = 3; // uniforms access from shader object
  320 +col = collectByName(); // collect all actors on stage for dotted notation access
  321 +col.picture_4_png.position = [100,0,0];
  322 +
  323 +clear(); // Clear all. If things are still funky right click the reload button
  324 + // Open developer console, click "Empty Cache and hard reload" (chrome)
  325 + </pre>
  326 + <button type="button" class="btn btn-default" id="btnRewriteDatabase">Clear & Reset the Indexed Database (Delete & Reset buffers to original values), then reload the page</button>
  327 + <br>
  328 + <div>
  329 + <textarea id="output" rows="8"></textarea>
  330 + </div>
  331 + </div>
  332 +
  333 + </div>
  334 + </div>
  335 + </div>
  336 +
  337 +<!-- Modal -->
  338 + <div class="modal fade" id="modalAddProperty" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  339 + <div class="modal-dialog">
  340 + <div class="modal-content">
  341 + <div class="modal-header">
  342 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  343 + <h4 class="modal-title" id="myModalLabel">Add Property</h4>
  344 + </div>
  345 + <div class="modal-body" id="modalPropertyBody">
  346 + </div>
  347 + <div class="modal-footer" id="modalFooter">
  348 + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  349 + <button type="button" class="btn btn-primary" data-dismiss="modal" id="addPropertySave">Save changes</button>
  350 + </div>
  351 + </div>
  352 + </div>
  353 + </div>
  354 +
  355 +<!-- Modal -->
  356 + <div class="modal fade" id="modalSaveShader">
  357 + <div class="modal-dialog">
  358 + <div class="modal-content">
  359 + <div class="modal-header">
  360 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  361 + <h4 class="modal-title">Temporarily save shader shader in cache?</h4>
  362 + </div>
  363 + <div class="modal-body row">
  364 + <div class="container-fluid">
  365 + <div class="row">
  366 + <p class="col-md-12" >Do you want to save the exisitng shader</p>
  367 + </div>
  368 + <div class="row">
  369 + <input class="col-md-12" type="text" id="modalSaveShaderName"/>
  370 + </div>
  371 + </div>
  372 + </div>
  373 + <div class="modal-footer">
  374 + <button type="button" class="btn btn-default" data-dismiss="modal">Don't save</button>
  375 + <button type="button" class="btn btn-primary" data-dismiss="modal" id="modalSaveShaderYes">Save changes</button>
  376 + </div>
  377 + </div><!-- /.modal-content -->
  378 + </div><!-- /.modal-dialog -->
  379 + </div><!-- /.modal -->
  380 +
  381 +<!-- Modal -->
  382 + <div class="modal modal-wide fade" id="modalCodeInfo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  383 + <div class="modal-dialog">
  384 + <div class="modal-content">
  385 + <div class="modal-header">
  386 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  387 + <h4 class="modal-title" id="myModalLabel">Code</h4>
  388 + </div>
  389 + <div class="modal-body" id="modalCodeInfoBody">
  390 + </div>
  391 + <div class="modal-footer">
  392 + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  393 + </div>
  394 + </div>
  395 + </div>
  396 + </div>
  397 +
  398 +<!-- Modal -->
  399 + <div class="modal modal-wide fade" id="modalQuestion" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  400 + <div class="modal-dialog">
  401 + <div class="modal-content">
  402 + <div class="modal-header">
  403 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  404 + <h4 class="modal-title" id="myModalLabel">Question</h4>
  405 + </div>
  406 + <div class="modal-body" id="modalQuestionBody">
  407 + </div>
  408 + <div class="modal-footer">
  409 + <button type="button" class="btn btn-default" data-dismiss="modal" id="modalQuestionNo">No</button>
  410 + <button type="button" class="btn btn-primary" data-dismiss="modal" id="modalQuestionYes">Yes</button>
  411 + </div>
  412 + </div>
  413 + </div>
  414 + </div>
  415 +
  416 +<!-- Modal -->
  417 + <div class="modal modal-wide fade" id="modalInput" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  418 + <div class="modal-dialog">
  419 + <div class="modal-content">
  420 + <div class="modal-header">
  421 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  422 + <h4 class="modal-title" id="myModalLabel">Input</h4>
  423 + </div>
  424 + <div class="modal-body" id="modalInputBody">
  425 + </div>
  426 + <input type="text" id="modalInputText" class="form-control">
  427 + <div class="modal-footer">
  428 + <button type="button" class="btn btn-default" data-dismiss="modal" id="modalInputCancel">Cancel</button>
  429 + <button type="button" class="btn btn-primary" data-dismiss="modal" id="modalInputOk">Ok</button>
  430 + </div>
  431 + </div>
  432 + </div>
  433 + </div>
  434 +
  435 +
  436 + </div>
  437 + <div class="col-md-6" id="right">
  438 + <div class="spinner" id='spinner'></div>
  439 + <div>
  440 + <progress value="0" max="100" id="progress" hidden=1></progress>
  441 + </div>
  442 + <div class="emscripten" id="status">
  443 + Downloading...
  444 + </div>
  445 + <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" width="600" height="800" style="background-color: black;"></canvas>
  446 +
  447 + <div class="row">
  448 + <div class="col-md-4">
  449 + </div>
  450 + <div class="col-md-4" id="statistics" align ="left">
  451 + </div>
  452 + <div class="col-md-4">
  453 + </div>
  454 + </div>
  455 + </div>
  456 + </div>
  457 + </div>
  458 +
  459 +<!-- Small modal -->
  460 +<div class="modal fade bs-example-modal-sm" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
  461 + <div class="modal-dialog modal-sm">
  462 + <div class="modal-content" id="modalInfoBody">
  463 + </div>
  464 + </div>
  465 +</div>
  466 +
  467 + <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  468 + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  469 + <!-- Latest compiled and minified JavaScript -->
  470 + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
  471 +
  472 +
  473 +
  474 + <script type="text/javascript"> // emscripten
  475 +
  476 + var statusElement = document.getElementById('status');
  477 + var progressElement = document.getElementById('progress');
  478 + var spinnerElement = document.getElementById('spinner');
  479 +
  480 + var Module = {
  481 + doNotCaptureKeyboard:true,
  482 + preRun: [],
  483 + postRun: [],
  484 + print: (function() {
  485 + var element = document.getElementById('output');
  486 + if (element) element.value = ''; // clear browser cache
  487 + return function(text) {
  488 + text = Array.prototype.slice.call(arguments).join(' ');
  489 + // These replacements are necessary if you render to raw HTML
  490 + //text = text.replace(/&/g, "&amp;");
  491 + //text = text.replace(/</g, "&lt;");
  492 + //text = text.replace(/>/g, "&gt;");
  493 + //text = text.replace('\n', '<br>', 'g');
  494 + console.log("STDOUT:", text);
  495 + if (element) {
  496 + element.value += text + "\n";
  497 + element.scrollTop = element.scrollHeight; // focus on bottom
  498 + }
  499 + };
  500 + })(),
  501 + printErr: function(text) {
  502 + text = Array.prototype.slice.call(arguments).join(' ');
  503 + if (0) { // XXX disabled for safety typeof dump == 'function') {
  504 + dump(text + '\n'); // fast, straight to the real console
  505 + } else {
  506 + console.error("STDERR:", text);
  507 + }
  508 + },
  509 + canvas: document.getElementById('canvas'),
  510 + setStatus: function(text) {
  511 + if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
  512 + if (text === Module.setStatus.text) return;
  513 + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
  514 + var now = Date.now();
  515 + if (m && now - Date.now() < 30) return; // if this is a progress update, skip it if too soon
  516 + if (m) {
  517 + text = m[1];
  518 + progressElement.value = parseInt(m[2])*100;
  519 + progressElement.max = parseInt(m[4])*100;
  520 + progressElement.hidden = false;
  521 + spinnerElement.hidden = false;
  522 + } else {
  523 + progressElement.value = null;
  524 + progressElement.max = null;
  525 + progressElement.hidden = true;
  526 + if (!text) spinnerElement.style.display = 'none';
  527 + }
  528 + statusElement.innerHTML = text;
  529 + },
  530 + totalDependencies: 0,
  531 + monitorRunDependencies: function(left) {
  532 + this.totalDependencies = Math.max(this.totalDependencies, left);
  533 + Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
  534 + },
  535 +
  536 + postRun: function () {
  537 + // postRun; so that dali-emscripten.js is loaded first
  538 + // (postMainLoop to run all the time)
  539 + var s = document.createElement("script");
  540 + s.src = "dali-wrapper.js";
  541 + document.body.appendChild(s);
  542 + },
  543 + postDaliWrapperRun: function () {
  544 + //
  545 + // chain load main.js
  546 + //
  547 + var chainLoadScript = document.createElement("script");
  548 + chainLoadScript.src = "dali-toy.js";
  549 + document.body.appendChild(chainLoadScript);
  550 + }
  551 +
  552 + }; // Module
  553 +
  554 + Module.setStatus('Downloading...');
  555 + window.onerror = function() {
  556 + Module.setStatus('Exception thrown, see JavaScript console');
  557 + spinnerElement.style.display = 'none';
  558 + Module.setStatus = function(text) {
  559 + if (text) Module.printErr('[post-exception status] ' + text);
  560 + };
  561 + };
  562 +
  563 +
  564 + </script>
  565 +
  566 + <script async type="text/javascript" src="dali-emscripten.js"></script>
  567 +
  568 + <script src="https://cdn.jsdelivr.net/ace/1.2/min/ace.js" type="text/javascript" charset="utf-8"></script>
  569 + <script src="https://cdn.jsdelivr.net/ace/1.2/min/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
  570 + <script src='https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.6.1/spectrum.min.js'></script>
  571 + <script src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/2.1.0/gl-matrix-min.js"></script>
  572 + <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.6.1/spectrum.min.css' />
  573 +
  574 + <script>
  575 + var editor = ace.edit("editorVertex");
  576 + editor.setTheme("ace/theme/eclipse");
  577 + editor.getSession().setMode("ace/mode/glsl");
  578 + editor.$blockScrolling = Infinity; // stops error message about scrolling
  579 +
  580 + var editor = ace.edit("editorFragment");
  581 + editor.setTheme("ace/theme/eclipse");
  582 + editor.getSession().setMode("ace/mode/glsl");
  583 + editor.$blockScrolling = Infinity; // stops error message about scrolling
  584 +
  585 + var editor = ace.edit("editorJavascript");
  586 + editor.setTheme("ace/theme/eclipse");
  587 + editor.getSession().setMode("ace/mode/javascript");
  588 + editor.$blockScrolling = Infinity; // stops error message about scrolling
  589 +
  590 + // var editor = ace.edit("editorJavascript");
  591 + // editor.setTheme("ace/theme/eclipse");
  592 + // editor.getSession().setMode("ace/mode/javascript");
  593 +
  594 + // var elem = document.getElementByClassName("solidActorBackgroundColour");
  595 + // elem.colorpicker();
  596 +
  597 + </script>
  598 + <script>
  599 + //$(function(){
  600 + // $('.solidActorBackgroundColour').colorpicker();
  601 + //});
  602 + $("#solidActorColor").spectrum({
  603 + color: "#f00",
  604 + preferredFormat: "rgb",
  605 + showPalette: true,
  606 + showInput: true,
  607 + showAlpha: true
  608 + });
  609 + $("#solidActorBorderColor").spectrum({
  610 + color: "#f00",
  611 + preferredFormat: "rgb",
  612 + showPalette: true,
  613 + showInput: true,
  614 + showAlpha: true
  615 + });
  616 +
  617 +
  618 + function getColorForElement(elemId)
  619 + {
  620 + var c = $("#" + elemId).spectrum("get").toRgb();
  621 + return [c.r / 256, c.g / 256, c.b / 256, c.a];
  622 + }
  623 +
  624 + </script>
  625 + </body>
  626 +
  627 +</html>
emscripten-examples/dali-toy.js 0 → 100644
  1 +/*
  2 + * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + *
  16 + */
  17 +
  18 +/*global */
  19 +/* eslint-env browser */
  20 +/* eslint "brace-style": [2, "1tbs"] */
  21 +/* eslint "no-console": 0 */
  22 +/* eslint "no-underscore-dangle": 0 */
  23 +
  24 +//
  25 +// Dali browser application for testing the javascript API.
  26 +//
  27 +
  28 +// browser variables defined for eslint
  29 +var $;
  30 +var ace;
  31 +var dali;
  32 +// var canvas;
  33 +var app;
  34 +var eventHandler;
  35 +var assert;
  36 +
  37 +//
  38 +// Global state
  39 +//
  40 +var test;
  41 +var database;
  42 +
  43 +var uiApp;
  44 +var uiJavascriptTab;
  45 +var uiImageTab;
  46 +var uiShaderTab;
  47 +
  48 +
  49 +var actorIdToShaderSet = {}; // actor id to shader
  50 +var compiledShaders = {}; // compiled shaders by name
  51 +
  52 +var animationList = []; // list of animations that have been added [ { animation: new dali.Animation(), properties: [] } ]
  53 +var animationSelectionIndex; // selected animation
  54 +
  55 +//
  56 +//
  57 +// Demo Shaders
  58 +//
  59 +//
  60 +var shaderSourceSelection = 0;
  61 +var shaderSources = [
  62 + {
  63 + name: "pass through texture",
  64 + hints: "",
  65 + vertex:
  66 + "\n" +
  67 + "attribute mediump vec3 aPosition;\n" +
  68 + "attribute mediump vec2 aTexCoord;\n" +
  69 + "varying mediump vec2 vTexCoord;\n" +
  70 + "uniform mediump vec3 uSize;\n" +
  71 + "uniform mediump mat4 uModelView;\n" +
  72 + "uniform mediump mat4 uProjection;\n" +
  73 + "uniform mediump mat4 uMvpMatrix;\n" +
  74 + "\n" +
  75 + "void main(void)\n" +
  76 + "{\n" +
  77 + " mediump vec4 vertexPosition = vec4(aPosition, 1.0);\n" +
  78 + " vertexPosition.xyz *= uSize;\n" +
  79 + " gl_Position = uMvpMatrix * vertexPosition;\n" +
  80 + " vTexCoord = aTexCoord;\n" +
  81 + "}\n",
  82 + fragment: "precision mediump float;\n" +
  83 + "\n" +
  84 + "uniform sampler2D sTexture;\n" +
  85 + "uniform mediump vec4 uColor;\n" +
  86 + "varying mediump vec2 vTexCoord;\n" +
  87 + "\n" +
  88 + "void main()\n" +
  89 + "{\n" +
  90 + " gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n" +
  91 + "}\n"
  92 + },
  93 + {
  94 + name: "pass through color",
  95 + hints: "",
  96 + vertex: "\n" +
  97 + "attribute mediump vec3 aPosition;\n" +
  98 + "attribute mediump vec2 aTexCoord;\n" +
  99 + "varying mediump vec2 vTexCoord;\n" +
  100 + "uniform mediump vec3 uSize;\n" +
  101 + "uniform mediump mat4 uModelView;\n" +
  102 + "uniform mediump mat4 uProjection;\n" +
  103 + "\n" +
  104 + "void main(void)\n" +
  105 + "{\n" +
  106 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  107 + " vertexPosition.xyz *= uSize;\n" +
  108 + " vTexCoord = aTexCoord;\n" +
  109 + "}\n",
  110 + fragment: "precision mediump float;\n" +
  111 + "\n" +
  112 + "uniform mediump vec4 uColor;\n" +
  113 + "varying mediump vec2 vTexCoord;\n" +
  114 + "\n" +
  115 + "void main()\n" +
  116 + "{\n" +
  117 + " gl_FragColor = vColor * uColor;\n" +
  118 + "}\n"
  119 + },
  120 + {
  121 + name: "sRGB Correction",
  122 + hints: "",
  123 + vertex: "\n" +
  124 + "uniform mediump mat4 uModelView;\n" +
  125 + "uniform mediump mat4 uProjection;\n" +
  126 + "uniform mediump mat4 uModelMatrix;\n" +
  127 + "attribute mediump vec3 aPosition;\n" +
  128 + "attribute mediump vec2 aTexCoord;\n" +
  129 + "varying mediump vec2 vTexCoord;\n" +
  130 + "uniform mediump vec3 uSize;\n" +
  131 + "\n" +
  132 + "void main(void)\n" +
  133 + "{\n" +
  134 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  135 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  136 + " vTexCoord = aTexCoord;\n" +
  137 + "}\n",
  138 + fragment: "precision mediump float;\n" +
  139 + "\n" +
  140 + "uniform mediump vec4 uColor;\n" +
  141 + "uniform sampler2D sTexture;\n" +
  142 + "varying mediump vec2 vTexCoord;\n" +
  143 + "\n" +
  144 + "void main()\n" +
  145 + "{\n" +
  146 + "vec4 col = texture2D( sTexture, vTexCoord ) * uColor;\n" +
  147 + "vec3 mask = vec3(greaterThan(col.rgb, vec3(0.0031308)));\n" +
  148 + "vec3 o = mix(col.rgb * 12.92, \n" +
  149 + " pow(col.rgb, vec3(1.0/2.4)) * 1.055 - 0.055, \n" +
  150 + " mask);\n" +
  151 + "gl_FragColor = vec4(o.r, o.g, o.b, col.a);\n" +
  152 + "}\n"
  153 + },
  154 + {
  155 + name: "adjust brightness",
  156 + hints: "",
  157 + animateTo: [ ["uGain", 1.0, "Linear", 0, 3],
  158 + ["uOffset", 0.2, "Linear", 0, 3] ],
  159 + vertex:
  160 + "\n" +
  161 + "uniform mediump mat4 uModelView;\n" +
  162 + "uniform mediump mat4 uProjection;\n" +
  163 + "attribute mediump vec3 aPosition;\n" +
  164 + "attribute mediump vec2 aTexCoord;\n" +
  165 + "varying mediump vec2 vTexCoord;\n" +
  166 + "uniform mediump vec3 uSize;\n" +
  167 + "\n" +
  168 + "void main(void)\n" +
  169 + "{\n" +
  170 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  171 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  172 + " vTexCoord = aTexCoord;\n" +
  173 + "}\n" +
  174 + "\n" +
  175 + "",
  176 + fragment:
  177 + "precision mediump float;\n" +
  178 + "\n" +
  179 + "uniform mediump vec4 uColor;\n" +
  180 + "uniform sampler2D sTexture;\n" +
  181 + "varying mediump vec2 vTexCoord;\n" +
  182 + "\n" +
  183 + "uniform float uGain; // {default:1.0} \n" +
  184 + "uniform float uOffset; // {default:0.0} \n" +
  185 + "void main()\n" +
  186 + "{\n" +
  187 + " vec4 t = texture2D( sTexture, vTexCoord );\n" +
  188 + " \n" +
  189 + " float y = 0.0 + (0.299 *t.r) + 0.587*t.g + 0.114*t.b;\n" +
  190 + " float cb= 128.0-(0.168736*t.r)-0.331264*t.g+0.5*t.b;\n" +
  191 + " float cr= 128.0+(0.5*t.r)-(0.418688*t.g)-0.081312*t.b;\n" +
  192 + " \n" +
  193 + " y = (y*uGain) + uOffset;\n" +
  194 + " \n" +
  195 + " vec4 col = vec4(t.a);\n" +
  196 + " \n" +
  197 + " col.r = y + 1.402*(cr-128.0);\n" +
  198 + " col.g = y - 0.34414*(cb-128.0)-0.71414*(cr-128.0);\n" +
  199 + " col.b = y + 1.722*(cb-128.0);\n" +
  200 + " \n" +
  201 + " \n" +
  202 + " gl_FragColor = col * uColor;\n" +
  203 + "}\n" +
  204 + "\n" +
  205 + ""
  206 + },
  207 + {
  208 + name: "wavey",
  209 + hints: "",
  210 + animateTo: [ ["uAmplitude", 0.2, "Linear", 0, 3],
  211 + ["uFrequency", 4, "Linear", 0, 3] ],
  212 + vertex: "\n" +
  213 + "uniform mediump mat4 uModelView;\n" +
  214 + "uniform mediump mat4 uProjection;\n" +
  215 + "attribute mediump vec3 aPosition;\n" +
  216 + "attribute mediump vec2 aTexCoord;\n" +
  217 + "varying mediump vec2 vTexCoord;\n" +
  218 + "uniform mediump vec3 uSize;\n" +
  219 + "\n" +
  220 + "void main(void)\n" +
  221 + "{\n" +
  222 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  223 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  224 + " vTexCoord = aTexCoord;\n" +
  225 + "}\n",
  226 + fragment: "precision mediump float;\n" +
  227 + "\n" +
  228 + "uniform mediump vec4 uColor;\n" +
  229 + "uniform sampler2D sTexture;\n" +
  230 + "varying mediump vec2 vTexCoord;\n" +
  231 + "\n" +
  232 + "uniform float uAmplitude; // {default:0.4, description:\"amplitude in x\"} \n" +
  233 + "uniform float uFrequency; // {default: 4, description:\"frequence in y\"} \n" +
  234 + "void main()\n" +
  235 + "{\n" +
  236 + " vec2 uv = vTexCoord.xy;\n" +
  237 + "\n" +
  238 + " uv.x += sin(uv.y * 3.14 * uFrequency) * uAmplitude;\n" +
  239 + " \n" +
  240 + " vec4 color = texture2D(sTexture, uv);\n" +
  241 + " \n" +
  242 + " gl_FragColor = color;\n" +
  243 + "}\n"
  244 + },
  245 + {
  246 + name: "melt",
  247 + hints: "",
  248 + animateTo: [ ["uFactor", -4.0, "Linear", 0, 3] ],
  249 + vertex:
  250 + "\n" +
  251 + "uniform mediump mat4 uModelView;\n" +
  252 + "uniform mediump mat4 uProjection;\n" +
  253 + "attribute mediump vec3 aPosition;\n" +
  254 + "attribute mediump vec2 aTexCoord;\n" +
  255 + "varying mediump vec2 vTexCoord;\n" +
  256 + "uniform mediump vec3 uSize;\n" +
  257 + "\n" +
  258 + "void main(void)\n" +
  259 + "{\n" +
  260 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  261 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  262 + " vTexCoord = aTexCoord;\n" +
  263 + "}\n" +
  264 + "\n" +
  265 + "",
  266 + fragment:
  267 + "precision mediump float;\n" +
  268 + "\n" +
  269 + "uniform mediump vec4 uColor;\n" +
  270 + "uniform sampler2D sTexture;\n" +
  271 + "varying mediump vec2 vTexCoord;\n" +
  272 + "\n" +
  273 + "uniform float uFactor; // {default:0.2, description:\"drip factor\"} \n" +
  274 + "\n" +
  275 + " \n" +
  276 + "float random( vec2 p )\n" +
  277 + "{\n" +
  278 + " float q = p.x * 269.5 + p.y * 183.3;\n" +
  279 + " return fract( sin( q ) * 43758.5453 );\n" +
  280 + "}\n" +
  281 + "\n" +
  282 + "void main()\n" +
  283 + "{\n" +
  284 + " vec2 uv = vTexCoord.xy;\n" +
  285 + " \n" +
  286 + " float kindaRandom = (texture2D(sTexture, vec2(uv.x,0.5)).r + texture2D(sTexture, vec2(0.5,uv.x)).r) / 2.0;\n" +
  287 + " \n" +
  288 + " //kindaRandom = random( vec2(texture2D(sTexture, vec2(uv.x,0.5)).r, texture2D(sTexture, vec2(0.5,uv.y)).g) );\n" +
  289 + " \n" +
  290 + " uv.y += uFactor * kindaRandom;\n" +
  291 + " \n" +
  292 + "\n" +
  293 + " gl_FragColor = texture2D( sTexture, uv ) * uColor;\n" +
  294 + "}\n" +
  295 + "\n" +
  296 + "\n" +
  297 + ""
  298 + },
  299 + {
  300 + name: "round window",
  301 + hints: "",
  302 + animateTo: [ ["uRadius", 0.8, "Linear", 0, 3] ],
  303 + vertex: "\n" +
  304 + "uniform mediump mat4 uModelView;\n" +
  305 + "uniform mediump mat4 uProjection;\n" +
  306 + "attribute mediump vec3 aPosition;\n" +
  307 + "attribute mediump vec2 aTexCoord;\n" +
  308 + "varying mediump vec2 vTexCoord;\n" +
  309 + "\n" +
  310 + "void main(void)\n" +
  311 + "{\n" +
  312 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  313 + " vTexCoord = aTexCoord;\n" +
  314 + "}\n",
  315 + fragment: "precision lowp float;\n" +
  316 + "\n" +
  317 + "uniform mediump vec4 uColor;\n" +
  318 + "uniform sampler2D sTexture;\n" +
  319 + "\n" +
  320 + "uniform lowp float uRadius; // {default: 0.2} \n" +
  321 + "varying mediump vec2 vTexCoord;\n" +
  322 + "void main()\n" +
  323 + "{\n" +
  324 + " precision lowp float;\n" +
  325 + " lowp vec2 pos= vec2(vTexCoord.x-0.5,vTexCoord.y-0.5);\n" +
  326 + " lowp float radius = dot(pos, pos ) ;\n" +
  327 + " if( radius > (uRadius*uRadius) )\n" +
  328 + " discard;\n" +
  329 + " gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor ;\n" +
  330 + "}\n"
  331 + },
  332 + {
  333 + name: "mosaic",
  334 + hints: "",
  335 + animateTo: [ ["uPixelFactor", 0.3, "Linear", 0, 3] ],
  336 + vertex: "\n" +
  337 + "uniform mediump mat4 uModelView;\n" +
  338 + "uniform mediump mat4 uProjection;\n" +
  339 + "attribute mediump vec3 aPosition;\n" +
  340 + "attribute mediump vec2 aTexCoord;\n" +
  341 + "varying mediump vec2 vTexCoord;\n" +
  342 + "uniform mediump vec3 uSize;\n" +
  343 + "\n" +
  344 + "void main(void)\n" +
  345 + "{\n" +
  346 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  347 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  348 + " vTexCoord = aTexCoord;\n" +
  349 + "}\n",
  350 + fragment: "precision mediump float;\n" +
  351 + "\n" +
  352 + "uniform mediump vec4 uColor;\n" +
  353 + "uniform sampler2D sTexture;\n" +
  354 + "varying mediump vec2 vTexCoord;\n" +
  355 + "\n" +
  356 + " \n" +
  357 + "uniform float uPixelFactor; // {default:0.1, min:0.0, max:0.3} \n" +
  358 + "\n" +
  359 + "\n" +
  360 + "float smooth(float f) {\n" +
  361 + " return 32.0*f*f*(0.25*f*f-0.5*f+0.25)+0.5;\n" +
  362 + "}\n" +
  363 + "\n" +
  364 + "void main()\n" +
  365 + "{\n" +
  366 + " vec2 resolution = vec2(1,1); // uniform vec2 resolution;\n" +
  367 + " //uPixelFactor = 8.0 + 8.0 * (0.5 + 0.5 * sin(globaltime * 0.25));\n" +
  368 + " vec2 chunkCoord = floor(vTexCoord.xy / uPixelFactor) * uPixelFactor;\n" +
  369 + " vec2 locCoord = (vTexCoord.xy - chunkCoord) / uPixelFactor;\n" +
  370 + " vec4 color = vec4(floor(5.0 * texture2D(sTexture, chunkCoord / resolution.xy).xyz) / 5.0, 1.0);\n" +
  371 + " float grey = (color.x + color.y + color.z) / 3.0;\n" +
  372 + " gl_FragColor = color * smooth(locCoord.x) * smooth(locCoord.y);\n" +
  373 + "}\n"
  374 + },
  375 + {
  376 + name: "burn",
  377 + hints: "",
  378 + animateTo: [ ["uThresh", 0.8, "Linear", 0, 3] ],
  379 + vertex:
  380 + "\n" +
  381 + "uniform mediump mat4 uModelView;\n" +
  382 + "uniform mediump mat4 uProjection;\n" +
  383 + "attribute mediump vec3 aPosition;\n" +
  384 + "attribute mediump vec2 aTexCoord;\n" +
  385 + "varying mediump vec2 vTexCoord;\n" +
  386 + "uniform mediump vec3 uSize;\n" +
  387 + "\n" +
  388 + "void main(void)\n" +
  389 + "{\n" +
  390 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  391 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  392 + " vTexCoord = aTexCoord;\n" +
  393 + "}\n" +
  394 + "\n" +
  395 + "\n" +
  396 + "\n" +
  397 + "",
  398 + fragment:
  399 + "precision mediump float;\n" +
  400 + "\n" +
  401 + "uniform mediump vec4 uColor;\n" +
  402 + "uniform sampler2D sTexture;\n" +
  403 + "varying mediump vec2 vTexCoord;\n" +
  404 + "\n" +
  405 + "\n" +
  406 + "float uScale = 2.0; // {default:10.0, description:\"noise texture scaling\"} \n" +
  407 + "uniform float uThresh; // {default:1.1, description:\"threshold of noise for burn\"} \n" +
  408 + "\n" +
  409 + "float random( vec2 p )\n" +
  410 + "{\n" +
  411 + " float q = p.x * 269.5 + p.y * 183.3;\n" +
  412 + " return fract( sin( q ) * 43758.5453 );\n" +
  413 + "}\n" +
  414 + "\n" +
  415 + "float noise( vec2 point )\n" +
  416 + "{\n" +
  417 + " vec2 p = floor( point );\n" +
  418 + " vec2 f = fract( point );\n" +
  419 + " return mix(\n" +
  420 + " mix( random( p + vec2( 0.0, 0.0 ) ), random( p + vec2( 1.0, 0.0 ) ), f.x ),\n" +
  421 + " mix( random( p + vec2( 0.0, 1.0 ) ), random( p + vec2( 1.0, 1.0 ) ), f.x ),\n" +
  422 + " f.y\n" +
  423 + " );\n" +
  424 + "}\n" +
  425 + "\n" +
  426 + "float fractal( vec2 point )\n" +
  427 + "{\n" +
  428 + " float sum = 0.0;\n" +
  429 + " float scale = 0.5;\n" +
  430 + " for ( int i = 0; i < 5; i++ )\n" +
  431 + " {\n" +
  432 + " sum += noise( point ) * scale;\n" +
  433 + " point *= 2.0;\n" +
  434 + " scale /= 2.0;\n" +
  435 + " }\n" +
  436 + " \n" +
  437 + " return sum;\n" +
  438 + "}\n" +
  439 + "\n" +
  440 + "\n" +
  441 + "void main( )\n" +
  442 + "{\n" +
  443 + " vec2 point = vTexCoord.xy / uScale;\n" +
  444 + " //point.x += iGlobalTime * 0.1;\n" +
  445 + " float noise = fractal( point * 20.0 );\n" +
  446 + " \n" +
  447 + " vec2 uv = vTexCoord.xy; // iResolution.xy;\n" +
  448 + " //uv.y = 1.0-uv.y;\n" +
  449 + " gl_FragColor = texture2D(sTexture, uv);\n" +
  450 + " \n" +
  451 + " if(noise < uThresh)\n" +
  452 + " {\n" +
  453 + " gl_FragColor = vec4(1.0, 0.5, 0.0, 1.0);\n" +
  454 + " }\n" +
  455 + " if(noise < uThresh - 0.05)\n" +
  456 + " {\n" +
  457 + " gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n" +
  458 + " }\n" +
  459 + " if(noise < uThresh - 0.1)\n" +
  460 + " {\n" +
  461 + " \n" +
  462 + " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); // use discard?\n" +
  463 + " }\n" +
  464 + "}\n" +
  465 + "\n" +
  466 + "\n" +
  467 + ""
  468 + },
  469 + {
  470 + name: "ripple 2D",
  471 + hints: "",
  472 + animateTo: [ ["uAmplitude", 0.1, "Linear", 0, 3],
  473 + ["uTime", 6, "Linear", 0, 3] ],
  474 + vertex: "\n" +
  475 + "uniform mediump mat4 uModelView;\n" +
  476 + "uniform mediump mat4 uProjection;\n" +
  477 + "attribute mediump vec3 aPosition;\n" +
  478 + "attribute mediump vec2 aTexCoord;\n" +
  479 + "varying mediump vec2 vTexCoord;\n" +
  480 + "\n" +
  481 + "void main(void)\n" +
  482 + "{\n" +
  483 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  484 + " vTexCoord = aTexCoord;\n" +
  485 + "}\n" +
  486 + "\n" +
  487 + "",
  488 + fragment:
  489 + "precision mediump float;\n" +
  490 + "\n" +
  491 + "uniform mediump vec4 uColor;\n" +
  492 + "uniform sampler2D sTexture;\n" +
  493 + "varying mediump vec2 vTexCoord;\n" +
  494 + "\n" +
  495 + "uniform float uAmplitude; // {default:0.02, min:0.0, max:1.0}\n" +
  496 + "uniform float uTime;\n" +
  497 + "uniform mediump vec4 sTextureRect;\n" +
  498 + "void main()\n" +
  499 + "{\n" +
  500 + " highp vec2 textureSize = sTextureRect.zw - sTextureRect.xy;\n" +
  501 + " highp vec2 pos = -1.0 + 2.0 * vTexCoord.st/textureSize;\n" +
  502 + " highp float len = length(pos);\n" +
  503 + " highp vec2 texCoord = vTexCoord.st/textureSize + pos/len * sin( len * 12.0 - uTime * 4.0 ) * uAmplitude; \n" +
  504 + " gl_FragColor = texture2D(sTexture, texCoord) * uColor;\n" +
  505 + "}\n" +
  506 + "\n" +
  507 + "\n" +
  508 + ""
  509 + },
  510 + {
  511 + name: "emboss combine",
  512 + hints: "",
  513 + animateTo: [ ["uWeight", [10.0, 10.0, 10.0, 10.0], "Linear", 0, 3] ],
  514 + vertex: "\n" +
  515 + "uniform mediump mat4 uModelView;\n" +
  516 + "uniform mediump mat4 uProjection;\n" +
  517 + "attribute mediump vec3 aPosition;\n" +
  518 + "attribute mediump vec2 aTexCoord;\n" +
  519 + "varying mediump vec2 vTexCoord;\n" +
  520 + "uniform mediump vec3 uSize;\n" +
  521 + "\n" +
  522 + "void main(void)\n" +
  523 + "{\n" +
  524 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  525 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  526 + " vTexCoord = aTexCoord;\n" +
  527 + "}\n" +
  528 + "\n" +
  529 + "",
  530 + fragment: "precision mediump float;\n" +
  531 + "\n" +
  532 + "uniform mediump vec4 uColor;\n" +
  533 + "uniform sampler2D sTexture;\n" +
  534 + "varying mediump vec2 vTexCoord;\n" +
  535 + "\n" +
  536 + "const int KERNEL_SIZE = 9;\n" +
  537 + "\n" +
  538 + "uniform vec4 uWeight; // {default: [10,10,10,10] }\n" +
  539 + "\n" +
  540 + "// Gaussian kernel\n" +
  541 + "float kernel[KERNEL_SIZE];\n" +
  542 + "\n" +
  543 + "float width = 512.0;\n" +
  544 + "float height = 512.0;\n" +
  545 + "\n" +
  546 + "float step_w = 1.0/width;\n" +
  547 + "float step_h = 1.0/height;\n" +
  548 + "\n" +
  549 + "vec2 offset[KERNEL_SIZE];\n" +
  550 + "\n" +
  551 + "void main(void)\n" +
  552 + "{\n" +
  553 + " precision mediump float;\n" +
  554 + "\n" +
  555 + " vec4 sum = vec4(0.0);\n" +
  556 + "\n" +
  557 + " offset[0] = vec2(-step_w, -step_h);\n" +
  558 + " offset[1] = vec2(0.0, -step_h);\n" +
  559 + " offset[2] = vec2(step_w, -step_h);\n" +
  560 + "\n" +
  561 + " offset[3] = vec2(-step_w, 0.0);\n" +
  562 + " offset[4] = vec2(0.0, 0.0);\n" +
  563 + " offset[5] = vec2(step_w, 0.0);\n" +
  564 + "\n" +
  565 + " offset[6] = vec2(-step_w, step_h);\n" +
  566 + " offset[7] = vec2(0.0, step_h);\n" +
  567 + " offset[8] = vec2(step_w, step_h);\n" +
  568 + "\n" +
  569 + " // guassian blur\n" +
  570 + " // kernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0;\n" +
  571 + " // kernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0;\n" +
  572 + " // kernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0;\n" +
  573 + "\n" +
  574 + " // laplace\n" +
  575 + " // kernel[0] = 0.0; kernel[1] = 1.0; kernel[2] = 0.0;\n" +
  576 + " // kernel[3] = 1.0; kernel[4] = -4.0; kernel[5] = 1.0;\n" +
  577 + " // kernel[6] = 0.0; kernel[7] = 1.0; kernel[8] = 0.0;\n" +
  578 + "\n" +
  579 + " // edge\n" +
  580 + " // kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0;\n" +
  581 + " // kernel[3] = -1.0; kernel[4] = +9.0; kernel[5] = -1.0;\n" +
  582 + " // kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0;\n" +
  583 + "\n" +
  584 + " // Embossing\n" +
  585 + " // 2 0 0\n" +
  586 + " // 0 -1 0\n" +
  587 + " // 0 0 -1\n" +
  588 + " kernel[0] = 2.0; kernel[1] = 0.0; kernel[2] = 0.0;\n" +
  589 + " kernel[3] = 0.0; kernel[4] = -1.0; kernel[5] = 0.0;\n" +
  590 + " kernel[6] = 0.0; kernel[7] = 0.0; kernel[8] =-1.0;\n" +
  591 + "\n" +
  592 + " vec4 tmp = texture2D(sTexture, vTexCoord.st + offset[0]);\n" +
  593 + " sum += tmp * kernel[0];\n" +
  594 + "\n" +
  595 + " tmp = texture2D(sTexture, vTexCoord.st + offset[1]);\n" +
  596 + " sum += tmp * kernel[1];\n" +
  597 + "\n" +
  598 + " tmp = texture2D(sTexture, vTexCoord.st + offset[2]);\n" +
  599 + " sum += tmp * kernel[2];\n" +
  600 + "\n" +
  601 + " tmp = texture2D(sTexture, vTexCoord.st + offset[3]);\n" +
  602 + " sum += tmp * kernel[3];\n" +
  603 + "\n" +
  604 + " tmp = texture2D(sTexture, vTexCoord.st + offset[4]);\n" +
  605 + " sum += tmp * kernel[4];\n" +
  606 + "\n" +
  607 + " tmp = texture2D(sTexture, vTexCoord.st + offset[5]);\n" +
  608 + " sum += tmp * kernel[5];\n" +
  609 + "\n" +
  610 + " tmp = texture2D(sTexture, vTexCoord.st + offset[6]);\n" +
  611 + " sum += tmp * kernel[6];\n" +
  612 + "\n" +
  613 + " tmp = texture2D(sTexture, vTexCoord.st + offset[7]);\n" +
  614 + " sum += tmp * kernel[7];\n" +
  615 + "\n" +
  616 + " tmp = texture2D(sTexture, vTexCoord.st + offset[8]);\n" +
  617 + " sum += tmp * kernel[8];\n" +
  618 + "\n" +
  619 + " sum = texture2D(sTexture, vTexCoord.xy) + (sum * uWeight);\n" +
  620 + "\n" +
  621 + " gl_FragColor = sum;\n" +
  622 + "}\n"
  623 + },
  624 + {
  625 + name: "blur",
  626 + hints: "",
  627 + vertex: "\n" +
  628 + "uniform mediump mat4 uModelView;\n" +
  629 + "uniform mediump mat4 uProjection;\n" +
  630 + "uniform mediump vec3 uSize;\n" +
  631 + "attribute mediump vec3 aPosition;\n" +
  632 + "attribute mediump vec2 aTexCoord;\n" +
  633 + "varying mediump vec2 vTexCoord;\n" +
  634 + "\n" +
  635 + "void main(void)\n" +
  636 + "{\n" +
  637 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  638 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  639 + " vTexCoord = aTexCoord;\n" +
  640 + "}\n" +
  641 + "\n" +
  642 + "",
  643 + fragment:
  644 + "\n" +
  645 + "precision mediump float;\n" +
  646 + "\n" +
  647 + "uniform mediump vec4 uColor;\n" +
  648 + "uniform sampler2D sTexture;\n" +
  649 + "varying mediump vec2 vTexCoord;\n" +
  650 + "\n" +
  651 + "\n" +
  652 + "#define PI2 6.283184\n" +
  653 + "\n" +
  654 + "#define CV 0.1\n" +
  655 + "#define ST 0.05\n" +
  656 + "\n" +
  657 + "uniform float uFactor; // {default: 0.5, min:0.0, max:1.0}\n" +
  658 + "\n" +
  659 + "vec4 colorat(vec2 uv) {\n" +
  660 + " return texture2D(sTexture, uv);\n" +
  661 + "}\n" +
  662 + "vec4 blur(vec2 uv) { // convolve\n" +
  663 + " vec4 col = vec4(0.0);\n" +
  664 + " for(float r0 = 0.0; r0 < 1.0; r0 += ST) {\n" +
  665 + " float r = r0 * CV;\n" +
  666 + " for(float a0 = 0.0; a0 < 1.0; a0 += ST) {\n" +
  667 + " float a = a0 * PI2;\n" +
  668 + " col += colorat(uv + vec2(cos(a), sin(a)) * r);\n" +
  669 + " }\n" +
  670 + " }\n" +
  671 + " col *= ST * ST;\n" +
  672 + " return col;\n" +
  673 + "}\n" +
  674 + "\n" +
  675 + "\n" +
  676 + "\n" +
  677 + "void main() {\n" +
  678 + " vec2 uv = vTexCoord.xy;\n" +
  679 + " gl_FragColor = blur(uv) * uFactor + ((1.0-uFactor) * texture2D(sTexture, uv));\n" +
  680 + "}\n" +
  681 + "\n"
  682 + },
  683 + {name: "image-click",
  684 + hints: "",
  685 + animateTo: [ ["uRadius", 0.3, "Linear", 0, 0.3] ],
  686 + vertex: "\n" +
  687 + "uniform mediump mat4 uModelView;\n" +
  688 + "uniform mediump mat4 uProjection;\n" +
  689 + "attribute mediump vec3 aPosition;\n" +
  690 + "attribute mediump vec2 aTexCoord;\n" +
  691 + "varying mediump vec2 vTexCoord;\n" +
  692 + "uniform mediump vec3 uSize;\n" +
  693 + "\n" +
  694 + "void main(void)\n" +
  695 + "{\n" +
  696 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  697 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  698 + " vTexCoord = aTexCoord;\n" +
  699 + "}\n" +
  700 + "\n" +
  701 + "",
  702 + fragment:
  703 + "precision lowp float;\n" +
  704 + "\n" +
  705 + "uniform mediump vec4 uColor;\n" +
  706 + "varying mediump vec2 vTexCoord;\n" +
  707 + "uniform sampler2D sTexture;\n" +
  708 + "\n" +
  709 + "uniform lowp float uRadius; // {default 0.2, min:0, max:0.3, description:\"touch radius and brightness mix\"\n" +
  710 + "vec2 offset = vec2(0.3,-0.2); // offset from center; for touch point (todo - make uniform)\n" +
  711 + "\n" +
  712 + "void main()\n" +
  713 + "{\n" +
  714 + " precision lowp float;\n" +
  715 + " lowp vec2 pos= vec2(vTexCoord.x-0.5-offset.x,vTexCoord.y-0.5-offset.y);\n" +
  716 + " lowp float radius = dot(pos, pos ) ;\n" +
  717 + "\n" +
  718 + " // use sRGB correction to brighten image\n" +
  719 + " vec4 col = texture2D( sTexture, vTexCoord ) * uColor;\n" +
  720 + " vec3 mask = vec3(greaterThan(col.rgb, vec3(0.0031308)));\n" +
  721 + " vec3 o = mix(col.rgb * 12.92, \n" +
  722 + " pow(col.rgb, vec3(1.0/2.4)) * 1.055 - 0.055, \n" +
  723 + " mask);\n" +
  724 + " \n" +
  725 + " vec3 diff = o - col.rgb;\n" +
  726 + " diff *= uRadius * 3.0;\n" +
  727 + " o = col.rgb + diff;\n" +
  728 + " \n" +
  729 + " gl_FragColor = vec4(o.r, o.g, o.b, col.a);\n" +
  730 + "\n" +
  731 + " if( radius <= (uRadius*uRadius) )\n" +
  732 + " {\n" +
  733 + " gl_FragColor += vec4(0.1);\n" +
  734 + " }\n" +
  735 + " \n" +
  736 + "}\n" +
  737 + "\n" +
  738 + ""
  739 + },
  740 + {name: "iris effect",
  741 + hints: "",
  742 + animateTo: [ ["uRadius", 1.0, "Linear", 0, 0.3],
  743 + ["uCenter", [0.2, 0.2], "Linear", 0, 0.0],
  744 + ["uBlendFactor", 1.0, "Linear", 0, 0.0]
  745 + ],
  746 + vertex:
  747 + "\n" +
  748 + "uniform mediump mat4 uModelView;\n" +
  749 + "uniform mediump mat4 uProjection;\n" +
  750 + "attribute mediump vec3 aPosition;\n" +
  751 + "attribute mediump vec2 aTexCoord;\n" +
  752 + "varying mediump vec2 vTexCoord;\n" +
  753 + "uniform mediump vec3 uSize;\n" +
  754 + "\n" +
  755 + "uniform mediump vec2 uCenter; // { default: [0.7, 0.7] } \n" +
  756 + "varying mediump vec2 vRelativePosition;\n" +
  757 + "\n" +
  758 + "void main()\n" +
  759 + "{\n" +
  760 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  761 + " mediump vec4 world = uModelView * vec4(vertexPosition,1.0);\n" +
  762 + " gl_Position = uProjection * world;\n" +
  763 + "\n" +
  764 + " vTexCoord = aTexCoord;\n" +
  765 + " vRelativePosition = aTexCoord - uCenter;\n" +
  766 + "}\n" +
  767 + "\n" +
  768 + "\n" +
  769 + "",
  770 + fragment:
  771 + "\n" +
  772 + "uniform mediump vec4 uColor;\n" +
  773 + "uniform sampler2D sTexture;\n" +
  774 + "varying mediump vec2 vTexCoord;\n" +
  775 + "\n" +
  776 + "uniform mediump float uRadius; // {default:0.5} \n" +
  777 + "uniform mediump float uBlendFactor; // {default:2} \n" +
  778 + "varying mediump vec2 vRelativePosition;\n" +
  779 + "void main()\n" +
  780 + "{\n" +
  781 + " mediump float delta = (length(vRelativePosition) - uRadius);\n" +
  782 + " delta = clamp(0.0 - delta * uBlendFactor, 0.0, 1.0);\n" +
  783 + " gl_FragColor = texture2D(sTexture, vTexCoord) * uColor;\n" +
  784 + " gl_FragColor.a *= delta;\n" +
  785 + "}\n" +
  786 + "\n" +
  787 + ""
  788 + },
  789 + {name: "mirror effect",
  790 + hints: "",
  791 + animateTo: [ ["uDepth", 0.5, "Linear", 0, 0.0],
  792 + ["uAlpha", 1.0, "Linear", 0, 0.0]
  793 + ],
  794 + vertex:
  795 + "\n" +
  796 + "uniform mediump mat4 uModelView;\n" +
  797 + "uniform mediump mat4 uProjection;\n" +
  798 + "attribute mediump vec3 aPosition;\n" +
  799 + "attribute mediump vec2 aTexCoord;\n" +
  800 + "varying mediump vec2 vTexCoord;\n" +
  801 + "uniform mediump vec3 uSize;\n" +
  802 + "\n" +
  803 + "void main()\n" +
  804 + "{\n" +
  805 + " mediump vec3 pos = aPosition * uSize;\n" +
  806 + " pos.y = pos.y * 3.0;\n" +
  807 + " mediump vec4 world = uModelView * vec4(pos,1.0);\n" +
  808 + " gl_Position = uProjection * world;\n" +
  809 + " vTexCoord = aTexCoord;\n" +
  810 + "}\n" +
  811 + "\n" +
  812 + "",
  813 + fragment:
  814 + "\n" +
  815 + "uniform mediump vec4 uColor;\n" +
  816 + "uniform sampler2D sTexture;\n" +
  817 + "varying mediump vec2 vTexCoord;\n" +
  818 + "\n" +
  819 + "uniform mediump float uDepth; // {default: 0.3 }\n" +
  820 + "uniform mediump float uAlpha; // {default: 10.0 }\n" +
  821 + "void main()\n" +
  822 + "{\n" +
  823 + " if(vTexCoord.y < 1.0 / 3.0)\n" +
  824 + " {\n" +
  825 + " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n" +
  826 + " }\n" +
  827 + " else if(vTexCoord.y < 2.0 / 3.0)\n" +
  828 + " {\n" +
  829 + " gl_FragColor = texture2D(sTexture, vec2(vTexCoord.x, vTexCoord.y * 3.0 - 1.0)) * uColor;\n" +
  830 + " gl_FragColor.a *= uAlpha;\n" +
  831 + " }\n" +
  832 + " else\n" +
  833 + " {\n" +
  834 + " highp float darkness = 3.0 - vTexCoord.y * 3.0;\n" +
  835 + " darkness = (1.0 - 1.0 / uDepth + darkness * 1.0/ uDepth) * 0.65;\n" +
  836 + " highp vec4 color = texture2D(sTexture, vec2(vTexCoord.x, -vTexCoord.y *3.0 + 3.0)) * uColor;\n" +
  837 + " color.a *= uAlpha;\n" +
  838 + " gl_FragColor = color * vec4(darkness, darkness, darkness, darkness);\n" +
  839 + " }\n" +
  840 + "}\n" +
  841 + ""
  842 + },
  843 + {name: "square dissolve",
  844 + animateTo: [ ["uRows", 0.4, "Linear", 0, 0.0],
  845 + ["uColumns", 0.4, "Linear", 0, 0.0],
  846 + ["texSize", [100, 100], "Linear", 0, 0.0],
  847 + ["uStep", 1, "Linear", 0, 3.0]
  848 + ],
  849 + hints: " grid blending",
  850 + vertex: "\n" +
  851 + "uniform mediump mat4 uModelView;\n" +
  852 + "uniform mediump mat4 uProjection;\n" +
  853 + "attribute mediump vec3 aPosition;\n" +
  854 + "attribute mediump vec2 aTexCoord;\n" +
  855 + "varying mediump vec2 vTexCoord;\n" +
  856 + "\n" +
  857 + "void main(void)\n" +
  858 + "{\n" +
  859 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  860 + " vTexCoord = aTexCoord;\n" +
  861 + "}\n" +
  862 + "\n" +
  863 + "",
  864 + fragment:
  865 + "\n" +
  866 + "uniform mediump vec4 uColor;\n" +
  867 + "uniform sampler2D sTexture;\n" +
  868 + "varying mediump vec2 vTexCoord;\n" +
  869 + "\n" +
  870 + "uniform mediump vec2 texSize;\n" +
  871 + "uniform mediump float uStep;\n" +
  872 + "uniform mediump float uRows;\n" +
  873 + "uniform mediump float uColumns;\n" +
  874 + "uniform sampler2D sTexture;\n" +
  875 + "void main()\n" +
  876 + "{\n" +
  877 + " mediump vec2 mosaicSize = vec2(1.0 / uRows, 1.0 / uColumns);\n" +
  878 + " mediump vec2 intXY = vec2(vTexCoord.x * texSize.x, vTexCoord.y * texSize.y);\n" +
  879 + " mediump vec2 XYMosaic = vec2(floor(intXY.x / mosaicSize.x) * mosaicSize.x, floor(intXY.y / mosaicSize.y) * mosaicSize.y);\n" +
  880 + " mediump vec2 UVMosaic = vec2(XYMosaic.x /texSize.x, XYMosaic.y / texSize.y);\n" +
  881 + " mediump vec4 noiseVec = texture2D(sEffect, UVMosaic);\n" +
  882 + " mediump float intensity = (noiseVec[0] + noiseVec[1] + noiseVec[2] + noiseVec[3]) / 4.0;\n" +
  883 + " if(intensity < uStep)\n" +
  884 + " gl_FragColor = vec4(0.1, 0.1, 0.1, 1.0);\n" +
  885 + " else\n" +
  886 + " gl_FragColor = texture2D(sTexture, vTexCoord);\n" +
  887 + " gl_FragColor *= uColor;\n" +
  888 + "}\n" +
  889 + "\n" +
  890 + ""
  891 + },
  892 + {name: "swirl",
  893 + hints: " grid blending",
  894 + animateTo: [ ["uCenter", [0.5, 0.5], "Linear", 0, 0.0],
  895 + ["uTextureSize", [100, 100], "Linear", 0, 0.0],
  896 + ["uRadius", 1.0, "Linear", 0, 3.0],
  897 + ["uAngle", 3.0, "Linear", 0, 3.0]
  898 + ],
  899 + vertex: "\n" +
  900 + "uniform mediump mat4 uModelView;\n" +
  901 + "uniform mediump mat4 uProjection;\n" +
  902 + "attribute mediump vec3 aPosition;\n" +
  903 + "attribute mediump vec2 aTexCoord;\n" +
  904 + "varying mediump vec2 vTexCoord;\n" +
  905 + "uniform mediump vec3 uSize;\n" +
  906 + "\n" +
  907 + "void main(void)\n" +
  908 + "{\n" +
  909 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  910 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  911 + " vTexCoord = aTexCoord;\n" +
  912 + "}\n" +
  913 + "\n" +
  914 + "",
  915 + fragment: "\n" +
  916 + "uniform mediump vec4 uColor;\n" +
  917 + "uniform sampler2D sTexture;\n" +
  918 + "uniform mediump vec4 sTextureRect;\n" +
  919 + "\n" +
  920 + "uniform mediump vec2 uTextureSize;\n" +
  921 + "uniform highp float uRadius;\n" +
  922 + "uniform highp float uAngle;\n" +
  923 + "uniform mediump vec2 uCenter;\n" +
  924 + "varying mediump vec2 vTexCoord;\n" +
  925 + "void main()\n" +
  926 + "{\n" +
  927 + " highp vec2 textureCenter = (sTextureRect.xy + sTextureRect.zw) * 0.5;\n" +
  928 + " textureCenter = vTexCoord.st - textureCenter;\n" +
  929 + " highp float distance = length(textureCenter);\n" +
  930 + " if (distance >= uRadius)\n" +
  931 + " discard;\n" +
  932 + " highp float percent = (uRadius - distance) / uRadius;\n" +
  933 + " highp float theta = percent * percent * uAngle * 4.0;\n" +
  934 + " highp float sinTheta = sin(theta);\n" +
  935 + " highp float cosTheta = cos(theta);\n" +
  936 + "// if warp, loose the sign from sin\n" +
  937 + " bool warp = true;\n" +
  938 + " if( warp )\n" +
  939 + " {\n" +
  940 + " textureCenter = vec2( dot( textureCenter, vec2(cosTheta, sinTheta) ),\n" +
  941 + " dot( textureCenter, vec2(sinTheta, cosTheta) ) );\n" +
  942 + " }\n" +
  943 + " else\n" +
  944 + " {\n" +
  945 + " textureCenter = vec2( dot( textureCenter, vec2(cosTheta, -sinTheta) ),\n" +
  946 + " dot( textureCenter, vec2(sinTheta, cosTheta) ) );\n" +
  947 + " }\n" +
  948 + " textureCenter += uCenter;\n" +
  949 + " gl_FragColor = texture2D( sTexture, textureCenter ) * uColor;\n" +
  950 + "}\n" +
  951 + "\n" +
  952 + "\n" +
  953 + ""
  954 + },
  955 + {name: "drop shadow",
  956 + vertex:
  957 + "\n" +
  958 + "uniform mediump mat4 uModelView;\n" +
  959 + "uniform mediump mat4 uProjection;\n" +
  960 + "attribute mediump vec3 aPosition;\n" +
  961 + "attribute mediump vec2 aTexCoord;\n" +
  962 + "varying mediump vec2 vTexCoord;\n" +
  963 + "uniform mediump vec3 uSize;\n" +
  964 + "\n" +
  965 + "void main()\n" +
  966 + "{\n" +
  967 + " mediump vec3 pos = aPosition * uSize;\n" +
  968 + " pos.y = pos.y * 1.1; \n" +
  969 + " pos.x = pos.x * 1.1;\n" +
  970 + " \n" +
  971 + " mediump vec4 world = uModelView * vec4(pos,1.0);\n" +
  972 + " gl_Position = uProjection * world;\n" +
  973 + " vTexCoord = aTexCoord;\n" +
  974 + "}\n" +
  975 + "\n" +
  976 + "\n" +
  977 + "",
  978 + fragment:
  979 + "\n" +
  980 + "uniform mediump vec4 uColor;\n" +
  981 + "uniform sampler2D sTexture;\n" +
  982 + "varying mediump vec2 vTexCoord;\n" +
  983 + "\n" +
  984 + "void main()\n" +
  985 + "{\n" +
  986 + " if(vTexCoord.y < 0.05)\n" +
  987 + " {\n" +
  988 + " discard;\n" +
  989 + " gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);\n" +
  990 + " }\n" +
  991 + " else if(vTexCoord.x < 0.05)\n" +
  992 + " {\n" +
  993 + " discard;\n" +
  994 + " gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);\n" +
  995 + " }\n" +
  996 + " else if(vTexCoord.y < 0.95 && vTexCoord.x < 0.95)\n" +
  997 + " {\n" +
  998 + " gl_FragColor = texture2D(sTexture, vec2(vTexCoord.x/ (1.0/1.1) - 0.05, vTexCoord.y / (1.0/1.0) - 0.05 )) * uColor;\n" +
  999 + " }\n" +
  1000 + " else\n" +
  1001 + " {\n" +
  1002 + " if(vTexCoord.y < 0.1 || vTexCoord.x < 0.1)\n" +
  1003 + " {\n" +
  1004 + " discard;\n" +
  1005 + " }\n" +
  1006 + " else\n" +
  1007 + " {\n" +
  1008 + " gl_FragColor = vec4(0.2, 0.2, 0.2, 1.0);\n" +
  1009 + " }\n" +
  1010 + " }\n" +
  1011 + "}\n" +
  1012 + "\n" +
  1013 + "\n" +
  1014 + "",
  1015 + hints: ""
  1016 + },
  1017 + {
  1018 + name: "noise",
  1019 + hints: "",
  1020 + vertex: "\n" +
  1021 + "uniform mediump mat4 uModelView;\n" +
  1022 + "uniform mediump mat4 uProjection;\n" +
  1023 + "attribute mediump vec3 aPosition;\n" +
  1024 + "attribute mediump vec2 aTexCoord;\n" +
  1025 + "varying mediump vec2 vTexCoord;\n" +
  1026 + "uniform mediump vec3 uSize; \n" +
  1027 + "\n" +
  1028 + "void main(void)\n" +
  1029 + "{\n" +
  1030 + " mediump vec3 vertexPosition = aPosition * uSize;\n" +
  1031 + "\n" +
  1032 + " gl_Position = uProjection * uModelView * vec4(vertexPosition, 1.0);\n" +
  1033 + " vTexCoord = aTexCoord;\n" +
  1034 + "}\n" +
  1035 + "\n" +
  1036 + "",
  1037 + fragment:
  1038 + "\n" +
  1039 + "precision mediump float;\n" +
  1040 + "\n" +
  1041 + "uniform mediump vec4 uColor;\n" +
  1042 + "varying mediump vec2 vTexCoord;\n" +
  1043 + "\n" +
  1044 + "// noise\n" +
  1045 + "float noise(vec2 pos)\n" +
  1046 + "{\n" +
  1047 + " return fract( sin( dot(pos*0.001 ,vec2(24.12357, 36.789) ) ) * 12345.123);\n" +
  1048 + "}\n" +
  1049 + "\n" +
  1050 + "\n" +
  1051 + "// blur noise\n" +
  1052 + "float smooth_noise(vec2 pos)\n" +
  1053 + "{\n" +
  1054 + " return ( noise(pos + vec2(1,1)) + noise(pos + vec2(1,1)) + noise(pos + vec2(1,1)) + noise(pos + vec2(1,1)) ) / 16.0\n" +
  1055 + " + ( noise(pos + vec2(1,0)) + noise(pos + vec2(-1,0)) + noise(pos + vec2(0,1)) + noise(pos + vec2(0,-1)) ) / 8.0\n" +
  1056 + " + noise(pos) / 4.0;\n" +
  1057 + "}\n" +
  1058 + "\n" +
  1059 + "\n" +
  1060 + "// linear interpolation\n" +
  1061 + "float interpolate_noise(vec2 pos)\n" +
  1062 + "{\n" +
  1063 + "float a, b, c, d;\n" +
  1064 + " \n" +
  1065 + " a = smooth_noise(floor(pos));\n" +
  1066 + " b = smooth_noise(vec2(floor(pos.x+1.0), floor(pos.y)));\n" +
  1067 + " c = smooth_noise(vec2(floor(pos.x), floor(pos.y+1.0)));\n" +
  1068 + " d = smooth_noise(vec2(floor(pos.x+1.0), floor(pos.y+1.0)));\n" +
  1069 + "\n" +
  1070 + " a = mix(a, b, fract(pos.x));\n" +
  1071 + " b = mix(c, d, fract(pos.x));\n" +
  1072 + " a = mix(a, b, fract(pos.y));\n" +
  1073 + " \n" +
  1074 + " return a;\n" +
  1075 + "}\n" +
  1076 + "\n" +
  1077 + "\n" +
  1078 + "float perlin_noise(vec2 pos)\n" +
  1079 + "{\n" +
  1080 + " float n;\n" +
  1081 + " \n" +
  1082 + " n = interpolate_noise(pos*0.0625)*0.5;\n" +
  1083 + " n += interpolate_noise(pos*0.125)*0.25;\n" +
  1084 + " n += interpolate_noise(pos*0.025)*0.225;\n" +
  1085 + " n += interpolate_noise(pos*0.05)*0.0625;\n" +
  1086 + " n += interpolate_noise(pos)*0.03125;\n" +
  1087 + " return n;\n" +
  1088 + "}\n" +
  1089 + "\n" +
  1090 + "\n" +
  1091 + "\n" +
  1092 + "void main()\n" +
  1093 + "{\n" +
  1094 + " vec2 pos = vTexCoord.xy;\n" +
  1095 + " float c, n;\n" +
  1096 + "\n" +
  1097 + "\n" +
  1098 + " n = perlin_noise(pos);\n" +
  1099 + "\n" +
  1100 + "\n" +
  1101 + " vec2 p = pos; // / iResolution.xy;\n" +
  1102 + "\n" +
  1103 + " if(p.y < 0.333) // last row\n" +
  1104 + "{\n" +
  1105 + " \n" +
  1106 + " if(p.x < 0.333)\n" +
  1107 + " c = abs(cos(n*10.0));\n" +
  1108 + " else if(p.x < 0.666)\n" +
  1109 + " c = cos(pos.x*0.02 + n*10.0);//*0.5+0.5;\n" +
  1110 + " else\n" +
  1111 + " {\n" +
  1112 + " pos *= 0.05;\n" +
  1113 + " c = abs(sin(pos.x+n*5.0)*cos(pos.y+n*5.0));\n" +
  1114 + " }\n" +
  1115 + " }\n" +
  1116 + " else if(p.y < 0.666) // middle row\n" +
  1117 + " {\n" +
  1118 + " \n" +
  1119 + " if(p.x < 0.333)\n" +
  1120 + " {\n" +
  1121 + " pos *= 0.05;\n" +
  1122 + " pos += vec2(10.0, 10.0);\n" +
  1123 + " c = sqrt(pos.x * pos.x + pos.y * pos.y);\n" +
  1124 + " c = fract(c+n);\n" +
  1125 + " }\n" +
  1126 + " else if(p.x < 0.666)\n" +
  1127 + " {\n" +
  1128 + " c = max(1.0 - mod(pos.x*0.5, 80.3+n*4.0)*0.5, 1.0 - mod(pos.y*0.5, 80.3+n*4.0)*0.5);\n" +
  1129 + " c = max(c, 0.5*max(1.0 - mod(pos.x*0.5+40.0, 80.3+n*4.0)*0.5, 1.0 - mod(pos.y*0.5+40.0, 80.3+n*4.0)*0.5));\n" +
  1130 + " }\n" +
  1131 + " else\n" +
  1132 + " c = abs(cos(pos.x*0.1 + n*20.0));// mod(pos.x*0.1, cos(pos.x));\n" +
  1133 + " }\n" +
  1134 + " else // first row\n" +
  1135 + " {\n" +
  1136 + " if(p.x < 0.333)\n" +
  1137 + " c = noise(pos);\n" +
  1138 + " else if(p.x < 0.666)\n" +
  1139 + " c = n;\n" +
  1140 + " else\n" +
  1141 + " c =max(fract(n*20.0), max(fract(n*5.0), fract(n*10.0)));\n" +
  1142 + " }\n" +
  1143 + "\n" +
  1144 + " gl_FragColor = vec4(c, c, c, 1.0);\n" +
  1145 + "}\n" +
  1146 + "\n" +
  1147 + ""
  1148 + }
  1149 +];
  1150 +
  1151 +//
  1152 +// Demo Javascript snippets
  1153 +//
  1154 +//
  1155 +var javascriptSources =
  1156 +[
  1157 + {
  1158 + name: "XX. Regression tests",
  1159 + source: "\n" +
  1160 + "clear();\n" +
  1161 + "var test = new Test();\n" +
  1162 + "test.regression(); // results in developer console (F12)\n" +
  1163 + "\n"
  1164 + },
  1165 + {
  1166 + name: "10. ImageView",
  1167 + source:"\n" +
  1168 + "var a = new dali.ImageView();\n" +
  1169 + "\n" +
  1170 + "var img = imageFromUiBuffer(\"field\");\n" +
  1171 + "\n" +
  1172 + "a.setImage(img);\n" +
  1173 + "\n" +
  1174 + "a.size = [100,100,1];\n" +
  1175 + "\n" +
  1176 + "dali.stage.add(a)\n" +
  1177 + ""
  1178 + },
  1179 + {
  1180 + name: "01. Colored Quad",
  1181 + source: "var halfQuadSize = 0.5;\n" +
  1182 + "\n" +
  1183 + "// using helper function to create property buffer\n" +
  1184 + "var verts = dali.createPropertyBuffer( {format: [ [\"aPosition\", dali.PropertyType.VECTOR3],\n" +
  1185 + " [\"aCol\", dali.PropertyType.VECTOR4] ],\n" +
  1186 + " data: { \"aPosition\": [ [-halfQuadSize, -halfQuadSize, 0.0],\n" +
  1187 + " [+halfQuadSize, -halfQuadSize, 0.0],\n" +
  1188 + " [-halfQuadSize, +halfQuadSize, 0.0],\n" +
  1189 + " [+halfQuadSize, +halfQuadSize, 0.0]\n" +
  1190 + " ],\n" +
  1191 + " \"aCol\": [ [0, 0, 0, 1],\n" +
  1192 + " [1, 0, 1, 1],\n" +
  1193 + " [0, 1, 0, 1],\n" +
  1194 + " [1, 1, 1, 1]\n" +
  1195 + " ]\n" +
  1196 + " }\n" +
  1197 + " }\n" +
  1198 + " );\n" +
  1199 + "\n" +
  1200 + "var indices = dali.createPropertyBuffer( { format: [ [\"indices\", dali.PropertyType.INTEGER]],\n" +
  1201 + " data: { \"indices\": [0, 3, 1, 0, 2, 3] } } ) ;\n" +
  1202 + "\n" +
  1203 + "var geometry = new dali.Geometry();\n" +
  1204 + "\n" +
  1205 + "geometry.addVertexBuffer(verts);\n" +
  1206 + "geometry.setIndexBuffer(indices);\n" +
  1207 + "\n" +
  1208 + "var vertex = \"\" +\n" +
  1209 + " \"attribute mediump vec3 aPosition;\" +\n" +
  1210 + " \"attribute mediump vec4 aCol;\" +\n" +
  1211 + " \"uniform mediump mat4 uMvpMatrix;\" +\n" +
  1212 + " \"uniform mediump vec3 uSize;\" +\n" +
  1213 + " \"uniform lowp vec4 uColor;\" +\n" +
  1214 + " \"varying lowp vec4 vColor;\" +\n" +
  1215 + " \"\" +\n" +
  1216 + " \"void main()\" +\n" +
  1217 + " \"{\" +\n" +
  1218 + " \" vColor = aCol * uColor;\" +\n" +
  1219 + " \" mediump vec4 vertexPosition = vec4(aPosition,1.0);\" +\n" +
  1220 + " \" vertexPosition.xyz *= uSize;\" +\n" +
  1221 + " \" gl_Position = uMvpMatrix * vertexPosition;\" +\n" +
  1222 + " \"}\";\n" +
  1223 + "\n" +
  1224 + "var fragment = \"\" +\n" +
  1225 + " \"varying lowp vec4 vColor;\" +\n" +
  1226 + " \"uniform lowp vec4 uColor;\" +\n" +
  1227 + " \"\" +\n" +
  1228 + " \"void main()\" +\n" +
  1229 + " \"{\" +\n" +
  1230 + " \" gl_FragColor = vColor * uColor;\" +\n" +
  1231 + " \"}\";\n" +
  1232 + "\n" +
  1233 + "var shader = new dali.Shader(vertex, fragment, dali.ShaderHints.HINT_NONE);\n" +
  1234 + "\n" +
  1235 + "var material = new dali.Material(shader);\n" +
  1236 + "\n" +
  1237 + "var renderer = new dali.Renderer(geometry, material);\n" +
  1238 + "\n" +
  1239 + "var actor = new dali.Actor();\n" +
  1240 + "\n" +
  1241 + "actor.addRenderer(renderer);\n" +
  1242 + "\n" +
  1243 + "dali.stage.add(actor);\n" +
  1244 + "\n" +
  1245 + "actor.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1246 + "actor.size = [100,100,1];\n" +
  1247 + "\n" +
  1248 + ""
  1249 + },
  1250 + {
  1251 + name: "02. Textured Quad",
  1252 + source: "var halfQuadSize = 0.5;\n" +
  1253 + "\n" +
  1254 + "// using helper function to create property buffer\n" +
  1255 + "var verts = dali.createPropertyBuffer( {format: [ [\"aPosition\", dali.PropertyType.VECTOR3],\n" +
  1256 + " [\"aTexCoord\", dali.PropertyType.VECTOR2] ],\n" +
  1257 + " data: { \"aPosition\": [ [-halfQuadSize, -halfQuadSize, 0.0],\n" +
  1258 + " [+halfQuadSize, -halfQuadSize, 0.0],\n" +
  1259 + " [-halfQuadSize, +halfQuadSize, 0.0],\n" +
  1260 + " [+halfQuadSize, +halfQuadSize, 0.0]\n" +
  1261 + " ],\n" +
  1262 + " \"aTexCoord\": [ [0, 0],\n" +
  1263 + " [1, 0],\n" +
  1264 + " [0, 1],\n" +
  1265 + " [1, 1]\n" +
  1266 + " ]\n" +
  1267 + " }\n" +
  1268 + " });\n" +
  1269 + "\n" +
  1270 + "var indices = dali.createPropertyBuffer( { format: [ [\"indices\", dali.PropertyType.INTEGER]],\n" +
  1271 + " data: { \"indices\": [0, 3, 1, 0, 2, 3] } } ) ;\n" +
  1272 + "\n" +
  1273 + "var geometry = new dali.Geometry();\n" +
  1274 + "\n" +
  1275 + "geometry.addVertexBuffer(verts);\n" +
  1276 + "geometry.setIndexBuffer(indices);\n" +
  1277 + "\n" +
  1278 + "var shader = shaderFromUiBuffer(\"pass through texture\");\n" +
  1279 + "\n" +
  1280 + "var material = new dali.Material(shader);\n" +
  1281 + "\n" +
  1282 + "var image = imageFromUiBuffer(\"ducks\");\n" +
  1283 + "var sampler = new dali.Sampler();\n" +
  1284 + "material.addTexture(image, \"sTexture\", sampler);\n" +
  1285 + "\n" +
  1286 + "var renderer = new dali.Renderer(geometry, material);\n" +
  1287 + "\n" +
  1288 + "var actor = new dali.Actor();\n" +
  1289 + "\n" +
  1290 + "actor.addRenderer(renderer);\n" +
  1291 + "\n" +
  1292 + "dali.stage.add(actor);\n" +
  1293 + "\n" +
  1294 + "actor.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1295 + "actor.size = [100,100,1];\n" +
  1296 + "\n" +
  1297 + "\n" +
  1298 + ""
  1299 + },
  1300 + {
  1301 + name: "03. Shaded Quads",
  1302 + source: "var halfQuadSize = 0.5;\n" +
  1303 + "\n" +
  1304 + "// using helper function to create property buffer\n" +
  1305 + "var verts = dali.createPropertyBuffer( {format: [ [\"aPosition\", dali.PropertyType.VECTOR3],\n" +
  1306 + " [\"aTexCoord\", dali.PropertyType.VECTOR2] ],\n" +
  1307 + " data: { \"aPosition\": [ [-halfQuadSize, -halfQuadSize, 0.0],\n" +
  1308 + " [+halfQuadSize, -halfQuadSize, 0.0],\n" +
  1309 + " [-halfQuadSize, +halfQuadSize, 0.0],\n" +
  1310 + " [+halfQuadSize, +halfQuadSize, 0.0]\n" +
  1311 + " ],\n" +
  1312 + " \"aTexCoord\": [ [0, 0],\n" +
  1313 + " [1, 0],\n" +
  1314 + " [0, 1],\n" +
  1315 + " [1, 1]\n" +
  1316 + " ]\n" +
  1317 + " }\n" +
  1318 + " });\n" +
  1319 + "\n" +
  1320 + "\n" +
  1321 + "var indices = dali.createPropertyBuffer( { format: [ [\"indices\", dali.PropertyType.INTEGER]],\n" +
  1322 + " data: { \"indices\": [0, 3, 1, 0, 2, 3] } } ) ;\n" +
  1323 + "\n" +
  1324 + "var geometry = new dali.Geometry();\n" +
  1325 + "\n" +
  1326 + "geometry.addVertexBuffer(verts);\n" +
  1327 + "geometry.setIndexBuffer(indices);\n" +
  1328 + "\n" +
  1329 + "\n" +
  1330 + "// some shader buffers for textured quad\n" +
  1331 + "var names = [\"adjust brightness\", \"blur\", \"burn\", \"drop shadow\", \"emboss combine\",\n" +
  1332 + " \"image-click\", \"melt\", \"ripple 2D\", \"mirror effect\", \"iris effect\",\n" +
  1333 + " \"mosaic\", \"round window\", \"swirl\", \"noise\"];\n" +
  1334 + "\n" +
  1335 + "var n = Math.floor(Math.sqrt(names.length));\n" +
  1336 + "var c = 0;\n" +
  1337 + "var x = -(0.5*n*100);\n" +
  1338 + "var y = -(0.5*n*100);\n" +
  1339 + "\n" +
  1340 + "for(var i = 0; i < names.length; i++) {\n" +
  1341 + " var shader = shaderFromUiBuffer(names[i]);\n" +
  1342 + "\n" +
  1343 + " var material = new dali.Material(shader);\n" +
  1344 + "\n" +
  1345 + " var image = imageFromUiBuffer(\"ducks\");\n" +
  1346 + " var sampler = new dali.Sampler();\n" +
  1347 + " material.addTexture(image, \"sTexture\", sampler);\n" +
  1348 + "\n" +
  1349 + " var renderer = new dali.Renderer(geometry, material);\n" +
  1350 + "\n" +
  1351 + " var actor = new dali.Actor();\n" +
  1352 + "\n" +
  1353 + " actor.name = \"actor for shader:\" + names[i];\n" +
  1354 + "\n" +
  1355 + " actor.addRenderer(renderer);\n" +
  1356 + "\n" +
  1357 + " dali.stage.add(actor);\n" +
  1358 + "\n" +
  1359 + " actor.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1360 + " actor.size = [100,100,1];\n" +
  1361 + "\n" +
  1362 + " actor.position = [x,\n" +
  1363 + " y + (c*110), \n" +
  1364 + " 0];\n" +
  1365 + "\n" +
  1366 + " if(c>n) {\n" +
  1367 + " c = 0;\n" +
  1368 + " x += 110;\n" +
  1369 + " } else {\n" +
  1370 + " c += 1;\n" +
  1371 + " }\n" +
  1372 + "\n" +
  1373 + "}\n" +
  1374 + "\n" +
  1375 + ""
  1376 + },
  1377 + {
  1378 + name: "04. Animation",
  1379 + source: "var halfQuadSize = 0.5;\n" +
  1380 + "\n" +
  1381 + "// use helper function to create property buffer\n" +
  1382 + "var verts = dali.createPropertyBuffer( {format: [ [\"aPosition\", dali.PropertyType.VECTOR3],\n" +
  1383 + " [\"aTexCoord\", dali.PropertyType.VECTOR2] ],\n" +
  1384 + " data: { \"aPosition\": [ [-halfQuadSize, -halfQuadSize, 0.0],\n" +
  1385 + " [+halfQuadSize, -halfQuadSize, 0.0],\n" +
  1386 + " [-halfQuadSize, +halfQuadSize, 0.0],\n" +
  1387 + " [+halfQuadSize, +halfQuadSize, 0.0]\n" +
  1388 + " ],\n" +
  1389 + " \"aTexCoord\": [ [0, 0],\n" +
  1390 + " [1, 0],\n" +
  1391 + " [0, 1],\n" +
  1392 + " [1, 1]\n" +
  1393 + " ]\n" +
  1394 + " }\n" +
  1395 + " });\n" +
  1396 + "\n" +
  1397 + "var indices = dali.createPropertyBuffer( { format: [ [\"indices\", dali.PropertyType.INTEGER]],\n" +
  1398 + " data: { \"indices\": [0, 3, 1, 0, 2, 3] } } ) ;\n" +
  1399 + "\n" +
  1400 + "var geometry = new dali.Geometry();\n" +
  1401 + "\n" +
  1402 + "geometry.addVertexBuffer(verts);\n" +
  1403 + "geometry.setIndexBuffer(indices);\n" +
  1404 + "\n" +
  1405 + "var vertex = \"\" + \n" +
  1406 + " \"// atributes\\n\" + \n" +
  1407 + " \"attribute mediump vec3 aPosition;\\n\" + \n" +
  1408 + " \"attribute mediump vec2 aTexCoord;\\n\" + \n" +
  1409 + " \"// inbuilt\\n\" + \n" +
  1410 + " \"uniform mediump mat4 uMvpMatrix;\\n\" + \n" +
  1411 + " \"uniform mediump vec3 uSize;\\n\" + \n" +
  1412 + " \"uniform lowp vec4 uColor;\\n\" + \n" +
  1413 + " \"// varying\\n\" + \n" +
  1414 + " \"varying mediump vec2 vTexCoord;\\n\" + \n" +
  1415 + " \"\\n\" + \n" +
  1416 + " \"void main()\\n\" + \n" +
  1417 + " \"{\\n\" + \n" +
  1418 + " \" mediump vec4 vertexPosition = vec4(aPosition, 1.0);\\n\" + \n" +
  1419 + " \" vertexPosition.xyz *= uSize;\\n\" + \n" +
  1420 + " \" gl_Position = uMvpMatrix * vertexPosition;\\n\" + \n" +
  1421 + " \" vTexCoord = aTexCoord;\\n\" + \n" +
  1422 + " \"}\";\n" +
  1423 + "\n" +
  1424 + "var fragment = \"\" + \n" +
  1425 + " \"uniform lowp vec4 uColor;\\n\" + \n" +
  1426 + " \"uniform sampler2D sTexture;\\n\" + \n" +
  1427 + " \"varying mediump vec2 vTexCoord;\\n\" + \n" +
  1428 + " \"\\n\" + \n" +
  1429 + " \"void main()\\n\" + \n" +
  1430 + " \"{\\n\" + \n" +
  1431 + " \" gl_FragColor = texture2D(sTexture, vTexCoord) * uColor;\\n\" + \n" +
  1432 + " \"}\";\n" +
  1433 + "\n" +
  1434 + "var shader = new dali.Shader(vertex, fragment, dali.ShaderHints.HINT_NONE);\n" +
  1435 + "\n" +
  1436 + "var material = new dali.Material(shader);\n" +
  1437 + "\n" +
  1438 + "var image = imageFromUiBuffer(\"ducks\");\n" +
  1439 + "var sampler = new dali.Sampler();\n" +
  1440 + "material.addTexture(image, \"sTexture\",sampler);\n" +
  1441 + "\n" +
  1442 + "var renderer = new dali.Renderer(geometry, material);\n" +
  1443 + "\n" +
  1444 + "var actor = new dali.Actor();\n" +
  1445 + "\n" +
  1446 + "actor.addRenderer(renderer);\n" +
  1447 + "\n" +
  1448 + "dali.stage.add(actor);\n" +
  1449 + "\n" +
  1450 + "actor.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1451 + "actor.size = [100,100,1];\n" +
  1452 + "\n" +
  1453 + "\n" +
  1454 + "var animation = new dali.Animation(9);\n" +
  1455 + "\n" +
  1456 + "animation.animateTo(actor, \"orientation\", [0,90,0], \"linear\", 0, 3);\n" +
  1457 + "animation.animateTo(actor, \"orientation\", [0,0,0], \"linear\", 6, 3);\n" +
  1458 + "\n" +
  1459 + "var p = new dali.Path();\n" +
  1460 + "\n" +
  1461 + "p.addPoint( [0,0,0] );\n" +
  1462 + "p.addPoint( [200,200,200] );\n" +
  1463 + "p.addPoint( [0,0,-200] );\n" +
  1464 + "p.addPoint( [0,-200,-900] );\n" +
  1465 + "p.addPoint( [0,0,0] );\n" +
  1466 + "\n" +
  1467 + "p.generateControlPoints(0.43);\n" +
  1468 + "\n" +
  1469 + "animation.animatePath( actor, p, [1,0,0], \"linear\", 0, 6);\n" +
  1470 + "\n" +
  1471 + "//animation.setEndAction(dali.EndAction.Discard);\n" +
  1472 + "\n" +
  1473 + "animation.play();\n" +
  1474 + "\n" +
  1475 + "\n" +
  1476 + ""
  1477 + },
  1478 + {
  1479 + name: "05. Event driven Animation",
  1480 + source: "var halfQuadSize = 0.5;\n" +
  1481 + "\n" +
  1482 + "// use helper function to create property buffer\n" +
  1483 + "var verts = dali.createPropertyBuffer( {format: [ [\"aPosition\", dali.PropertyType.VECTOR3],\n" +
  1484 + " [\"aTexCoord\", dali.PropertyType.VECTOR2] ],\n" +
  1485 + " data: { \"aPosition\": [ [-halfQuadSize, -halfQuadSize, 0.0],\n" +
  1486 + " [+halfQuadSize, -halfQuadSize, 0.0],\n" +
  1487 + " [-halfQuadSize, +halfQuadSize, 0.0],\n" +
  1488 + " [+halfQuadSize, +halfQuadSize, 0.0]\n" +
  1489 + " ],\n" +
  1490 + " \"aTexCoord\": [ [0, 0],\n" +
  1491 + " [1, 0],\n" +
  1492 + " [0, 1],\n" +
  1493 + " [1, 1]\n" +
  1494 + " ]\n" +
  1495 + " }\n" +
  1496 + " });\n" +
  1497 + "\n" +
  1498 + "var indices = dali.createPropertyBuffer( { format: [ [\"indices\", dali.PropertyType.INTEGER]],\n" +
  1499 + " data: { \"indices\": [0, 3, 1, 0, 2, 3] } } ) ;\n" +
  1500 + "\n" +
  1501 + "var geometry = new dali.Geometry();\n" +
  1502 + "\n" +
  1503 + "geometry.addVertexBuffer(verts);\n" +
  1504 + "geometry.setIndexBuffer(indices);\n" +
  1505 + "\n" +
  1506 + "var vertex = \"\" +\n" +
  1507 + " \"// atributes\\n\" + \n" +
  1508 + " \"attribute mediump vec3 aPosition;\\n\" + \n" +
  1509 + " \"attribute mediump vec2 aTexCoord;\\n\" + \n" +
  1510 + " \"// inbuilt\\n\" + \n" +
  1511 + " \"uniform mediump mat4 uMvpMatrix;\\n\" + \n" +
  1512 + " \"uniform mediump vec3 uSize;\\n\" + \n" +
  1513 + " \"uniform lowp vec4 uColor;\\n\" + \n" +
  1514 + " \"// varying\\n\" + \n" +
  1515 + " \"varying mediump vec2 vTexCoord;\\n\" + \n" +
  1516 + " \"\\n\" + \n" +
  1517 + " \"void main()\\n\" + \n" +
  1518 + " \"{\\n\" + \n" +
  1519 + " \" mediump vec4 vertexPosition = vec4(aPosition, 1.0);\\n\" + \n" +
  1520 + " \" vertexPosition.xyz *= uSize;\\n\" + \n" +
  1521 + " \" gl_Position = uMvpMatrix * vertexPosition;\\n\" + \n" +
  1522 + " \" vTexCoord = aTexCoord;\\n\" + \n" +
  1523 + " \"}\";\n" +
  1524 + "\n" +
  1525 + "var fragment = \"\" +\n" +
  1526 + " \"uniform lowp vec4 uColor;\\n\" + \n" +
  1527 + " \"uniform sampler2D sTexture;\\n\" + \n" +
  1528 + " \"varying mediump vec2 vTexCoord;\\n\" + \n" +
  1529 + " \"\\n\" + \n" +
  1530 + " \"void main()\\n\" + \n" +
  1531 + " \"{\\n\" + \n" +
  1532 + " \" gl_FragColor = texture2D(sTexture, vTexCoord) * uColor;\\n\" + \n" +
  1533 + " \"}\";\n" +
  1534 + "\n" +
  1535 + "var shader = new dali.Shader(vertex, fragment, dali.ShaderHints.HINT_NONE);\n" +
  1536 + "\n" +
  1537 + "var material = new dali.Material(shader);\n" +
  1538 + "\n" +
  1539 + "var image = imageFromUiBuffer(\"ducks\");\n" +
  1540 + "var sampler = new dali.Sampler();\n" +
  1541 + "material.addTexture(image, \"sTexture\", sampler);\n" +
  1542 + "\n" +
  1543 + "var renderer = new dali.Renderer(geometry, material);\n" +
  1544 + "\n" +
  1545 + "var actor = new dali.Actor();\n" +
  1546 + "\n" +
  1547 + "actor.addRenderer(renderer);\n" +
  1548 + "\n" +
  1549 + "dali.stage.add(actor);\n" +
  1550 + "\n" +
  1551 + "actor.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1552 + "actor.size = [100,100,1];\n" +
  1553 + "\n" +
  1554 + "var actor2 = new dali.Actor();\n" +
  1555 + "\n" +
  1556 + "// @todo?? why can I no reuse the same renderer?\n" +
  1557 + "//actor2.addRenderer(renderer);\n" +
  1558 + "var renderer2 = new dali.Renderer(geometry, material);\n" +
  1559 + "actor2.addRenderer(renderer2);\n" +
  1560 + "\n" +
  1561 + "dali.stage.add(actor2);\n" +
  1562 + "\n" +
  1563 + "actor2.position = [-200,0,0];\n" +
  1564 + "actor2.parentOrigin = [0.5, 0.5, 0.0];\n" +
  1565 + "actor2.size = [100,100,1];\n" +
  1566 + "\n" +
  1567 + "var animation = new dali.Animation(9);\n" +
  1568 + "\n" +
  1569 + "animation.animateTo(actor, \"orientation\", [0,90,0], \"linear\", 0, 3);\n" +
  1570 + "animation.animateTo(actor, \"orientation\", [0,0,0], \"linear\", 6, 3);\n" +
  1571 + "\n" +
  1572 + "var p = new dali.Path();\n" +
  1573 + "\n" +
  1574 + "p.addPoint( [0,0,0] );\n" +
  1575 + "p.addPoint( [200,200,200] );\n" +
  1576 + "p.addPoint( [0,0,-200] );\n" +
  1577 + "p.addPoint( [0,-200,-900] );\n" +
  1578 + "p.addPoint( [0,0,0] );\n" +
  1579 + "\n" +
  1580 + "p.generateControlPoints(0.43);\n" +
  1581 + "\n" +
  1582 + "animation.animatePath( actor, p, [1,0,0], \"linear\", 0, 6);\n" +
  1583 + "\n" +
  1584 + "function onTouched(actor, e) {\n" +
  1585 + " for(var i = 0; i < e.points.length; i++) {\n" +
  1586 + " if(e.points[i].state === \"Down\") {\n" +
  1587 + " console.log(e);\n" +
  1588 + " animation.play();\n" +
  1589 + " return;\n" +
  1590 + " }\n" +
  1591 + " }\n" +
  1592 + "}\n" +
  1593 + "\n" +
  1594 + "actor2.connect(\"touched\", onTouched);\n" +
  1595 + "\n" +
  1596 + "\n" +
  1597 + ""
  1598 + },
  1599 + {
  1600 + name: "06. Offscreen",
  1601 + source: "\n" +
  1602 + "// todo"
  1603 + },
  1604 + {
  1605 + name: "07. DALi toy pseudo dsl",
  1606 + source: "\n" +
  1607 + "//\n" +
  1608 + "// @todo\n" +
  1609 + "//\n" +
  1610 + "addTo(\"stage\",\n" +
  1611 + " image({\n" +
  1612 + " name:\"img\",\n" +
  1613 + " image:\"ducks\",\n" +
  1614 + " size:[100,100,1]\n" +
  1615 + " }),\n" +
  1616 + " image({\n" +
  1617 + " name:\"img2\",\n" +
  1618 + " tag:\"listitem\",\n" +
  1619 + " image:\"field\",\n" +
  1620 + " position:[100,0,0],\n" +
  1621 + " size:[100,100,1]\n" +
  1622 + " }),\n" +
  1623 + " image({\n" +
  1624 + " name:\"img3\",\n" +
  1625 + " tag:\"listitem\",\n" +
  1626 + " image:\"funnyface\",\n" +
  1627 + " position:[100,0,0],\n" +
  1628 + " size:[100,100,1]\n" +
  1629 + " }),\n" +
  1630 + " image({\n" +
  1631 + " name:\"img4\",\n" +
  1632 + " tag:\"listitem\",\n" +
  1633 + " image:\"girl1\",\n" +
  1634 + " position:[100,0,0],\n" +
  1635 + " size:[100,100,1]\n" +
  1636 + " })\n" +
  1637 + ");\n" +
  1638 + "\n" +
  1639 + "\n" +
  1640 + "when(\"img\", \"touchedDown\",\n" +
  1641 + " set(\"sensitive\", true),\n" +
  1642 + " set(\"size\", to([200,200,200])),\n" +
  1643 + " set(\"img2\", \"size\", to([200,200,200], 0,3, \"ease_in\")),\n" +
  1644 + " set(excludeFrom(tagged(\"scrollitem\"), \"myimage\"), path(0,3, \"ease_in\", \"path0\")),\n" +
  1645 + " endAction(\"Discard\")\n" +
  1646 + " then(set(\"img4\", \"hide\"),\n" +
  1647 + " play(\"anAnim\")) );\n" +
  1648 + " \n" +
  1649 + "\n" +
  1650 + "\n"
  1651 + }
  1652 +];
  1653 +
  1654 +function log(errorLog) {
  1655 + console.log(errorLog);
  1656 +}
  1657 +
  1658 +function consoleAssert( test, message )
  1659 +{
  1660 + // using this rather than inbuild assert
  1661 + // it lets dali carry on for some reason
  1662 + if(!test)
  1663 + {
  1664 + throw message;
  1665 + }
  1666 +}
  1667 +
  1668 +function consoleLogErrorEvent(event) {
  1669 + "use strict";
  1670 + console.log("Error");
  1671 + console.dir(event);
  1672 + if(event.target) {
  1673 + if(event.target.result) {
  1674 + event.target.result.close();
  1675 + }
  1676 + }
  1677 +}
  1678 +
  1679 +function consoleLogSuccess(message) {
  1680 + "use strict";
  1681 + return function() {
  1682 + console.log("Success:" + message);
  1683 + };
  1684 +}
  1685 +
  1686 +
  1687 +/**
  1688 + * Gets embedded base64 images embedded in the HTML file
  1689 + */
  1690 +function getStockImageData(index) {
  1691 + "use strict";
  1692 + var name = "testImage" + index;
  1693 + // need to draw it off screen first? @todo
  1694 + var c = document.createElement("canvas");
  1695 + var img = document.getElementById(name);
  1696 + c.width = img.naturalWidth;
  1697 + c.height = img.naturalHeight;
  1698 + var context = c.getContext("2d");
  1699 + context.drawImage(img, 0, 0 );
  1700 + var imageData = context.getImageData(0, 0, img.naturalWidth, img.naturalHeight); // <-ImageData
  1701 + return imageData;
  1702 +}
  1703 +
  1704 +function formatValue(value)
  1705 +{
  1706 + if(typeof(value) === "number") {
  1707 + if(value === 3.4028234663852886e+38)
  1708 + {
  1709 + return "MAX_FLOAT";
  1710 + } else if(value === Number.MAX_VALUE) {
  1711 + return "MAX_DBL";
  1712 + } else if(value === 2147483647) {
  1713 + return "MAX_INT";
  1714 + } else if(value === 9223372036854775807) {
  1715 + return "MAX_INT64";
  1716 + } else {
  1717 + return value.toFixed(3);
  1718 + }
  1719 + } else {
  1720 + return value;
  1721 + }
  1722 +}
  1723 +
  1724 +/**
  1725 + * Add bootstrap column for single value (not array)
  1726 + */
  1727 +function add1ColElement(elem, value)
  1728 +{
  1729 + var e = document.createElement("div");
  1730 + e.className = "col-md-3";
  1731 + e.innerHTML = formatValue(value);
  1732 + elem.appendChild(e);
  1733 +
  1734 + e = document.createElement("div");
  1735 + e.className = "col-md-3";
  1736 + e.innerHTML = "";
  1737 + elem.appendChild(e);
  1738 +
  1739 + e = document.createElement("div");
  1740 + e.className = "col-md-3";
  1741 + e.innerHTML = "";
  1742 + elem.appendChild(e);
  1743 +
  1744 + e = document.createElement("div");
  1745 + e.className = "col-md-3";
  1746 + e.innerHTML = "";
  1747 + elem.appendChild(e);
  1748 +
  1749 + return e;
  1750 +}
  1751 +
  1752 +/*
  1753 + * Add bootstrap column for array of 2 value
  1754 + */
  1755 +function add2ColElement(elem, value)
  1756 +{
  1757 + var e = document.createElement("div");
  1758 + e.className = "col-md-3";
  1759 + e.innerHTML = formatValue(value[0]);
  1760 + elem.appendChild(e);
  1761 +
  1762 + e = document.createElement("div");
  1763 + e.className = "col-md-3";
  1764 + e.innerHTML = formatValue(value[1]);
  1765 + elem.appendChild(e);
  1766 +
  1767 + e = document.createElement("div");
  1768 + e.className = "col-md-3";
  1769 + e.innerHTML = "";
  1770 + elem.appendChild(e);
  1771 +
  1772 + e = document.createElement("div");
  1773 + e.className = "col-md-3";
  1774 + e.innerHTML = "";
  1775 + elem.appendChild(e);
  1776 +
  1777 + return e;
  1778 +}
  1779 +
  1780 +/*
  1781 + * Add bootstrap table cell for array of 3 value
  1782 + */
  1783 +function add3ColElement(elem, value)
  1784 +{
  1785 + var e = document.createElement("div");
  1786 + e.className = "col-md-3";
  1787 + e.innerHTML = formatValue(value[0]);
  1788 + elem.appendChild(e);
  1789 +
  1790 + e = document.createElement("div");
  1791 + e.className = "col-md-3";
  1792 + e.innerHTML = formatValue(value[1]);
  1793 + elem.appendChild(e);
  1794 +
  1795 + e = document.createElement("div");
  1796 + e.className = "col-md-3";
  1797 + e.innerHTML = formatValue(value[2]);
  1798 + elem.appendChild(e);
  1799 +
  1800 + e = document.createElement("div");
  1801 + e.className = "col-md-3";
  1802 + e.innerHTML = "";
  1803 + elem.appendChild(e);
  1804 + return e;
  1805 +}
  1806 +
  1807 +/*
  1808 + * Add bootstrap table cell for array of 4 value
  1809 + */
  1810 +function add4ColElement(elem, value)
  1811 +{
  1812 + var e = document.createElement("div");
  1813 + e.className = "col-md-3";
  1814 + e.innerHTML = formatValue(value[0]);
  1815 + elem.appendChild(e);
  1816 +
  1817 + e = document.createElement("div");
  1818 + e.className = "col-md-3";
  1819 + e.innerHTML = formatValue(value[1]);
  1820 + elem.appendChild(e);
  1821 +
  1822 + e = document.createElement("div");
  1823 + e.className = "col-md-3";
  1824 + e.innerHTML = formatValue(value[2]);
  1825 + elem.appendChild(e);
  1826 +
  1827 + e = document.createElement("div");
  1828 + e.className = "col-md-3";
  1829 + e.innerHTML = formatValue(value[3]);
  1830 + elem.appendChild(e);
  1831 + return e;
  1832 +}
  1833 +
  1834 +/*
  1835 + * Add a bootstrap table cell for property 'name' for an actor
  1836 + */
  1837 +function createElementForActorProperty(actor, name) {
  1838 + "use strict";
  1839 + var elem = document.createElement("div");
  1840 +
  1841 + var value = actor[name];
  1842 + var type = typeof value;
  1843 +
  1844 + if(name === "maximumSize") {
  1845 + value = value;
  1846 + }
  1847 +
  1848 + if(type === "string" || type === "number" || type === "boolean") {
  1849 + elem.className = "row";
  1850 + add1ColElement(elem, value);
  1851 + } else if(value === undefined) {
  1852 + elem.className = "row";
  1853 + add1ColElement(elem, "???undefined???");
  1854 + } else {
  1855 + var r;
  1856 + var length = value.length;
  1857 + if(length === 2) {
  1858 + elem.className = "row";
  1859 + add2ColElement(elem, value);
  1860 + } else if(length === 3) {
  1861 + elem.className = "row";
  1862 + add3ColElement(elem, value);
  1863 + } else if(length === 4) {
  1864 + elem.className = "row";
  1865 + add4ColElement(elem, value);
  1866 + } else if(length === 9) {
  1867 + r = document.createElement("div");
  1868 + r.className = "row";
  1869 + add3ColElement(r, value.slice(0, 3));
  1870 + elem.appendChild(r);
  1871 +
  1872 + r = document.createElement("div");
  1873 + r.className = "row";
  1874 + add3ColElement(r, value.slice(3, 6));
  1875 + elem.appendChild(r);
  1876 +
  1877 + r = document.createElement("div");
  1878 + r.className = "row";
  1879 + add3ColElement(r, value.slice(6, 9));
  1880 + elem.appendChild(r);
  1881 + } else if(length === 16) {
  1882 + r = document.createElement("div");
  1883 + r.className = "row";
  1884 + add4ColElement(r, value.slice(0, 4));
  1885 + elem.appendChild(r);
  1886 +
  1887 + r = document.createElement("div");
  1888 + r.className = "row";
  1889 + add4ColElement(r, value.slice(4, 8));
  1890 + elem.appendChild(r);
  1891 +
  1892 + r = document.createElement("div");
  1893 + r.className = "row";
  1894 + add4ColElement(r, value.slice(8, 12));
  1895 + elem.appendChild(r);
  1896 +
  1897 + r = document.createElement("div");
  1898 + r.className = "row";
  1899 + add4ColElement(r, value.slice(12, 16));
  1900 + elem.appendChild(r);
  1901 + }
  1902 + }
  1903 +
  1904 + return elem;
  1905 +}
  1906 +
  1907 +/**
  1908 + * Adds a bootstrap table to show the actor properties
  1909 + */
  1910 +function onActorSelected(actor) {
  1911 + "use strict";
  1912 + var i;
  1913 + var name;
  1914 + var gridBlock;
  1915 + var nameBlock;
  1916 + var valueBlock;
  1917 + var actorId;
  1918 +
  1919 + //
  1920 + // recreate property tab
  1921 + //
  1922 + var elem = document.getElementById("selected");
  1923 +
  1924 + removeAllChildren(elem);
  1925 +
  1926 + //
  1927 + // setup property view
  1928 + //
  1929 + if (actor) {
  1930 + actorId = actor.getId();
  1931 +
  1932 + var p = document.createElement("div");
  1933 + p.innerHTML = "<h3><b>" + actor.name + "</b> [<b>" + actorId + "</b>] (<b>" + actor.position + "</b>)</h3>";
  1934 + elem.appendChild(p);
  1935 +
  1936 + var parent = actor.getParent();
  1937 + if(parent) {
  1938 + p = document.createElement("div");
  1939 + p.innerHTML =
  1940 + "<p>" +
  1941 + "(Parent: <b>" + parent.name + "</b> [<b>" + parent.getId() + "</b>] (<b>" + parent.position + "</b>)" +
  1942 + " Anchored: <b>" + actor.anchorPoint + "</b>" +
  1943 + " ParentOrigin: <b>" + actor.parentOrigin + "</b> )" +
  1944 + "</p>";
  1945 + elem.appendChild(p);
  1946 + }
  1947 +
  1948 + if( actorId in actorIdToShaderSet &&
  1949 + "shaderEffect" in actorIdToShaderSet[actorId]) { // if has compiled
  1950 + var shaderOptions = actorIdToShaderSet[actorId];
  1951 + var uniforms = dali.sourceUniformMetaData(shaderOptions.vertex);
  1952 + uniforms = uniforms.concat(dali.sourceUniformMetaData(shaderOptions.fragment));
  1953 +
  1954 + var shader = getShader(actor);
  1955 +
  1956 + if(uniforms.length) {
  1957 + gridBlock = document.createElement("div");
  1958 + gridBlock.className = "row";
  1959 +
  1960 + nameBlock = document.createElement("div");
  1961 + nameBlock.className = "col-md-5";
  1962 + nameBlock.innerHTML = "<u>Shader Uniforms:</u>";
  1963 + gridBlock.appendChild(nameBlock);
  1964 +
  1965 + valueBlock = document.createElement("div");
  1966 + valueBlock.className = "col-md-7";
  1967 + valueBlock.innerHTML = "";
  1968 + gridBlock.appendChild(valueBlock);
  1969 +
  1970 + elem.appendChild(gridBlock);
  1971 +
  1972 + for(i = 0; i < uniforms.length; i++) {
  1973 + var type = uniforms[i].type;
  1974 + name = uniforms[i].name;
  1975 + gridBlock = document.createElement("div");
  1976 + gridBlock.className = "row";
  1977 +
  1978 + nameBlock = document.createElement("div");
  1979 + nameBlock.className = "col-md-5";
  1980 + nameBlock.innerHTML = type + " " + name + "<i> (Animatable) </i>";
  1981 +
  1982 + gridBlock.appendChild(nameBlock);
  1983 +
  1984 + valueBlock = document.createElement("div");
  1985 + valueBlock.className = "col-md-7";
  1986 + valueBlock.innerHTML = shader[ name ];
  1987 + gridBlock.appendChild(valueBlock);
  1988 +
  1989 + elem.appendChild(gridBlock);
  1990 +
  1991 + }
  1992 + }
  1993 +
  1994 + }
  1995 +
  1996 + // getproperties returns std::vector<string>
  1997 + var props = actor.getProperties();
  1998 +
  1999 + gridBlock = document.createElement("div");
  2000 + gridBlock.className = "row";
  2001 +
  2002 + nameBlock = document.createElement("div");
  2003 + nameBlock.className = "col-md-5";
  2004 + nameBlock.innerHTML = "<u>Properties:</ul>";
  2005 + gridBlock.appendChild(nameBlock);
  2006 +
  2007 + valueBlock = document.createElement("div");
  2008 + valueBlock.className = "col-md-7";
  2009 + valueBlock.innerHTML = "";
  2010 + gridBlock.appendChild(valueBlock);
  2011 +
  2012 + elem.appendChild(gridBlock);
  2013 +
  2014 +
  2015 + for (i = 0; i < props.size(); i++) {
  2016 + name = props.get(i);
  2017 +
  2018 + gridBlock = document.createElement("div");
  2019 + gridBlock.className = "row";
  2020 +
  2021 + var animatable = actor.isPropertyAnimatable(actor.getPropertyIndex(name));
  2022 +
  2023 + nameBlock = document.createElement("div");
  2024 + nameBlock.className = "col-md-5";
  2025 + if(animatable) {
  2026 + nameBlock.innerHTML = "'" + name + "'" + "<i> (animatable)</i>";
  2027 + } else {
  2028 + nameBlock.innerHTML = "'" + name + "'";
  2029 + }
  2030 + gridBlock.appendChild(nameBlock);
  2031 +
  2032 + valueBlock = document.createElement("div");
  2033 + valueBlock.className = "col-md-7";
  2034 +
  2035 + valueBlock.appendChild( createElementForActorProperty(actor, name) );
  2036 +
  2037 + gridBlock.appendChild(valueBlock);
  2038 +
  2039 + elem.appendChild(gridBlock);
  2040 + }
  2041 +
  2042 + props.delete();
  2043 +
  2044 + }
  2045 +
  2046 +}
  2047 +
  2048 +/**
  2049 + * creates page element and set namesValues array
  2050 + */
  2051 +function createElement(elementName, namesValues) {
  2052 + "use strict";
  2053 + var e = document.createElement(elementName);
  2054 + for(var name in namesValues) {
  2055 + e[name] = namesValues[name];
  2056 + }
  2057 + return e;
  2058 +}
  2059 +
  2060 +/**
  2061 + * create element with innerHTML
  2062 + */
  2063 +function createElementInnerHTML(elementName, innerHTML) {
  2064 + "use strict";
  2065 + return createElement(elementName, {"innerHTML": innerHTML});
  2066 +}
  2067 +
  2068 +/**
  2069 + * remove all the children from the element
  2070 + */
  2071 +function removeAllChildren(elem) {
  2072 + "use strict";
  2073 + var count = elem.children.length;
  2074 + for (var i = 0; i < count; i++) {
  2075 + elem.removeChild(elem.children[0]);
  2076 + }
  2077 +}
  2078 +
  2079 +/**
  2080 + *
  2081 + */
  2082 +function onChangeSetDataChanged(e) {
  2083 + e.currentTarget["data-changed"] = true;
  2084 +}
  2085 +
  2086 +/**
  2087 + * creates a document input element [ ]
  2088 + */
  2089 +function inputElem(type, propObject, property, val, arrayIndex) {
  2090 + "use strict";
  2091 + var e = document.createElement("input");
  2092 + e.type = type;
  2093 + // for number then step of any means it can be a real number not just integer
  2094 + e.step = "any";
  2095 + e.value = val;
  2096 + e.className = "form-control";
  2097 + e["data-value"] = val;
  2098 + e["data-arrayIndex"] = arrayIndex;
  2099 + e["data-changed"] = false;
  2100 + e.addEventListener("changed", onChangeSetDataChanged);
  2101 + return e;
  2102 +}
  2103 +
  2104 +/**
  2105 + * creates an input 2 element [ , ]
  2106 + */
  2107 +function inputElem2(type, propObject, property, val, startIndex) {
  2108 + "use strict";
  2109 + var d = document.createElement("div");
  2110 + var a = inputElem("number", propObject, property, val[startIndex], startIndex);
  2111 + a.className = "col-md-3";
  2112 + d.appendChild(a);
  2113 + a = inputElem("number", propObject, property, val[startIndex + 1], startIndex + 1);
  2114 + a.className = "col-md-3";
  2115 + d.appendChild(a);
  2116 + a.className = "col-md-3";
  2117 + d.appendChild(a);
  2118 + a = createElement("div");
  2119 + a.className = "col-md-3";
  2120 + d.appendChild(a);
  2121 + return d;
  2122 +}
  2123 +
  2124 +/**
  2125 + * creates an input 3 element [ , , ]
  2126 + */
  2127 +function inputElem3(type, propObject, property, val, startIndex) {
  2128 + "use strict";
  2129 + var d = document.createElement("div");
  2130 + var a = inputElem("number", propObject, property, val[startIndex], startIndex);
  2131 + a.className = "col-md-3";
  2132 + d.appendChild(a);
  2133 + a = inputElem("number", propObject, property, val[startIndex + 1], startIndex + 1);
  2134 + a.className = "col-md-3";
  2135 + d.appendChild(a);
  2136 + a = inputElem("number", propObject, property, val[startIndex + 2], startIndex + 2);
  2137 + a.className = "col-md-3";
  2138 + d.appendChild(a);
  2139 + a = createElement("div");
  2140 + a.className = "col-md-3";
  2141 + d.appendChild(a);
  2142 + return d;
  2143 +}
  2144 +
  2145 +/**
  2146 + * creates an input 4 element [ , , , ]
  2147 + */
  2148 +function inputElem4(type, propObject, property, val, startIndex) {
  2149 + "use strict";
  2150 + var d = document.createElement("div");
  2151 + var a = inputElem("number", propObject, property, val[startIndex], startIndex);
  2152 + a.className = "col-md-3";
  2153 + d.appendChild(a);
  2154 + a = inputElem("number", propObject, property, val[startIndex + 1], startIndex + 1);
  2155 + a.className = "col-md-3";
  2156 + d.appendChild(a);
  2157 + a = inputElem("number", propObject, property, val[startIndex + 2], startIndex + 2);
  2158 + a.className = "col-md-3";
  2159 + d.appendChild(a);
  2160 + a = inputElem("number", propObject, property, val[startIndex + 3], startIndex + 3);
  2161 + a.className = "col-md-3";
  2162 + d.appendChild(a);
  2163 + return d;
  2164 +}
  2165 +
  2166 +/**
  2167 + * creates a document input element for an actor/shader's property
  2168 + */
  2169 +function createInputElement(actorShader, propertyName, value) {
  2170 +// always4 ja columns
  2171 + "use strict";
  2172 + var type = typeof value;
  2173 +
  2174 + var e;
  2175 + if(type === "string") {
  2176 + e = inputElem("string", actorShader, propertyName, value);
  2177 + } else if(type === "number") {
  2178 + e = inputElem("number", actorShader, propertyName, value);
  2179 + } else if(type === "boolean") {
  2180 + e = inputElem("checkbox", actorShader, propertyName, value);
  2181 + } else {
  2182 + var length = value.length;
  2183 + if(length === 2) {
  2184 + e = inputElem2("number", actorShader, propertyName, value, 0);
  2185 + } else if(length === 3) {
  2186 + e = inputElem3("number", actorShader, propertyName, value, 0);
  2187 + } else if(length === 4) {
  2188 + e = inputElem4("number", actorShader, propertyName, value, 0);
  2189 + } else if(length === 9) {
  2190 + e = createElement("div");
  2191 + e.appendChild( inputElem3("number", actorShader, propertyName, value, 0) );
  2192 + e.appendChild( inputElem3("number", actorShader, propertyName, value, 3) );
  2193 + e.appendChild( inputElem3("number", actorShader, propertyName, value, 6) );
  2194 + } else if(length === 16) {
  2195 + e = createElement("div");
  2196 + e.appendChild( inputElem4("number", actorShader, propertyName, value, 0) );
  2197 + e.appendChild( inputElem4("number", actorShader, propertyName, value, 4) );
  2198 + e.appendChild( inputElem4("number", actorShader, propertyName, value, 8) );
  2199 + e.appendChild( inputElem4("number", actorShader, propertyName, value, 12) );
  2200 + } else {
  2201 + throw "should not happen";
  2202 + }
  2203 + }
  2204 +
  2205 + return e;
  2206 +}
  2207 +
  2208 +/**
  2209 + * Selects an actor by id
  2210 + */
  2211 +function selectActor(id) { // from html tree
  2212 + "use strict";
  2213 + if(id === null) {
  2214 + eventHandler.selectActor(null);
  2215 + } else {
  2216 + var root = dali.stage.getRootLayer();
  2217 + var actor = root.findChildById(id);
  2218 + if (actor) {
  2219 + eventHandler.selectActor(actor);
  2220 + }
  2221 + root.delete(); // wrapper
  2222 + }
  2223 +}
  2224 +
  2225 +/**
  2226 + * Rebuild the document actor property display
  2227 + */
  2228 +function rebuildTree() {
  2229 + "use strict";
  2230 + // remove childred
  2231 + var e = document.getElementById("tree");
  2232 + var count = e.children.length;
  2233 + for (var i = 0; i < count; i++) {
  2234 + e.removeChild(e.children[0]);
  2235 + }
  2236 +
  2237 + // <ul class="nav nav-list">
  2238 + // <li><label class="tree-toggler nav-header">Header 1</label>
  2239 +
  2240 + var root = dali.stage.getRootLayer() ; // dali.stage.rootRotationActor;
  2241 +
  2242 + var recurse = function(parentElement, actor) {
  2243 + var children = actor.getChildren();
  2244 + if (children) {
  2245 + var ul = null;
  2246 +
  2247 + for (var i = 0; i < children.length; ++i) {
  2248 + var child = children[i];
  2249 +
  2250 + if (child.name[0] !== "*") {
  2251 +
  2252 + var li = document.createElement("li");
  2253 +
  2254 + var a = document.createElement("a");
  2255 + a.href = "javascript:selectActor(" + child.getId() + ");";
  2256 + a.text = "(" + child.getId() + ") '" + child.name + "'";
  2257 + li.appendChild(a);
  2258 +
  2259 + if (ul === null) {
  2260 + ul = document.createElement("ul");
  2261 + ul.className = "nav-tree";
  2262 + }
  2263 +
  2264 + ul.appendChild(li);
  2265 +
  2266 + recurse(li, child);
  2267 +
  2268 + // finish with the child wrapper
  2269 + child.delete();
  2270 + }
  2271 + }
  2272 +
  2273 + if (ul) {
  2274 + parentElement.appendChild(ul);
  2275 + }
  2276 + }
  2277 + };
  2278 +
  2279 + recurse(e, root);
  2280 +
  2281 + root.delete(); // wrapper
  2282 +}
  2283 +
  2284 +
  2285 +/**
  2286 + * Eventhandler class; Touch handling abstraction.
  2287 + *
  2288 + * handling functions can be registered to get touch events
  2289 + */
  2290 +function EventHandler() {
  2291 + "use strict";
  2292 + // public
  2293 + this.mouseX = 0;
  2294 + this.mouseY = 0;
  2295 + this.mouse_buttons = 0;
  2296 + this.mouseDownPosition = [0, 0, 0];
  2297 + this.dragDx = 0;
  2298 + this.dragDy = 0;
  2299 + this.touchedActor = null; // set if actor is touched (left click)
  2300 + //private
  2301 + // this.selectedActor = null;
  2302 + this.mouseIsDown = 0;
  2303 + this.metaKey = 0;
  2304 + this.altKey = 0;
  2305 + this.ctrlKey = 0;
  2306 + this.shiftKey = 0;
  2307 + // handlers; use register("MouseDragStart", func); where for func(eventHandler)
  2308 + this.handlersMouseMove = []; // valid; touchedActor(can be null), mouseX, mouseY
  2309 + this.handlersMouseDrag = []; // valid; touchedActor(can be null), dragDx, dragDy
  2310 + this.handlersSelect = []; // valid; touchedActor(can be null), dragDx, dragDy
  2311 + this.handlersDeselect = []; // valid; touchedActor(can be null), dragDx, dragDy
  2312 +}
  2313 +
  2314 +/*
  2315 + * Register a handler, ie register("MouseMove", moveFunc)
  2316 + */
  2317 +EventHandler.prototype.register = function(name, handler) {
  2318 + "use strict";
  2319 + var handlers = this["handlers" + name];
  2320 + if (!(handler in handlers)) {
  2321 + handlers.push(handler);
  2322 + }
  2323 +};
  2324 +
  2325 +/*
  2326 + * Unregister a handler
  2327 + */
  2328 +EventHandler.prototype.unRegister = function(name, handler) {
  2329 + "use strict";
  2330 + var handlers = this["handlers" + name];
  2331 + var index = handlers.index(handler);
  2332 + if (index >= 0) {
  2333 + handlers.splice(index, 1);
  2334 + }
  2335 +};
  2336 +
  2337 +/*
  2338 + * update the mouse state
  2339 + */
  2340 +EventHandler.prototype.updateMouseState = function(canvas, e) {
  2341 + "use strict";
  2342 + var rect = canvas.getBoundingClientRect(); // in window
  2343 + this.mouseX = e.clientX - rect.left; // from window
  2344 + this.mouseY = e.clientY - (rect.bottom - rect.height);
  2345 + this.mouse_buttons = e.button; // 0|1|2 left|middle|rigtht
  2346 +};
  2347 +
  2348 +/*
  2349 + * mouse down
  2350 + */
  2351 +EventHandler.prototype.mouseDown = function(canvas, e) {
  2352 + "use strict";
  2353 + this.mouseIsDown = 1;
  2354 + this.updateMouseState(canvas, e);
  2355 + this.mouseDownPosition = [this.mouseX, this.mouseY, 0];
  2356 + var hitActor = dali.hitTest(this.mouseX, this.mouseY);
  2357 + var tid = -1;
  2358 + var hid = -2;
  2359 + if (this.touchedActor) {
  2360 + tid = this.touchedActor.getId();
  2361 + }
  2362 + if (hitActor) {
  2363 + hid = hitActor.getId();
  2364 + }
  2365 +
  2366 + if (hid !== tid) {
  2367 + if (tid > 0) {
  2368 + this.handleEvent(this.handlersDeselect);
  2369 + this.touchedActor = null;
  2370 + }
  2371 + }
  2372 +
  2373 + this.selectActor(hitActor);
  2374 +
  2375 + // dali is 0==down,1==up,2==motion
  2376 + dali.sendMouseEvent(this.mouseX, this.mouseY, 0);
  2377 + // console.log("mouseDown", this.mouseX, this.mouseY, this.mouseIsDown, 0);
  2378 +};
  2379 +
  2380 +/*
  2381 + * set the touchedActor
  2382 + */
  2383 +EventHandler.prototype.selectActor = function(hitActor) {
  2384 + "use strict";
  2385 + if (hitActor) {
  2386 + this.handleEvent(this.handlersDeselect);
  2387 +
  2388 + var layer = dali.stage.getRootLayer();
  2389 + if (hitActor.getId() === dali.stage.rootRotationActor.getId()) {
  2390 + // dont select our rotation actor
  2391 + hitActor = null;
  2392 + } else {
  2393 + // dont select the root layer
  2394 + if (hitActor.getId() === layer.getId()) {
  2395 + hitActor = null;
  2396 + }
  2397 + }
  2398 + layer.delete(); // wrapper
  2399 +
  2400 + this.touchedActor = hitActor;
  2401 + } else {
  2402 + if(this.touchedActor) {
  2403 + this.handleEvent(this.handlersDeselect);
  2404 + }
  2405 + this.touchedActor = null;
  2406 + }
  2407 +
  2408 + this.handleEvent(this.handlersSelect);
  2409 +};
  2410 +
  2411 +/*
  2412 + * canvas mouse move handler
  2413 + */
  2414 +EventHandler.prototype.mouseMove = function(canvas, e) {
  2415 + "use strict";
  2416 + this.updateMouseState(canvas, e);
  2417 +
  2418 + if(this.mouseIsDown) {
  2419 + // if (this.touchedActor) {
  2420 + this.dragDx = (this.mouseX - this.mouseDownPosition[0]);
  2421 + this.dragDy = (this.mouseY - this.mouseDownPosition[1]);
  2422 + // }
  2423 +
  2424 + this.handleEvent(this.handlersMouseDrag);
  2425 + }
  2426 +
  2427 + this.handleEvent(this.handlersMouseMove);
  2428 +
  2429 + // dali is 0==down,1==up,2==motion
  2430 + dali.sendMouseEvent(this.mouseX, this.mouseY, 2);
  2431 + // console.log("mouseMove", this.mouseX, this.mouseY, this.mouseIsDown, 2);
  2432 +};
  2433 +
  2434 +/*
  2435 + * canvas mouse up handler
  2436 + */
  2437 +EventHandler.prototype.mouseUp = function(canvas, e) {
  2438 + "use strict";
  2439 + this.mouseIsDown = 0;
  2440 + this.updateMouseState(canvas, e);
  2441 + this.dragDx = (this.mouseX - this.mouseDownPosition[0]);
  2442 + this.dragDy = (this.mouseY - this.mouseDownPosition[1]);
  2443 +
  2444 + // dali is 0==down,1==up,2==motion
  2445 + dali.sendMouseEvent(this.mouseX, this.mouseY, 1);
  2446 + // console.log("mouseUp", this.mouseX, this.mouseY, this.mouseIsDown, 1);
  2447 +
  2448 +};
  2449 +
  2450 +
  2451 +/*
  2452 + * canvas mouse wheel handler
  2453 + */
  2454 +EventHandler.prototype.mouseWheel = function(canvas, e) {
  2455 + "use strict";
  2456 + // multiples of +120 for up, -120 for down
  2457 + var clicks = e.wheelDelta / 120;
  2458 +
  2459 + var taskList = dali.stage.getRenderTaskList();
  2460 + var task = taskList.getTask(0);
  2461 + var cameraActor = task.getCameraActor();
  2462 +
  2463 + var fov = cameraActor.fieldOfView;
  2464 + cameraActor.fieldOfView = fov + (clicks / 180.0 * Math.PI);
  2465 +
  2466 + taskList.delete();
  2467 + task.delete();
  2468 + cameraActor.delete();
  2469 + // console.log(e.wheelDelta);
  2470 +};
  2471 +
  2472 +/*
  2473 + * call given handlers
  2474 + */
  2475 +EventHandler.prototype.handleEvent = function(handlers) {
  2476 + for (var i = 0, len = handlers.length; i < len; i++) {
  2477 + var handler = handlers[i];
  2478 + handler(this);
  2479 + }
  2480 +};
  2481 +
  2482 +/*
  2483 + * canvas key down handler
  2484 + */
  2485 +EventHandler.prototype.keyDown = function(canvas, e) {
  2486 + this.metaKey = e.metaKey;
  2487 + this.altKey = e.altKey;
  2488 + this.ctrlKey = e.ctrlKey;
  2489 + this.shiftKey = e.shiftKey;
  2490 +};
  2491 +
  2492 +/*
  2493 + * canvas key up handler
  2494 + */
  2495 +EventHandler.prototype.keyUp = function(canvas, e) {
  2496 + this.metaKey = e.metaKey;
  2497 + this.altKey = e.altKey;
  2498 + this.ctrlKey = e.ctrlKey;
  2499 + this.shiftKey = e.shiftKey;
  2500 +};
  2501 +
  2502 +//
  2503 +// Actor list helpers; applies function to all actors in the list
  2504 +//
  2505 +var ActorList = {
  2506 + doAll: function(actors, func) {
  2507 + for (var i = 0, len = actors.length; i < len; i++) {
  2508 + func(actors[i]);
  2509 + }
  2510 + },
  2511 + show: function(actors, visible) {
  2512 + this.doAll(actors, function(actor) {
  2513 + actor.visible = visible;
  2514 + });
  2515 + },
  2516 + delete: function(actors, visible) {
  2517 + this.doAll(actors, function(actor) {
  2518 + actor.delete = visible;
  2519 + });
  2520 + },
  2521 + add: function(actors, actor) {
  2522 + this.doAll(actors, function(a) {
  2523 + actor.add(a);
  2524 + });
  2525 + },
  2526 + remove: function(actors, actor) {
  2527 + this.doAll(actors, function(a) {
  2528 + actor.remove(a);
  2529 + });
  2530 + },
  2531 + contains: function(actors, actor) {
  2532 + if (!actor) {
  2533 + return false;
  2534 + }
  2535 + for (var i = 0, len = actors.length; i < len; i++) {
  2536 + if (actors[i].getId() == actor.getId()) {
  2537 + return true;
  2538 + }
  2539 + }
  2540 + return false;
  2541 + }
  2542 +};
  2543 +
  2544 +
  2545 +//
  2546 +// Class for depth adornments
  2547 +//
  2548 +function DepthAdornment() {
  2549 + "use strict";
  2550 + this.attachedTo = null;
  2551 + this.actors = []; // array of 5 square attaced around and to back of actor to show depth
  2552 +
  2553 + for (var i = 0; i < 5; i++) { //
  2554 +
  2555 + var a = dali.createSolidColorActor([0.5, 0.5, 0.5, 1],
  2556 + false, [0, 0, 0, 1],
  2557 + 0);
  2558 + a.name = "**_dali_adornment";
  2559 + this.actors.push(a);
  2560 + }
  2561 +
  2562 + ActorList.show(this.actors, false);
  2563 +}
  2564 +
  2565 +DepthAdornment.prototype.delete = function() {
  2566 + "use strict";
  2567 + ActorList.delete(this.actors);
  2568 + this.actors = [];
  2569 +};
  2570 +
  2571 +DepthAdornment.prototype.attach = function(actor) {
  2572 + "use strict";
  2573 + var newActor = true;
  2574 + if (this.attachedTo) {
  2575 + newActor = (actor.getId() !== this.attachedTo.getId());
  2576 + }
  2577 +
  2578 + if (actor && newActor) {
  2579 + this.unattach(this.attachedTo);
  2580 +
  2581 + if(!ActorList.contains(this.actors, actor)) {
  2582 + this.__positionActors(actor);
  2583 +
  2584 + ActorList.add(this.actors, actor);
  2585 +
  2586 + ActorList.show(this.actors, true);
  2587 +
  2588 + this.attachedTo = actor;
  2589 + }
  2590 + }
  2591 +};
  2592 +
  2593 +DepthAdornment.prototype.unattach = function() {
  2594 + "use strict";
  2595 + if (this.attachedTo) {
  2596 + ActorList.show(this.actors, false);
  2597 + ActorList.remove(this.actors, this.attachedTo);
  2598 + this.attachedTo = null;
  2599 + }
  2600 +};
  2601 +
  2602 +DepthAdornment.prototype.reposition = function() {
  2603 + "use strict";
  2604 + if (this.attachedTo) {
  2605 + this.__positionActors(this.attachedTo);
  2606 + }
  2607 +};
  2608 +
  2609 +DepthAdornment.prototype.__positionActors = function(actor) {
  2610 + "use strict";
  2611 + var s = actor.size;
  2612 + s[2] = Math.max(s[2], 20); // pretend the actor is at least 20
  2613 + var halfw = s[0] / 2;
  2614 + var halfh = s[1] / 2;
  2615 + var halfd = s[2] / 2;
  2616 +
  2617 + this.actors[0].position = [-halfw, 0, -halfd];
  2618 + this.actors[0].orientation = [0, -90, 0];
  2619 + this.actors[0].size = [s[2], s[1], 1];
  2620 +
  2621 + this.actors[1].position = [+halfw, 0, -halfd];
  2622 + this.actors[1].orientation = [0, 90, 0];
  2623 + this.actors[1].size = [s[2], s[1], 1];
  2624 +
  2625 + this.actors[2].position = [0, -halfh, -halfd];
  2626 + this.actors[2].orientation = [90, 0, 0];
  2627 + this.actors[2].size = [s[0], s[2], 1];
  2628 +
  2629 + this.actors[3].position = [0, halfh, -halfd];
  2630 + this.actors[3].orientation = [-90, 0, 0];
  2631 + this.actors[3].size = [s[0], s[2], 1];
  2632 + // back
  2633 + // this.actors[4].position = [0, 0, -s[2]];
  2634 + // this.actors[4].orientation = [0, 0, 0];
  2635 + // this.actors[4].size = s;
  2636 +
  2637 +};
  2638 +
  2639 +
  2640 +
  2641 +/**
  2642 + * Class for cursor adornments when displaying selected actor
  2643 + */
  2644 +function Cursors() {
  2645 + "use strict";
  2646 + var i;
  2647 + var a;
  2648 + this.attachedTo = null;
  2649 + this.resizers = []; // array of 8 small square resizers
  2650 + this.lines = []; // array of 4 bounding box lines
  2651 + this.lineColor = [0.5, 0.5, 0.5, 1];
  2652 + this.resizerColor = [0, 0, 0, 1];
  2653 + this.depthAdornments = new DepthAdornment();
  2654 +
  2655 + for (i = 0; i < 4; i++) { // lines
  2656 + a = dali.createSolidColorActor(this.lineColor, false, [0, 0, 0, 1], 0);
  2657 + a.name = "**_dali_adornment";
  2658 + this.lines.push(a);
  2659 + }
  2660 +
  2661 + for(i = 0; i < 8; i++) { // squares
  2662 + a = dali.createSolidColorActor(this.resizerColor, true, [1, 1, 1, 1], 1);
  2663 + a.name = "**_dali_adornment";
  2664 + this.resizers.push(a);
  2665 + this.resizers[i].size = [10, 10, 1];
  2666 + }
  2667 +
  2668 + ActorList.show(this.lines, false);
  2669 + ActorList.show(this.resizers, false);
  2670 +
  2671 +}
  2672 +
  2673 +
  2674 +Cursors.prototype.attach = function(actor) {
  2675 + "use strict";
  2676 + if (actor) {
  2677 +
  2678 + if (this.attachedTo) {
  2679 + this.unattach(this.attachedTo);
  2680 + }
  2681 +
  2682 + this.__positionActors(actor);
  2683 +
  2684 + ActorList.add(this.lines, actor);
  2685 + ActorList.add(this.resizers, actor);
  2686 +
  2687 + ActorList.show(this.lines, true);
  2688 + ActorList.show(this.resizers, true);
  2689 +
  2690 + this.depthAdornments.attach(actor);
  2691 +
  2692 + this.attachedTo = actor;
  2693 + }
  2694 +};
  2695 +
  2696 +Cursors.prototype.unattach = function(actor) {
  2697 + "use strict";
  2698 + if (actor && this.attachedTo) {
  2699 + ActorList.show(this.lines, false);
  2700 + ActorList.show(this.resizers, false);
  2701 +
  2702 + ActorList.remove(this.lines, actor);
  2703 + ActorList.remove(this.resizers, actor);
  2704 +
  2705 + this.depthAdornments.unattach(actor);
  2706 +
  2707 + this.attachedTo = null;
  2708 + }
  2709 +};
  2710 +
  2711 +Cursors.prototype.reposition = function() {
  2712 + "use strict";
  2713 + if (this.attachedTo) {
  2714 + this.__positionActors(this.attachedTo);
  2715 + this.depthAdornments.reposition();
  2716 + }
  2717 +};
  2718 +
  2719 +Cursors.prototype.__positionActors = function(actor) {
  2720 + "use strict";
  2721 + var s = actor.size;
  2722 + var p = actor.position;
  2723 + var halfw = s[0] / 2;
  2724 + var halfh = s[1] / 2;
  2725 +
  2726 + this.lines[0].position = [0 - halfw, 0, 0];
  2727 + this.lines[0].size = [1, halfh * 2, 1];
  2728 +
  2729 + this.lines[1].position = [0, 0 - halfh, 0];
  2730 + this.lines[1].size = [halfw * 2, 1, 1];
  2731 +
  2732 + this.lines[2].position = [0 + halfw, 0, 0];
  2733 + this.lines[2].size = [1, halfh * 2, 1];
  2734 +
  2735 + this.lines[3].position = [0, 0 + halfh, 0];
  2736 + this.lines[3].size = [halfw * 2, 1, 1];
  2737 +
  2738 + // drag functions presumes order here is clockwise from top left
  2739 + var offsetZ = 5;
  2740 + this.resizers[0].position = [-halfw, +halfh, offsetZ];
  2741 + this.resizers[1].position = [0, +halfh, offsetZ];
  2742 + this.resizers[2].position = [+halfw, +halfh, offsetZ];
  2743 + this.resizers[3].position = [+halfw, 0, offsetZ];
  2744 +
  2745 + this.resizers[4].position = [+halfw, -halfh, offsetZ];
  2746 + this.resizers[5].position = [0, -halfh, offsetZ];
  2747 + this.resizers[6].position = [-halfw, -halfh, offsetZ];
  2748 + this.resizers[7].position = [-halfw, 0, offsetZ];
  2749 +};
  2750 +
  2751 +
  2752 +
  2753 +function App(theEventHandler) {
  2754 + "use strict";
  2755 + var self = this;
  2756 + this.rootRotation = [0, 0, 0]; // in degrees
  2757 + this.cursors = new Cursors();
  2758 + // ActorWrapper CreateSolidColorActor(const Vector4 & color, bool border,
  2759 + // const Vector4 & borderColor,
  2760 + // const unsigned int borderSize)
  2761 + this.rootLayerIndicator = dali.createSolidColorActor(
  2762 + [0, 0, 0, 0.0],
  2763 + true, [0, 0, 0, 1],
  2764 + 1);
  2765 + this.rootLayerIndicator.name = "**_dali_adornment";
  2766 +
  2767 + this.rootLayerIndicator.parentOrigin = [0.5, 0.5, 0.5];
  2768 + this.rootLayerIndicator.anchorPoint = [0.5, 0.5, 0.5];
  2769 + this.rootLayerIndicator.size = [250, 250, 1];
  2770 + this.rootLayerIndicator.position = [0, 0, 0];
  2771 +
  2772 + this.selectedActor = null;
  2773 + this.selectedActorSize = [0, 0, 0];
  2774 + this.selectedActorPosition = [0, 0, 0];
  2775 +
  2776 + this.__handleMouseDrag = function(eventHandler) {
  2777 + if (self.resizing) {
  2778 + if (self.selectedActor) {
  2779 + self.selectedActor.size = [
  2780 + self.selectedActorSize[0] + eventHandler.dragDx,
  2781 + self.selectedActorSize[1] + eventHandler.dragDy,
  2782 + self.selectedActorSize[2]
  2783 + ];
  2784 + self.cursors.reposition();
  2785 + }
  2786 + } else {
  2787 + // move the touched actor
  2788 + if (self.selectedActor) {
  2789 + if (eventHandler.mouse_buttons === 0) {
  2790 + self.selectedActor.position = [
  2791 + self.selectedActorPosition[0] + eventHandler.dragDx,
  2792 + self.selectedActorPosition[1] + eventHandler.dragDy,
  2793 + self.selectedActorPosition[2]
  2794 + ];
  2795 + } else if (eventHandler.mouse_buttons === 2) {
  2796 + self.selectedActor.position = [
  2797 + self.selectedActorPosition[0],
  2798 + self.selectedActorPosition[1], -(self.selectedActorPosition[2] + eventHandler.dragDy)
  2799 + ];
  2800 + }
  2801 + }
  2802 + }
  2803 +
  2804 + // rotate on middle button
  2805 + if (eventHandler.mouse_buttons === 1) {
  2806 + self.rootRotation = [eventHandler.mouseDownPosition[1] - eventHandler.mouseY, -(eventHandler.mouseDownPosition[0] - eventHandler.mouseX),
  2807 + self.rootRotation[2]
  2808 + ];
  2809 + dali.stage.rootRotationActor.orientation = self.rootRotation;
  2810 + }
  2811 +
  2812 + };
  2813 +
  2814 + this.addActor = function(actor) {
  2815 + if (eventHandler.touchedActor) {
  2816 + eventHandler.touchedActor.add(actor);
  2817 + actor.position = [20,20,0]; // offset so new actor isnt right behind touched
  2818 + } else {
  2819 + dali.stage.add(actor);
  2820 + }
  2821 +
  2822 + rebuildTree();
  2823 +
  2824 + };
  2825 +
  2826 + this.__handleSelect = function(eventHandler) {
  2827 + if (eventHandler.mouse_buttons === 0) { // left click only selects actor
  2828 + var actor = eventHandler.touchedActor;
  2829 + self.selectedActor = actor;
  2830 + if(actor) {
  2831 + self.selectedActorPosition = actor.position;
  2832 + self.selectedActorSize = actor.size;
  2833 + } else {
  2834 + self.selectedActorPosition = [0, 0, 0];
  2835 + self.selectedActorSize = [1, 1, 1];
  2836 + }
  2837 + self.cursors.attach(self.selectedActor);
  2838 + dali.stage.add(self.rootLayerIndicator);
  2839 + onActorSelected(actor);
  2840 + }
  2841 + };
  2842 +
  2843 + this.__handleDeselect = function(eventHandler) {
  2844 + self.cursors.unattach(self.selectedActor);
  2845 + dali.stage.remove(self.rootLayerIndicator);
  2846 + };
  2847 +
  2848 + // initialize
  2849 + eventHandler.register("MouseDrag", this.__handleMouseDrag);
  2850 + eventHandler.register("Select", this.__handleSelect);
  2851 + eventHandler.register("Deselect", this.__handleDeselect);
  2852 +
  2853 + //
  2854 + // Monkey patch the stage object (to add to root object not the root layer for rotations)
  2855 + //
  2856 + dali.stage.rootRotationActor = new dali.Actor();
  2857 + dali.stage.rootRotationActor.parentOrigin = [0.5, 0.5, 0.5];
  2858 + dali.stage.rootRotationActor.anchorPoint = [0.5, 0.5, 0.5];
  2859 + dali.stage.rootRotationActor.name = "app rotation actor";
  2860 + dali.stage.rootRotationActor.size = [100,100,1];
  2861 + dali.stage.add(dali.stage.rootRotationActor);
  2862 +
  2863 + dali.stage.add = function(actor) {
  2864 + dali.stage.rootRotationActor.add(actor);
  2865 + };
  2866 +
  2867 + dali.stage.remove = function(actor) {
  2868 + dali.stage.rootRotationActor.remove(actor);
  2869 + };
  2870 +
  2871 +}
  2872 +
  2873 +//
  2874 +// Global
  2875 +//
  2876 +
  2877 +var eventHandler = new EventHandler();
  2878 +var app = new App(eventHandler);
  2879 +var canvas = document.getElementById("canvas");
  2880 +
  2881 +function mouseDown(e) {
  2882 + "use strict";
  2883 + eventHandler.mouseDown(canvas, e);
  2884 +}
  2885 +
  2886 +function mouseUp(e) {
  2887 + "use strict";
  2888 + eventHandler.mouseUp(canvas, e);
  2889 +}
  2890 +
  2891 +function mouseMove(e) {
  2892 + "use strict";
  2893 + eventHandler.mouseMove(canvas, e);
  2894 +}
  2895 +
  2896 +function mouseWheel(e) {
  2897 + "use strict";
  2898 + eventHandler.mouseWheel(canvas, e);
  2899 +}
  2900 +
  2901 +function keyDown(e) {
  2902 + "use strict";
  2903 + eventHandler.keyDown(canvas, e);
  2904 +}
  2905 +
  2906 +function keyUp(e) {
  2907 + "use strict";
  2908 + eventHandler.keyUp(canvas, e);
  2909 +}
  2910 +
  2911 +canvas.onmousemove = mouseMove;
  2912 +canvas.onmousedown = mouseDown;
  2913 +canvas.onmouseup = mouseUp;
  2914 +canvas.onwheel = mouseWheel;
  2915 +
  2916 +canvas.onkeydown = keyDown;
  2917 +canvas.onkeyup = keyUp;
  2918 +
  2919 +//
  2920 +//
  2921 +//
  2922 +
  2923 +function runRandomAnimation(actor) {
  2924 + "use strict";
  2925 + var a = new dali.Animation(0);
  2926 + a.setDuration(6);
  2927 + a.setLooping(true);
  2928 + a.animateTo(actor, "position", [300 * Math.random() - 150, 300 * Math.random() - 150, 0],
  2929 + "Linear", 0, 3);
  2930 + a.animateTo(actor, "position", [0, 0, 0], "Linear", 3, 3);
  2931 + a.animateTo(actor, "rotation", [0, 0, 1, 720 * Math.random() - 360], "Linear", 0, 3);
  2932 + a.animateTo(actor, "rotation", [0, 0, 1, 0], "Linear", 3, 3);
  2933 +
  2934 + a.play();
  2935 + // a.delete(); // delete the animtion object but a.Play() keeps it running in Dali
  2936 + return a;
  2937 +}
  2938 +
  2939 +
  2940 +//------------------------------------------------------------------------------
  2941 +//
  2942 +// application building helpers (pseudo DSL)
  2943 +//
  2944 +//------------------------------------------------------------------------------
  2945 +var _whenBuilder = { // builder for when() function. mimicks dali builder
  2946 + paths: {},
  2947 + styles: {},
  2948 + templates: {},
  2949 + propertyBuffers: {},
  2950 + geometries: {},
  2951 + imageBuffers: {},
  2952 + materials: {},
  2953 + samplers: {},
  2954 + shaders: {},
  2955 + renderers: {},
  2956 + tags: {}
  2957 +};
  2958 +
  2959 +function _actorId(a) { // return id from [object|string name|id]
  2960 + "use strict";
  2961 + if( typeof a === "object" ) {
  2962 + return a.getId();
  2963 + } else if( typeof a === "string" ) {
  2964 + var child = dali.stage.findChildByName(a);
  2965 + return child.getId();
  2966 + } else {
  2967 + return a;
  2968 + }
  2969 +}
  2970 +
  2971 +/**
  2972 + * Builder namespace. Usage as singleton "build".
  2973 + */
  2974 +dali.Builder = function() {
  2975 + "use strict";
  2976 + this.data = _whenBuilder;
  2977 + this.init();
  2978 +};
  2979 +
  2980 +/**
  2981 + *
  2982 + */
  2983 +dali.Builder.prototype.init = function() {
  2984 + var imageSize = 0.5; // half quad size
  2985 + this.propertyBuffer("imageVerts",
  2986 + {format: [ ["aPosition", dali.PropertyType.VECTOR3],
  2987 + ["aTexCoord", dali.PropertyType.VECTOR2] ],
  2988 + data: { "aPosition": [ [-imageSize, -imageSize, 0.0],
  2989 + [+imageSize, -imageSize, 0.0],
  2990 + [-imageSize, +imageSize, 0.0],
  2991 + [+imageSize, +imageSize, 0.0]
  2992 + ],
  2993 + "aTexCoord": [ [0, 0],
  2994 + [1, 0],
  2995 + [0, 1],
  2996 + [1, 1]
  2997 + ]
  2998 + }
  2999 + }
  3000 + );
  3001 +
  3002 + this.propertyBuffer("imageIndices",
  3003 + { format: [ ["indices", dali.PropertyType.INTEGER]],
  3004 + data: { "indices": [0, 3, 1, 0, 2, 3] } } );
  3005 +
  3006 + this.geometry("imageGeometry", {vertices: ["imageVerts"],
  3007 + indices: "imageIndices",
  3008 + type: "TRIANGLES",
  3009 + requiresSelfDepthTest: false} );
  3010 +
  3011 + this.shader("imageShader",
  3012 + {vertex: "\n" +
  3013 + "attribute mediump vec3 aPosition;\n" +
  3014 + "attribute mediump vec2 aTexCoord;\n" +
  3015 + "varying mediump vec2 vTexCoord;\n" +
  3016 + "uniform mediump vec3 uSize;\n" +
  3017 + "uniform mediump mat4 uMvpMatrix;\n" +
  3018 + "\n" +
  3019 + "void main(void)\n" +
  3020 + "{\n" +
  3021 + " mediump vec4 vertexPosition = vec4(aPosition, 1.0);\n" +
  3022 + " vertexPosition.xyz *= uSize;\n" +
  3023 + " gl_Position = uMvpMatrix * vertexPosition;\n" +
  3024 + " vTexCoord = aTexCoord;\n" +
  3025 + "}\n" +
  3026 + "\n" +
  3027 + "",
  3028 + fragment:
  3029 + "precision mediump float;\n" +
  3030 + "uniform sampler2D sTexture;\n" +
  3031 + "uniform mediump vec4 uColor;\n" +
  3032 + "varying mediump vec2 vTexCoord;\n" +
  3033 + "\n" +
  3034 + "void main()\n" +
  3035 + "{\n" +
  3036 + " gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n" +
  3037 + "}\n" +
  3038 + "\n" +
  3039 + "",
  3040 + hints: "HINTS_NONE"
  3041 + });
  3042 +
  3043 + var builtInImages = ["girl1","funnyface","ducks","field"];
  3044 +
  3045 + var d;
  3046 + for(var i=0; i < builtInImages.length; i++)
  3047 + {
  3048 + var imageName = builtInImages[i];
  3049 +
  3050 + var samplerName = "sampler_" + imageName;
  3051 + this.sampler(samplerName,
  3052 + { "minification-filter":0,
  3053 + "magnification-filter":0,
  3054 + "u-wrap":0,
  3055 + "v-wrap":0,
  3056 + "affects-transparency":false});
  3057 +
  3058 + var materialName ="material_" + imageName;
  3059 + this.material(materialName,
  3060 + {textures:
  3061 + [
  3062 + { image: imageName,
  3063 + uniform: "sTexture",
  3064 + sampler: samplerName
  3065 + }
  3066 + ],
  3067 + shader: "imageShader"} );
  3068 +
  3069 + this.renderer("render_" + imageName,
  3070 + {geometry: "imageGeometry",
  3071 + material: materialName});
  3072 +
  3073 + }
  3074 +
  3075 +}; // init()
  3076 +
  3077 +/**
  3078 + * tags an actor
  3079 + */
  3080 +dali.Builder.prototype.tag = function(actor, tag) {
  3081 + // tag an actor (multiple by seperated by space)
  3082 + "use strict";
  3083 + var names = tag.split();
  3084 + var id = _actorId(actor);
  3085 + for(var i = 0; i < names.length; i++) {
  3086 + var name = names[i];
  3087 + if(!(name in _whenBuilder.tags)) {
  3088 + _whenBuilder.tags[name] = [];
  3089 + }
  3090 + var nameIndex = _whenBuilder.tags[name].indexOf(id);
  3091 + if(nameIndex < 0) {
  3092 + _whenBuilder.tags[name].push( id );
  3093 + }
  3094 + }
  3095 +};
  3096 +
  3097 +/**
  3098 + * unTags an actor
  3099 + */
  3100 +dali.Builder.prototype.unTag = function(actor, tag) {
  3101 + // untag
  3102 + "use strict";
  3103 + var names = tag.split();
  3104 + var id = _actorId(actor);
  3105 + for(var i = 0; i < names.length; i++) {
  3106 + var name = names[i];
  3107 + if( name in _whenBuilder.tags ) {
  3108 + var nameIndex = _whenBuilder.tags[name].indexOf(id);
  3109 + if(nameIndex >= 0) {
  3110 + _whenBuilder.tags[name].splice(nameIndex, 1);
  3111 + }
  3112 + }
  3113 + }
  3114 +};
  3115 +
  3116 +/**
  3117 + * Gets list of actors tagged by 'tag'
  3118 + */
  3119 +dali.Builder.prototype.tagged = function(tag) {
  3120 + // return all tagged
  3121 + "use strict";
  3122 + return _whenBuilder.tags[tag];
  3123 +};
  3124 +
  3125 +/**
  3126 + * Returns actorIdArray with actorOrArray removed
  3127 + */
  3128 +dali.Builder.prototype.excludeFrom = function(actorIdArray, actorOrArray)
  3129 +{
  3130 + // return all except one
  3131 + "use strict";
  3132 + var item, id;
  3133 + var excludes = {};
  3134 + if("length" in actorOrArray) {
  3135 + for(item in actorOrArray) {
  3136 + id = _actorId(item);
  3137 + excludes[id] = 1;
  3138 + }
  3139 + } else {
  3140 + id = _actorId(actorOrArray);
  3141 + excludes[id] = 1;
  3142 + }
  3143 +
  3144 + var ret = [];
  3145 + for(item in actorIdArray) {
  3146 + if( !(item in excludes) ) {
  3147 + ret.push( item );
  3148 + }
  3149 + }
  3150 + return ret;
  3151 +};
  3152 +
  3153 +/**
  3154 + *
  3155 + */
  3156 +dali.Builder.prototype.path = function (d) {
  3157 + // Stores paths in builder
  3158 + // paths({name: {points: [[1,2,3],[4,5,6]], forward:[1,0,0]},
  3159 + // other:{points: [[1,2,3],[4,5,6]], forward:[1,0,0]}})
  3160 + //
  3161 + "use strict";
  3162 + for(var name in d) {
  3163 + var pathData = {point: [], forward: [1, 0, 0]};
  3164 + pathData = dali.mergeObjects(pathData, d[name]);
  3165 + var daliPath = new dali.Path();
  3166 + daliPath.points = pathData.points;
  3167 + dali.generateControlPoints(daliPath, pathData.curvature); // @todo remove magic number?
  3168 + _whenBuilder.paths[name] = daliPath;
  3169 + }
  3170 +};
  3171 +
  3172 +/**
  3173 + * Set style definition
  3174 + */
  3175 +dali.Builder.prototype.style = function(name, d) {
  3176 + // Stores styles in builder
  3177 + // style(name, {property1:value, prop2,value})
  3178 + // style(other, {property1:value, prop2,value})
  3179 + //
  3180 + "use strict";
  3181 + _whenBuilder.styles[name] = d;
  3182 +};
  3183 +
  3184 +//
  3185 +// +------------------+ +---------------+
  3186 +// | PropertyBuffer | * * | Geometry |
  3187 +// +------------------+ -------- +---------------+
  3188 +// | format: | | vertex:PBuf |1 * +-----------+ +------------+
  3189 +// | name:v2,name:v3| | indices:PBuf +---------| Renderer | | Actor |
  3190 +// | data | | | +-----------+ * * +------------+
  3191 +// +------------------+ +---------------+ * | geom +---------| renderer(s)|
  3192 +// +----| material | | |
  3193 +// +-------------+ * * +----------+ 1 | | | | |
  3194 +// |Sampler +----------|Material +--------------+ +-----------+ +------------+
  3195 +// +-------------+ +----------+
  3196 +// |uniformName | * |sampler(s)|
  3197 +// |Image | +--|shader |
  3198 +// |Filter/wrap | | |facecull |
  3199 +// +-------------+ | |blendfunc |
  3200 +// | +----------+
  3201 +// +-----------------+ |
  3202 +// |Shader | |
  3203 +// +-----------------+ 1 |
  3204 +// |program:vert,frag|---+
  3205 +// |hints |
  3206 +// +-----------------+
  3207 +//
  3208 +
  3209 +/**
  3210 + * Set template defintion
  3211 + */
  3212 +dali.Builder.prototype.template = function(name, d) {
  3213 + // Stores templates in builder
  3214 + // template("name":{ "type": "ImageActor", property1:value, prop2,value})
  3215 + // template("other: { "type": "TextView", property1:value, prop2,value})
  3216 + "use strict";
  3217 + _whenBuilder.templates[name] = d;
  3218 +
  3219 +};
  3220 +
  3221 +/**
  3222 + * Set style definition
  3223 + */
  3224 +dali.Builder.prototype.imageBuffer = function(name, d) {
  3225 + // stores imageBuffers
  3226 + // imageBuffers("buffer1", { bufferName: "" }
  3227 + // } )
  3228 + "use strict";
  3229 + _whenBuilder.imageBuffers[name] = d;
  3230 +};
  3231 +
  3232 +/**
  3233 + * Set property buffer definition
  3234 + */
  3235 +dali.Builder.prototype.propertyBuffer = function(name, d) {
  3236 + // stores PropertyBuffers
  3237 + // propertyBuffers("buffer1", { format: [ ["aPosition", dali.PropertyType.VECTOR2],
  3238 + // ["aTexCoord", dali.PropertyType.VECTOR2].
  3239 + // data: {aPosition: [-0.5,-0.5,],
  3240 + // [+0.5,-0.5,],
  3241 + // [-0.5,+0.5,],
  3242 + // [+0.5,+0.5,],
  3243 + // aCol: [0.0, 0.0],
  3244 + // [1.0, 0.0],
  3245 + // [0.0, 1.0],
  3246 + // [1.0, 1.0] }
  3247 + // } )
  3248 + "use strict";
  3249 + _whenBuilder.propertyBuffers[name] = d;
  3250 +};
  3251 +
  3252 +/**
  3253 + * Set geometry definition
  3254 + */
  3255 +dali.Builder.prototype.geometry = function(name, d) {
  3256 + // stores geometry meshes
  3257 + // geometries("mesh1": { vertices: "buffer1",
  3258 + // index: "index1",
  3259 + // type: "TRIANGLES",
  3260 + // requresDepthTest:false } )
  3261 + "use strict";
  3262 + _whenBuilder.geometries[name] = d;
  3263 +};
  3264 +
  3265 +/**
  3266 + * Set sample definition
  3267 + */
  3268 +dali.Builder.prototype.sampler = function(name, d) {
  3269 + // stores samplers
  3270 + // samplers("sampler1", { "minification-filter":0,
  3271 + // "magnification-filter":0,
  3272 + // "u-wrap":0,
  3273 + // "v-wrap":0,
  3274 + // "affects-transparency":false})
  3275 + "use strict";
  3276 + _whenBuilder.samplers[name] = d;
  3277 +};
  3278 +
  3279 +/**
  3280 + * Set shader definition
  3281 + */
  3282 +dali.Builder.prototype.shader = function(name, d) {
  3283 + // stores shaders
  3284 + // shaders("shader1", { vertex:"",
  3285 + // fragment:"",
  3286 + // hints:"NONE"} )
  3287 + "use strict";
  3288 + _whenBuilder.shaders[name] = d;
  3289 +};
  3290 +
  3291 +/**
  3292 + * Set material definition
  3293 + */
  3294 +dali.Builder.prototype.material = function(name, d) {
  3295 + // stores materials meshes
  3296 + // materials({"mat1",{ textures: [
  3297 + // { image: animage,
  3298 + // uniform: "uTexture"
  3299 + // sampler: asampler
  3300 + // }
  3301 + // ],
  3302 + // shader: "shader1",
  3303 + // faceCulling: "BACK",
  3304 + // blend: "AUTO",
  3305 + // blendFunc : {srcFactorRGBA, destFactorRGBA},
  3306 + // blendEquation : "",
  3307 + // blendColor : [1,0,0,1] } )
  3308 + //
  3309 + "use strict";
  3310 + var value; // check required things
  3311 + value = this.GetRequiredKey(d, "shader");
  3312 + this.GetRequiredKey(_whenBuilder.shaders, value); // must already exist
  3313 +
  3314 + // only support textures so must have textures section
  3315 + this.GetRequiredKey(d, "textures");
  3316 +
  3317 + var i;
  3318 + for(i = 0; i < d.textures.length; i++)
  3319 + {
  3320 + if(typeof(d.textures[i]) == "string")
  3321 + {
  3322 + // the image must already exist
  3323 + value = this.GetRequiredKey(d.textures[i], "image");
  3324 + this.GetRequiredKey(_whenBuilder.imageBuffers, value);
  3325 + }
  3326 + else
  3327 + {
  3328 + }
  3329 + }
  3330 +
  3331 + // value = this.GetRequiredKey(d, "textures");
  3332 + // this.GetRequiredKey(_whenBuilder.textures, value);
  3333 + _whenBuilder.materials[name] = d;
  3334 +};
  3335 +
  3336 +/**
  3337 + * Set renderer definition
  3338 + */
  3339 +dali.Builder.prototype.renderer = function(name, d) {
  3340 + // store renderer
  3341 + // renderers("rend1", {"geometry": "geom1",
  3342 + // "material": "mat1",
  3343 + // "depth-index"})
  3344 + "use strict";
  3345 + var value; // check required things
  3346 + value = this.GetRequiredKey(d, "geometry");
  3347 + this.GetRequiredKey(_whenBuilder.geometries, value); // must already exist
  3348 + value = this.GetRequiredKey(d, "material");
  3349 + this.GetRequiredKey(_whenBuilder.materials, value);
  3350 +
  3351 + _whenBuilder.renderers[name] = d;
  3352 +};
  3353 +
  3354 +dali.Builder.prototype.createOrGetDaliPropertyBuffer = function(name) {
  3355 + "use strict";
  3356 + consoleAssert(name in _whenBuilder.propertyBuffers, "property buffer not defined:" + name);
  3357 + var ret;
  3358 + if("daliObject" in _whenBuilder.propertyBuffers[name]) {
  3359 + ret = _whenBuilder.propertyBuffers[name].daliObject;
  3360 + } else {
  3361 + var data = _whenBuilder.propertyBuffers[name];
  3362 +
  3363 + ret = dali.createPropertyBuffer(data);
  3364 +
  3365 + _whenBuilder.propertyBuffers[name].daliObject = ret;
  3366 + }
  3367 + return ret;
  3368 +};
  3369 +
  3370 +dali.Builder.prototype.createOrGetDaliGeometry = function(name) {
  3371 + "use strict";
  3372 + consoleAssert(name in _whenBuilder.geometries, "geometry not defined:" + name);
  3373 + var ret;
  3374 + if("daliObject" in _whenBuilder.geometries[name]) {
  3375 + ret = _whenBuilder.geometries[name].daliObject;
  3376 + } else {
  3377 + var data = _whenBuilder.geometries[name];
  3378 +
  3379 + ret = new dali.Geometry();
  3380 +
  3381 + for(var i = 0; i < data.vertices.length; i++) {
  3382 + ret.addVertexBuffer( this.createOrGetDaliPropertyBuffer(data.vertices[i] ) );
  3383 + }
  3384 +
  3385 + ret.setIndexBuffer( this.createOrGetDaliPropertyBuffer(data.indices) );
  3386 +
  3387 + if("requiresSelfDepthTest" in data) {
  3388 + ret.setRequiresDepthTesting(data.requiresSelfDepthTest);
  3389 + }
  3390 +
  3391 + _whenBuilder.geometries[name].daliObject = ret;
  3392 + }
  3393 + return ret;
  3394 +};
  3395 +
  3396 +dali.Builder.prototype.createOrGetDaliShader = function(name) {
  3397 + "use strict";
  3398 + consoleAssert(name in _whenBuilder.shaders, "shader not defined:" + name);
  3399 + var ret = null;
  3400 + if("daliObject" in _whenBuilder.shaders[name]) {
  3401 + ret = _whenBuilder.shaders[name].daliObject;
  3402 + } else {
  3403 + var data = _whenBuilder.shaders[name];
  3404 +
  3405 + ret = new dali.Shader(data.vertex,
  3406 + data.fragment,
  3407 + uiShaderTab.getDaliShaderHints(data.hints));
  3408 +
  3409 + _whenBuilder.shaders[name].daliObject = ret;
  3410 + }
  3411 +
  3412 + return ret;
  3413 +};
  3414 +
  3415 +dali.Builder.prototype.createOrGetDaliImage = function(name) {
  3416 + "use strict";
  3417 + if(!(name in _whenBuilder.imageBuffers)) {
  3418 + _whenBuilder.imageBuffers[name] = {};
  3419 + }
  3420 +
  3421 + var ret;
  3422 + if("daliObject" in _whenBuilder.imageBuffers[name]) {
  3423 + ret = _whenBuilder.imageBuffers[name].daliObject;
  3424 + } else {
  3425 + // get images from the ui buffer
  3426 + ret = imageFromUiBuffer(name);
  3427 + _whenBuilder.imageBuffers[name].daliObject = ret;
  3428 + }
  3429 + return ret;
  3430 +};
  3431 +
  3432 +dali.Builder.prototype.createOrGetDaliSampler = function(name) {
  3433 + "use strict";
  3434 + consoleAssert( name in _whenBuilder.samplers, "sampler not defined:" + name);
  3435 + var ret;
  3436 + if("daliObject" in _whenBuilder.samplers[name]) {
  3437 + ret = _whenBuilder.samplers[name].daliObject;
  3438 + } else {
  3439 + var data = _whenBuilder.samplers[name];
  3440 + ret = new dali.Sampler();
  3441 + _whenBuilder.samplers[name].daliObject = ret;
  3442 + }
  3443 + return ret;
  3444 +};
  3445 +
  3446 +dali.Builder.prototype.createOrGetDaliMaterial = function(name) {
  3447 + "use strict";
  3448 + consoleAssert( name in _whenBuilder.materials, "Material not defined:" + name);
  3449 + var ret;
  3450 + if("daliObject" in _whenBuilder.materials[name]) {
  3451 + ret = _whenBuilder.materials[name].daliObject;
  3452 + } else {
  3453 + var data = _whenBuilder.materials[name];
  3454 +
  3455 + ret = new dali.Material(this.createOrGetDaliShader( data.shader ));
  3456 +
  3457 + for(var i = 0; i < data.textures.length; i++) {
  3458 + ret.addTexture( this.createOrGetDaliImage(data.textures[i].image),
  3459 + data.textures[i].uniform,
  3460 + this.createOrGetDaliSampler( data.textures[i].sampler ) );
  3461 + }
  3462 +
  3463 + _whenBuilder.materials[name].daliObject = ret;
  3464 + }
  3465 + return ret;
  3466 +};
  3467 +
  3468 +dali.Builder.prototype.createOrGetDaliRenderer = function(name) {
  3469 + "use strict";
  3470 + consoleAssert( name in _whenBuilder.renderers, "Renderer not defined:" + name);
  3471 +
  3472 + var ret;
  3473 + if("daliObject" in _whenBuilder.renderers[name]) {
  3474 + ret = _whenBuilder.renderers[name].daliObject;
  3475 + } else {
  3476 + var data = _whenBuilder.renderers[name];
  3477 +
  3478 + ret = new dali.Renderer(this.createOrGetDaliGeometry(data.geometry),
  3479 + this.createOrGetDaliMaterial(data.material));
  3480 +
  3481 + _whenBuilder.renderers[name].daliObject = ret;
  3482 + }
  3483 + return ret;
  3484 +};
  3485 +
  3486 +dali.Builder.prototype.createActorTree = function(dictionary) {
  3487 + "use strict";
  3488 + var ret;
  3489 + var i;
  3490 + consoleAssert(typeof(dictionary) == "object", "createActorTree needs an object");
  3491 +
  3492 + if("type" in dictionary) {
  3493 + if( dictionary.type in dali ) {
  3494 + ret = new dali[ dictionary.type ]();
  3495 + } else if( dictionary.type in _whenBuilder.templates ) {
  3496 + var realType = _whenBuilder.templates[ dictionary.type ].type;
  3497 + ret = new dali[ realType ]();
  3498 + } else {
  3499 + consoleAssert(0, "Cannot find type to create:" + dictionary.type);
  3500 + }
  3501 + } else {
  3502 + consoleAssert("render" in dictionary, "'type' or 'render needed to create dali object");
  3503 + ret = new dali.Actor();
  3504 + }
  3505 +
  3506 + var tags = [];
  3507 +
  3508 + for(var prop in dictionary) {
  3509 + if( prop === "actors" ) {
  3510 + var actors = dictionary[prop];
  3511 + for(i = 0; i < actors.length; i++) {
  3512 + ret.add( this.createActorTree( actors[i] ) );
  3513 + }
  3514 + } else if( prop === "tag" ) {
  3515 + tags.push(dictionary.tag);
  3516 + } else if( prop === "tags" ) {
  3517 + tags.concat(dictionary.tags);
  3518 + } else if( prop === "type" ) {
  3519 + // ignore
  3520 + } else if( prop === "render") {
  3521 + var renderer;
  3522 + if(typeof(dictionary.render) == "string")
  3523 + {
  3524 + renderer = this.createOrGetDaliRenderer(dictionary.render);
  3525 + ret.addRenderer(renderer);
  3526 + }
  3527 + else
  3528 + {
  3529 + for(i = 0; i < dictionary.render.length; i++) {
  3530 + renderer = this.createOrGetDaliRenderer(dictionary.render[i]);
  3531 + ret.addRenderer(renderer);
  3532 + }
  3533 + }
  3534 + } else {
  3535 + // a property set
  3536 + ret[prop] = dictionary[prop];
  3537 + }
  3538 + }
  3539 +
  3540 + if(tags) {
  3541 + for(i = 0; i < tags.length; i++) {
  3542 + this.tag(ret, tags[i]);
  3543 + }
  3544 + }
  3545 +
  3546 + return ret;
  3547 +};
  3548 +
  3549 +/**
  3550 + * Adds actor defintions to stage.
  3551 + */
  3552 +dali.Builder.prototype.stage = function(/* actor definition array */) {
  3553 + "use strict";
  3554 + for(var i = 0; i < arguments.length; i++) {
  3555 + dali.stage.add( this.createActorTree( arguments[i] ) );
  3556 + }
  3557 +};
  3558 +
  3559 +/**
  3560 + * Adds actor defintions to stage.
  3561 + */
  3562 +dali.Builder.prototype.addTo = function(/* toActor, actor_definition_array */) {
  3563 + "use strict";
  3564 + consoleAssert(typeof(arguments[0]) == "string", "1st argument must be name");
  3565 +
  3566 + var i;
  3567 +
  3568 + for(i = 1; i < arguments.length; i++) {
  3569 + consoleAssert(typeof(arguments[1]) == "object", "2nd and other arguments must be object");
  3570 + }
  3571 +
  3572 + var actor;
  3573 + if( arguments[0] == "stage" ) {
  3574 + actor = dali.stage.getRootLayer();
  3575 + }
  3576 + else {
  3577 + actor = dali.stage.getRootLayer().findChildByName( arguments[0] );
  3578 + consoleAssert(actor, "Cannot find actor:" + arguments[0]);
  3579 + }
  3580 +
  3581 + for(i = 1; i < arguments.length; i++) {
  3582 + dali.stage.add( this.createActorTree( arguments[i] ) );
  3583 + }
  3584 +};
  3585 +
  3586 +/**
  3587 + * Adds actor defintions to stage.
  3588 + */
  3589 +dali.Builder.prototype.GetRequiredKey = function(object, name, caller) {
  3590 + if( name in object )
  3591 + {
  3592 + return object[name];
  3593 + }
  3594 + else
  3595 + {
  3596 + consoleAssert(0, "Object is missing key:'" + name + "'\n" + JSON.stringify(object));
  3597 + return false;
  3598 + }
  3599 +};
  3600 +
  3601 +dali.Builder.prototype.image = function(dictionary) {
  3602 + // image({name:"name"
  3603 + //
  3604 + // })
  3605 + //
  3606 + //
  3607 + "use strict";
  3608 + var d = {};
  3609 + var name = this.GetRequiredKey(dictionary, "name");
  3610 +
  3611 + var shaderName = "imageShader";
  3612 + if("shader" in dictionary) {
  3613 + shaderName = dictionary.shader;
  3614 + }
  3615 + var samplers = [name + "_sampler"];
  3616 + if("samplers" in dictionary) {
  3617 + samplers = dictionary.samplers;
  3618 + }
  3619 +
  3620 + var samplername = name + "_sampler";
  3621 + d = {};
  3622 + d[samplername] = {};
  3623 + this.samplers(d);
  3624 +
  3625 + var matname = name + "_material";
  3626 + d = {};
  3627 + d[matname] = {shader: shaderName, textures: [ {image: this.GetRequiredKey(dictionary, "image"),
  3628 + uniform: "sTexture",
  3629 + sampler: samplername}]};
  3630 + this.materials(d);
  3631 +
  3632 + var rendname = name + "_renderer";
  3633 + d = {};
  3634 + d[rendname] = {geometry: "imageGeometry", material: matname};
  3635 + this.renderers(d);
  3636 +
  3637 + // store imageBuffers if they are missing for image
  3638 + // (we're only using image data from browser buffers)
  3639 + if( !(dictionary.image in _whenBuilder.imageBuffers) ) { // add to _whenBuilder
  3640 + d = {};
  3641 + d[dictionary.image] = { bufferName: dictionary.image };
  3642 + this.imageBuffers(d);
  3643 + }
  3644 +
  3645 + dictionary.type = "Actor";
  3646 + dictionary.renderers = [rendname];
  3647 +
  3648 + return dictionary;
  3649 +};
  3650 +
  3651 +////////////////////////////////////////////////////////////////////////////////
  3652 +//
  3653 +// dali toy Builder singleton
  3654 +//
  3655 +//
  3656 +////////////////////////////////////////////////////////////////////////////////
  3657 +var build = new dali.Builder();
  3658 +
  3659 +////////////////////////////////////////////////////////////////////////////////
  3660 +//
  3661 +//
  3662 +//
  3663 +////////////////////////////////////////////////////////////////////////////////
  3664 +function _addTypeToDictionaryClosure(actorType) {
  3665 + "use strict";
  3666 + return function(dictionary) {
  3667 + dictionary.type = actorType;
  3668 + return dictionary;
  3669 + };
  3670 +}
  3671 +
  3672 +// @ todo; why is this global?
  3673 +var HTML5Image = Image; // html5 also has "Image" which were about to overwrite
  3674 +var _registry = new dali.TypeRegistry();
  3675 +for(var _i = 0; _i < _registry.getTypeNameCount(); _i++) {
  3676 + var _typename = _registry.getTypeName(_i);
  3677 + this[_typename] = _addTypeToDictionaryClosure(_typename);
  3678 +}
  3679 +
  3680 +function _actorArray(actorOrName) {
  3681 + "use strict";
  3682 + if(typeof actorOrName === "string") {
  3683 + return [actorOrName];
  3684 + } else {
  3685 + return [actorOrName.name];
  3686 + }
  3687 +}
  3688 +
  3689 +function _actorIdList(a) {
  3690 + "use strict";
  3691 + var ret = [];
  3692 + if("length" in a) {
  3693 + for(var item in a) {
  3694 + ret.push( _actorId(item) );
  3695 + }
  3696 + } else {
  3697 + ret.push( _actorId(a) );
  3698 + }
  3699 + return ret;
  3700 +}
  3701 +
  3702 +
  3703 +function _functionName(fun) {
  3704 + "use strict";
  3705 + var ret = fun.toString();
  3706 + ret = ret.substr("function ".length);
  3707 + ret = ret.substr(0, ret.indexOf("("));
  3708 + return ret;
  3709 +}
  3710 +
  3711 +function _numberOrRaise(value, errorMessage) {
  3712 + "use strict";
  3713 + if(typeof value === "number") {
  3714 + return value;
  3715 + } else {
  3716 + throw errorMessage;
  3717 + }
  3718 +}
  3719 +
  3720 +function _stringOrRaise(value, errorMessage) {
  3721 + "use strict";
  3722 + if(typeof value === "string") {
  3723 + return value;
  3724 + } else {
  3725 + throw errorMessage;
  3726 + }
  3727 +}
  3728 +
  3729 +// Animate to
  3730 +// to(value)
  3731 +// to(value, delay, duration)
  3732 +// to(value, delay, duration, interpolation)
  3733 +// ie
  3734 +// to([10,10,10]
  3735 +// to([10,10,10], 0,3, "ease_in")),
  3736 +function to() {
  3737 + "use strict";
  3738 + var ret = { animate: "animateTo",
  3739 + value: null,
  3740 + delay: 0,
  3741 + duration: 0,
  3742 + alpha: "linear"};
  3743 +
  3744 + ret.value = arguments[0]; // property value
  3745 + if( arguments.length > 1 ) {
  3746 + ret.delay = _numberOrRaise(arguments[1], "Delay must be a number");
  3747 + }
  3748 + if( arguments.length > 2 ) {
  3749 + ret.duration = _numberOrRaise(arguments[2], "Duration must be a number");
  3750 + }
  3751 + if( arguments.length > 3 ) { // optional
  3752 + ret.alpha = arguments[3];
  3753 + }
  3754 + return ret;
  3755 +}
  3756 +
  3757 +// Animate by
  3758 +// by(value)
  3759 +// by(value, delay, duration)
  3760 +// by(value, delay, duration, interpolation)
  3761 +// ie
  3762 +// by([10,10,10]
  3763 +// by([10,10,10], 0,3, "ease_in")),
  3764 +function by() {
  3765 + "use strict";
  3766 + var ret = { animate: "animateBy",
  3767 + value: null,
  3768 + delay: 0,
  3769 + duration: 0,
  3770 + alpha: "linear"};
  3771 +
  3772 + ret.value = arguments[0]; // property value
  3773 + if( arguments.length > 1 ) {
  3774 + ret.delay = _numberOrRaise(arguments[1], "Delay must be a number");
  3775 + }
  3776 + if( arguments.length > 2 ) {
  3777 + ret.duration = _numberOrRaise(arguments[2], "Duration must be a number");
  3778 + }
  3779 + if( arguments.length > 3 ) { // optional
  3780 + ret.alpha = arguments[3];
  3781 + }
  3782 + return ret;
  3783 +}
  3784 +
  3785 +// Animate between
  3786 +// between(fromValue, toValue)
  3787 +// between(fromValue, toValue, delay, duration)
  3788 +// between(fromValue, toValue, delay, duration, interpolation)
  3789 +// ie
  3790 +// between([10,10,10], [100,10,10]
  3791 +// between([10,10,10], [100,10,10], 0,3, "ease_in")),
  3792 +function between() {
  3793 + "use strict";
  3794 + var ret = { animate: "animateBy",
  3795 + fromValue: null,
  3796 + toValue: null,
  3797 + delay: 0,
  3798 + duration: 0,
  3799 + alpha: "linear"};
  3800 +
  3801 + ret.value = arguments[0]; // property value
  3802 + ret.value = arguments[1]; // property value
  3803 + if( arguments.length > 2 ) {
  3804 + ret.delay = _numberOrRaise(arguments[2], "Delay must be a number");
  3805 + }
  3806 + if( arguments.length > 3 ) {
  3807 + ret.duration = _numberOrRaise(arguments[3], "Duration must be a number");
  3808 + }
  3809 +
  3810 + if( arguments.length > 4 ) { // optional
  3811 + ret.alpha = arguments[4];
  3812 + }
  3813 + return ret;
  3814 +}
  3815 +
  3816 +// Animate path
  3817 +// path(pathName)
  3818 +// path(pathName, delay, duration)
  3819 +// path(pathName, delay, duration, interpolation)
  3820 +// ie
  3821 +// path("path0", 0, 3, "linear")
  3822 +function path() {
  3823 + "use strict";
  3824 + var ret = { animate: "path",
  3825 + path: null,
  3826 + forward: [1, 0, 0],
  3827 + delay: 0,
  3828 + duration: 0,
  3829 + alpha: "linear"};
  3830 +
  3831 + ret.path = arguments[0]; // path
  3832 + if( arguments.length > 1 ) {
  3833 + ret.delay = _numberOrRaise(arguments[1], "Delay must be a number");
  3834 + }
  3835 + if( arguments.length > 2 ) {
  3836 + ret.duration = _numberOrRaise(arguments[2], "Duration must be a number");
  3837 + }
  3838 +
  3839 + if( arguments.length > 3 ) { // optional
  3840 + ret.alpha = arguments[3];
  3841 + }
  3842 + return ret;
  3843 +}
  3844 +
  3845 +// conditional animation
  3846 +// when("myimage", condition("touched", "inside", 0, 100),
  3847 +//
  3848 +function condition(propertyName, conditionType, arg0, arg1)
  3849 +{
  3850 + "use strict";
  3851 + var ret = { actors: [],
  3852 + property: propertyName,
  3853 + type: conditionType,
  3854 + arg0: arg0,
  3855 + arg1: arg1
  3856 + };
  3857 +
  3858 + if(arg1 === undefined) {
  3859 + ret.arg1 = 0.0; // make a float for the c++ call (ignored if irrelevant)
  3860 + }
  3861 +
  3862 + return ret;
  3863 +}
  3864 +
  3865 +// set animation
  3866 +// set(actorOrListOrNone, signalName, animationDefition)
  3867 +// ie
  3868 +// set("myimage", "size", to([10,10,10], 0,3, "ease_in"),
  3869 +// path(0,3, "ease_in", "path0"))
  3870 +// set("size", to([10,10,10], 0,3, "ease_in")),
  3871 +// between([0,0,0], [10,10,10], 0,3, "ease_in")))
  3872 +// set(tagged("scrollitem), "position", path(0,3, "ease_in", "path0")),
  3873 +// set(excludeFrom(tagged("scrollitem"), "myimage"), "position", path(0,3, "ease_in", "path0")),
  3874 +function set() {
  3875 + "use strict";
  3876 + var ret = { action: "set",
  3877 + actors: [],
  3878 + property: null,
  3879 + animation: []
  3880 + };
  3881 +
  3882 + var index;
  3883 + if( arguments.length === 3 ) { // then actor is specified somehow
  3884 + ret.actors = _actorArray( arguments[0] );
  3885 + ret.property = _stringOrRaise(arguments[1], "Property must be a string");
  3886 + index = 2;
  3887 + } else if( arguments.length === 2 ) { // actor is self (indicated in 'when' call)
  3888 + ret.property = _stringOrRaise(arguments[0], "Property must be a string");
  3889 + index = 1;
  3890 + } else {
  3891 + throw "set needs 2 or 3 arguments";
  3892 + }
  3893 +
  3894 + for(var i = index; i < arguments.length; i++) {
  3895 + ret.animation.push( arguments[i] );
  3896 + }
  3897 +
  3898 + return ret;
  3899 +}
  3900 +
  3901 +// set animation
  3902 +// call(function, arg0, arg1)
  3903 +// ie
  3904 +// call(func)
  3905 +// call(func, 10.0, "enable")
  3906 +function call() {
  3907 + "use strict";
  3908 + var ret = { action: "call",
  3909 + arguments: [],
  3910 + func: null
  3911 + };
  3912 +
  3913 + ret.func = arguments[0];
  3914 +
  3915 + for(var i = 1; i < arguments.length; i++) {
  3916 + ret.arguments.push( arguments[i] );
  3917 + }
  3918 +
  3919 + return ret;
  3920 +}
  3921 +
  3922 +function then()
  3923 +{
  3924 + "use strict";
  3925 + return [{ action: arguments[0],
  3926 + parameters: arguments[1]}];
  3927 +}
  3928 +
  3929 +function _actorNameList()
  3930 +{
  3931 + "use strict";
  3932 + var names;
  3933 + if(typeof arguments[0] === "function") {
  3934 + var lookup = arguments[0]();
  3935 + names = lookup[0];
  3936 + } else if(typeof arguments[0] === "object") {
  3937 + // or it can be the actual dali actor object
  3938 + names = _actorArray(arguments[0].name);
  3939 + } else if(typeof arguments[0] === "string") {
  3940 + // or arg0,arg1 are the actor property
  3941 + names = _actorArray(arguments[0]);
  3942 + } else {
  3943 + return names; // presume already actor name list
  3944 + }
  3945 + return names;
  3946 +}
  3947 +
  3948 +var _buildDescription = {animations:{}, templates:{}};
  3949 +
  3950 +function _animation(a) {
  3951 + if(a) {
  3952 + return a;
  3953 + } else {
  3954 + return new dali.Animation(0);
  3955 + }
  3956 +}
  3957 +
  3958 +// function _makeActionCallback(func, args) {
  3959 +// "use strict";
  3960 +// return function(){
  3961 +// var a;
  3962 +// for(var i = 0; i < args.length; i++) {
  3963 +// var d = args[i];
  3964 +// if( d.action === "set" ) {
  3965 +// for(var ai = 0; ai < d.actors.length; ai++) {
  3966 +// if( d.property ) {
  3967 +// apply(_animation,
  3968 +// d.arguments[0].animate,
  3969 +
  3970 +// anim.push( [d.actors[ai]], d.property,
  3971 +// }
  3972 +// }
  3973 +// }
  3974 +
  3975 +// var ret = { action: "set",
  3976 +// actors: [],
  3977 +// property: null,
  3978 +// condition: null,
  3979 +// animation: []
  3980 +// };
  3981 +
  3982 +
  3983 +// func.apply(null, args);
  3984 +// };
  3985 +// }
  3986 +
  3987 +function loop(on)
  3988 +{
  3989 + "use strict";
  3990 + return { action: "loop",
  3991 + value: on};
  3992 +}
  3993 +
  3994 +function endAction(action)
  3995 +{
  3996 + "use strict";
  3997 + return { action: "endAction",
  3998 + value: action};
  3999 +}
  4000 +
  4001 +function disconnectAction(action)
  4002 +{
  4003 + "use strict";
  4004 + return { action: "disconnectAction",
  4005 + value: action};
  4006 +}
  4007 +
  4008 +
  4009 +function _makeCallback(args) {
  4010 + "use strict";
  4011 + return function(){
  4012 + var a;
  4013 + var actors = _actorNameList( args[0] );
  4014 + // args[1] is signal name
  4015 + for(var i = 2; i < args.length; i++) {
  4016 + var d = args[i];
  4017 + if(d.action === "call") {
  4018 + d.func.apply(null, d.arguments);
  4019 + } else if(d.action === "loop") {
  4020 + a = _animation(a);
  4021 + a.setLooping( d.value );
  4022 + } else if(d.action === "endAction") {
  4023 + a = _animation(a);
  4024 + a.setEndAction( d.value );
  4025 + } else if(d.action === "disconnectAction") {
  4026 + a = _animation(a);
  4027 + a.setDisconnectAction( d.value );
  4028 + } else if(d.action === "set") {
  4029 + if( d.actors.length ) {
  4030 + actors = d.actors;
  4031 + }
  4032 + for(var actori = 0; actori < actors.length; actori++) {
  4033 + var actorName = actors[actori];
  4034 + var root = dali.stage.getRootLayer();
  4035 + var actor = root.findChildByName( actorName );
  4036 + a = _animation(a);
  4037 + for(var animi = 0; animi < d.animation.length; animi++) {
  4038 + var anim = d.animation[animi];
  4039 + var value = anim.value;
  4040 + if(typeof value === "function") { // can be a function
  4041 + value = value();
  4042 + }
  4043 + if(anim.animate === "animateTo") {
  4044 + a.animateTo(actor, d.property, value, anim.alpha, anim.delay, anim.duration);
  4045 + } else if(anim.animate === "animateBy") {
  4046 + a.animateBy(actor, d.property, value, anim.alpha, anim.delay, anim.duration);
  4047 + } else if(anim.animate === "animatePath") {
  4048 + var pathData = anim.path;
  4049 + var daliPath;
  4050 + if(typeof pathData === "function") {
  4051 + pathData = pathData();
  4052 + }
  4053 + if(typeof pathData === "string") {
  4054 + if(pathData in _whenBuilder.paths) {
  4055 + daliPath = _whenBuilder.paths[pathData];
  4056 + } else {
  4057 + throw "Path not known";
  4058 + }
  4059 + } else {
  4060 + daliPath = new dali.Path();
  4061 + daliPath.points = pathData;
  4062 + dali.generateControlPoints(daliPath, 0.35); // @todo remove magic number?
  4063 + }
  4064 + _animation(a).animatePath(actor, daliPath, anim.forward, anim.alpha, anim.delay, anim.duration);
  4065 + } else {
  4066 + throw "";
  4067 + }
  4068 + } // for anims
  4069 + } // for actors
  4070 + }
  4071 + }// for args
  4072 +
  4073 + // animation support?
  4074 + // else if( d.action === "animate" ) {
  4075 + // }
  4076 +
  4077 + // actions support??
  4078 + // else if( d.action === "then" ) {
  4079 + // if( d.actors.length ) {
  4080 + // actors = d.actors;
  4081 + // }
  4082 +
  4083 + if(a) {
  4084 + a.play();
  4085 + }
  4086 + }; // closure function
  4087 +} // _makeCallback
  4088 +
  4089 +
  4090 +// doNow(<defaultActor>, ...)
  4091 +//
  4092 +// doNow("myimage",
  4093 +// call(myfunction),
  4094 +// call(myfunction, arg1),
  4095 +// and("animation-ends"),
  4096 +// set("myimage", "size", to([10,10,10]),
  4097 +// to([10,10,10], 0,3, "ease_in")),
  4098 +// path(0,3, "ease_in", "path0")),
  4099 +// between([0,0,0], [10,10,10], 0,3, "ease_in")),
  4100 +// to([0,0,0], 0, 3)
  4101 +// set(tagged("scrollitem), path(0,3, "ease_in", "path0")),
  4102 +// set(excludeFrom(tagged("scrollitem"), "myimage"), path(0,3, "ease_in", "path0")),
  4103 +// endAction("bake"),
  4104 +// discardAction("bake"),
  4105 +// loop(true),
  4106 +// then("myimage", "hide"),
  4107 +// then("quit"),
  4108 +// then("play", "myanim"),
  4109 +// thenOnChild("myimage", "child", "hide"),
  4110 +// animate("name"),
  4111 +// animateTo("position",
  4112 +// )
  4113 +function doNow(args) {
  4114 + "use strict";
  4115 + var actor = args.shift();
  4116 + args.unshift(""); // signal name
  4117 + args.unshift(actor);
  4118 + var cb = _makeCallback.apply(null, args);
  4119 + cb();
  4120 +}
  4121 +
  4122 +function _makeSensibleTouched(func, state) { // dali giving all mouse events on touched signal --- is this correct?? @todo
  4123 + "use strict";
  4124 + return function(actor, touchEvent){
  4125 + var doit = false;
  4126 + for(var i = 0; i < touchEvent.points.length; i++) {
  4127 + if(touchEvent.points[i].state === state) {
  4128 + doit = true;
  4129 + break;
  4130 + }
  4131 + }
  4132 + if(doit) {
  4133 + func.apply( null, arguments);
  4134 + }
  4135 + };
  4136 +}
  4137 +
  4138 +// function _connectToSignal(actors, signalName, func) {
  4139 +// "use strict";
  4140 +// var root = dali.stage.getRootLayer();
  4141 +// var f = func;
  4142 +
  4143 +// if( signalName === "touchedDown" ) { // fix as touched signal is really "mouseState"?
  4144 +// f = _makeSensibleTouchedDown(func);
  4145 +// signalName = "touched";
  4146 +// }
  4147 +
  4148 +// for(var ai = 0; ai < actors.length; ai++) {
  4149 +// var actor = root.findChildByName( actors[ai] );
  4150 +// actor.connect( signalName, f );
  4151 +// }
  4152 +// }
  4153 +
  4154 +
  4155 +// when("myimage", condition("touched", "inside", 0, 100),
  4156 +// or
  4157 +// when("myimage", "touched",
  4158 +// call(myfunction),
  4159 +// call(myfunction, arg1),
  4160 +// and("animation-ends"),
  4161 +// set("myimage", "size", to([10,10,10]),
  4162 +// to([10,10,10], 0,3, "ease_in")),
  4163 +// path(0,3, "ease_in", "path0")),
  4164 +// between([0,0,0], [10,10,10], 0,3, "ease_in")),
  4165 +// to([0,0,0], 0, 3)
  4166 +// set(tagged("scrollitem), path(0,3, "ease_in", "path0")),
  4167 +// set(excludeFrom(tagged("scrollitem"), "myimage"), path(0,3, "ease_in", "path0")),
  4168 +// endAction("bake"),
  4169 +// discardAction("bake"),
  4170 +// loop(true),
  4171 +// then("myimage", "hide"),
  4172 +// then("quit"),
  4173 +// then("play", "myanim"),
  4174 +// thenOnChild("myimage", "child", "hide"),
  4175 +// animate("name"),
  4176 +// )
  4177 +function when() {
  4178 + "use strict";
  4179 + var actors, property, index;
  4180 + var signal = null;
  4181 + var condition = null;
  4182 +
  4183 + // arg0 can be an actor lookup function; returning an actor array
  4184 + actors = _actorNameList(arguments[0]);
  4185 +
  4186 + if(typeof arguments[1] === "string") {
  4187 + // if string then its a signal
  4188 + signal = arguments[1];
  4189 + } else {
  4190 + // if object then its a condition
  4191 + condition = arguments[1];
  4192 + // actors can be null which means use the actors in when() call
  4193 + if(condition.actors === null) {
  4194 + condition.actor = actors[0];
  4195 + }
  4196 + }
  4197 +
  4198 + var root;
  4199 + var f;
  4200 + var ai;
  4201 + var actor;
  4202 +
  4203 + if(signal) {
  4204 + // _connectToSignal( actors, signal, _makeCallback(arguments) );
  4205 + root = dali.stage.getRootLayer();
  4206 + f = _makeCallback(arguments);
  4207 +
  4208 + if( signal === "touchedDown" ) { // fix as touched signal is really "mouseState"?
  4209 + f = _makeSensibleTouched(f, "Down");
  4210 + signal = "touched";
  4211 + }
  4212 + if( signal === "touchedUp" ) { // fix as touched signal is really "mouseState"?
  4213 + f = _makeSensibleTouched(f, "Up");
  4214 + signal = "touched";
  4215 + }
  4216 + if( signal === "touchedMotion" ) { // fix as touched signal is really "mouseState"?
  4217 + f = _makeSensibleTouched(f, "Motion");
  4218 + signal = "touched";
  4219 + }
  4220 + if( signal === "touchedLeave" ) { // fix as touched signal is really "mouseState"?
  4221 + f = _makeSensibleTouched(f, "Leave");
  4222 + signal = "touched";
  4223 + }
  4224 + if( signal === "touchedStationary" ) { // fix as touched signal is really "mouseState"?
  4225 + f = _makeSensibleTouched(f, "Stationary");
  4226 + signal = "touched";
  4227 + }
  4228 + if( signal === "touchedInterrupted" ) { // fix as touched signal is really "mouseState"?
  4229 + f = _makeSensibleTouched(f, "Interrupted");
  4230 + signal = "touched";
  4231 + }
  4232 + if( signal === "touchedLast" ) { // fix as touched signal is really "mouseState"?
  4233 + f = _makeSensibleTouched(f, "Last");
  4234 + signal = "touched";
  4235 + }
  4236 +
  4237 + for(ai = 0; ai < actors.length; ai++) {
  4238 + actor = root.findChildByName( actors[ai] );
  4239 + actor.connect( signal, f );
  4240 + }
  4241 + }
  4242 +
  4243 + if(condition) {
  4244 + // _connectToCondition( actors, condition, _makeCallback(arguments) );
  4245 + root = dali.stage.getRootLayer();
  4246 + f = _makeCallback(arguments);
  4247 +
  4248 + for(ai = 0; ai < actors.length; ai++) {
  4249 + actor = root.findChildByName( actors[ai] );
  4250 + actor.setPropertyNotification(condition.property,
  4251 + condition.type, condition.arg0, condition.arg1,
  4252 + f);
  4253 + }
  4254 + }
  4255 +
  4256 +// when("myimage", condition("touched", "inside", 0, 100),
  4257 +// or
  4258 +// when("myimage", "touched",
  4259 +// ***
  4260 +// dali.ActorWrapper.prototype.connect = function(signalName, callback) {
  4261 +// if(d.action === "set") {
  4262 +// var animationActors = d.actors;
  4263 +// if( animationActors.length === 0 ) {
  4264 +// animationActors = actors;
  4265 +// }
  4266 +// var a = new dali.Animation(0);
  4267 +// // dali.AnimationWrapper.prototype.animateTo = function(object, propertyName, value, alphaFunction, delay, duration) {
  4268 +// //dali.AnimationWrapper.prototype.animateBy = function(object, propertyName, value, alphaFunction, delay, duration) {
  4269 +// //dali.AnimationWrapper.prototype.animatePath = function(object, pathObject, forward, alphaFunction, delay, duration) {
  4270 +// for(var ai =0; ai < animationActors.length; ai++) {
  4271 +// for(var animi =0; animi < d.animation; animi++) {
  4272 +// var animEntry = d.animation[animi];
  4273 +// if( d.animate == "animatePath") {
  4274 +// a.animatePath(animationActors[ai], animEntry.path, animEntry.forward, animEntry.alpha,
  4275 +// animEntry.delay, animEntry.duration);
  4276 +
  4277 +// } else if( d.animate == "animateBetween") {
  4278 +// a.animateBetween(animationActors[ai], d.property,
  4279 +// animEntry.fromValue, animEntry.toValue,
  4280 +// animEntry.alpha, animEntry.delay, animEntry.duration);
  4281 +// } else {
  4282 +// // call animateTo,animateBy,
  4283 +// a[animEntry.animate](animationActors[ai], d.property, animEntry.value, animEntry.alpha,
  4284 +// animEntry.delay, animEntry.duration);
  4285 +// }
  4286 +// }
  4287 +// }
  4288 +
  4289 + // var animiations = [];
  4290 +
  4291 + // for(var i = 2; i < arguments.length; i++) {
  4292 + // var d = arguments[i];
  4293 + // if( d.action === "set" ) {
  4294 + // // var ret = { action: "set",
  4295 + // // actors: [],
  4296 + // // property: null,
  4297 + // // condition: null,
  4298 + // // animation: []
  4299 + // // };
  4300 + // for(var ai = 0; ai < d.actors.length; ai++) {
  4301 + // d.actors[ai]
  4302 + // }
  4303 + // }
  4304 +
  4305 + // for(var j = 0; j < d.length; j++) {
  4306 + // if(signal) { // then its signal actions
  4307 + // d.name = signal;
  4308 + // templates[actorName].signals.push(d[j]);
  4309 + // } else { // its property notifications
  4310 + // d.condition = condition;
  4311 + // d.property = property;
  4312 + // templates[actorName].notifications.push(d[j]);
  4313 +
  4314 + // index = 2;
  4315 +
  4316 + // // but we could also be specifying a property notification so...
  4317 + // //
  4318 + // var condition;
  4319 + // var value;
  4320 + // if(typeof arguments[index] === "string") {
  4321 + // var lowerCase = arguments[index].toLowerCase();
  4322 + // if("insideoutsidegreaterthanlessthan".indexOf(lowerCase)) {
  4323 + // property = signal;
  4324 + // signal = null;
  4325 + // condition = lowerCase;
  4326 + // index += 1;
  4327 + // value = arguments[index];
  4328 + // index += 1;
  4329 + // if( condition === "inside" || condition === "outside" ) {
  4330 + // assert( value.length === 2, "Inside/Outside condition must specify min,max");
  4331 + // assert(typeof value[0] === "number" && typeof value[1] === "number", "Conditions must be numbers");
  4332 + // }
  4333 + // if(condition === "lessthan" || condition === "greaterthan") {
  4334 + // assert(value.length === 1, "LessThan/GreaterThan condition must specify one value");
  4335 + // assert(typeof value === "number", "Conditions must be numbers");
  4336 + // }
  4337 + // }
  4338 + // }
  4339 +
  4340 + // // The reset are objects created by the set or call function
  4341 + // var templates = _buildDescription.templates;
  4342 +
  4343 + // for( var actorName in actors ) {
  4344 + // // the other args come from functions that generate json
  4345 + // for(var i = index; i < arguments.length; i++) {
  4346 + // var d = arguments[i];
  4347 + // for(var j = 0; j < d.length; j++) {
  4348 + // if(signal) { // then its signal actions
  4349 + // d.name = signal;
  4350 + // templates[actorName].signals.push(d[j]);
  4351 + // } else { // its property notifications
  4352 + // d.condition = condition;
  4353 + // d.property = property;
  4354 + // templates[actorName].notifications.push(d[j]);
  4355 + // }
  4356 + // }
  4357 + // }
  4358 + // }
  4359 +
  4360 +} // when()
  4361 +
  4362 +
  4363 +// function animation() {
  4364 +// "use strict";
  4365 +
  4366 +// var name = arguments[0];
  4367 +// var anim = {};
  4368 +// for(var i = 1; i < arguments.length; i++) {
  4369 +// var d = arguments[i];
  4370 +
  4371 +// if(d.length === undefined) { // then array from set
  4372 +
  4373 +// } else {
  4374 +// extend( anim, d );
  4375 +// }
  4376 +// }
  4377 +
  4378 +// }
  4379 +
  4380 +
  4381 +//
  4382 +// pseudo dali DSL
  4383 +//
  4384 +
  4385 +// stage(
  4386 +// layer({
  4387 +// width: 400,
  4388 +// tag: "scroll"
  4389 +// actors:[
  4390 +// image({filename:"animage,
  4391 +// name: "myimage",
  4392 +// tag: "scrollitem",
  4393 +// width: 200,
  4394 +// height: 100}),
  4395 +// text({text:"sometext,
  4396 +// tag: "scrollitem",
  4397 +// width:10})
  4398 +// ]
  4399 +// )
  4400 +// )
  4401 +
  4402 +// when("myimage", condition("touched", "inside", 0, 100),
  4403 +// or
  4404 +// when("myimage", "touched",
  4405 +// call(myfunction),
  4406 +// call(myfunction, arg1),
  4407 +// and("animation-ends"),
  4408 +// set("myimage", "size", to([10,10,10]),
  4409 +// to([10,10,10], 0,3, "ease_in")),
  4410 +// path(0,3, "ease_in", "path0")),
  4411 +// between([0,0,0], [10,10,10], 0,3, "ease_in")),
  4412 +// to([0,0,0], 0, 3)
  4413 +// set(tagged("scrollitem), path(0,3, "ease_in", "path0")),
  4414 +// set(excludeFrom(tagged("scrollitem"), "myimage"), path(0,3, "ease_in", "path0")),
  4415 +// then("myimage", "hide"),
  4416 +// then("quit"),
  4417 +// then("play", "myanim"),
  4418 +// thenOnChild("myimage", "child", "hide"),
  4419 +// animate("name"),
  4420 +// )
  4421 +
  4422 +// constraints?
  4423 +// on("myimage", "position", between(0, 100),
  4424 +
  4425 +
  4426 +
  4427 +//------------------------------------------------------------------------------
  4428 +// test helper functions
  4429 +//------------------------------------------------------------------------------
  4430 +
  4431 +function clear() {
  4432 + var root = dali.stage.rootRotationActor;
  4433 + var children = root.getChildren();
  4434 +
  4435 + for (var i = 0, len = children.length; i < len; i++) {
  4436 + root.remove(children[i]);
  4437 + children[i].delete(); // delete the wrapper
  4438 + }
  4439 + // root.delete(); // wrapper
  4440 +}
  4441 +
  4442 +function square(color, size) {
  4443 + var a = dali.createSolidColorActor(color, 0, [0, 0, 0, 1], 0);
  4444 + a.size = size;
  4445 + return a;
  4446 +}
  4447 +
  4448 +function threeSquares() {
  4449 + var root = dali.stage.rootRotationActor;
  4450 +
  4451 + var a = square([1, 0, 0, 1], [200, 200, 0]);
  4452 + a.name = "red";
  4453 + a.position = [-100, 0, -20];
  4454 + root.add(a);
  4455 + a.delete();
  4456 +
  4457 + a = square([0, 1, 0, 1], [200, 200, 0]);
  4458 + a.name = "green";
  4459 + a.position = [0, -100, -10];
  4460 + root.add(a);
  4461 + a.delete();
  4462 +
  4463 + a = square([0, 0, 1, 1], [200, 200, 0]);
  4464 + a.name = "blue";
  4465 + a.position = [0, -100, 0];
  4466 + root.add(a);
  4467 + a.delete();
  4468 +
  4469 + // root.delete();
  4470 +}
  4471 +
  4472 +function threeSquares2() {
  4473 + var root = dali.stage.rootRotationActor;
  4474 +
  4475 + var red = square([1, 0, 0, 1], [200, 200, 0]);
  4476 + red.name = "red";
  4477 + red.position = [-100, 0, 20];
  4478 + red.size = [10, 10, 0];
  4479 + root.add(red);
  4480 +
  4481 + var green = square([0, 1, 0, 1], [200, 200, 0]);
  4482 + green.name = "green";
  4483 + green.position = [0, -100, 0];
  4484 + green.orientation = [0, 0, 20];
  4485 + green.size = [200, 200, 0];
  4486 +
  4487 + var blue = square([0, 0, 1, 1], [200, 200, 0]);
  4488 + blue.name = "blue";
  4489 + blue.position = [0, 0, 10];
  4490 + blue.parentOrigin = [0, 0, 0];
  4491 + blue.size = [100, 100, 0];
  4492 + green.add(blue);
  4493 + root.add(green);
  4494 +
  4495 + red.delete(); // wrapper
  4496 + green.delete(); // wrapper
  4497 + blue.delete(); // wrapper
  4498 +
  4499 + // root.delete();
  4500 +}
  4501 +
  4502 +function collectByName(collection) {
  4503 + var root = dali.stage.rootRotationActor;
  4504 + if (collection === undefined) {
  4505 + collection = {};
  4506 + }
  4507 + var op = function(actor) {
  4508 + if (actor.name) {
  4509 + collection[actor.name] = actor;
  4510 + }
  4511 + return true;
  4512 + };
  4513 +
  4514 + dali.debug.depthVisit(root, op, true);
  4515 +
  4516 + return collection;
  4517 +}
  4518 +
  4519 +
  4520 +function first() {
  4521 + return dali.stage.getRenderTaskList().getTask(0);
  4522 +}
  4523 +
  4524 +function second() {
  4525 + return dali.stage.getRenderTaskList().getTask(1);
  4526 +}
  4527 +
  4528 +function third() {
  4529 + return dali.stage.getRenderTaskList().getTask(2);
  4530 +}
  4531 +
  4532 +function firstCamera() {
  4533 + return dali.stage.getRenderTaskList().getTask(0).getCameraActor();
  4534 +}
  4535 +
  4536 +function secondCamera() {
  4537 + return dali.stage.getRenderTaskList().getTask(1).getCameraActor();
  4538 +}
  4539 +
  4540 +function thirdCamera() {
  4541 + return dali.stage.getRenderTaskList().getTask(2).getCameraActor();
  4542 +}
  4543 +
  4544 +function resize(w, h) {
  4545 + dali.setCanvasSize(w, h);
  4546 +}
  4547 +
  4548 +function compareProperties(a1, a2) {
  4549 + var props1 = a1.getProperties();
  4550 + var props2 = a2.getProperties();
  4551 + var props = new Set();
  4552 + for (var i = 0, len = props1.size(); i < len; i++) {
  4553 + props.add(props1.get(i));
  4554 + }
  4555 +
  4556 + for (i = 0, len = props2.size(); i < len; i++) {
  4557 + var n = props2.get(i);
  4558 + if (!props.has(n)) {
  4559 + console.log("A1 missing :" + n);
  4560 + }
  4561 + }
  4562 +
  4563 + var doit = function(item) {
  4564 + var v1 = a1[item]; // a1.getProperty(item);
  4565 + var v2 = a2[item]; // a2.getProperty(item);
  4566 +
  4567 + var isSame;
  4568 +
  4569 + if (Array.isArray(v1)) {
  4570 + isSame = (v1.length === v2.length) && v1.every(function(element, index) {
  4571 + return element === v2[index];
  4572 + });
  4573 + } else {
  4574 + isSame = v1 === v2;
  4575 + }
  4576 +
  4577 + if (!isSame) {
  4578 + console.log(item + ": A1= " + v1 + " A2= " + v2);
  4579 + }
  4580 + };
  4581 +
  4582 + props.forEach(doit);
  4583 +}
  4584 +
  4585 +var EPSILON = 0.005;
  4586 +
  4587 +function compareArrays(a, b) {
  4588 + "use strict";
  4589 + if (Array.isArray(a) && Array.isArray(b)) {
  4590 + if (a.length === b.length) {
  4591 + for (var i = 0, len = a.length; i < len; i++) {
  4592 + if (Array.isArray(a[i])) {
  4593 + if (Array.isArray(b[i])) {
  4594 + if (!compareArrays(a[i], b[i])) {
  4595 + return false;
  4596 + }
  4597 + } else {
  4598 + return false;
  4599 + }
  4600 + } else {
  4601 + if (typeof (a[i]) === "number") {
  4602 + if (typeof (b[i]) !== "number") {
  4603 + return false;
  4604 + } else {
  4605 + if (Math.abs(a[i]) > Math.abs(b[i]) + EPSILON ||
  4606 + Math.abs(a[i]) < Math.abs(b[i]) - EPSILON) {
  4607 + return false;
  4608 + }
  4609 + }
  4610 + } else {
  4611 + if (a[i] !== b[i]) {
  4612 + return false;
  4613 + }
  4614 + }
  4615 + }
  4616 + }
  4617 + return true;
  4618 + }
  4619 + }
  4620 + return false;
  4621 +}
  4622 +
  4623 +function countAllProperties() {
  4624 + var count = 0;
  4625 + var tr = new dali.TypeRegistry();
  4626 + var names = tr.getTypeNames();
  4627 + for (var i = 0, len = names.size(); i < len; i++) {
  4628 + var ti = tr.getTypeInfo(names.get(i));
  4629 + var props = ti.getProperties();
  4630 + count += props.size();
  4631 + }
  4632 + return count;
  4633 +}
  4634 +
  4635 +function native2ascii(str) {
  4636 + "use strict";
  4637 + // really this function allows only GLSL permittable chars
  4638 + var out = "";
  4639 + for (var i = 0; i < str.length; i++) {
  4640 + if ( 0x20 <= str.charCodeAt(i) && str.charCodeAt(i) <= 0x7E) {
  4641 + // normal characters
  4642 + out += str.charAt(i);
  4643 + } else if( 0x9 <= str.charCodeAt(i) && str.charCodeAt(i) <= 0xD) {
  4644 + // new lines and tabs
  4645 + out += str.charAt(i);
  4646 + }
  4647 + }
  4648 + return out;
  4649 +}
  4650 +
  4651 +
  4652 +var getGL = function() {
  4653 + return canvas.getContext("webgl");
  4654 +};
  4655 +
  4656 +var getAnimation = function() {
  4657 + "use strict";
  4658 + return animationList[animationSelectionIndex].animation;
  4659 +};
  4660 +
  4661 +var getActor = function() {
  4662 + "use strict";
  4663 + return eventHandler.touchedActor;
  4664 +};
  4665 +
  4666 +
  4667 +//------------------------------------------------------------------------------
  4668 +// Unit test class
  4669 +//------------------------------------------------------------------------------
  4670 +function Test() {
  4671 + "use strict";
  4672 +}
  4673 +
  4674 +Test.prototype.hierarchy = function() {
  4675 + "use strict";
  4676 + console.log("test_hierarchy...");
  4677 +
  4678 + // function onTouched(actor) {
  4679 + // // console.log("touched " + actor.$$.ptr + " " + actor.position);
  4680 + // eventHandler.onTouched(actor);
  4681 + // }
  4682 +
  4683 + var actor = new dali.Actor();
  4684 + actor.parentOrigin = [0.5, 0.5, 0.5];
  4685 + actor.anchorPoint = [0.5, 0.5, 0.5];
  4686 + actor.text = "actor";
  4687 + actor.name = actor.text;
  4688 + actor.size = [100, 100, 1];
  4689 + actor.position = [0, 0, 10];
  4690 + dali.stage.add(actor);
  4691 +
  4692 + var hello = new dali.Actor();
  4693 + // hello.connect("touched", onTouched);
  4694 + hello.text = "hello";
  4695 + hello.name = hello.text;
  4696 + actor.add(hello);
  4697 +
  4698 + var hellochild = new dali.Actor();
  4699 + // hellochild.connect("touched", onTouched);
  4700 + hellochild.text = "hello-child";
  4701 + hellochild.name = hellochild.text;
  4702 + hello.add(hellochild);
  4703 +
  4704 + var hellochild2 = new dali.Actor();
  4705 + // hellochild2.connect("touched", onTouched);
  4706 + hellochild2.text = "hello-child2";
  4707 + hellochild2.name = hellochild2.text;
  4708 + hello.add(hellochild2);
  4709 +
  4710 + var hellochildchild = new dali.Actor();
  4711 + // hellochildchild.connect("touched", onTouched);
  4712 + hellochildchild.text = "hello-child-child1";
  4713 + hellochildchild.name = "hello-child-child1";
  4714 + hellochildchild.name = hellochildchild.text;
  4715 + hellochild.add(hellochildchild);
  4716 +
  4717 +
  4718 + var depthfirst = actor.findAllChildren();
  4719 +
  4720 + assert(actor.getChildCount() === 1);
  4721 + // assert(actor.getChildAt(0).text === "hello");
  4722 + // assert(actor.findChildByName("hello-child-child1").text = "hello-child-child1");
  4723 + // assert(hello.getParent().text === "actor");
  4724 + // assert(depthfirst[depthfirst.length - 1].text === "hello-child2");
  4725 +
  4726 + var directChildren = actor.directChildren();
  4727 +
  4728 + assert(directChildren.length === 1);
  4729 + assert(directChildren[0].getId() === hello.getId());
  4730 +
  4731 + actor.position = [100, 100, 0];
  4732 +
  4733 + var root = dali.stage.rootRotationActor;
  4734 +
  4735 + actor.remove(hello);
  4736 + assert(actor.getChildCount() === 0);
  4737 +
  4738 + actor.add(hello);
  4739 + assert(actor.getChildCount() === 1);
  4740 +
  4741 + var rootLayerCount = root.getChildCount();
  4742 + dali.stage.remove(actor); // check these don't assert
  4743 + assert(root.getChildCount() === rootLayerCount - 1);
  4744 +
  4745 + dali.stage.add(actor);
  4746 + assert(root.getChildCount() === rootLayerCount);
  4747 +
  4748 + assert(root.findChildByName("none") === null);
  4749 +
  4750 + // actor.connect("touched", onTouched);
  4751 +
  4752 + // var inserted = new dali.TextActor(); // TextActor no more RIP
  4753 + // inserted.parentOrigin = [0.5, 0.5, 0.5];
  4754 + // inserted.anchorPoint = [0.5, 0.5, 0.5];
  4755 + // inserted.text = "inserted";
  4756 + // inserted.name = inserted.text;
  4757 + // inserted.size = [100, 100, 1];
  4758 + // inserted.position = [0, 0, 50];
  4759 + // actor.insert(1, inserted);
  4760 + // assert(actor.getChildAt(1).text === "inserted");
  4761 +
  4762 + clear();
  4763 + console.log(" -> ok test_hierarchy");
  4764 +};
  4765 +
  4766 +Test.prototype.registerProperty = function() {
  4767 + "use strict";
  4768 + console.log("test_registerPropery...");
  4769 + var s = dali.stage;
  4770 + var root = s.rootRotationActor;
  4771 +
  4772 + var another = new dali.Actor();
  4773 + another.parentOrigin = [0.5, 0.5, 0.5];
  4774 + another.anchorPoint = [0.5, 0.5, 0.5];
  4775 + another.text = "peppa";
  4776 + another.name = another.text;
  4777 + another.size = [100, 100, 1];
  4778 + another.position = [-50, 100, 0];
  4779 + root.add(another);
  4780 +
  4781 + var c = root.getChildAt(root.getChildCount() - 1);
  4782 + //var n = c.getChildCount();
  4783 + var p = c.getParent();
  4784 + assert(p.getId() == root.getId());
  4785 +
  4786 + var matrix = c.worldMatrix;
  4787 +
  4788 + assert(matrix.length === 16);
  4789 +
  4790 + // todo - no longer supported (?)
  4791 + // another.registerProperty("data_output", true);
  4792 + // assert(another.getPropertyTypeFromName("data_output") === "BOOLEAN");
  4793 + // assert(another.data_output === true);
  4794 + // another.data_output = false;
  4795 + // assert(another.data_output === false);
  4796 + // dali.__updateOnce();
  4797 + // another.data_output = 2.5;
  4798 + // assert(another.data_output === 2.5);
  4799 + // assert(another.getPropertyTypeFromName("data_output") === "FLOAT");
  4800 +
  4801 + clear();
  4802 + console.log(" -> ok test_registerPropery");
  4803 +};
  4804 +
  4805 +Test.prototype.js_math = function() {
  4806 + console.log("test_js_math...");
  4807 + assert(dali.vectorLength([1, 2, 3, 4]) === Math.sqrt(1 * 1 + 2 * 2 + 3 * 3));
  4808 + assert(dali.vectorLengthSquared(dali.normalize([0, 0, 0, 1])) === 0);
  4809 +
  4810 + // for(var f=0; f < 6; f+=1)
  4811 + // {
  4812 + var f = 2;
  4813 + assert(1 === dali.vectorLengthSquared(dali.normalize([Math.cos(f) * 10.0,
  4814 + Math.cos(f + 1.0) * 10.0,
  4815 + Math.cos(f + 2.0) * 10.0,
  4816 + 1.0
  4817 + ])));
  4818 +
  4819 + function assertArray(a, b, epsilon) {
  4820 + assert(a.length === b.length);
  4821 + for (var i = 0, len = a.length; i < len; ++i) {
  4822 + assert(a[i] > b[i] - epsilon && a[i] < b[i] + epsilon);
  4823 + }
  4824 + }
  4825 +
  4826 + assertArray(dali.axisAngleToQuaternion([1.0, 2.0, 3.0, Math.PI / 3.0, Math.PI / 2.0]), [0.189, 0.378, 0.567, 0.707], 0.001);
  4827 +
  4828 + assertArray(dali.quaternionToAxisAngle([1.1, 3.4, 2.7, 0.932]), [3.03, 9.38, 7.45, 0.74],
  4829 + 0.01);
  4830 +
  4831 + assertArray(dali.vectorCross([0, 1, 0], [0, 0, 1]), [1, 0, 0], 0.001);
  4832 +
  4833 + assertArray(dali.vectorAdd([1, 2, 3], [2, 3, 4], [1, 1, 1]), [4, 6, 8], 0.001);
  4834 +
  4835 + var mq = dali.vectorAdd(dali.vectorCross([0.045, 0.443, 0.432], [0.612, 0.344, -0.144]),
  4836 + dali.vectorByScalar([0.612, 0.344, -0.144], 0.784),
  4837 + dali.vectorByScalar([0.045, 0.443, 0.432], 0.697));
  4838 +
  4839 + assertArray(dali.quatByQuat([0.045, 0.443, 0.432, 0.784], [0.612, 0.344, -0.144, 0.697]), [mq[0], mq[1], mq[2], (0.784 * 0.697) - dali.vectorDot([0.045, 0.443, 0.432], [0.612, 0.344, -0.144])],
  4840 + 0.001);
  4841 +
  4842 + clear();
  4843 + console.log(" -> ok test_js_math");
  4844 +};
  4845 +
  4846 +Test.prototype.getset = function() {
  4847 + "use strict";
  4848 + console.log("test_getset...");
  4849 + threeSquares();
  4850 + var col = {};
  4851 + collectByName(col);
  4852 + var actor = col.red;
  4853 + var p = actor.position;
  4854 + actor.position = [1, 1, 1];
  4855 + assert(compareArrays(actor.position, [1, 1, 1]));
  4856 + actor.position = [3, 3, 3];
  4857 + assert(compareArrays(actor.position, [3, 3, 3]));
  4858 + actor.position = p;
  4859 +
  4860 + clear();
  4861 + console.log(" -> ok test_getset");
  4862 +};
  4863 +
  4864 +Test.prototype.animation_spline = function() {
  4865 + "use strict";
  4866 + console.log("test_animation_spline...");
  4867 + threeSquares();
  4868 + var col = {};
  4869 + collectByName(col);
  4870 + var actor = col.red;
  4871 +
  4872 + var a = new dali.Animation(0);
  4873 + var path = new dali.Path();
  4874 +
  4875 + path.points = [
  4876 + [-150, -50, 0],
  4877 + [0.0, 70.0, 0.0],
  4878 + [190.0, -150.0, 0.0]
  4879 + ];
  4880 +
  4881 + assert(compareArrays(path.points, [
  4882 + [-150, -50, 0],
  4883 + [0.0, 70.0, 0.0],
  4884 + [190.0, -150.0, 0.0]
  4885 + ]));
  4886 +
  4887 + dali.generateControlPoints(path, 0.35);
  4888 +
  4889 + assert(compareArrays(path.controlPoints, [
  4890 + [-97.5, -8, 0],
  4891 + [-66.94940948486328, 76.16658020019531, 0],
  4892 + [101.31224060058594, 60.66832733154297, 0],
  4893 + [123.5, -73, 0]
  4894 + ]));
  4895 +
  4896 + a.setDuration(3);
  4897 + a.animatePath(actor, path, [1, 0, 0], dali.AlphaFunction.LINEAR, 0, 3);
  4898 + a.play();
  4899 +
  4900 + function checkPos() {
  4901 + assert(actor.position = path.points[2]);
  4902 + clear();
  4903 + actor.delete();
  4904 + path.delete();
  4905 + a.delete();
  4906 + console.log(" -> ok test_animation_spline");
  4907 + }
  4908 +
  4909 + window.setTimeout(checkPos, 4000);
  4910 +};
  4911 +
  4912 +Test.prototype.animation = function() {
  4913 + "use strict";
  4914 + console.log("test_animation...");
  4915 + threeSquares();
  4916 + var col = {};
  4917 + collectByName(col);
  4918 + var actor = col.red;
  4919 +
  4920 + var a = new dali.Animation(0);
  4921 + a.setDuration(3);
  4922 + a.animateTo(actor, "position", [20, 0, 0], dali.AlphaFunction.LINEAR, 0, 3);
  4923 + a.play();
  4924 +
  4925 + function checkAnimateBetween() {
  4926 + assert(actor.position = [0, 0, -30]);
  4927 + clear();
  4928 + a.delete();
  4929 + actor.delete();
  4930 +
  4931 + console.log(" -> ok test_animation");
  4932 + }
  4933 +
  4934 + function checkAnimateBy() {
  4935 + assert(actor.position = [120, 100, 0]);
  4936 +
  4937 + a.clear();
  4938 + a.animateBetween(actor,
  4939 + "position", [ [ 0, [10,20,30] ],
  4940 + [ 1.0,[0, 0, -30] ] ],
  4941 + "linear",
  4942 + 0,
  4943 + 3,
  4944 + "linear");
  4945 + a.play();
  4946 + window.setTimeout(checkAnimateBetween, 4000);
  4947 + }
  4948 +
  4949 + function checkAnimateTo() {
  4950 + assert(actor.position = [20, 0, 0]);
  4951 + actor.position = [100, 100, 0];
  4952 +
  4953 + a.clear(); // var a = new dali.Animation(0);
  4954 + a.setDuration(3);
  4955 + a.animateBy(actor, "position", [20, 0, 0], dali.AlphaFunction.LINEAR, 0, 3);
  4956 + a.play();
  4957 +
  4958 + window.setTimeout(checkAnimateBy, 4000);
  4959 + }
  4960 +
  4961 + window.setTimeout(checkAnimateTo, 4000);
  4962 +};
  4963 +
  4964 +Test.prototype.onePane = function() {
  4965 + var w = dali.canvas.width;
  4966 + var h = dali.canvas.height;
  4967 + var col = dali.getClearColor(0);
  4968 + dali.onePane();
  4969 + dali.setFrontView(0, 0, 0, w, h);
  4970 + dali.setClearColor(0, col);
  4971 +};
  4972 +
  4973 +Test.prototype.threePane = function() {
  4974 + var w = dali.canvas.width;
  4975 + var h = dali.canvas.height;
  4976 + dali.threePane();
  4977 + dali.setClearColor(0, [0.4, 0, 0, 1]);
  4978 + dali.setClearColor(1, [0, 0.4, 0, 1]);
  4979 + dali.setClearColor(2, [0, 0, 0.4, 1]);
  4980 + dali.setFrontView(0, 0, 0, w / 2 - 5, h);
  4981 + dali.setTopView(1, w / 2, 0, w / 2, h / 2 - 5);
  4982 + dali.setRightView(2, w / 2, h / 2 + 5, w / 2, h / 2 - 5);
  4983 +};
  4984 +
  4985 +Test.prototype.twoPane = function() {
  4986 + var w = dali.canvas.width;
  4987 + var h = dali.canvas.height;
  4988 + dali.twoPane();
  4989 + dali.setFrontView(0, 0, 0, w / 2 - 10, h);
  4990 + dali.setTopView(1, 210, 0, w / 2 - 10, h);
  4991 + dali.setClearColor(0, [0.4, 0, 0, 1]);
  4992 + dali.setClearColor(1, [0, 0.4, 0, 1]);
  4993 +};
  4994 +
  4995 +Test.prototype.views = function() {
  4996 + "use strict";
  4997 + console.log("test_views");
  4998 +
  4999 + var w = dali.canvas.width;
  5000 + var h = dali.canvas.height;
  5001 + var col = dali.getClearColor(0);
  5002 + console.log(col);
  5003 +
  5004 + function one() {
  5005 + dali.onePane();
  5006 + dali.setFrontView(0, 0, 0, w, h);
  5007 + dali.setClearColor(0, col);
  5008 + }
  5009 +
  5010 + function three() {
  5011 + dali.threePane();
  5012 + dali.setClearColor(0, [0.4, 0, 0, 1]);
  5013 + dali.setClearColor(1, [0, 0.4, 0, 1]);
  5014 + dali.setClearColor(2, [0, 0, 0.4, 1]);
  5015 + dali.setFrontView(0, 0, 0, w / 2 - 5, h);
  5016 + dali.setTopView(1, w / 2, 0, w / 2, h / 2 - 5);
  5017 + dali.setRightView(2, w / 2, h / 2 + 5, w / 2, h / 2 - 5);
  5018 +
  5019 + window.setTimeout(one, 1000);
  5020 + }
  5021 +
  5022 + function two() {
  5023 + dali.twoPane();
  5024 + dali.setFrontView(0, 0, 0, w / 2 - 10, h);
  5025 + dali.setTopView(1, 210, 0, w / 2 - 10, h);
  5026 + dali.setClearColor(0, [0.4, 0, 0, 1]);
  5027 + dali.setClearColor(1, [0, 0.4, 0, 1]);
  5028 +
  5029 + window.setTimeout(three, 1000);
  5030 + }
  5031 +
  5032 + one();
  5033 +
  5034 + window.setTimeout(two, 1000);
  5035 +};
  5036 +
  5037 +Test.prototype.blinking = function() {
  5038 + "use strict";
  5039 + var layer = new dali.Layer();
  5040 + layer.name = "frameLayer";
  5041 + dali.stage.add(layer);
  5042 +
  5043 + var a = dali.createSolidColorActor([0.5, 0.5, 0.5, 1],
  5044 + false, [0, 0, 0, 1],
  5045 + 0);
  5046 + a.size = [100,100,1];
  5047 +
  5048 + layer.add(a);
  5049 +
  5050 + var camera = firstCamera();
  5051 +
  5052 + camera.position = [ camera.position[0]+10, camera.position[1]+20, camera.position[2] + 10 ];
  5053 +
  5054 + layer.delete(); // wrapper
  5055 + a.delete(); // wrapper
  5056 + camera.delete(); // wrapper
  5057 +};
  5058 +
  5059 +Test.prototype.uniformMetaData = function() {
  5060 + for(var i = 0; i < shaderSources.length; i++) {
  5061 + console.log(dali.uniformMetaData(shaderSources[i].vertex, shaderSources[i].fragment));
  5062 + }
  5063 +};
  5064 +
  5065 +Test.prototype.signals = function() {
  5066 + "use strict";
  5067 + console.log("test_signals...");
  5068 +
  5069 + function onStage() {
  5070 + console.log(" -> ok test signals");
  5071 + //eventHandler.onTouched(actor);
  5072 + }
  5073 +
  5074 + var actor = new dali.Actor();
  5075 + actor.parentOrigin = [0.5, 0.5, 0.5];
  5076 + actor.anchorPoint = [0.5, 0.5, 0.5];
  5077 + actor.text = "actor";
  5078 + actor.name = actor.text;
  5079 + actor.size = [100, 100, 1];
  5080 + actor.position = [0, 0, 10];
  5081 +
  5082 + actor.connect("on-stage", onStage);
  5083 +
  5084 + dali.stage.add(actor);
  5085 +};
  5086 +
  5087 +Test.prototype.shaderInfo = function() {
  5088 + "use strict";
  5089 + var info = new dali.ShaderInfo();
  5090 +
  5091 + var vertex;
  5092 + var fragment;
  5093 +
  5094 + vertex = "\n" +
  5095 + "attribute mediump vec3 aPosition;\n" +
  5096 + "attribute mediump vec2 aTexCoord;\n" +
  5097 + "varying mediump vec2 vTexCoord;\n" +
  5098 + "uniform mediump vec3 uSize;\n" +
  5099 + "// uniform mediump vec3 unusedUniform;\n" +
  5100 + "uniform mediump mat4 uModelView;\n" +
  5101 + "uniform mediump mat4 uProjection;\n" +
  5102 + "\n" +
  5103 + "void main(void)\n" +
  5104 + "{\n" +
  5105 + " gl_Position = uProjection * uModelView * vec4(aPosition, 1.0);\n" +
  5106 + " gl_Position.xyz *= uSize;\n" +
  5107 + " vTexCoord = aTexCoord;\n" +
  5108 + "}\n";
  5109 +
  5110 + fragment = "precision mediump float;\n" +
  5111 + "\n" +
  5112 + "uniform sampler2D sTexture;\n" +
  5113 + "uniform mediump vec4 uMyColor; // {min:[0,0,0,0], max:[1,1,1,1]}\n" +
  5114 + "uniform mediump vec4 uColor;\n" +
  5115 + "varying mediump vec2 vTexCoord;\n" +
  5116 + "\n" +
  5117 + "void main()\n" +
  5118 + "{\n" +
  5119 + " gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * uMyColor;\n" +
  5120 + "}\n";
  5121 +
  5122 + var canvas = document.createElement("canvas");
  5123 + var meta = info.fromCompilation(canvas.getContext("webgl"), vertex, fragment);
  5124 +
  5125 + var uniforms = { uSize: 1,
  5126 + uModelView: 1,
  5127 + uProjection: 1,
  5128 + uMyColor: 1,
  5129 + uColor: 1
  5130 + };
  5131 +
  5132 + assert(meta.hasError === false);
  5133 + var name;
  5134 + var metaUniformName;
  5135 + var found;
  5136 +
  5137 + for(name in uniforms) {
  5138 + found = false;
  5139 + for(metaUniformName in meta.uniforms) {
  5140 + if(metaUniformName === name) {
  5141 + found = true;
  5142 + break;
  5143 + }
  5144 + }
  5145 + assert(found, "missing:" + name);
  5146 + }
  5147 +
  5148 + assert(compareArrays(meta.uniformUISpec.uMyColor.min, [0, 0, 0, 0]));
  5149 + assert(compareArrays(meta.uniformUISpec.uMyColor.max, [1, 1, 1, 1]));
  5150 +
  5151 +
  5152 + meta = info.fromRegEx(vertex, fragment);
  5153 +
  5154 + assert(meta.hasError === false);
  5155 +
  5156 + for(name in uniforms) {
  5157 + found = false;
  5158 + for(metaUniformName in meta.uniforms) {
  5159 + if(metaUniformName === name) {
  5160 + found = true;
  5161 + break;
  5162 + }
  5163 + }
  5164 + assert(found, "missing:" + name);
  5165 + }
  5166 +
  5167 + assert(compareArrays(meta.uniformUISpec.uMyColor.min, [0, 0, 0, 0]));
  5168 + assert(compareArrays(meta.uniformUISpec.uMyColor.max, [1, 1, 1, 1]));
  5169 +
  5170 + console.log(" -> ok test shaderInfo");
  5171 +};
  5172 +
  5173 +//------------------------------------------------------------------------------
  5174 +// regression test
  5175 +//------------------------------------------------------------------------------
  5176 +
  5177 +Test.prototype.regression = function() {
  5178 + "use strict";
  5179 + this.hierarchy();
  5180 + this.registerProperty();
  5181 + this.js_math();
  5182 + this.getset();
  5183 + this.animation();
  5184 + this.animation_spline();
  5185 + // this.shadereffect1();
  5186 + this.views();
  5187 + this.signals();
  5188 + this.shaderInfo();
  5189 +};
  5190 +
  5191 +Test.prototype.remote_execution = function() {
  5192 + "use strict";
  5193 + this.regression();
  5194 +};
  5195 +
  5196 +Test.prototype.stacking = function() {
  5197 + "use strict";
  5198 +
  5199 + eventHandler.selectActor( dali.stage.rootRotationActor );
  5200 +
  5201 + var a = dali.createSolidColorActor([1.0, 0.0, 0.0, 1.0],
  5202 + false, [0, 0, 0, 1],
  5203 + 0);
  5204 + app.addActor(a);
  5205 +
  5206 + eventHandler.selectActor( a );
  5207 +
  5208 + var b = dali.createSolidColorActor([0.0, 0.0, 1.0, 1.0],
  5209 + false, [0, 0, 0, 1],
  5210 + 0);
  5211 + app.addActor(b);
  5212 +
  5213 + a.sizeWidth = a.sizeHeight = 100;
  5214 + b.sizeWidth = b.sizeHeight = 50;
  5215 +
  5216 + b.sizeWidth = 150;
  5217 +
  5218 + return [a, b];
  5219 +};
  5220 +
  5221 +
  5222 +var runTest = function(functionName) {
  5223 + "use strict";
  5224 +
  5225 + clear();
  5226 +
  5227 + dali.stage.setBackgroundColor([0.3, 0.3, 0.3, 1]);
  5228 +
  5229 + var test = dali[functionName]();
  5230 +
  5231 + if( test )
  5232 + {
  5233 + if( !test.complete() )
  5234 + {
  5235 + function check() {
  5236 + if( !test.complete() ) {
  5237 + window.setTimeout(checkPos, 500);
  5238 + } else {
  5239 + console.log("test success");
  5240 + }
  5241 + }
  5242 + }
  5243 + }
  5244 +
  5245 +};
  5246 +
  5247 +//------------------------------------------------------------------------------
  5248 +// scratch
  5249 +//------------------------------------------------------------------------------
  5250 +function animateShaderEffect2(actor) {
  5251 + "use strict";
  5252 + var shader = new dali.ShaderEffect({
  5253 + vertex: shaderSource2.vertex,
  5254 + fragment: shaderSource2.fragment
  5255 + });
  5256 +
  5257 + actor.setShaderEffect(shader);
  5258 +
  5259 + var final = [5, 5, 5, 1];
  5260 +
  5261 + var a = new dali.Animation(0);
  5262 + a.setDuration(3);
  5263 + a.setLooping(true);
  5264 + a.animateTo(shader, "weight", final, dali.AlphaFunction.LINEAR, 0, 3);
  5265 +
  5266 + a.play();
  5267 +
  5268 + a.delete();
  5269 +
  5270 +}
  5271 +
  5272 +
  5273 +var testfile = { // output from clara.io "Threejs scene output"
  5274 + "metadata": {
  5275 + "version": 4.3, // This isnt as its documented on threejs website
  5276 + "type": "Object", // and the general format looks more like format V3.
  5277 + "generator": "ObjectExporter"
  5278 + },
  5279 + "geometries": [{
  5280 + "uuid": "2f167add-e571-47c2-9da2-6f0e45cc1119",
  5281 + "type": "Geometry",
  5282 + "data": {
  5283 + "vertices": [
  5284 + 0.5,
  5285 + 0.5,
  5286 + 0.5,
  5287 + 0.5,
  5288 + 0.5, -0.5,
  5289 + 0.5, -0.5,
  5290 + 0.5,
  5291 + 0.5, -0.5, -0.5, -0.5,
  5292 + 0.5, -0.5, -0.5,
  5293 + 0.5,
  5294 + 0.5, -0.5, -0.5, -0.5, -0.5, -0.5,
  5295 + 0.5
  5296 + ],
  5297 + "normals": [
  5298 + 1,
  5299 + 0,
  5300 + 0, -1,
  5301 + 0,
  5302 + 0,
  5303 + 0,
  5304 + 1,
  5305 + 0,
  5306 + 0, -1,
  5307 + 0,
  5308 + 0,
  5309 + 0,
  5310 + 1,
  5311 + 0,
  5312 + 0, -1
  5313 + ],
  5314 + "uvs": [
  5315 + [
  5316 + 0,
  5317 + 1,
  5318 + 0,
  5319 + 0,
  5320 + 1,
  5321 + 0,
  5322 + 1,
  5323 + 1
  5324 + ]
  5325 + ],
  5326 + "faces": [
  5327 + 56,
  5328 +
  5329 + 0,
  5330 + 2,
  5331 + 3,
  5332 +
  5333 + 0,
  5334 + 1,
  5335 + 2,
  5336 +
  5337 + 0,
  5338 + 0,
  5339 + 0,
  5340 +
  5341 + 0,
  5342 +
  5343 + 56,
  5344 + 0,
  5345 + 3,
  5346 + 1,
  5347 + 0,
  5348 + 2,
  5349 + 3,
  5350 + 0,
  5351 + 0,
  5352 + 0,
  5353 + 0,
  5354 + 56,
  5355 + 4,
  5356 + 6,
  5357 + 7,
  5358 + 0,
  5359 + 1,
  5360 + 2,
  5361 + 1,
  5362 + 1,
  5363 + 1,
  5364 + 1,
  5365 + 56,
  5366 + 4,
  5367 + 7,
  5368 + 5,
  5369 + 0,
  5370 + 2,
  5371 + 3,
  5372 + 1,
  5373 + 1,
  5374 + 1,
  5375 + 1,
  5376 + 56,
  5377 + 4,
  5378 + 5,
  5379 + 0,
  5380 + 0,
  5381 + 1,
  5382 + 2,
  5383 + 2,
  5384 + 2,
  5385 + 2,
  5386 + 2,
  5387 + 56,
  5388 + 4,
  5389 + 0,
  5390 + 1,
  5391 + 0,
  5392 + 2,
  5393 + 3,
  5394 + 2,
  5395 + 2,
  5396 + 2,
  5397 + 2,
  5398 + 56,
  5399 + 7,
  5400 + 6,
  5401 + 3,
  5402 + 0,
  5403 + 1,
  5404 + 2,
  5405 + 3,
  5406 + 3,
  5407 + 3,
  5408 + 3,
  5409 + 56,
  5410 + 7,
  5411 + 3,
  5412 + 2,
  5413 + 0,
  5414 + 2,
  5415 + 3,
  5416 + 3,
  5417 + 3,
  5418 + 3,
  5419 + 3,
  5420 + 56,
  5421 + 5,
  5422 + 7,
  5423 + 2,
  5424 + 0,
  5425 + 1,
  5426 + 2,
  5427 + 4,
  5428 + 4,
  5429 + 4,
  5430 + 4,
  5431 + 56,
  5432 + 5,
  5433 + 2,
  5434 + 0,
  5435 + 0,
  5436 + 2,
  5437 + 3,
  5438 + 4,
  5439 + 4,
  5440 + 4,
  5441 + 4,
  5442 + 56,
  5443 + 1,
  5444 + 3,
  5445 + 6,
  5446 + 0,
  5447 + 1,
  5448 + 2,
  5449 + 5,
  5450 + 5,
  5451 + 5,
  5452 + 5,
  5453 + 56,
  5454 + 1,
  5455 + 6,
  5456 + 4,
  5457 + 0,
  5458 + 2,
  5459 + 3,
  5460 + 5,
  5461 + 5,
  5462 + 5,
  5463 + 5
  5464 + ]
  5465 + }
  5466 + }],
  5467 + "materials": [{
  5468 + "uuid": "14D499F1-27EF-45BF-A457-FD24DAB11205",
  5469 + "type": "MeshPhongMaterial",
  5470 + "color": 11579568,
  5471 + "ambient": 11579568,
  5472 + "emissive": 0,
  5473 + "specular": 0,
  5474 + "shininess": 50,
  5475 + "opacity": 1,
  5476 + "transparent": false,
  5477 + "wireframe": false
  5478 + }],
  5479 + "object": {
  5480 + "uuid": "BFEFB48D-0E6E-46A6-8568-5E258BA17078",
  5481 + "type": "Scene",
  5482 + "matrix": [
  5483 + 1,
  5484 + 0,
  5485 + 0,
  5486 + 0,
  5487 + 0,
  5488 + 1,
  5489 + 0,
  5490 + 0,
  5491 + 0,
  5492 + 0,
  5493 + 1,
  5494 + 0,
  5495 + 0,
  5496 + 0,
  5497 + 0,
  5498 + 1
  5499 + ],
  5500 + "children": [{
  5501 + "uuid": "aa901bec-9e47-4b3b-bf3c-4efb0fe5d298",
  5502 + "name": "Box",
  5503 + "type": "Mesh",
  5504 + "geometry": "2f167add-e571-47c2-9da2-6f0e45cc1119",
  5505 + "material": "14D499F1-27EF-45BF-A457-FD24DAB11205",
  5506 + "castShadow": true,
  5507 + "receiveShadow": true,
  5508 + "matrix": [
  5509 + 1,
  5510 + 0,
  5511 + 0,
  5512 + 0,
  5513 + 0,
  5514 + 1,
  5515 + 0,
  5516 + 0,
  5517 + 0,
  5518 + 0,
  5519 + 1,
  5520 + 0,
  5521 + 0,
  5522 + 0,
  5523 + 0,
  5524 + 1
  5525 + ]
  5526 + }]
  5527 + }
  5528 +};
  5529 +
  5530 +
  5531 +
  5532 +//
  5533 +//
  5534 +// Event/widget setup
  5535 +//
  5536 +//
  5537 +
  5538 +//------------------------------------------------------------------------------
  5539 +//
  5540 +// Helper functions
  5541 +//
  5542 +//------------------------------------------------------------------------------
  5543 +function rebuildDropdown(dropdownElement, db, dbStoreName, optionalItemDataFunc) {
  5544 + "use strict";
  5545 + removeAllChildren(dropdownElement);
  5546 +
  5547 + var func = optionalItemDataFunc;
  5548 + if( !func ) {
  5549 + func = function(name) {
  5550 + return [null, name];
  5551 + };
  5552 + }
  5553 +
  5554 + var li;
  5555 + var a;
  5556 + var names = db.getKeys(dbStoreName);
  5557 +
  5558 + for(var i = 0; i < names.length; i++) {
  5559 + li = document.createElement("li");
  5560 + var hrefText = func(names[i]);
  5561 + if( hrefText[0] ) {
  5562 + a = document.createElement("a");
  5563 + a.href = hrefText[0];
  5564 + a.text = hrefText[1];
  5565 + } else {
  5566 + a = document.createElement("p");
  5567 + a.textContent = hrefText[1];
  5568 + }
  5569 + li.appendChild(a);
  5570 + dropdownElement.appendChild(li);
  5571 + }
  5572 +}
  5573 +
  5574 +
  5575 +//------------------------------------------------------------------------------
  5576 +//
  5577 +// UI General
  5578 +//
  5579 +//------------------------------------------------------------------------------
  5580 +function UIApp() {
  5581 + "use strict";
  5582 + var self = this;
  5583 +
  5584 + self.modalQuestionYesFunction = null;
  5585 + self.modalQuestionNoFunction = null;
  5586 +
  5587 + var _modalQuestionYes = function() {
  5588 + if(self.modalQuestionYesFunction) {
  5589 + self.modalQuestionYesFunction();
  5590 + }
  5591 + self.modalQuestionYesFunction = null;
  5592 + self.modalQuestionNoFunction = null;
  5593 + };
  5594 +
  5595 + var _modalQuestionNo = function() {
  5596 + if(self.modalQuestionNo) {
  5597 + self.modalQuestionNo();
  5598 + }
  5599 + self.modalQuestionYesFunction = null;
  5600 + self.modalQuestionNoFunction = null;
  5601 + };
  5602 +
  5603 + var _modalInputOk = function() {
  5604 + if(self.modalInputOkFunction) {
  5605 + var input = $("#modalInputText")[0];
  5606 + self.modalInputOkFunction(input.value);
  5607 + }
  5608 + self.modalInputOkFunction = null;
  5609 + self.modalInputCancelFunction = null;
  5610 + };
  5611 +
  5612 + var _modalInputCancel = function() {
  5613 + if(self.modalInputCancel) {
  5614 + self.modalInputCancel();
  5615 + }
  5616 + self.modalInputOkFunction = null;
  5617 + self.modalInputCancelFunction = null;
  5618 + };
  5619 +
  5620 + $("#modalQuestionYes")[0].addEventListener("click", _modalQuestionYes);
  5621 + $("#modalQuestionNo")[0].addEventListener("click", _modalQuestionNo);
  5622 +
  5623 + self.modalInputYesFunction = null;
  5624 + self.modalInputNoFunction = null;
  5625 +
  5626 + $("#modalInputOk")[0].addEventListener("click", _modalInputOk);
  5627 + $("#modalInputCancel")[0].addEventListener("click", _modalInputCancel);
  5628 +
  5629 +}
  5630 +
  5631 +UIApp.prototype.messageBoxHTML = function(innerHtmlText) {
  5632 + "use strict";
  5633 + var modalBody = $("#modalCodeInfoBody")[0];
  5634 + removeAllChildren(modalBody);
  5635 + modalBody.innerHTML = innerHtmlText;
  5636 + $("#modalCodeInfo").modal("show");
  5637 +};
  5638 +
  5639 +UIApp.prototype.messageBox = function(message) {
  5640 + "use strict";
  5641 + this.messageBoxHTML("<p>" + message + "</p>");
  5642 +};
  5643 +
  5644 +UIApp.prototype.questionBox = function(message, yesFunction, noFunction) {
  5645 + "use strict";
  5646 + var modalBody = $("#modalQuestionBody")[0];
  5647 + removeAllChildren(modalBody);
  5648 + modalBody.innerHTML = "<p>" + message + "</p>";
  5649 +
  5650 + this.modalQuestionYesFunction = yesFunction;
  5651 + this.modalQuestionNoFunction = noFunction;
  5652 +
  5653 + $("#modalQuestion").modal("show");
  5654 +};
  5655 +
  5656 +UIApp.prototype.codeInformationBox = function(code) {
  5657 + "use strict";
  5658 + var modalBody = $("#modalCodeInfoBody")[0];
  5659 + removeAllChildren(modalBody);
  5660 + modalBody.innerHTML = "<pre>" + code + "</pre>";
  5661 + $("#modalCodeInfo").modal("show");
  5662 +};
  5663 +
  5664 +UIApp.prototype.inputbox = function(message, okFunction, cancelFunction) {
  5665 + "use strict";
  5666 + var modalBody = $("#modalInputBody")[0];
  5667 + removeAllChildren(modalBody);
  5668 + modalBody.innerHTML = "<p>" + message + "</p>";
  5669 +
  5670 + this.modalInputOkFunction = okFunction;
  5671 + this.modalInputCancelFunction = cancelFunction;
  5672 +
  5673 + $("#modalInput").modal("show");
  5674 +};
  5675 +
  5676 +UIApp.prototype.getTypedBuffer = function(file, callback) {
  5677 + "use strict";
  5678 + if (!file) {
  5679 + return;
  5680 + }
  5681 + var reader = new FileReader();
  5682 + reader._theFilename = file.name;
  5683 + reader.onload = function(// e
  5684 + ) {
  5685 + var uint8View = new Uint8Array(reader.result); // convert ArrayBuffer into a typed array?
  5686 + callback(file.name, uint8View);
  5687 + };
  5688 +
  5689 + reader.readAsArrayBuffer(file);
  5690 +};
  5691 +
  5692 +
  5693 +//------------------------------------------------------------------------------
  5694 +//
  5695 +// Javascript UI Tab
  5696 +//
  5697 +//------------------------------------------------------------------------------
  5698 +function UIJavascriptTab() {
  5699 + "use strict";
  5700 + var self = this;
  5701 + self.bufferPrepend = "Buffer Name:";
  5702 +
  5703 + this.addNewBuffer = function() {
  5704 + var alreadyExists = function() {
  5705 + self.addNewBuffer();
  5706 + };
  5707 +
  5708 + var inputOk = function(name) {
  5709 + var data = database.readJavascript(name);
  5710 + if(data) {
  5711 + uiApp.messageBox("Name already exsists", alreadyExists);
  5712 + } else {
  5713 + var newData = {name: name, source: ""};
  5714 + database.writeJavascript(newData);
  5715 + self.rebuildDropdown(database);
  5716 + }
  5717 + };
  5718 +
  5719 + uiApp.inputbox("BufferName?", inputOk);
  5720 +
  5721 + };
  5722 +
  5723 + this.renameBuffer = function() {
  5724 + var writeOK = function() {
  5725 + var openRequest = database.open();
  5726 +
  5727 + openRequest.onsuccess = function(event) {
  5728 + var db = event.target.result;
  5729 + self.rebuildDropdown(database);
  5730 + db.close();
  5731 + };
  5732 + };
  5733 +
  5734 + var inputOk = function(name) {
  5735 + var data = uiJavascriptTab.getData();
  5736 + data.name = name;
  5737 + database.writeJavascript(data, writeOK);
  5738 + };
  5739 +
  5740 + uiApp.inputbox("BufferName?", inputOk);
  5741 +
  5742 + };
  5743 +
  5744 + this.loadJavascript = function(name) {
  5745 + var data = database.readJavascript(name);
  5746 +
  5747 + // save current
  5748 + var currentData = self.getData();
  5749 + if(currentData) {
  5750 + database.writeJavascript(currentData);
  5751 + }
  5752 +
  5753 + self.setData(data);
  5754 + };
  5755 +
  5756 + ace.require("ace/ext/language_tools");
  5757 + var editor = ace.edit("editorJavascript");
  5758 +
  5759 + var _thisFunctions = [];
  5760 + for(var attr in this) {
  5761 + if( !(attr.startsWith("_") || attr.startsWith("dynCall") || attr.startsWith("invoke") ) ) {
  5762 + if( typeof this[attr] === "function") {
  5763 + _thisFunctions.push( attr );
  5764 + }
  5765 + }
  5766 + }
  5767 +
  5768 + var myCompleter = {
  5769 + getCompletions: function(theEditor, session, pos, prefix, callback) {
  5770 + var wordlist = [];
  5771 + if(prefix === "dali.") {
  5772 + for(attr in dali) {
  5773 + if( !(attr.startsWith("_") || attr.startsWith("dynCall") || attr.startsWith("invoke") ) ) {
  5774 + if( typeof dali[attr] === "function") {
  5775 + wordlist.push( attr );
  5776 + }
  5777 + }
  5778 + }
  5779 + } else {
  5780 + wordlist = _thisFunctions;
  5781 + }
  5782 + callback(null, wordlist.map(function(word) {
  5783 + return {
  5784 + caption: word,
  5785 + value: word,
  5786 + meta: "static"
  5787 + };
  5788 + }));
  5789 + }
  5790 + };
  5791 +
  5792 + editor.completers = [ myCompleter ];
  5793 +
  5794 + editor.setOptions({
  5795 + enableBasicAutocompletion: true,
  5796 + enableSnippets: true,
  5797 + enableLiveAutocompletion: true
  5798 + });
  5799 +
  5800 + document.getElementById("btnJavascriptSourceJson").addEventListener(
  5801 + "click",
  5802 + function(/*e*/) {
  5803 + self.showModalJSON();
  5804 + });
  5805 +
  5806 + document.getElementById("btnJavascriptClearRun").addEventListener(
  5807 + "click",
  5808 + function(/*e*/) {
  5809 + self.clearStageAndEval();
  5810 + });
  5811 +
  5812 + document.getElementById("btnJavascriptRun").addEventListener(
  5813 + "click",
  5814 + function(/*e*/) {
  5815 + self.eval();
  5816 + });
  5817 +
  5818 + document.getElementById("btnJavascriptAddBuffer").addEventListener(
  5819 + "click",
  5820 + function(/*e*/) {
  5821 + self.addNewBuffer();
  5822 + });
  5823 +
  5824 + document.getElementById("btnJavascriptRenameBuffer").addEventListener(
  5825 + "click",
  5826 + function(/*e*/) {
  5827 + self.renameBuffer();
  5828 + });
  5829 +
  5830 + this.currentName = undefined;
  5831 +
  5832 + var names = database.readJavascriptNames();
  5833 + if(names.length) {
  5834 + self.loadJavascript(names[0]); // load first javascript buffer
  5835 + }
  5836 +
  5837 +}
  5838 +
  5839 +UIJavascriptTab.prototype.getData = function() {
  5840 + "use strict";
  5841 + var e = ace.edit("editorJavascript");
  5842 + var ascii = native2ascii(e.getSession().getValue());
  5843 +
  5844 + if(this.currentName !== undefined) {
  5845 + return { name: this.currentName,
  5846 + source: ascii };
  5847 + } else {
  5848 + return undefined;
  5849 + }
  5850 +};
  5851 +
  5852 +UIJavascriptTab.prototype.setData = function(data) {
  5853 + "use strict";
  5854 + this.currentName = data.name;
  5855 + // set new
  5856 + var editor = ace.edit("editorJavascript");
  5857 + editor.getSession().setValue(data.source);
  5858 +
  5859 + $("#textJavascriptName").html(this.bufferPrepend + data.name);
  5860 +
  5861 +};
  5862 +
  5863 +UIJavascriptTab.prototype.showModalJSON = function() {
  5864 + "use strict";
  5865 + var e = ace.edit("editorJavascript");
  5866 + var ascii = native2ascii(e.getSession().getValue());
  5867 +
  5868 + var lines = ascii.split("\n");
  5869 +
  5870 + var data = "{source:";
  5871 +
  5872 + for(var i = 0; i < lines.length; i++) {
  5873 + data += "\"" + lines[i].replace(/"/g, "\\\"") + "\\n\" +\n";
  5874 + }
  5875 +
  5876 + data += "\n\"\"}";
  5877 +
  5878 + // data = data.replace(/<([^ ]*)/g, "< $1"); // for loops are interpreted by browser as tags and dont print?
  5879 +
  5880 + // data = data.replace(/"/g, "\\\""); // for loops are interpreted by browser as tags and dont print?
  5881 +
  5882 + // data = data.replace(/<([^ ]*)/g, "< $1"); // for loops are interpreted by browser as tags and dont print?
  5883 +
  5884 + uiApp.codeInformationBox( data );
  5885 +
  5886 +};
  5887 +
  5888 +UIJavascriptTab.prototype.clearStageAndEval = function() {
  5889 + "use strict";
  5890 + var e = ace.edit("editorJavascript");
  5891 + var ascii = native2ascii(e.getSession().getValue());
  5892 + clear();
  5893 + // as of ecma5 an indirect call like this is in global scope
  5894 + var globalEval = eval;
  5895 + globalEval(ascii);
  5896 +};
  5897 +
  5898 +UIJavascriptTab.prototype.eval = function() {
  5899 + "use strict";
  5900 + var e = ace.edit("editorJavascript");
  5901 + var ascii = native2ascii(e.getSession().getValue());
  5902 + // as of ecma5 an indirect call like this is in global scope
  5903 + var globalEval = eval;
  5904 + globalEval(ascii);
  5905 +};
  5906 +
  5907 +UIJavascriptTab.prototype.rebuildDropdown = function(db) {
  5908 + "use strict";
  5909 + rebuildDropdown( document.getElementById("javascriptDropDown"),
  5910 + db,
  5911 + "javascript",
  5912 + function(name) {
  5913 + return ["javascript:uiJavascriptTab.loadJavascript(\"" + name + "\")",
  5914 + name];
  5915 + }
  5916 + );
  5917 +};
  5918 +
  5919 +
  5920 +//------------------------------------------------------------------------------
  5921 +//
  5922 +// Image UI Tab
  5923 +//
  5924 +//------------------------------------------------------------------------------
  5925 +
  5926 +/**
  5927 + * Get or create a dali image from the image buffer.
  5928 + *
  5929 + * Global function for use in javascript buffers or the console.
  5930 + * @param {string} shader buffer name
  5931 + * @return {Object} dali.Image
  5932 + */
  5933 +function imageFromUiBuffer(name) {
  5934 + "use strict";
  5935 + var img = uiImageTab.getDaliImage(name);
  5936 + assert(img, "Could not find image:" + name);
  5937 + return img;
  5938 +}
  5939 +
  5940 +
  5941 +/**
  5942 + * Manages UI image tab.
  5943 + *
  5944 + * @constructor
  5945 + */
  5946 +function UIImageTab() {
  5947 + "use strict";
  5948 + var self = this;
  5949 + this.imagesCreated = {}; // dali shader objects
  5950 +
  5951 + /********** methods **********/
  5952 + this.getBufferImageRGB = function(file, callback) {
  5953 + if (!file) {
  5954 + return;
  5955 + }
  5956 +
  5957 + var img = new HTML5Image(); // the renamed Image()
  5958 +
  5959 + var objectUrl = window.URL.createObjectURL(file);
  5960 +
  5961 + img.onload = function( //e
  5962 + ) {
  5963 + var imageCanvas = document.createElement("canvas");
  5964 + imageCanvas.width = img.width; // naturalWidth;
  5965 + imageCanvas.height = img.height; // naturalHeight;
  5966 + var context = imageCanvas.getContext("2d");
  5967 + context.drawImage(img, 0, 0 );
  5968 + var imageData = context.getImageData(0, 0, img.naturalWidth, img.naturalHeight); // <-ImageData
  5969 + callback(file.name, imageData);
  5970 + window.URL.revokeObjectURL(objectUrl);
  5971 + };
  5972 +
  5973 + img.src = objectUrl;
  5974 +
  5975 + };
  5976 +
  5977 +
  5978 + /**
  5979 + * Add new image data
  5980 + *
  5981 + * @param {object} ImageData object
  5982 + */
  5983 + this.addNewBuffer = function(imageData) {
  5984 + var alreadyExists = function() {
  5985 + self.addNewBuffer(imageData);
  5986 + };
  5987 +
  5988 + var inputOk = function(name) {
  5989 + var oldData = database.readImage(name);
  5990 + if(oldData) {
  5991 + uiApp.messageBox("Name already exsists", alreadyExists);
  5992 + } else {
  5993 + database.writeImage(name, imageData);
  5994 + self.rebuildDropdown(database);
  5995 + }
  5996 + };
  5997 +
  5998 + uiApp.inputbox("BufferName?", inputOk);
  5999 + };
  6000 +
  6001 + this.renameBuffer = function() {
  6002 + var inputOk = function(name) {
  6003 + var data = uiJavascriptTab.getData();
  6004 + data.name = name;
  6005 + database.writeJavascript(data);
  6006 + self.rebuildDropdown(database);
  6007 + };
  6008 +
  6009 + uiApp.inputbox("BufferName?", inputOk);
  6010 + };
  6011 +
  6012 + /**
  6013 + * Load image into the UI Image tab. (used for dynamically generated html dropdowns)
  6014 + *
  6015 + * @param {string} name of image buffer
  6016 + */
  6017 + this.loadImage = function(name) {
  6018 + self.setData( database.readImage(name) );
  6019 + };
  6020 +
  6021 + /********** init **********/
  6022 +
  6023 + document.getElementById("btnImageAddBuffer").addEventListener(
  6024 + "change",
  6025 + function() {
  6026 + var fileInput = document.getElementById("btnImageAddBuffer");
  6027 + var file = fileInput.files[0];
  6028 + self.getBufferImageRGB(
  6029 + file,
  6030 + function(name, typedBuffer) {
  6031 + self.addNewBuffer(typedBuffer);
  6032 + });
  6033 + });
  6034 +
  6035 +
  6036 + document.getElementById("btnImageRenameBuffer").addEventListener(
  6037 + "click",
  6038 + function(/*e*/) {
  6039 + self.renameBuffer();
  6040 + });
  6041 +
  6042 + var names = database.readImageNames();
  6043 + if(names.length) {
  6044 + // load first image buffer
  6045 + self.setData( database.readImage(names[0]) );
  6046 + }
  6047 +
  6048 +}
  6049 +
  6050 +/**
  6051 + * Get or create a dali image from the image buffer.
  6052 + *
  6053 + * @return {Object} dali.Image
  6054 + */
  6055 +UIImageTab.prototype.getDaliImage = function(name) {
  6056 + "use strict";
  6057 + if(name in this.imagesCreated) {
  6058 + return this.imagesCreated[name];
  6059 + } else {
  6060 + var imageData = database.readImage(name);
  6061 + var uint8array = new Uint8Array(imageData.data);
  6062 + var image = new dali.BufferImage(uint8array, imageData.width, imageData.height, dali.PixelFormat.RGBA8888);
  6063 + this.imagesCreated[name] = image;
  6064 + return image;
  6065 + }
  6066 +};
  6067 +
  6068 +UIImageTab.prototype.rebuildDropdown = function(db) {
  6069 + "use strict";
  6070 + rebuildDropdown( document.getElementById("imageDropDown"),
  6071 + db,
  6072 + "images",
  6073 + function(name) {
  6074 + return ["javascript:uiImageTab.loadImage(\"" + name + "\")",
  6075 + name];
  6076 + }
  6077 + );
  6078 +};
  6079 +
  6080 +UIImageTab.prototype.setData = function(data) {
  6081 + "use strict";
  6082 + var imageViewCanvas = document.getElementById("imageViewCanvas"); // createElement("canvas");
  6083 + imageViewCanvas.width = data.width; // naturalWidth;
  6084 + imageViewCanvas.height = data.height; // naturalHeight;
  6085 + var context = imageViewCanvas.getContext("2d");
  6086 + context.putImageData( data, 0, 0 );
  6087 +
  6088 +};
  6089 +
  6090 +//------------------------------------------------------------------------------
  6091 +//
  6092 +// Shader UI Tab
  6093 +//
  6094 +//------------------------------------------------------------------------------
  6095 +/**
  6096 + * Get or create a dali shader from the shader buffer.
  6097 + *
  6098 + * Global function for use in javascript buffers or the console.
  6099 + * @param {string} shader buffer name
  6100 + * @return {Object} dali.Shader
  6101 + */
  6102 +function shaderFromUiBuffer(name) {
  6103 + "use strict";
  6104 + var shader = uiShaderTab.getDaliShader(name);
  6105 + assert(shader, "Could not find/compile shader:" + name);
  6106 + return shader;
  6107 +}
  6108 +
  6109 +function shaderInfoFromUiBuffer(name) {
  6110 + "use strict";
  6111 + return uiShaderTab.getShaderInfo(name);
  6112 +}
  6113 +
  6114 +/**
  6115 + * Manage shader UI tab events.
  6116 + * Holds dali shader objects created from shader buffers.
  6117 + *
  6118 + * @constructor
  6119 + * @return {Object} UIShaderTab
  6120 + */
  6121 +function UIShaderTab() {
  6122 + "use strict";
  6123 + var self = this;
  6124 + this.bufferPrepend = "Buffer Name:";
  6125 + this.inhibitCheckAndUpdateShader = false;
  6126 +
  6127 + this.shadersCreated = {}; // dali shader objects
  6128 + document.getElementById("btnShaderAddBuffer").addEventListener(
  6129 + "click",
  6130 + function(/*e*/) {
  6131 + self.addNewBuffer();
  6132 + });
  6133 +
  6134 + document.getElementById("btnShaderRenameBuffer").addEventListener(
  6135 + "click",
  6136 + function(/*e*/) {
  6137 + self.renameBuffer();
  6138 + });
  6139 +
  6140 + document.getElementById("btnShaderSourceJSON").addEventListener(
  6141 + "click",
  6142 + function(/*e*/) {
  6143 + self.showModalJSON();
  6144 + });
  6145 +
  6146 + document.getElementById("btnShaderSourceC").addEventListener(
  6147 + "click",
  6148 + function(/*e*/) {
  6149 + self.showModalC();
  6150 + });
  6151 +
  6152 + document.getElementById("btnShaderSourceJS").addEventListener(
  6153 + "click",
  6154 + function(/*e*/) {
  6155 + self.showModalJS();
  6156 + });
  6157 +
  6158 +
  6159 + this.addNewBuffer = function() {
  6160 + var alreadyExists = function() {
  6161 + self.addNewBuffer();
  6162 + };
  6163 +
  6164 + var inputOk = function(name) {
  6165 + var data = database.readJavascript(name);
  6166 + if(data) {
  6167 + uiApp.messageBox("Name already exsists", alreadyExists);
  6168 + } else {
  6169 + var newData = {name: name, fragment: "", vertex: "", hints: ""};
  6170 + database.writeShader(newData);
  6171 + self.rebuildDropDown(database);
  6172 + }
  6173 + };
  6174 +
  6175 + uiApp.inputbox("BufferName?", inputOk);
  6176 +
  6177 + };
  6178 +
  6179 + this.renameBuffer = function() {
  6180 + var inputOk = function(name) {
  6181 + var data = self.getData();
  6182 + data.name = name;
  6183 + database.writeShader(data);
  6184 + $("#textShaderName").html(self.bufferPrepend + name);
  6185 + self.rebuildDropdown(database);
  6186 + };
  6187 +
  6188 + uiApp.inputbox("BufferName?", inputOk);
  6189 + };
  6190 +
  6191 + this.loadShader = function(name) {
  6192 +
  6193 + var data = database.readShader(name);
  6194 +
  6195 + // save current
  6196 + var currentData = self.getData();
  6197 + if(currentData) {
  6198 + database.writeShader(currentData);
  6199 + }
  6200 +
  6201 + // so that we can change vertex & fragment as an atomic operation
  6202 + self.inhibitCheckAndUpdateShader = true;
  6203 +
  6204 + // otherwise this will trigger a checkAndUpdateShader() after
  6205 + // we've only changed the vertex shader (ie with mismatching fragment shader)
  6206 + self.setData(data);
  6207 +
  6208 + self.inhibitCheckAndUpdateShader = false;
  6209 +
  6210 + self.checkAndUpdateShader();
  6211 +
  6212 + };
  6213 +
  6214 + /**
  6215 + * Set the UI tab data of vertex/fragment strings.
  6216 + *
  6217 + * @param {Object} shader data object
  6218 + */
  6219 + this.setData = function(options) {
  6220 + var e;
  6221 + var vertex = "";
  6222 + var fragment = "";
  6223 + var hints = "";
  6224 +
  6225 + vertex = options.vertex;
  6226 + fragment = options.fragment;
  6227 + hints = options.hints;
  6228 +
  6229 + $("#requiresSelfDepthTest").prop("checked", (hints.search("requiresSelfDepthTest") >= 0));
  6230 + $("#outputIsTransparent").prop("checked", (hints.search("outputIsTransparent") >= 0));
  6231 + $("#outputIsOpaque").prop("checked", (hints.search("outputIsOpaque") >= 0));
  6232 + $("#modifiesGeometry").prop("checked", (hints.search("modifiesGeometry") >= 0));
  6233 +
  6234 + // do this after setting up the checkboxes as it will trigger storing the checkbox state
  6235 + // in the actorIdToShaderSet map
  6236 + e = ace.edit("editorVertex");
  6237 + e.getSession().setValue(vertex);
  6238 +
  6239 + e = ace.edit("editorFragment");
  6240 + e.getSession().setValue(fragment);
  6241 +
  6242 + $("#textShaderName").html(self.bufferPrepend + options.name);
  6243 +
  6244 + };
  6245 +
  6246 + var shaderTab = $("#tab2primary")[0];
  6247 + var lastClassName = shaderTab.className;
  6248 + window.setInterval( function() {
  6249 + var className = shaderTab.className;
  6250 + if (className !== lastClassName) {
  6251 + //
  6252 + // an attempt to get the editboxes to display the correct content.
  6253 + // when you setValue() the content and they aren't visible then
  6254 + // they dont update properly until you click in the box
  6255 + //
  6256 + var e = ace.edit("editorVertex");
  6257 + e.setShowInvisibles(true);
  6258 + e.setShowInvisibles(false);
  6259 +
  6260 + e = ace.edit("editorFragment");
  6261 + e.setShowInvisibles(true);
  6262 + e.setShowInvisibles(false);
  6263 + lastClassName = className;
  6264 + }
  6265 + }, 1);
  6266 +
  6267 + var names = database.readShaderNames();
  6268 + if(names.length) {
  6269 + // load first image buffer
  6270 + self.setData( database.readShader(names[0]) );
  6271 + }
  6272 +
  6273 + var editor = ace.edit("editorVertex");
  6274 + editor.getSession().addEventListener("change", function() {
  6275 + self.checkAndUpdateShader();
  6276 + });
  6277 +
  6278 + editor = ace.edit("editorFragment");
  6279 + editor.getSession().addEventListener("change", function() {
  6280 + self.checkAndUpdateShader();
  6281 + });
  6282 +
  6283 +}
  6284 +
  6285 +/**
  6286 + * Get or create a dali shader from the shader buffer.
  6287 + *
  6288 + * @return {Object} dali.Shader
  6289 + */
  6290 +UIShaderTab.prototype.getDaliShader = function(name) {
  6291 + "use strict";
  6292 + if(name in this.shadersCreated) {
  6293 + return this.shadersCreated[name].daliShader;
  6294 + } else {
  6295 + var ret = null;
  6296 + var data = database.readShader(name);
  6297 +
  6298 + if(this.isCompilable(data)) {
  6299 + var daliShader = new dali.Shader(data.vertex,
  6300 + data.fragment,
  6301 + this.getDaliShaderHints(data.hints));
  6302 +
  6303 + var shaderInfo = new dali.ShaderInfo();
  6304 + var info = shaderInfo.fromCompilation( canvas.getContext("webgl"),
  6305 + data.vertex,
  6306 + data.fragment );
  6307 +
  6308 + for(name in info.uniformUISpec) {
  6309 + var metaData = info.uniformUISpec[name];
  6310 + if("default" in metaData) {
  6311 + // could provide automatic defaults
  6312 + daliShader.registerAnimatedProperty(name, metaData.default);
  6313 + }
  6314 + }
  6315 +
  6316 + if(daliShader) {
  6317 + this.shadersCreated[name] = data;
  6318 + this.shadersCreated[name].daliShader = daliShader;
  6319 + }
  6320 + ret = daliShader;
  6321 + } else {
  6322 + console.log("Requested shader could not be compiled:" + name);
  6323 + }
  6324 +
  6325 + return ret;
  6326 + }
  6327 +};
  6328 +
  6329 +/**
  6330 + * Get info for a shader. See getInfo()
  6331 + *
  6332 + * @return {Object} dali.Shader
  6333 + */
  6334 +
  6335 +UIShaderTab.prototype.getShaderInfo = function(name) {
  6336 + "use strict";
  6337 + var data = database.readShader(name);
  6338 + return this.getInfo(data);
  6339 +};
  6340 +
  6341 +/**
  6342 + * Rebuild UI tab drop down selection.
  6343 + *
  6344 + * @param {Object} Database
  6345 + */
  6346 +UIShaderTab.prototype.rebuildDropdown = function(db) {
  6347 + "use strict";
  6348 + rebuildDropdown( document.getElementById("shaderDropDown"),
  6349 + db,
  6350 + "shaders",
  6351 + function(name) {
  6352 + return ["javascript:uiShaderTab.loadShader(\"" + name + "\")",
  6353 + name];
  6354 + }
  6355 + );
  6356 +};
  6357 +
  6358 +
  6359 +/**
  6360 + * Get the UI tab data with vertex/fragment strings.
  6361 + *
  6362 + * @return {Object} shader data object
  6363 + */
  6364 +UIShaderTab.prototype.getData = function() {
  6365 + "use strict";
  6366 + var e = ace.edit("editorVertex");
  6367 + var ret = {};
  6368 + ret.name = $("#textShaderName").text().substr(this.bufferPrepend.length);
  6369 + ret.vertex = native2ascii(e.getSession().getValue());
  6370 + e = ace.edit("editorFragment");
  6371 + ret.fragment = native2ascii(e.getSession().getValue());
  6372 +
  6373 + ret.hints = "";
  6374 + if( $("#requiresSelfDepthTest")[0].checked ) {
  6375 + ret.hints += " requiresSelfDepthTest";
  6376 + }
  6377 + if( $("#outputIsTransparent")[0].checked ) {
  6378 + ret.hints += " outputIsTransparent";
  6379 + }
  6380 + if( $("#outputIsOpaque")[0].checked ) {
  6381 + ret.hints += " outputIsOpaque";
  6382 + }
  6383 + if( $("#modifiesGeometry")[0].checked ) {
  6384 + ret.hints += " modifiesGeometry";
  6385 + }
  6386 +
  6387 + return ret;
  6388 +};
  6389 +
  6390 +/**
  6391 + * Get dali shader hints from hints string.
  6392 + *
  6393 + * @param {string} hints string (space separated)
  6394 + * @return {integer} or'd hints to pass to Dali
  6395 + */
  6396 +UIShaderTab.prototype.getDaliShaderHints = function(hintsString) {
  6397 + "use strict";
  6398 + var ret = 0;
  6399 +
  6400 + if(hintsString.search("requiresSelfDepthTest") >= 0) {
  6401 + ret += dali.ShaderHints.REQUIRES_SELF_DEPTH_TEST;
  6402 + }
  6403 + if(hintsString.search("outputIsTransparent") >= 0) {
  6404 + ret += dali.ShaderHints.OUTPUT_IS_TRANSPARENT;
  6405 + }
  6406 + if(hintsString.search("outputIsOpaque") >= 0) {
  6407 + ret += dali.ShaderHints.OUTPUT_IS_OPAQUE;
  6408 + }
  6409 + if(hintsString.search("modifiesGeometry") >= 0) {
  6410 + ret += dali.ShaderHints.MODIFIES_GEOMETRY;
  6411 + }
  6412 + return ret;
  6413 +};
  6414 +
  6415 +/**
  6416 + * Get information on a shader
  6417 + * If hasError==true then attributes etc will be empty. ie it must compile.
  6418 + *
  6419 + * Compile the shader with webGL. Query webGL for meta data.
  6420 + *
  6421 + * @param {object} data object. {vertex:"", fragment:""}
  6422 + * @return {object} info metadata object
  6423 + * // var info = {
  6424 + * // attributes: [],
  6425 + * // uniforms: [],
  6426 + * // attributeCount: 0,
  6427 + * // uniformCount: 0,
  6428 + * // hasError: false, // compiles without error
  6429 + * // vertexError: "",
  6430 + * // fragmentError: "",
  6431 + * // linkError: ""
  6432 + * // };
  6433 + */
  6434 +
  6435 +
  6436 +// uniform vec3 uMe; // gui:number, min:0, max:1, default: 0.5
  6437 +// uniform vec3 uMe; // gui:slider, min:0, max:1, default: 0.5
  6438 +// uniform vec3 uMe; // gui:color, min:[0,0,0,0] max:[1,1,1,1], default: [0,0,0,1]
  6439 +
  6440 +UIShaderTab.prototype.getInfo = function(data) {
  6441 + "use strict";
  6442 +
  6443 + var canvas = document.getElementById("canvas");
  6444 +
  6445 + var info = new dali.ShaderInfo();
  6446 +
  6447 + return info.fromCompilation(canvas.getContext("webgl"),
  6448 + data.vertex,
  6449 + data.fragment);
  6450 +};
  6451 +
  6452 +/**
  6453 + * Check a shader can compile. Shader given as data object with vertex/fragment buffers.
  6454 + *
  6455 + * Compile the shader with webGL as a preprocess step to giving it to Dali.
  6456 + *
  6457 + * @param {string} shader buffer name
  6458 + * @return {Boolean} true if the shader compiles ok.
  6459 + */
  6460 +UIShaderTab.prototype.isCompilable = function(data) {
  6461 + "use strict";
  6462 + var info = this.getInfo(data);
  6463 + return !info.hasError;
  6464 +};
  6465 +
  6466 +
  6467 +/**
  6468 + * Check the shader in the UI tab can compile and if so update the saved dali.Shader object.
  6469 + * (Does not create the dali.Shader object)
  6470 + *
  6471 + * For use on an event for continuous shader checking.
  6472 + *
  6473 + * @param {string} shader buffer name
  6474 + * @return {Object} dali.Shader
  6475 + */
  6476 +UIShaderTab.prototype.checkAndUpdateShader = function() {
  6477 + "use strict";
  6478 + if(this.inhibitCheckAndUpdateShader) {
  6479 + return;
  6480 + }
  6481 +
  6482 + var options = this.getData();
  6483 +
  6484 + var info = this.getInfo(options);
  6485 +
  6486 + if(!info.hasError) {
  6487 + if( options.name in this.shadersCreated ) {
  6488 + if("daliShader" in this.shadersCreated[options.name]) {
  6489 + // setting shader.program= doesn't seem to recompile the shader?
  6490 + // this.shadersCreated[options.name].daliShader.delete(); no delete; could be held elsewhere
  6491 + delete this.shadersCreated[options.name];
  6492 + }
  6493 + }
  6494 + }
  6495 +
  6496 + var vertexPrepend = "";
  6497 + var fragmentPrepend = "";
  6498 +
  6499 + var errors = "";
  6500 + var count;
  6501 + var editor;
  6502 + var description;
  6503 + var col;
  6504 + var line;
  6505 + var i;
  6506 +
  6507 + var textShaderErrors = $("#textShaderErrors");
  6508 +
  6509 + textShaderErrors.value = "";
  6510 +
  6511 + editor = ace.edit("editorVertex");
  6512 + if (info.hasError && info.vertexError) {
  6513 + editor.getSession().setOption("useWorker", false);
  6514 + textShaderErrors.value = "VERTEX:\n" + info.vertexError;
  6515 + errors = info.vertexError.split("\n");
  6516 + count = vertexPrepend.split("\n").length;
  6517 + for(i = 0; i < errors.length; i++) {
  6518 + if(errors[i]) {
  6519 + description = errors[i].split(":");
  6520 + col = Number(description[1]);
  6521 + try {
  6522 + line = Number(description[2]);
  6523 + } catch(e) {
  6524 + line = "unknown";
  6525 + }
  6526 + editor.getSession().setAnnotations([{row: line - count, column: col, text: errors[i], type: "error"}]);
  6527 + }
  6528 + }
  6529 + } else {
  6530 + editor.getSession().setOption("useWorker", true);
  6531 + editor.getSession().setAnnotations([]);
  6532 + }
  6533 +
  6534 + editor = ace.edit("editorFragment");
  6535 + if (info.hasError && info.fragmentError) {
  6536 + editor.getSession().setOption("useWorker", false);
  6537 + textShaderErrors.value += "FRAGMENT:\n" + info.fragmentError;
  6538 + errors = info.fragmentError.split("\n");
  6539 + count = fragmentPrepend.split("\n").length;
  6540 + for(i = 0; i < errors.length; i++) {
  6541 + if(errors[i]) {
  6542 + description = errors[i].split(":");
  6543 + col = Number(description[1]);
  6544 + try {
  6545 + line = Number(description[2]);
  6546 + } catch(e) {
  6547 + line = "unknown";
  6548 + }
  6549 + editor.getSession().setAnnotations([{row: line - count, column: col, text: errors[i], type: "error"}]);
  6550 + }
  6551 + }
  6552 + } else {
  6553 + editor.getSession().setOption("useWorker", true);
  6554 + editor.getSession().setAnnotations([]);
  6555 + }
  6556 +
  6557 + if(!info.hasError) {
  6558 + database.writeShader(options);
  6559 + }
  6560 +
  6561 +};
  6562 +
  6563 +
  6564 +UIShaderTab.prototype.showModalC = function() {
  6565 + "use strict";
  6566 + var i;
  6567 + var info = this.getData();
  6568 +
  6569 + var data = "#define MAKE_STRING(A)#A\n\n" +
  6570 + "std::string vertexShader = MAKE_STRING(\n";
  6571 +
  6572 + var lines = info.vertex.split("\n");
  6573 + for(i = 0; i < lines.length; i++) {
  6574 + data += lines[i] + "\n";
  6575 + }
  6576 + data += ");\n\n";
  6577 +
  6578 + data += "std::string fragShader = MAKE_STRING(\n";
  6579 +
  6580 + lines = info.fragment.split("\n");
  6581 + for(i = 0; i < lines.length; i++) {
  6582 + data += lines[i] + "\n";
  6583 + }
  6584 + data += ");\n\n";
  6585 +
  6586 + data += "ShaderEffect shaderEffect;\n" +
  6587 + "shaderEffect = ShaderEffect::New( vertexShader, fragmentShader,\n" +
  6588 + " ShaderEffect::ShaderHint( " + info.hints + " ) )\n";
  6589 +
  6590 + data = data.replace(/<([^ ]*)/g, "< $1"); // for loops are interpreted by browser as tags and dont print?
  6591 +
  6592 + uiApp.codeInformationBox( data );
  6593 +
  6594 + // data = data.replace(/</g, "&lt;");
  6595 + // data = data.replace(/>/g, "&gt;");
  6596 +
  6597 + // var myWindow = window.open("data:text/html," + encodeURIComponent(data));
  6598 + // // "_blank"); // , "width=00,height=100");
  6599 + // myWindow.focus();
  6600 +
  6601 +};
  6602 +
  6603 +UIShaderTab.prototype.showModalJS = function() {
  6604 + "use strict";
  6605 + var i;
  6606 + var info = this.getData();
  6607 +
  6608 + var data = "var shaderOptions = {vertex:\n";
  6609 +
  6610 + var lines = info.vertex.split("\n");
  6611 + for(i = 0; i < lines.length; i++) {
  6612 + data += " \"" + lines[i] + "\\n\" +\n";
  6613 + }
  6614 + data += " \"\",\n";
  6615 +
  6616 + data += " fragment:\n";
  6617 + lines = info.fragment.split("\n");
  6618 + for(i = 0; i < lines.length; i++) {
  6619 + data += " \"" + lines[i] + "\\n\" +\n";
  6620 + }
  6621 + data += " \"\",\n";
  6622 +
  6623 + data += " geometryType: \"" + info.geometryType + "\",\n";
  6624 + data += " geometryHints: \"" + info.geometryHints + "\"\n";
  6625 + data += " };\n";
  6626 +
  6627 + data = data.replace(/<([^ ]*)/g, "< $1"); // for loops are interpreted by browser as tags and dont print?
  6628 + // data = data.replace(/</g, "&lt;");
  6629 + // data = data.replace(/>/g, "&gt;");
  6630 +
  6631 + // var myWindow = window.open("data:text/html," + encodeURIComponent(data));
  6632 + // // "_blank"); // , "width=00,height=100");
  6633 + // myWindow.focus();
  6634 +
  6635 + var modalBody = $("#modalCodeInfoBody")[0];
  6636 + removeAllChildren(modalBody);
  6637 + modalBody.innerHTML = "<code><pre>" + data + "</pre></code>";
  6638 + $("#modalCodeInfo").modal("show");
  6639 +
  6640 +};
  6641 +
  6642 +UIShaderTab.prototype.showModalJSON = function() {
  6643 + "use strict";
  6644 + var info = this.getData();
  6645 +
  6646 + var hints = ""; // tbd
  6647 +
  6648 + var vertex = info.vertex.replace(/\n/g, "\\n");
  6649 + var fragment = info.fragment.replace(/\n/g, "\\n");
  6650 +
  6651 + var data = "{\"shader-effects\": {\n" +
  6652 + " \"" + "effect" + "\": {\n" +
  6653 + " \"program\": {\n" +
  6654 + " \"vertexPrefix\": \"\",\n" +
  6655 + " \"vertex\": \"" + vertex + "\",\n" +
  6656 + " \"fragmentPrefix\": \"\",\n" +
  6657 + " \"fragment\": \"" + fragment + "\"\n" +
  6658 + " },\n" +
  6659 + " \"geometry-hints\": \"" + hints + "\",\n" +
  6660 + " \"grid-density\": \"" + "0" + "\",\n" +
  6661 + " \"image\": {\n" +
  6662 + " \"filename\": \"\"\n" +
  6663 + " }\n" +
  6664 + " }\n" +
  6665 + " }\n" +
  6666 + "}\n";
  6667 +
  6668 + data = data.replace(/<([^ ]*)/g, "< $1"); // for loops are interpreted by browser as tags and dont print?
  6669 +
  6670 + uiApp.codeInformationBox( data );
  6671 +
  6672 +};
  6673 +
  6674 +document.getElementById("btnRewriteDatabase").addEventListener("click", function(// e
  6675 +) {
  6676 + "use strict";
  6677 +
  6678 + database.delete(
  6679 + function() {
  6680 + consoleLogSuccess("database.delete")();
  6681 + window.setTimeout(function () {
  6682 + window.location.reload(true); // forces a reload from the server
  6683 + }, 500);
  6684 + },
  6685 + consoleLogErrorEvent, // fail
  6686 + consoleLogErrorEvent // blocked
  6687 + );
  6688 +
  6689 +});
  6690 +
  6691 +
  6692 +window.setTimeout(initDB, 1000);
  6693 +
  6694 +
  6695 +function updateStatistics(eventHandler){
  6696 + "use strict";
  6697 +
  6698 + var elem = $("#statistics")[0];
  6699 +
  6700 + var actor = eventHandler.touchedActor;
  6701 +
  6702 + var usedRootLayer = false;
  6703 +
  6704 + if(!actor) {
  6705 + usedRootLayer = true;
  6706 + actor = dali.stage.getRootLayer();
  6707 + }
  6708 +
  6709 + var rt = dali.stage.getRenderTaskList().getTask(0);
  6710 +
  6711 + var xy;
  6712 + try {
  6713 + xy = dali.screenToLocal(eventHandler.mouseX, eventHandler.mouseY,
  6714 + actor, rt);
  6715 + } catch(err) {
  6716 + xy = [0, 0];
  6717 + }
  6718 +
  6719 + var screenxy = dali.worldToScreen(actor.position, rt);
  6720 +
  6721 + var name = "Actor";
  6722 +
  6723 + if(usedRootLayer) {
  6724 + name = "Root Actor";
  6725 + }
  6726 +
  6727 + var prec = 3;
  6728 + var px = "none";
  6729 + var py = "none";
  6730 + if(eventHandler.mouseDownPosition) {
  6731 + px = eventHandler.mouseDownPosition[0].toFixed(prec);
  6732 + py = eventHandler.mouseDownPosition[1].toFixed(prec);
  6733 + }
  6734 +
  6735 + elem.innerHTML = name + " (" + actor.getId() + ") '" + actor.name + "'" + "<br>" +
  6736 + "Screen:" + eventHandler.mouseX.toFixed(prec) + "," + eventHandler.mouseY.toFixed(prec) + "<br>" +
  6737 + name + " Screen To Local:" + xy[0].toFixed(prec) + "," + xy[1].toFixed(prec) + "<br>" +
  6738 + name + " To Screen:" + screenxy[0].toFixed(prec) + "," + screenxy[1].toFixed(prec) + "<br>" +
  6739 + name + " Drag dx/dy:" + eventHandler.dragDx.toFixed(prec) + "," + eventHandler.dragDy.toFixed(prec) + "<br>" +
  6740 + name + " pos:" + actor.position + "<br>"+
  6741 + name + " pos:" + px + "," + py + "<br>";
  6742 +
  6743 + if(usedRootLayer) { // dont delete eventHandler object
  6744 + actor.delete(); // wrapper
  6745 + }
  6746 +
  6747 + rt.delete(); // wrapper
  6748 +
  6749 +}
  6750 +
  6751 +
  6752 +$(".btn-toggle").click(function() {
  6753 + "use strict";
  6754 + $(this).find(".btn").toggleClass("active");
  6755 +
  6756 + if($(this).find(".btn-primary").size() > 0) {
  6757 + $(this).find(".btn").toggleClass("btn-primary");
  6758 + }
  6759 +
  6760 + $(this).find(".btn").toggleClass("btn-default");
  6761 +
  6762 + if(this.id === "loop") {
  6763 + var looping = $(this).find("#loopOn").hasClass("active");
  6764 + animationList[animationSelectionIndex].looping = looping;
  6765 + animationList[animationSelectionIndex].dirtyData = true;
  6766 + }
  6767 +
  6768 + if(this.id === "endAction") {
  6769 + var bake = $(this).find("#endBake").hasClass("active");
  6770 + if(bake) {
  6771 + animationList[animationSelectionIndex].endAction = "Bake";
  6772 + } else {
  6773 + animationList[animationSelectionIndex].endAction = "Discard";
  6774 + }
  6775 + animationList[animationSelectionIndex].dirtyData = true;
  6776 + }
  6777 +
  6778 +});
  6779 +
  6780 +//------------------------------------------------------------------------------
  6781 +//
  6782 +// Database; access to browser indexed db
  6783 +//
  6784 +//------------------------------------------------------------------------------
  6785 +function Database() {
  6786 + "use strict";
  6787 + this.currentVersion = 1;
  6788 + this.name = "dalitoy";
  6789 + this.data = {};
  6790 + var self = this;
  6791 +
  6792 + this.copyDBStore = function(db, dbStoreName, andClose) {
  6793 + var tr = db.transaction([dbStoreName], "readonly");
  6794 + var store = tr.objectStore(dbStoreName);
  6795 + var cursor = store.openCursor();
  6796 + self.data[dbStoreName] = {};
  6797 + cursor.onsuccess = function(e) {
  6798 + var res = e.target.result; // another cursor
  6799 + if(res) {
  6800 + self.data[dbStoreName][res.key] = res.value;
  6801 + res.continue();
  6802 + } else {
  6803 + if(andClose) {
  6804 + db.close();
  6805 + }
  6806 + }
  6807 + };
  6808 + cursor.onerror = consoleLogErrorEvent;
  6809 + };
  6810 +
  6811 + this.initializeData = function(db) {
  6812 + self.copyDBStore(db, "javascript");
  6813 + self.copyDBStore(db, "images");
  6814 + self.copyDBStore(db, "shaders", true); // true to close db (last copy)
  6815 + };
  6816 +
  6817 + this.init();
  6818 +}
  6819 +
  6820 +Database.prototype.open = function() {
  6821 + "use strict";
  6822 + return window.indexedDB.open(this.name, this.currentVersion);
  6823 +};
  6824 +
  6825 +Database.prototype.delete = function(onsuccess, onerror, onblocked) {
  6826 + "use strict";
  6827 + var req = window.indexedDB.deleteDatabase(this.name);
  6828 + req.onsuccess = onsuccess;
  6829 + req.onerror = onerror;
  6830 + req.onblocked = onblocked;
  6831 +};
  6832 +
  6833 +
  6834 +Database.prototype.upgrade = function(db, oldVersion) {
  6835 + // force upgrade
  6836 + "use strict";
  6837 + if (oldVersion < 1) {
  6838 + // Version 1 is the first version of the database.
  6839 + var store = db.createObjectStore("shaders", {keyPath: "name"});
  6840 + var i;
  6841 + for(i = 0; i < shaderSources.length; i++) {
  6842 + store.put( shaderSources[i] );
  6843 + }
  6844 +
  6845 + store = db.createObjectStore("javascript", {keyPath: "name"});
  6846 + for(i = 0; i < javascriptSources.length; i++) {
  6847 + store.put( javascriptSources[i] );
  6848 + }
  6849 +
  6850 + store = db.createObjectStore("images");
  6851 +
  6852 + // default images in html page
  6853 + store.put( getStockImageData(1), "girl1" );
  6854 + store.put( getStockImageData(2), "funnyface" );
  6855 + store.put( getStockImageData(3), "ducks" );
  6856 + store.put( getStockImageData(4), "field" );
  6857 + }
  6858 +};
  6859 +
  6860 +Database.prototype.init = function() {
  6861 + "use strict";
  6862 + var self = this;
  6863 +
  6864 + if("indexedDB" in window) {
  6865 + var openRequest = this.open();
  6866 +
  6867 + openRequest.onupgradeneeded = function(event) {
  6868 + var db = event.target.result;
  6869 + database.upgrade(db, event.oldVersion);
  6870 + //self.initializeData(db);
  6871 + };
  6872 +
  6873 + openRequest.onsuccess = function(event) {
  6874 + var db = event.target.result;
  6875 + self.initializeData(db);
  6876 + };
  6877 +
  6878 + openRequest.onerror = consoleLogErrorEvent;
  6879 +
  6880 + }
  6881 +
  6882 +};
  6883 +
  6884 +Database.prototype.initTabs = function(jstab, imagetab, shadertab) {
  6885 + "use strict";
  6886 + jstab.rebuildDropdown(this);
  6887 + imagetab.rebuildDropdown(this);
  6888 + shadertab.rebuildDropdown(this);
  6889 +};
  6890 +
  6891 +Database.prototype.writeJavascript = function(data, callback) {
  6892 + "use strict";
  6893 +
  6894 + this.data.javascript[data.name] = data;
  6895 +
  6896 + var openRequest = this.open();
  6897 + var self = this;
  6898 + openRequest.onsuccess = function(event) {
  6899 + var db = event.target.result;
  6900 + var tr = db.transaction(["javascript"], "readwrite");
  6901 + var store = tr.objectStore("javascript");
  6902 +
  6903 + var ob = store.put(data);
  6904 + self.data.javascript[data.name] = data;
  6905 +
  6906 + ob.onsuccess = callback;
  6907 + // ob.onerror = errorCallback;
  6908 + ob.onerror = consoleLogErrorEvent;
  6909 +
  6910 + db.close();
  6911 + };
  6912 +
  6913 + openRequest.onerror = consoleLogErrorEvent;
  6914 +
  6915 +};
  6916 +
  6917 +Database.prototype.readJavascript = function(name) {
  6918 + "use strict";
  6919 + return this.data.javascript[name];
  6920 +};
  6921 +
  6922 +Database.prototype.readJavascriptNames = function() {
  6923 + "use strict";
  6924 + return this.getKeys("javascript");
  6925 +};
  6926 +
  6927 +Database.prototype.readKeys = function(dbStoreName, callback) {
  6928 + "use strict";
  6929 +
  6930 + var openRequest = database.open();
  6931 +
  6932 + openRequest.onsuccess = function(event) {
  6933 + var db = event.target.result;
  6934 + var tr = db.transaction([dbStoreName], "readonly");
  6935 + var store = tr.objectStore(dbStoreName);
  6936 + var cursor = store.openCursor();
  6937 + var keys = [];
  6938 + cursor.onsuccess = function(e) {
  6939 + var res = e.target.result; // another cursor
  6940 + if(res) {
  6941 + keys.push(res.key);
  6942 + res.continue();
  6943 + } else {
  6944 + callback(keys);
  6945 + }
  6946 + };
  6947 + cursor.onerror = consoleLogErrorEvent;
  6948 + db.close();
  6949 + };
  6950 +
  6951 +};
  6952 +
  6953 +Database.prototype.getKeys = function(dbStoreName) {
  6954 + "use strict";
  6955 + var l = [];
  6956 + var o = this.data[dbStoreName];
  6957 + for(var name in o) {
  6958 + l.push(name);
  6959 + }
  6960 + return l;
  6961 +};
  6962 +
  6963 +Database.prototype.writeShader = function(data) {
  6964 + "use strict";
  6965 + assert(data.name);
  6966 +
  6967 + this.data.shaders[data.name] = data;
  6968 +
  6969 + // write the indexDB too
  6970 + var openRequest = this.open();
  6971 +
  6972 + openRequest.onsuccess = function(event) {
  6973 + var db = event.target.result;
  6974 + var tr = db.transaction(["shaders"], "readwrite");
  6975 + var store = tr.objectStore("shaders");
  6976 +
  6977 + var ob = store.put(data);
  6978 +
  6979 + //ob.onsuccess = callback;
  6980 + ob.onerror = consoleLogErrorEvent;
  6981 +
  6982 + db.close();
  6983 + };
  6984 +
  6985 + openRequest.onerror = consoleLogErrorEvent;
  6986 +
  6987 +};
  6988 +
  6989 +Database.prototype.readShader = function(name) {
  6990 + "use strict";
  6991 + return this.data.shaders[name];
  6992 +};
  6993 +
  6994 +Database.prototype.readShaderNames = function() {
  6995 + "use strict";
  6996 + return this.getKeys("shaders");
  6997 +};
  6998 +
  6999 +Database.prototype.readObjectStore = function(objectStoreName, recordName, callback, errorCallback) {
  7000 + "use strict";
  7001 + var openRequest = window.indexedDB.open(this.name, this.currentVersion);
  7002 +
  7003 + openRequest.onsuccess = function(event) {
  7004 + var db = event.target.result;
  7005 +
  7006 + var transaction = db.transaction([objectStoreName], "readonly");
  7007 + var objectStore = transaction.objectStore(objectStoreName);
  7008 +
  7009 + //x is some value
  7010 + var ob = objectStore.get(recordName);
  7011 +
  7012 + ob.onsuccess = function(e) {
  7013 + // read with undefined is still a success (should probably do this with cursor?)
  7014 + if(e.target.result) {
  7015 + callback(e.target.result);
  7016 + } else {
  7017 + errorCallback();
  7018 + }
  7019 + };
  7020 +
  7021 + ob.onerror = errorCallback;
  7022 +
  7023 + db.close();
  7024 + };
  7025 +
  7026 + openRequest.onerror = errorCallback;
  7027 +
  7028 +};
  7029 +
  7030 +Database.prototype.writeImage = function(name, data) {
  7031 + "use strict";
  7032 +
  7033 + this.data.images[name] = data;
  7034 +
  7035 + var openRequest = this.open();
  7036 +
  7037 + openRequest.onsuccess = function(event) {
  7038 + var db = event.target.result;
  7039 + var tr = db.transaction(["images"], "readwrite");
  7040 + var store = tr.objectStore("images");
  7041 +
  7042 + var ob = store.put(data, name);
  7043 +
  7044 + //ob.onsuccess = callback;
  7045 + ob.onerror = consoleLogErrorEvent;
  7046 +
  7047 + db.close();
  7048 + };
  7049 +
  7050 + openRequest.onerror = consoleLogErrorEvent;
  7051 +
  7052 +};
  7053 +
  7054 +Database.prototype.readImage = function(name) {
  7055 + "use strict";
  7056 + return this.data.images[name];
  7057 +};
  7058 +
  7059 +Database.prototype.readImageNames = function() {
  7060 + "use strict";
  7061 + return this.getKeys("images");
  7062 +};
  7063 +
  7064 +//------------------------------------------------------------------------------
  7065 +//
  7066 +// app init functions
  7067 +//
  7068 +//------------------------------------------------------------------------------
  7069 +function initDB() {
  7070 + "use strict";
  7071 + database = new Database();
  7072 + window.setTimeout(init, 500);
  7073 +}
  7074 +
  7075 +function init() {
  7076 + "use strict";
  7077 +
  7078 + // var root = dali.stage.getRootLayer();
  7079 + // root.name = "*" + root.name; // * at start means non selectable by convention
  7080 + // root.delete(); // wrapper
  7081 +
  7082 + // database = new Database();
  7083 +
  7084 + test = new Test();
  7085 +
  7086 + uiApp = new UIApp();
  7087 +
  7088 + uiJavascriptTab = new UIJavascriptTab();
  7089 +
  7090 + uiImageTab = new UIImageTab();
  7091 +
  7092 + uiShaderTab = new UIShaderTab();
  7093 +
  7094 + database.initTabs(uiJavascriptTab, uiImageTab, uiShaderTab);
  7095 +
  7096 + $("a[rel=popover]").tooltip();
  7097 +
  7098 + Object.defineProperty(dali, "shader", {
  7099 + enumerable: true,
  7100 + configurable: false,
  7101 + get: function() {
  7102 + return getShader();
  7103 + }
  7104 + });
  7105 +
  7106 + Object.defineProperty(dali, "actor", {
  7107 + enumerable: true,
  7108 + configurable: false,
  7109 + get: function() {
  7110 + return getActor();
  7111 + }
  7112 + });
  7113 +
  7114 + Object.defineProperty(dali, "animation", {
  7115 + enumerable: true,
  7116 + configurable: false,
  7117 + get: function() {
  7118 + return getAnimation();
  7119 + }
  7120 + });
  7121 +
  7122 + eventHandler.handlersMouseMove.push(updateStatistics);
  7123 +
  7124 +}
  7125 +
  7126 +////////////////////////////////////////////////////////////////////////////////////////////////////
  7127 +
  7128 +dali.postRenderFunction = undefined;