lavavu-osmesa 1.9.9__cp313-cp313-manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lavavu/LavaVuPython.py +561 -0
- lavavu/_LavaVuPython.cpython-313-x86_64-linux-gnu.so +0 -0
- lavavu/__init__.py +15 -0
- lavavu/__main__.py +12 -0
- lavavu/amalgamate.py +15 -0
- lavavu/aserver.py +359 -0
- lavavu/control.py +1731 -0
- lavavu/convert.py +888 -0
- lavavu/dict.json +2528 -0
- lavavu/font.bin +0 -0
- lavavu/html/LavaVu-amalgamated.css +282 -0
- lavavu/html/OK-min.js +99 -0
- lavavu/html/baseviewer.js +307 -0
- lavavu/html/control.css +104 -0
- lavavu/html/control.js +340 -0
- lavavu/html/dat-gui-light-theme.css +68 -0
- lavavu/html/dat.gui.min.js +2 -0
- lavavu/html/draw.js +2259 -0
- lavavu/html/drawbox.js +1039 -0
- lavavu/html/emscripten-template.js +184 -0
- lavavu/html/emscripten.css +92 -0
- lavavu/html/favicon.ico +0 -0
- lavavu/html/gl-matrix-min.js +47 -0
- lavavu/html/gui.css +25 -0
- lavavu/html/menu.js +615 -0
- lavavu/html/server.js +226 -0
- lavavu/html/stats.min.js +5 -0
- lavavu/html/styles.css +58 -0
- lavavu/html/webview-template.html +43 -0
- lavavu/html/webview.html +43 -0
- lavavu/lavavu.py +6200 -0
- lavavu/osmesa/LavaVuPython.py +561 -0
- lavavu/osmesa/_LavaVuPython.cpython-313-x86_64-linux-gnu.so +0 -0
- lavavu/osmesa/__init__.py +0 -0
- lavavu/points.py +191 -0
- lavavu/server.py +343 -0
- lavavu/shaders/default.frag +14 -0
- lavavu/shaders/default.vert +17 -0
- lavavu/shaders/fontShader.frag +20 -0
- lavavu/shaders/fontShader.vert +18 -0
- lavavu/shaders/lineShader.frag +39 -0
- lavavu/shaders/lineShader.vert +26 -0
- lavavu/shaders/pointShader.frag +127 -0
- lavavu/shaders/pointShader.vert +53 -0
- lavavu/shaders/triShader.frag +153 -0
- lavavu/shaders/triShader.vert +49 -0
- lavavu/shaders/volumeShader.frag +400 -0
- lavavu/shaders/volumeShader.vert +5 -0
- lavavu/tracers.py +207 -0
- lavavu/vutils.py +211 -0
- lavavu_osmesa-1.9.9.dist-info/METADATA +323 -0
- lavavu_osmesa-1.9.9.dist-info/RECORD +65 -0
- lavavu_osmesa-1.9.9.dist-info/WHEEL +5 -0
- lavavu_osmesa-1.9.9.dist-info/entry_points.txt +2 -0
- lavavu_osmesa-1.9.9.dist-info/licenses/LICENSE.md +179 -0
- lavavu_osmesa-1.9.9.dist-info/top_level.txt +1 -0
- lavavu_osmesa.libs/libLLVM-17-51492e70.so +0 -0
- lavavu_osmesa.libs/libOSMesa-f6a8f160.so.8.0.0 +0 -0
- lavavu_osmesa.libs/libdrm-b0291a67.so.2.4.0 +0 -0
- lavavu_osmesa.libs/libffi-3a37023a.so.6.0.2 +0 -0
- lavavu_osmesa.libs/libglapi-520b284c.so.0.0.0 +0 -0
- lavavu_osmesa.libs/libpcre2-8-516f4c9d.so.0.7.1 +0 -0
- lavavu_osmesa.libs/libselinux-d0805dcb.so.1 +0 -0
- lavavu_osmesa.libs/libtinfo-3a2cb85b.so.6.1 +0 -0
- lavavu_osmesa.libs/libzstd-76b78bac.so.1.4.4 +0 -0
lavavu/html/server.js
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
/////////////////////////////////////////////////////////////////////////
|
2
|
+
//Server Event handling
|
3
|
+
//TODO: get rid of globals and put in a class
|
4
|
+
|
5
|
+
function keyPressCommand(event, el) {
|
6
|
+
if (event.keyCode == 13) {
|
7
|
+
//OK.debug("PRESS Code: " + event.keyCode + " Char: " + charc);
|
8
|
+
var cmd = el.value.trim();
|
9
|
+
if (cmd.length == 0) cmd = "repeat";
|
10
|
+
sendCommand('' + cmd);
|
11
|
+
el.value = "";
|
12
|
+
setTimeout(requestObjects, 100);
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
function keyPress(event) {
|
17
|
+
if (event.target == document.getElementById('cmdInput')) return;
|
18
|
+
var charc = '';
|
19
|
+
var code = 0;
|
20
|
+
var key = 0;
|
21
|
+
if (event.which && event.charCode != 0)
|
22
|
+
code = event.which; //charc = String.fromCharCode(event.which); // All others
|
23
|
+
else
|
24
|
+
// ie or special key
|
25
|
+
code = event.keyCode;
|
26
|
+
|
27
|
+
//Ignore ESC, too easy to accidentally quit
|
28
|
+
if (code == 27) return;
|
29
|
+
|
30
|
+
//Special key codes
|
31
|
+
if (code == 38) key = 17;
|
32
|
+
else if (code == 40) key = 18;
|
33
|
+
else if (code == 37) key = 20;
|
34
|
+
else if (code == 39) key = 19;
|
35
|
+
else if (code == 33) key = 24;
|
36
|
+
else if (code == 34) key = 25;
|
37
|
+
else if (code == 36) key = 22;
|
38
|
+
else if (code == 35) key = 23;
|
39
|
+
else key = code;
|
40
|
+
|
41
|
+
//OK.debug("PRESS Code: " + event.keyCode + " Char: " + charc);
|
42
|
+
requestData('/key=' + key + ',modifiers=' + getModifiers(event) + ",x=" + defaultMouse.x + ",y=" + defaultMouse.y);
|
43
|
+
}
|
44
|
+
|
45
|
+
function getModifiers(event) {
|
46
|
+
var modifiers = '';
|
47
|
+
if (event.ctrlKey) modifiers += 'C';
|
48
|
+
if (event.shiftKey) modifiers += 'S';
|
49
|
+
if (event.altKey) modifiers += 'A';
|
50
|
+
if (event.metaKey) modifiers += 'M';
|
51
|
+
return modifiers;
|
52
|
+
}
|
53
|
+
|
54
|
+
//Mouse event handling
|
55
|
+
function serverMouseClick(event, mouse) {
|
56
|
+
if (event.button > 0) return true;
|
57
|
+
if (mvtimeout) clearTimeout(mvtimeout); //Clear move timer
|
58
|
+
if (mvcount > 0) {
|
59
|
+
//Move queued
|
60
|
+
var request = "/mouse=move,button=" + document.mouse.button + ",x=" + document.mouse.x + ",y=" + document.mouse.y;
|
61
|
+
mouseCall(request);
|
62
|
+
mvcuont = 0;
|
63
|
+
}
|
64
|
+
requestData('/mouse=up,button=' + (mouse.button+1) + ',modifiers=' + getModifiers(event) + ",x=" + mouse.x + ",y=" + mouse.y);
|
65
|
+
}
|
66
|
+
|
67
|
+
function serverMouseDown(event, mouse) {
|
68
|
+
if (document.getElementById('tmode').checked)
|
69
|
+
var button = Math.abs(mouse.button-2)+1;
|
70
|
+
else
|
71
|
+
var button = mouse.button+1;
|
72
|
+
requestData('/mouse=down,button=' + button + ",x=" + mouse.x + ",y=" + mouse.y);
|
73
|
+
return false; //Prevent drag
|
74
|
+
}
|
75
|
+
|
76
|
+
var mvtimeout = undefined;
|
77
|
+
var spintimeout = undefined;
|
78
|
+
var mvcount = 0;
|
79
|
+
var spincount = 0;
|
80
|
+
|
81
|
+
function serverMouseMove(event, mouse) {
|
82
|
+
//Mouseover processing
|
83
|
+
if (mouse.x >= 0 && mouse.y >= 0 && mouse.x <= mouse.element.width && mouse.y <= mouse.element.height)
|
84
|
+
{
|
85
|
+
//Convert mouse coords
|
86
|
+
//...
|
87
|
+
//document.getElementById("coords").innerHTML = " x: " + mouse.x + " y: " + mouse.y;
|
88
|
+
}
|
89
|
+
if (!mouse.isdown) return true;
|
90
|
+
|
91
|
+
//Right & middle buttons: drag to scroll
|
92
|
+
if (mouse.button > 0) {
|
93
|
+
// Set the scroll position
|
94
|
+
//window.scrollBy(-mouse.deltaX, -mouse.deltaY);
|
95
|
+
//return true;
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
//Drag processing
|
100
|
+
//requestData('/mouse=move,button=' + (mouse.button+1) + ",x=" + mouse.x + ",y=" + mouse.y);
|
101
|
+
if (mvtimeout) clearTimeout(mvtimeout);
|
102
|
+
if (0) { //mvcount > 20) {
|
103
|
+
moveCall(); //Instant call when count > 20
|
104
|
+
} else {
|
105
|
+
document.body.style.cursor = "wait";
|
106
|
+
var request = "/mouse=move,button=" + document.mouse.button + ",x=" + document.mouse.x + ",y=" + document.mouse.y;
|
107
|
+
mvtimeout = setTimeout("mouseCall('" + request + "'); mvcount = 0;", 100);
|
108
|
+
mvcount ++;
|
109
|
+
}
|
110
|
+
return false;
|
111
|
+
}
|
112
|
+
|
113
|
+
function serverMouseWheel(event, mouse) {
|
114
|
+
if (spintimeout) clearTimeout(spintimeout);
|
115
|
+
document.body.style.cursor = "wait";
|
116
|
+
spincount += event.spin;
|
117
|
+
var request = "/mouse=scroll,spin=" + spincount + ',modifiers=' + getModifiers(event) + ",x=" + document.mouse.x + ",y=" + document.mouse.y;
|
118
|
+
spintimeout = setTimeout("mouseCall('" + request + "'); spincount = 0;", 100);
|
119
|
+
//requestData('/mouse=scroll,spin=' + event.spin + ',modifiers=' + getModifiers(event) + ",x=" + mouse.x + ",y=" + mouse.y);
|
120
|
+
}
|
121
|
+
|
122
|
+
function mouseCall(request) {
|
123
|
+
document.body.style.cursor = "default";
|
124
|
+
requestData(request);
|
125
|
+
//requestData('/mouse=move,button=' + document.mouse.button + ",x=" + document.mouse.x + ",y=" + document.mouse.y);
|
126
|
+
}
|
127
|
+
|
128
|
+
///////////////////////////////////////////////////////
|
129
|
+
var cmdlog = null;
|
130
|
+
function sendCommand(cmd) {
|
131
|
+
//Shortcut to send commands (and optionally log)
|
132
|
+
if (!cmd) {
|
133
|
+
cmd = cmdQueue;
|
134
|
+
cmdQueue = "";
|
135
|
+
}
|
136
|
+
requestData('/command=' + cmd);
|
137
|
+
//requestData('/command=' + cmd, parseRequest);
|
138
|
+
if (cmdlog != null)
|
139
|
+
cmdlog += cmd + "\n";
|
140
|
+
}
|
141
|
+
|
142
|
+
var cmdQueue = "";
|
143
|
+
function queueCommand(cmd) {
|
144
|
+
//Shortcut to send commands (and optionally log)
|
145
|
+
cmdQueue += cmd + ';';
|
146
|
+
}
|
147
|
+
|
148
|
+
var count = 0;
|
149
|
+
function requestData(data, callback, sync) {
|
150
|
+
var http = new XMLHttpRequest();
|
151
|
+
// the url of the script where we send the asynchronous call
|
152
|
+
var url = data.replace(/\n/g, ';'); //Replace newlines with semi-colon
|
153
|
+
//console.log(url);
|
154
|
+
//Add count to url to prevent caching
|
155
|
+
if (data) {
|
156
|
+
url += "&" + count;
|
157
|
+
count++;
|
158
|
+
}
|
159
|
+
|
160
|
+
http.onreadystatechange = function() {
|
161
|
+
if(http.readyState == 4)
|
162
|
+
if(http.status == 200) {
|
163
|
+
if (callback)
|
164
|
+
callback(http.responseText);
|
165
|
+
else
|
166
|
+
OK.debug(http.responseText);
|
167
|
+
} else
|
168
|
+
OK.debug("Ajax Request Error: " + url + ", returned status code " + http.status + " " + http.statusText);
|
169
|
+
}
|
170
|
+
|
171
|
+
//Add date to url to prevent caching
|
172
|
+
//var d = new Date();
|
173
|
+
//http.open("GET", url + "?d=" + d.getTime(), true);
|
174
|
+
http.open("GET", url, !sync);
|
175
|
+
http.send(null);
|
176
|
+
}
|
177
|
+
|
178
|
+
function requestImage(target) {
|
179
|
+
if (client_id < 0) return; //No longer connected
|
180
|
+
var http = new XMLHttpRequest();
|
181
|
+
//Add count to url to prevent caching
|
182
|
+
var url = '/image=' + client_id + '&' + count; count++;
|
183
|
+
console.log(url);
|
184
|
+
|
185
|
+
http.onload = function() {
|
186
|
+
if(http.status == 200) {
|
187
|
+
//Clean up when loaded
|
188
|
+
target.onload = function(e) {window.URL.revokeObjectURL(target.src);};
|
189
|
+
target.src = window.URL.createObjectURL(http.response);
|
190
|
+
|
191
|
+
//Update the object state, then request next image
|
192
|
+
requestData('/objects', parseObjects);
|
193
|
+
//Get next frame (after brief timeout so we don't flood the server)
|
194
|
+
//if (imgtimer) clearTimeout(imgtimer);
|
195
|
+
//imgtimer = setTimeout(requestImage, 100);
|
196
|
+
} else
|
197
|
+
OK.debug("Ajax Request Error: " + url + ", returned status code " + http.status + " " + http.statusText);
|
198
|
+
}
|
199
|
+
|
200
|
+
http.open("GET", url, true);
|
201
|
+
http.responseType = 'blob';
|
202
|
+
http.send(null);
|
203
|
+
}
|
204
|
+
|
205
|
+
//Get client_id after connect call
|
206
|
+
var client_id = 0;
|
207
|
+
function parseRequest(response) {
|
208
|
+
client_id = parseInt(response);
|
209
|
+
requestData('/objects', parseObjects);
|
210
|
+
}
|
211
|
+
|
212
|
+
var imgtimer;
|
213
|
+
function parseObjects(response) {
|
214
|
+
viewer.loadFile(response);
|
215
|
+
//Get next frame (after brief timeout so we don't flood the server)
|
216
|
+
var target = document.getElementById('frame');
|
217
|
+
if (target) {
|
218
|
+
if (imgtimer) clearTimeout(imgtimer);
|
219
|
+
imgtimer = setTimeout(requestImage(target), 100);
|
220
|
+
}
|
221
|
+
}
|
222
|
+
|
223
|
+
function requestObjects() {
|
224
|
+
requestData('/objects', function(data) {viewer.loadFile(data);});
|
225
|
+
}
|
226
|
+
|
lavavu/html/stats.min.js
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
// stats.js - http://github.com/mrdoob/stats.js
|
2
|
+
(function(f,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.display=d===a?"block":"none";l=a}var l=0,c=document.createElement("div");c.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";c.addEventListener("click",function(a){a.preventDefault();
|
3
|
+
u(++l%c.children.length)},!1);var k=(performance||Date).now(),g=k,a=0,r=e(new f.Panel("FPS","#0ff","#002")),h=e(new f.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var t=e(new f.Panel("MB","#f08","#201"));u(0);return{REVISION:16,dom:c,addPanel:e,showPanel:u,begin:function(){k=(performance||Date).now()},end:function(){a++;var c=(performance||Date).now();h.update(c-k,200);if(c>g+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/
|
4
|
+
1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=h;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v);
|
5
|
+
b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+" "+e+" ("+g(c)+"-"+g(k)+")",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f});
|
lavavu/html/styles.css
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
/* General webgl control stylesheet */
|
2
|
+
|
3
|
+
/*
|
4
|
+
.lvctrl {
|
5
|
+
font-family: sans-serif;
|
6
|
+
font-size: 9pt !important;
|
7
|
+
line-height: 20px !important;
|
8
|
+
}
|
9
|
+
*/
|
10
|
+
.message {font-family: monospace; font-size: 9pt;}
|
11
|
+
|
12
|
+
/* Popup div */
|
13
|
+
.popup {
|
14
|
+
position:fixed;
|
15
|
+
width:200px; height:100px;
|
16
|
+
top: 50%; left:50%;
|
17
|
+
margin:-50px 0 0 -100px; /* [-(height/2)px 0 0 -(width/2)px] */
|
18
|
+
display:none; z-index: 30; border: none;
|
19
|
+
padding: 5px; overflow: hidden;
|
20
|
+
background: #ffe;
|
21
|
+
border-radius: 5px 5px 5px 5px;
|
22
|
+
box-shadow: 3px 3px 2px #333;
|
23
|
+
}
|
24
|
+
.popclose {float: right; cursor: pointer; color: #333; margin: 0px 3px; font-weight: bold}
|
25
|
+
|
26
|
+
/*
|
27
|
+
* These somehow break scrollbars in jupyter notebook, should be scoped if still needed
|
28
|
+
.lvctrl input, select {
|
29
|
+
margin: 1px 0px;
|
30
|
+
font-size: 9pt;
|
31
|
+
}
|
32
|
+
|
33
|
+
.lvctrl input[type="text"] {width: 200px; }
|
34
|
+
.lvctrl input[type="range"] {width: 148px; }
|
35
|
+
*/
|
36
|
+
|
37
|
+
/* Colour select */
|
38
|
+
.colourbg {margin:0px; width: 100px; height: 20px; border: 1px dotted #999; }
|
39
|
+
.colour {display: inline-block; width: 100%; height: 100%; margin: 0px; padding: 0px; border: none;}
|
40
|
+
|
41
|
+
.checkerboard {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIElEQVQ4jWP4TwAcOHAAL2YYNWBYGEBIASEwasCwMAAALvidroqDalkAAAAASUVORK5CYII=");}
|
42
|
+
|
43
|
+
.palette { margin: 3px 0px; border:1px solid #999;}
|
44
|
+
|
45
|
+
/* Hacky select element styling, fixes selects in dat.gui, but also apply to other inline select elements */
|
46
|
+
select:not([multiple]) {
|
47
|
+
-webkit-appearance: none;
|
48
|
+
-moz-appearance: none;
|
49
|
+
background-position: right 50%;
|
50
|
+
background-repeat: no-repeat;
|
51
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);
|
52
|
+
padding-right: 1.0em;
|
53
|
+
border: 1px solid #888;
|
54
|
+
border-radius: 0
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en-us">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
|
8
|
+
<title>LavaVu Emscripten</title>
|
9
|
+
|
10
|
+
<link rel="stylesheet" href="LavaVu-amalgamated.css">
|
11
|
+
<!--link rel="stylesheet" href="emscripten.css">
|
12
|
+
<link rel="stylesheet" href="control.css">
|
13
|
+
<link rel="stylesheet" href="styles.css">
|
14
|
+
<link rel="stylesheet" href="gui.css"-->
|
15
|
+
</head>
|
16
|
+
<body>
|
17
|
+
|
18
|
+
<div class="spinner" id='spinner' style="z-index: 100; position: relative;"></div>
|
19
|
+
<div class="emscripten" id="status" style="z-index: 100; position: relative;">Downloading...</div>
|
20
|
+
|
21
|
+
<div class="emscripten">
|
22
|
+
<progress value="0" max="100" id="progress" hidden=1 style="z-index: 100; position: relative;"></progress>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
|
26
|
+
<textarea id="output" rows="20"></textarea>
|
27
|
+
|
28
|
+
<input id="fileinput" type="file" style="visibility:hidden" onchange="useFileInput(this)" />
|
29
|
+
|
30
|
+
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@LAVAVU_VERSION/LavaVu-amalgamated.min.js"></script>
|
31
|
+
<!--script src="dat.gui.min.js"></script>
|
32
|
+
<script src="OK-min.js"></script>
|
33
|
+
|
34
|
+
<script src="baseviewer.js"></script>
|
35
|
+
<script src="menu.js"></script>
|
36
|
+
<script src="emscripten.js"></script-->
|
37
|
+
|
38
|
+
<!--script async src="LavaVu.js"></script-->
|
39
|
+
|
40
|
+
</body>
|
41
|
+
</html>
|
42
|
+
|
43
|
+
|
lavavu/html/webview.html
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en-us">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
7
|
+
|
8
|
+
<title>LavaVu Emscripten</title>
|
9
|
+
|
10
|
+
<link rel="stylesheet" href="LavaVu-amalgamated.css">
|
11
|
+
<!--link rel="stylesheet" href="emscripten.css">
|
12
|
+
<link rel="stylesheet" href="control.css">
|
13
|
+
<link rel="stylesheet" href="styles.css">
|
14
|
+
<link rel="stylesheet" href="gui.css"-->
|
15
|
+
</head>
|
16
|
+
<body>
|
17
|
+
|
18
|
+
<div class="spinner" id='spinner' style="z-index: 100; position: relative;"></div>
|
19
|
+
<div class="emscripten" id="status" style="z-index: 100; position: relative;">Downloading...</div>
|
20
|
+
|
21
|
+
<div class="emscripten">
|
22
|
+
<progress value="0" max="100" id="progress" hidden=1 style="z-index: 100; position: relative;"></progress>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
|
26
|
+
<textarea id="output" rows="20"></textarea>
|
27
|
+
|
28
|
+
<input id="fileinput" type="file" style="visibility:hidden" onchange="useFileInput(this)" />
|
29
|
+
|
30
|
+
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@1.9.9/LavaVu-amalgamated.min.js"></script>
|
31
|
+
<!--script src="dat.gui.min.js"></script>
|
32
|
+
<script src="OK-min.js"></script>
|
33
|
+
|
34
|
+
<script src="baseviewer.js"></script>
|
35
|
+
<script src="menu.js"></script>
|
36
|
+
<script src="emscripten.js"></script-->
|
37
|
+
|
38
|
+
<!--script async src="LavaVu.js"></script-->
|
39
|
+
|
40
|
+
</body>
|
41
|
+
</html>
|
42
|
+
|
43
|
+
|