xref: /aosp_15_r20/external/swiftshader/third_party/marl/examples/shell.emscripten.html (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1*03ce13f7SAndroid Build Coastguard Worker<!doctype html>
2*03ce13f7SAndroid Build Coastguard Worker<html lang="en-us">
3*03ce13f7SAndroid Build Coastguard Worker<head>
4*03ce13f7SAndroid Build Coastguard Worker    <meta charset="utf-8">
5*03ce13f7SAndroid Build Coastguard Worker    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6*03ce13f7SAndroid Build Coastguard Worker    <title>Emscripten-Generated Code</title>
7*03ce13f7SAndroid Build Coastguard Worker    <style>
8*03ce13f7SAndroid Build Coastguard Worker      body {
9*03ce13f7SAndroid Build Coastguard Worker        font-family: arial;
10*03ce13f7SAndroid Build Coastguard Worker        margin: 0;
11*03ce13f7SAndroid Build Coastguard Worker        padding: none;
12*03ce13f7SAndroid Build Coastguard Worker      }
13*03ce13f7SAndroid Build Coastguard Worker
14*03ce13f7SAndroid Build Coastguard Worker      .emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
15*03ce13f7SAndroid Build Coastguard Worker      div.emscripten { text-align: center; }
16*03ce13f7SAndroid Build Coastguard Worker      div.emscripten_border { border: 1px solid black; }
17*03ce13f7SAndroid Build Coastguard Worker
18*03ce13f7SAndroid Build Coastguard Worker      #emscripten_logo {
19*03ce13f7SAndroid Build Coastguard Worker        display: inline-block;
20*03ce13f7SAndroid Build Coastguard Worker        margin: 0;
21*03ce13f7SAndroid Build Coastguard Worker      }
22*03ce13f7SAndroid Build Coastguard Worker
23*03ce13f7SAndroid Build Coastguard Worker      .spinner {
24*03ce13f7SAndroid Build Coastguard Worker        height: 30px;
25*03ce13f7SAndroid Build Coastguard Worker        width: 30px;
26*03ce13f7SAndroid Build Coastguard Worker        margin: 0;
27*03ce13f7SAndroid Build Coastguard Worker        margin-top: 20px;
28*03ce13f7SAndroid Build Coastguard Worker        margin-left: 20px;
29*03ce13f7SAndroid Build Coastguard Worker        display: inline-block;
30*03ce13f7SAndroid Build Coastguard Worker        vertical-align: top;
31*03ce13f7SAndroid Build Coastguard Worker
32*03ce13f7SAndroid Build Coastguard Worker        -webkit-animation: rotation .8s linear infinite;
33*03ce13f7SAndroid Build Coastguard Worker        -moz-animation: rotation .8s linear infinite;
34*03ce13f7SAndroid Build Coastguard Worker        -o-animation: rotation .8s linear infinite;
35*03ce13f7SAndroid Build Coastguard Worker        animation: rotation 0.8s linear infinite;
36*03ce13f7SAndroid Build Coastguard Worker
37*03ce13f7SAndroid Build Coastguard Worker        border-left: 5px solid rgb(235, 235, 235);
38*03ce13f7SAndroid Build Coastguard Worker        border-right: 5px solid rgb(235, 235, 235);
39*03ce13f7SAndroid Build Coastguard Worker        border-bottom: 5px solid rgb(235, 235, 235);
40*03ce13f7SAndroid Build Coastguard Worker        border-top: 5px solid rgb(120, 120, 120);
41*03ce13f7SAndroid Build Coastguard Worker
42*03ce13f7SAndroid Build Coastguard Worker        border-radius: 100%;
43*03ce13f7SAndroid Build Coastguard Worker        background-color: rgb(189, 215, 46);
44*03ce13f7SAndroid Build Coastguard Worker      }
45*03ce13f7SAndroid Build Coastguard Worker
46*03ce13f7SAndroid Build Coastguard Worker      @-webkit-keyframes rotation {
47*03ce13f7SAndroid Build Coastguard Worker        from {-webkit-transform: rotate(0deg);}
48*03ce13f7SAndroid Build Coastguard Worker        to {-webkit-transform: rotate(360deg);}
49*03ce13f7SAndroid Build Coastguard Worker      }
50*03ce13f7SAndroid Build Coastguard Worker      @-moz-keyframes rotation {
51*03ce13f7SAndroid Build Coastguard Worker        from {-moz-transform: rotate(0deg);}
52*03ce13f7SAndroid Build Coastguard Worker        to {-moz-transform: rotate(360deg);}
53*03ce13f7SAndroid Build Coastguard Worker      }
54*03ce13f7SAndroid Build Coastguard Worker      @-o-keyframes rotation {
55*03ce13f7SAndroid Build Coastguard Worker        from {-o-transform: rotate(0deg);}
56*03ce13f7SAndroid Build Coastguard Worker        to {-o-transform: rotate(360deg);}
57*03ce13f7SAndroid Build Coastguard Worker      }
58*03ce13f7SAndroid Build Coastguard Worker      @keyframes rotation {
59*03ce13f7SAndroid Build Coastguard Worker        from {transform: rotate(0deg);}
60*03ce13f7SAndroid Build Coastguard Worker        to {transform: rotate(360deg);}
61*03ce13f7SAndroid Build Coastguard Worker      }
62*03ce13f7SAndroid Build Coastguard Worker
63*03ce13f7SAndroid Build Coastguard Worker      #status {
64*03ce13f7SAndroid Build Coastguard Worker        display: inline-block;
65*03ce13f7SAndroid Build Coastguard Worker        vertical-align: top;
66*03ce13f7SAndroid Build Coastguard Worker        margin-top: 30px;
67*03ce13f7SAndroid Build Coastguard Worker        margin-left: 20px;
68*03ce13f7SAndroid Build Coastguard Worker        font-weight: bold;
69*03ce13f7SAndroid Build Coastguard Worker        color: rgb(120, 120, 120);
70*03ce13f7SAndroid Build Coastguard Worker      }
71*03ce13f7SAndroid Build Coastguard Worker
72*03ce13f7SAndroid Build Coastguard Worker      #progress {
73*03ce13f7SAndroid Build Coastguard Worker        height: 20px;
74*03ce13f7SAndroid Build Coastguard Worker        width: 300px;
75*03ce13f7SAndroid Build Coastguard Worker      }
76*03ce13f7SAndroid Build Coastguard Worker
77*03ce13f7SAndroid Build Coastguard Worker      #controls {
78*03ce13f7SAndroid Build Coastguard Worker        display: inline-block;
79*03ce13f7SAndroid Build Coastguard Worker        float: right;
80*03ce13f7SAndroid Build Coastguard Worker        vertical-align: top;
81*03ce13f7SAndroid Build Coastguard Worker        margin-top: 30px;
82*03ce13f7SAndroid Build Coastguard Worker        margin-right: 20px;
83*03ce13f7SAndroid Build Coastguard Worker      }
84*03ce13f7SAndroid Build Coastguard Worker
85*03ce13f7SAndroid Build Coastguard Worker      #output {
86*03ce13f7SAndroid Build Coastguard Worker        width: 100%;
87*03ce13f7SAndroid Build Coastguard Worker        height: 200px;
88*03ce13f7SAndroid Build Coastguard Worker        margin: 0 auto;
89*03ce13f7SAndroid Build Coastguard Worker        margin-top: 10px;
90*03ce13f7SAndroid Build Coastguard Worker        border-left: 0px;
91*03ce13f7SAndroid Build Coastguard Worker        border-right: 0px;
92*03ce13f7SAndroid Build Coastguard Worker        padding-left: 0px;
93*03ce13f7SAndroid Build Coastguard Worker        padding-right: 0px;
94*03ce13f7SAndroid Build Coastguard Worker        display: block;
95*03ce13f7SAndroid Build Coastguard Worker        background-color: black;
96*03ce13f7SAndroid Build Coastguard Worker        color: white;
97*03ce13f7SAndroid Build Coastguard Worker        font-family: 'Lucida Console', Monaco, monospace;
98*03ce13f7SAndroid Build Coastguard Worker        outline: none;
99*03ce13f7SAndroid Build Coastguard Worker      }
100*03ce13f7SAndroid Build Coastguard Worker    </style>
101*03ce13f7SAndroid Build Coastguard Worker</head>
102*03ce13f7SAndroid Build Coastguard Worker<body>
103*03ce13f7SAndroid Build Coastguard Worker
104*03ce13f7SAndroid Build Coastguard Worker<div class="spinner" id='spinner'></div>
105*03ce13f7SAndroid Build Coastguard Worker<div class="emscripten" id="status">Downloading...</div>
106*03ce13f7SAndroid Build Coastguard Worker
107*03ce13f7SAndroid Build Coastguard Worker<div class="emscripten">
108*03ce13f7SAndroid Build Coastguard Worker    <progress value="0" max="100" id="progress" hidden=1></progress>
109*03ce13f7SAndroid Build Coastguard Worker</div>
110*03ce13f7SAndroid Build Coastguard Worker
111*03ce13f7SAndroid Build Coastguard Worker
112*03ce13f7SAndroid Build Coastguard Worker<textarea id="output" rows="8"></textarea>
113*03ce13f7SAndroid Build Coastguard Worker
114*03ce13f7SAndroid Build Coastguard Worker<script type='text/javascript'>
115*03ce13f7SAndroid Build Coastguard Worker      var statusElement = document.getElementById('status');
116*03ce13f7SAndroid Build Coastguard Worker      var progressElement = document.getElementById('progress');
117*03ce13f7SAndroid Build Coastguard Worker      var spinnerElement = document.getElementById('spinner');
118*03ce13f7SAndroid Build Coastguard Worker
119*03ce13f7SAndroid Build Coastguard Worker      var Module = {
120*03ce13f7SAndroid Build Coastguard Worker        preRun: [],
121*03ce13f7SAndroid Build Coastguard Worker        postRun: [],
122*03ce13f7SAndroid Build Coastguard Worker        print: (function() {
123*03ce13f7SAndroid Build Coastguard Worker          var element = document.getElementById('output');
124*03ce13f7SAndroid Build Coastguard Worker          if (element) element.value = ''; // clear browser cache
125*03ce13f7SAndroid Build Coastguard Worker          return function(text) {
126*03ce13f7SAndroid Build Coastguard Worker            if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
127*03ce13f7SAndroid Build Coastguard Worker            // These replacements are necessary if you render to raw HTML
128*03ce13f7SAndroid Build Coastguard Worker            //text = text.replace(/&/g, "&amp;");
129*03ce13f7SAndroid Build Coastguard Worker            //text = text.replace(/</g, "&lt;");
130*03ce13f7SAndroid Build Coastguard Worker            //text = text.replace(/>/g, "&gt;");
131*03ce13f7SAndroid Build Coastguard Worker            //text = text.replace('\n', '<br>', 'g');
132*03ce13f7SAndroid Build Coastguard Worker            console.log(text);
133*03ce13f7SAndroid Build Coastguard Worker            if (element) {
134*03ce13f7SAndroid Build Coastguard Worker              element.value += text + "\n";
135*03ce13f7SAndroid Build Coastguard Worker              element.scrollTop = element.scrollHeight; // focus on bottom
136*03ce13f7SAndroid Build Coastguard Worker            }
137*03ce13f7SAndroid Build Coastguard Worker          };
138*03ce13f7SAndroid Build Coastguard Worker        })(),
139*03ce13f7SAndroid Build Coastguard Worker        setStatus: function(text) {
140*03ce13f7SAndroid Build Coastguard Worker          if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
141*03ce13f7SAndroid Build Coastguard Worker          if (text === Module.setStatus.last.text) return;
142*03ce13f7SAndroid Build Coastguard Worker          var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
143*03ce13f7SAndroid Build Coastguard Worker          var now = Date.now();
144*03ce13f7SAndroid Build Coastguard Worker          if (m && now - Module.setStatus.last.time < 30) return; // if this is a progress update, skip it if too soon
145*03ce13f7SAndroid Build Coastguard Worker          Module.setStatus.last.time = now;
146*03ce13f7SAndroid Build Coastguard Worker          Module.setStatus.last.text = text;
147*03ce13f7SAndroid Build Coastguard Worker          if (m) {
148*03ce13f7SAndroid Build Coastguard Worker            text = m[1];
149*03ce13f7SAndroid Build Coastguard Worker            progressElement.value = parseInt(m[2])*100;
150*03ce13f7SAndroid Build Coastguard Worker            progressElement.max = parseInt(m[4])*100;
151*03ce13f7SAndroid Build Coastguard Worker            progressElement.hidden = false;
152*03ce13f7SAndroid Build Coastguard Worker            spinnerElement.hidden = false;
153*03ce13f7SAndroid Build Coastguard Worker          } else {
154*03ce13f7SAndroid Build Coastguard Worker            progressElement.value = null;
155*03ce13f7SAndroid Build Coastguard Worker            progressElement.max = null;
156*03ce13f7SAndroid Build Coastguard Worker            progressElement.hidden = true;
157*03ce13f7SAndroid Build Coastguard Worker            if (!text) spinnerElement.style.display = 'none';
158*03ce13f7SAndroid Build Coastguard Worker          }
159*03ce13f7SAndroid Build Coastguard Worker          statusElement.innerHTML = text;
160*03ce13f7SAndroid Build Coastguard Worker        },
161*03ce13f7SAndroid Build Coastguard Worker        totalDependencies: 0,
162*03ce13f7SAndroid Build Coastguard Worker        monitorRunDependencies: function(left) {
163*03ce13f7SAndroid Build Coastguard Worker          this.totalDependencies = Math.max(this.totalDependencies, left);
164*03ce13f7SAndroid Build Coastguard Worker          Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
165*03ce13f7SAndroid Build Coastguard Worker        }
166*03ce13f7SAndroid Build Coastguard Worker      };
167*03ce13f7SAndroid Build Coastguard Worker      Module.setStatus('Downloading...');
168*03ce13f7SAndroid Build Coastguard Worker      window.onerror = function(event) {
169*03ce13f7SAndroid Build Coastguard Worker        // TODO: do not warn on ok events like simulating an infinite loop or exitStatus
170*03ce13f7SAndroid Build Coastguard Worker        Module.setStatus('Exception thrown, see JavaScript console');
171*03ce13f7SAndroid Build Coastguard Worker        spinnerElement.style.display = 'none';
172*03ce13f7SAndroid Build Coastguard Worker        Module.setStatus = function(text) {
173*03ce13f7SAndroid Build Coastguard Worker          if (text) console.error('[post-exception status] ' + text);
174*03ce13f7SAndroid Build Coastguard Worker        };
175*03ce13f7SAndroid Build Coastguard Worker      };
176*03ce13f7SAndroid Build Coastguard Worker    </script>
177*03ce13f7SAndroid Build Coastguard Worker{{{ SCRIPT }}}
178*03ce13f7SAndroid Build Coastguard Worker</body>
179*03ce13f7SAndroid Build Coastguard Worker</html>
180