lavavu 1.9.6__cp311-cp311-macosx_11_0_arm64.whl → 1.9.8__cp311-cp311-macosx_11_0_arm64.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.cpython-311-darwin.so +0 -0
- lavavu/dict.json +11 -0
- lavavu/html/control.js +1 -1
- lavavu/html/webview.html +1 -1
- lavavu/lavavu.py +79 -18
- lavavu/shaders/triShader.vert +4 -6
- lavavu/tracers.py +19 -6
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/METADATA +2 -2
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/RECORD +13 -13
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/WHEEL +1 -1
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/entry_points.txt +0 -0
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/licenses/LICENSE.md +0 -0
- {lavavu-1.9.6.dist-info → lavavu-1.9.8.dist-info}/top_level.txt +0 -0
Binary file
|
lavavu/dict.json
CHANGED
@@ -2147,6 +2147,17 @@
|
|
2147
2147
|
false
|
2148
2148
|
]
|
2149
2149
|
},
|
2150
|
+
"upscalelines": {
|
2151
|
+
"default": false,
|
2152
|
+
"target": "global",
|
2153
|
+
"type": "real",
|
2154
|
+
"desc": "Enable to scale lines with the viewport size.",
|
2155
|
+
"strict": true,
|
2156
|
+
"redraw": 0,
|
2157
|
+
"control": [
|
2158
|
+
true
|
2159
|
+
]
|
2160
|
+
},
|
2150
2161
|
"fps": {
|
2151
2162
|
"default": false,
|
2152
2163
|
"target": "global",
|
lavavu/html/control.js
CHANGED
@@ -87,7 +87,7 @@ function WindowInteractor(id, uid, port) {
|
|
87
87
|
|
88
88
|
//Several possible modes to try
|
89
89
|
//Modern JupyterHub lab URL
|
90
|
-
var regex = /\/lab
|
90
|
+
var regex = /\/lab(\/|\?|$)/; //Match "/lab" at end of url or "/lab/" or "/lab?" anywhere
|
91
91
|
var parsed = regex.exec(loc.href);
|
92
92
|
if (parsed && parsed.length > 0) {
|
93
93
|
connect(loc.href.substring(0,parsed.index) + "/proxy/" + port);
|
lavavu/html/webview.html
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
<input id="fileinput" type="file" style="visibility:hidden" onchange="useFileInput(this)" />
|
29
29
|
|
30
|
-
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@1.9.
|
30
|
+
<script async src="https://cdn.jsdelivr.net/gh/lavavu/lavavu.github.io@1.9.8/LavaVu-amalgamated.min.js"></script>
|
31
31
|
<!--script src="dat.gui.min.js"></script>
|
32
32
|
<script src="OK-min.js"></script>
|
33
33
|
|
lavavu/lavavu.py
CHANGED
@@ -23,7 +23,7 @@ __all__ = ['Viewer', 'Object', 'Properties', 'ColourMap', 'DrawData', 'Figure',
|
|
23
23
|
import os
|
24
24
|
#must be an object or won't be referenced from __init__.py import
|
25
25
|
#(enures values are passed on when set externally)
|
26
|
-
settings = {"default_args" : [], "echo_fails" : False, "quality_override" : None}
|
26
|
+
settings = {"default_args" : [], "echo_fails" : False, "quality_override" : None, "test_mode" : False}
|
27
27
|
#Default arguments for viewer creation
|
28
28
|
_val = os.environ.get('LV_ARGS')
|
29
29
|
if _val:
|
@@ -36,6 +36,10 @@ if _val:
|
|
36
36
|
_val = os.environ.get('LV_QUALITY')
|
37
37
|
if _val:
|
38
38
|
settings["quality_override"] = int(_val)
|
39
|
+
#Test mode - changes some behaviour to support automated testing
|
40
|
+
_val = os.environ.get('LV_TEST')
|
41
|
+
if _val:
|
42
|
+
settings["test_mode"] = bool(_val)
|
39
43
|
|
40
44
|
import json
|
41
45
|
import math
|
@@ -54,6 +58,7 @@ import asyncio
|
|
54
58
|
import quaternion as quat
|
55
59
|
import platform
|
56
60
|
import matplotlib
|
61
|
+
from pathlib import Path
|
57
62
|
|
58
63
|
if sys.version_info[0] < 3:
|
59
64
|
print("Python 3 required. LavaVu no longer supports Python 2.7.")
|
@@ -3562,7 +3567,6 @@ class Viewer(dict):
|
|
3562
3567
|
ll = len(self.objects.list) #Save list length before load
|
3563
3568
|
if not self.app.loadFile(filename):
|
3564
3569
|
#Support trimesh formats
|
3565
|
-
from pathlib import Path
|
3566
3570
|
path = Path(filename)
|
3567
3571
|
ext = path.suffix.lower()[1:]
|
3568
3572
|
import convert
|
@@ -3876,6 +3880,9 @@ class Viewer(dict):
|
|
3876
3880
|
"""
|
3877
3881
|
Render a new frame, explicit display update
|
3878
3882
|
"""
|
3883
|
+
if settings["test_mode"] and self.recording and self.recording.framecount != 0:
|
3884
|
+
#Skip rendering all except first and last frames when testing
|
3885
|
+
return
|
3879
3886
|
self.app.render()
|
3880
3887
|
#Video recording?
|
3881
3888
|
if self.recording:
|
@@ -4305,7 +4312,7 @@ class Viewer(dict):
|
|
4305
4312
|
#This is thread safe as doesn't load texture
|
4306
4313
|
return self.app.imageFromFile(filename)
|
4307
4314
|
|
4308
|
-
def testimages(self, imagelist=None, tolerance=TOL_DEFAULT, expectedPath='expected/', outputPath='./', clear=True):
|
4315
|
+
def testimages(self, imagelist=None, tolerance=TOL_DEFAULT, expectedPath='expected/', outputPath='./', png=True, jpg=False, clear=True):
|
4309
4316
|
"""
|
4310
4317
|
Compare a list of images to expected images for testing
|
4311
4318
|
|
@@ -4320,6 +4327,10 @@ class Viewer(dict):
|
|
4320
4327
|
Where to find the expected result images (should have the same filenames as output images)
|
4321
4328
|
outputPath : str
|
4322
4329
|
Where to find the output images
|
4330
|
+
png : boolean
|
4331
|
+
Check png image outputs, defaults to True
|
4332
|
+
jpng : boolean
|
4333
|
+
Check jpg image outputs, defaults to False
|
4323
4334
|
clear : boolean
|
4324
4335
|
If the test passes the output images will be deleted, set to False to disable deletion
|
4325
4336
|
"""
|
@@ -4333,14 +4344,17 @@ class Viewer(dict):
|
|
4333
4344
|
#No expected images yet, just get images in cwd
|
4334
4345
|
#will be copied in to expected in testimage()
|
4335
4346
|
pass
|
4336
|
-
imagelist =
|
4337
|
-
|
4347
|
+
imagelist = []
|
4348
|
+
if png:
|
4349
|
+
imagelist += glob.glob("*.png")
|
4350
|
+
if jpg:
|
4351
|
+
imagelist += glob.glob("*.jpg")
|
4338
4352
|
imagelist.sort(key=os.path.getmtime)
|
4339
4353
|
os.chdir(cwd)
|
4340
4354
|
|
4341
4355
|
for f in sorted(imagelist):
|
4342
|
-
outfile = outputPath
|
4343
|
-
expfile = expectedPath
|
4356
|
+
outfile = os.path.join(outputPath, f)
|
4357
|
+
expfile = os.path.join(expectedPath, f)
|
4344
4358
|
results.append(self.testimage(expfile, outfile, tolerance, clear))
|
4345
4359
|
|
4346
4360
|
#Combined result
|
@@ -5504,9 +5518,6 @@ class Video(object):
|
|
5504
5518
|
**kwargs :
|
5505
5519
|
Any additional keyword args will also be passed as options to the encoder
|
5506
5520
|
"""
|
5507
|
-
if av is None:
|
5508
|
-
raise(ImportError("Video output not supported without pyAV - pip install av"))
|
5509
|
-
return
|
5510
5521
|
self.resolution = list(resolution)
|
5511
5522
|
if self.resolution[0] == 0 or self.resolution[1] == 0:
|
5512
5523
|
self.resolution = (viewer.app.viewer.width, viewer.app.viewer.height)
|
@@ -5515,7 +5526,20 @@ class Video(object):
|
|
5515
5526
|
self.framerate = framerate
|
5516
5527
|
self.quality = quality
|
5517
5528
|
self.viewer = viewer
|
5518
|
-
self.filename = filename
|
5529
|
+
self.filename = Path(filename)
|
5530
|
+
if settings["test_mode"]:
|
5531
|
+
#Force png output when testing
|
5532
|
+
encoder = 'png'
|
5533
|
+
if av is None or encoder == 'png' or encoder == 'jpg':
|
5534
|
+
if av is None:
|
5535
|
+
print("Video output not supported without pyAV - pip install av, writing image frames instead")
|
5536
|
+
self.encoder = 'png' if encoder == 'png' else 'jpg'
|
5537
|
+
p = self.filename
|
5538
|
+
self.basename = p.stem
|
5539
|
+
self.filename = p.parent / p.stem
|
5540
|
+
self.framecount = 0
|
5541
|
+
return
|
5542
|
+
|
5519
5543
|
self.player = player
|
5520
5544
|
if self.player is None:
|
5521
5545
|
#Default player is half output resolution, unless < 900 then full
|
@@ -5547,6 +5571,12 @@ class Video(object):
|
|
5547
5571
|
#Compression level, lower = high quality
|
5548
5572
|
#See also: https://github.com/PyAV-Org/PyAV/blob/main/tests/test_encode.py
|
5549
5573
|
options = {}
|
5574
|
+
if self.encoder == 'jpg' or self.encoder == 'png':
|
5575
|
+
if not settings["test_mode"]:
|
5576
|
+
self.filename.mkdir(exist_ok=True)
|
5577
|
+
self.viewer.recording = self
|
5578
|
+
return
|
5579
|
+
|
5550
5580
|
if self.encoder == 'h264' or self.encoder == 'libx265':
|
5551
5581
|
#Only have default options for h264/265 for now
|
5552
5582
|
if self.quality == 1:
|
@@ -5576,7 +5606,7 @@ class Video(object):
|
|
5576
5606
|
options.update(self.options)
|
5577
5607
|
|
5578
5608
|
#print(options)
|
5579
|
-
self.container = av.open(self.filename, mode="w")
|
5609
|
+
self.container = av.open(str(self.filename), mode="w")
|
5580
5610
|
self.stream = self.container.add_stream(self.encoder, rate=self.framerate, options=options)
|
5581
5611
|
self.stream.width = self.resolution[0]
|
5582
5612
|
self.stream.height = self.resolution[1]
|
@@ -5602,10 +5632,19 @@ class Video(object):
|
|
5602
5632
|
Write a frame, called when viewer.render() is called
|
5603
5633
|
while a recording is in progress
|
5604
5634
|
"""
|
5605
|
-
|
5606
|
-
|
5607
|
-
|
5608
|
-
|
5635
|
+
if self.encoder == 'jpg' or self.encoder == 'png':
|
5636
|
+
if settings["test_mode"]:
|
5637
|
+
#Don't output in subdir
|
5638
|
+
fn = f"{self.framecount:06}_{self.basename}.{self.encoder}"
|
5639
|
+
else:
|
5640
|
+
fn = self.filename / f"{self.framecount:06}_{self.basename}.{self.encoder}"
|
5641
|
+
self.framecount += 1
|
5642
|
+
self.viewer.image(str(fn), resolution=self.resolution)
|
5643
|
+
else:
|
5644
|
+
img = self.viewer.rawimage(resolution=self.resolution, channels=3)
|
5645
|
+
frame = av.VideoFrame.from_ndarray(img.data, format="rgb24")
|
5646
|
+
for packet in self.stream.encode(frame):
|
5647
|
+
self.container.mux(packet)
|
5609
5648
|
|
5610
5649
|
def pause(self):
|
5611
5650
|
"""
|
@@ -5621,6 +5660,15 @@ class Video(object):
|
|
5621
5660
|
Stop recording, final frames will be written and file closed, ready to play.
|
5622
5661
|
No further frames will be added to the video
|
5623
5662
|
"""
|
5663
|
+
if self.encoder == 'jpg' or self.encoder == 'png':
|
5664
|
+
self.viewer.recording = None
|
5665
|
+
if settings["test_mode"]:
|
5666
|
+
#Render the last frame for tests
|
5667
|
+
self.viewer.app.render()
|
5668
|
+
fn = f"{self.framecount:06}_{self.basename}.{self.encoder}"
|
5669
|
+
self.viewer.image(str(fn), resolution=self.resolution)
|
5670
|
+
self.framecount = 0
|
5671
|
+
return
|
5624
5672
|
# Flush stream
|
5625
5673
|
for packet in self.stream.encode():
|
5626
5674
|
self.container.mux(packet)
|
@@ -5648,7 +5696,14 @@ class Video(object):
|
|
5648
5696
|
if image.size == self.resolution[0] * self.resolution[1] * 4:
|
5649
5697
|
image = image.reshape(self.resolution[0], self.resolution[1], 4)
|
5650
5698
|
image = image[::,::,:3] #Remove alpha channel
|
5651
|
-
|
5699
|
+
|
5700
|
+
if self.encoder == 'jpg' or self.encoder == 'png':
|
5701
|
+
from PIL import Image as PILImage
|
5702
|
+
img = PILImage.fromarray(image)
|
5703
|
+
fn = self.filename / f"{self.framecount:06}_{self.basename}.{self.encoder}"
|
5704
|
+
self.framecount += 1
|
5705
|
+
img.save(fn)
|
5706
|
+
return
|
5652
5707
|
|
5653
5708
|
frame = av.VideoFrame.from_ndarray(image, format="rgb24")
|
5654
5709
|
for packet in self.stream.encode(frame):
|
@@ -5658,7 +5713,11 @@ class Video(object):
|
|
5658
5713
|
"""
|
5659
5714
|
Show the video in an inline player if in an interactive notebook
|
5660
5715
|
"""
|
5661
|
-
|
5716
|
+
if self.encoder == 'jpg' or self.encoder == 'png':
|
5717
|
+
from IPython.display import display,HTML
|
5718
|
+
display(HTML('<p>Video written to images, no player available</p>'))
|
5719
|
+
else:
|
5720
|
+
player(self.filename, **self.player)
|
5662
5721
|
|
5663
5722
|
def __enter__(self):
|
5664
5723
|
self.start()
|
@@ -5671,6 +5730,8 @@ class Video(object):
|
|
5671
5730
|
self.play()
|
5672
5731
|
else:
|
5673
5732
|
print('Recording failed: ', exc_value)
|
5733
|
+
import traceback
|
5734
|
+
print(traceback.format_exc())
|
5674
5735
|
return True
|
5675
5736
|
|
5676
5737
|
#Wrapper class for raw image data
|
lavavu/shaders/triShader.vert
CHANGED
@@ -8,7 +8,6 @@ uniform mat4 uMVMatrix;
|
|
8
8
|
uniform mat4 uPMatrix;
|
9
9
|
uniform mat4 uNMatrix;
|
10
10
|
|
11
|
-
uniform vec4 uColour;
|
12
11
|
uniform vec4 uLightPos;
|
13
12
|
|
14
13
|
out vec4 vColour;
|
@@ -26,11 +25,10 @@ void main(void)
|
|
26
25
|
|
27
26
|
vNormal = normalize(mat3(uNMatrix) * aVertexNormal);
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
//This shader only applies attribute colour
|
29
|
+
//uColour is set for other/custom shaders
|
30
|
+
//Note uOpacity is "alpha" prop, "oapcity" is passed via attrib
|
31
|
+
vColour = aVertexColour;
|
34
32
|
vTexCoord = aVertexTexCoord;
|
35
33
|
vFlatColour = vColour;
|
36
34
|
vVertex = aVertexPosition;
|
lavavu/tracers.py
CHANGED
@@ -24,7 +24,7 @@ def random_particles(count, lowerbound=[0,0,0], upperbound=[1,1,1], dims=3):
|
|
24
24
|
return numpy.stack(p).T
|
25
25
|
|
26
26
|
class Tracers():
|
27
|
-
def __init__(self, grid, count=1000, lowerbound=None, upperbound=None, limit=None, age=4, respawn_chance=0.2, speed_multiply=1.0, height=0.0, viewer=None):
|
27
|
+
def __init__(self, grid, count=1000, lowerbound=None, upperbound=None, limit=None, age=4, respawn_chance=0.2, speed_multiply=1.0, height=0.0, label='', viewer=None):
|
28
28
|
"""
|
29
29
|
Seed random particles into a vector field and trace their positions
|
30
30
|
|
@@ -52,6 +52,8 @@ class Tracers():
|
|
52
52
|
Speed multiplier, scaling factor for the velocity taken from the vector values
|
53
53
|
height : float
|
54
54
|
A fixed height value, all positions will be given this height as their Z component
|
55
|
+
label : str
|
56
|
+
Name label prefix for the visualisation objects when plotting
|
55
57
|
viewer : lavavu.Viewer
|
56
58
|
Viewer object for plotting functions
|
57
59
|
"""
|
@@ -100,6 +102,7 @@ class Tracers():
|
|
100
102
|
self.speed_multiply = speed_multiply
|
101
103
|
self.height = height
|
102
104
|
|
105
|
+
self.label = label
|
103
106
|
self.lv = viewer
|
104
107
|
self.points = None
|
105
108
|
self.arrows = None
|
@@ -157,8 +160,8 @@ class Tracers():
|
|
157
160
|
self.speed[r] = 0.0
|
158
161
|
|
159
162
|
if self.lv:
|
160
|
-
positions = self.
|
161
|
-
if
|
163
|
+
positions = self.get_positions()
|
164
|
+
if positions.shape[1] == 2 and self.height != 0:
|
162
165
|
#Convert to 3d and set z coord to height
|
163
166
|
shape = list(positions.shape)
|
164
167
|
shape[-1] = 3
|
@@ -180,15 +183,25 @@ class Tracers():
|
|
180
183
|
if len(self.tracers["colourmap"]):
|
181
184
|
self.tracers.values(self.speed)
|
182
185
|
|
186
|
+
def get_positions(self):
|
187
|
+
"""
|
188
|
+
This funcion can be overridden if positions need to be transformed
|
189
|
+
in any way before plotting, eg: plotting on spherical earth model
|
190
|
+
"""
|
191
|
+
return self.positions
|
192
|
+
|
193
|
+
def prefix(self):
|
194
|
+
return self.label + '_' if len(self.label) else ''
|
195
|
+
|
183
196
|
def plot_points(self, **kwargs):
|
184
197
|
if self.lv is not None and self.points is None:
|
185
|
-
self.points = self.lv.points('tracer_points', **kwargs)
|
198
|
+
self.points = self.lv.points(self.prefix() + 'tracer_points', **kwargs)
|
186
199
|
|
187
200
|
def plot_arrows(self, **kwargs):
|
188
201
|
if self.lv is not None and self.arrows is None:
|
189
|
-
self.arrows = self.lv.vectors('tracer_arrows', **kwargs)
|
202
|
+
self.arrows = self.lv.vectors(self.prefix() + 'tracer_arrows', **kwargs)
|
190
203
|
|
191
204
|
def plot_tracers(self, **kwargs):
|
192
205
|
if self.lv is not None and self.tracers is None:
|
193
|
-
self.tracers = self.lv.tracers('tracers', dims=self.count, limit=self.limit, **kwargs)
|
206
|
+
self.tracers = self.lv.tracers(self.prefix() + 'tracers', dims=self.count, limit=self.limit, **kwargs)
|
194
207
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lavavu
|
3
|
-
Version: 1.9.
|
3
|
+
Version: 1.9.8
|
4
4
|
Summary: Python interface to LavaVu OpenGL 3D scientific visualisation utilities
|
5
5
|
Author-email: Owen Kaluza <owen@kaluza.id.au>
|
6
6
|
License: ### Licensing
|
@@ -224,7 +224,7 @@ Dynamic: license-file
|
|
224
224
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Test)
|
225
225
|
[](https://github.com/lavavu/LavaVu/actions?query=workflow:Deploy)
|
226
226
|
[](https://zenodo.org/badge/latestdoi/45163055)
|
227
|
-
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.
|
227
|
+
[](https://mybinder.org/v2/gh/lavavu/LavaVu/1.9.8)
|
228
228
|
|
229
229
|
A scientific visualisation tool with a python interface for fast and flexible visual analysis.
|
230
230
|
|
@@ -1,10 +1,16 @@
|
|
1
|
-
lavavu
|
1
|
+
lavavu-1.9.8.dist-info/RECORD,,
|
2
|
+
lavavu-1.9.8.dist-info/WHEEL,sha256=sunMa2yiYbrNLGeMVDqEA0ayyJbHlex7SCn1TZrEq60,136
|
3
|
+
lavavu-1.9.8.dist-info/entry_points.txt,sha256=LC2qXR6EMe45Cb7zGAF99R9HFrAECP6Qkp_YuG6HZB0,44
|
4
|
+
lavavu-1.9.8.dist-info/top_level.txt,sha256=JptS0k1nlBumjLs_0hITr3_XUJhxqvKBXD2jGho3E3A,7
|
5
|
+
lavavu-1.9.8.dist-info/METADATA,sha256=Bt4QlWtORr3Qydbw-2b9fbksdAAVzpjrtokM6hOaGBk,17877
|
6
|
+
lavavu-1.9.8.dist-info/licenses/LICENSE.md,sha256=EhfNgC6BYh5gDEaq4tcrN3S0wbO4CtJO46botJnCF8c,8603
|
7
|
+
lavavu/lavavu.py,sha256=v7tXwp6gQzu1F05hHyALng8FXznv4rVwdCJ3sO65O8o,221223
|
2
8
|
lavavu/vutils.py,sha256=6Vm_xl1bp9mWlfk7jgLDwbRw-tdE_oxin77YkLel3_4,5437
|
3
|
-
lavavu/dict.json,sha256=
|
9
|
+
lavavu/dict.json,sha256=EcJsoHsiHDDmM8FGuBRF6eOG2nMr-Pda3sxE6v6KB80,52952
|
4
10
|
lavavu/server.py,sha256=L-_yPCbNfwYxJCPjDQtr_lxPnDp4oMNVFyxXhBERYrQ,12468
|
5
11
|
lavavu/points.py,sha256=jRRtA6CrcA46Y2jUJmkxnIiVoMC5a14xEd_ojhmjhz4,5871
|
6
12
|
lavavu/LavaVuPython.py,sha256=ixhceiAr0gGGfCe3d2cY0IIgS4hbgoYJGa_RfgAmmrU,33207
|
7
|
-
lavavu/tracers.py,sha256
|
13
|
+
lavavu/tracers.py,sha256=e10H8evUH7V-XUSkHjfoakaA4SfeuQ8-gWzfa86RGzQ,8997
|
8
14
|
lavavu/convert.py,sha256=tbYRjLE2l1hI4d6tsW41Lia1JXmrWSc0-JAYCiMrjys,35516
|
9
15
|
lavavu/control.py,sha256=s32rtLPXXYtxpeXd6-iHdupmaMTJ3KhK6Vq-CLjf9OQ,66755
|
10
16
|
lavavu/__init__.py,sha256=JroZQiUbuVN7ifixk2zNDGlyLGaM8bqfRbw4D_F9qIQ,191
|
@@ -12,9 +18,9 @@ lavavu/amalgamate.py,sha256=Xloq1IZ4VUvYiROzQtwKcQIWC65c7EZrdiGVhZdolL8,586
|
|
12
18
|
lavavu/aserver.py,sha256=SfFvLeDTcx1XtS8fY_HIrDmh3q9HicCBRSAriY5yyOE,12003
|
13
19
|
lavavu/font.bin,sha256=fvi5zkvmq6gh9v3jXedBVuxNJWKmHtbjECzv6eT9wb4,225360
|
14
20
|
lavavu/__main__.py,sha256=EbDetijCjyoiNxmExqnDGoRVs996tSVave5DML9zuMY,235
|
15
|
-
lavavu/_LavaVuPython.cpython-311-darwin.so,sha256=
|
21
|
+
lavavu/_LavaVuPython.cpython-311-darwin.so,sha256=qBWKuihjidXcRLZWJ15TSKWzXV1tJCxuXgIWW30q1sw,3927616
|
16
22
|
lavavu/html/control.css,sha256=PVLwmle00ciEckUV5ZIRmI3Whxhl7-mlVexnyyxoU70,3259
|
17
|
-
lavavu/html/control.js,sha256=
|
23
|
+
lavavu/html/control.js,sha256=dBjFHgDal3aixVWoQuMOt_ZyhiGSAcEUFJJx9I_ndOQ,11719
|
18
24
|
lavavu/html/gui.css,sha256=PRDLsYwM6cgLC9zZsEAG0dnnSd-HYH6oSEfsdEBkuxk,582
|
19
25
|
lavavu/html/favicon.ico,sha256=OrIWwvxOSnOCuynrGRUyEIVQng0ZwA9Rrz89S9eiog0,1150
|
20
26
|
lavavu/html/LavaVu-amalgamated.css,sha256=iE2xrxFcwmY0AcASrXxNa_RpvFEbS_YO4H5OILbPteE,8640
|
@@ -27,7 +33,7 @@ lavavu/html/dat.gui.min.js,sha256=S4_QjoXe4IOpU0f0Sj5jEQLTWPoX9uRl1ohB91jyhuw,56
|
|
27
33
|
lavavu/html/OK-min.js,sha256=-4Gc1-dWfxP_w6r9ZOHa8u-X2BlGUoSQbX68lwCxQ3E,39115
|
28
34
|
lavavu/html/emscripten.css,sha256=wkaIJhXaxuMchinQX9Z8c12cJomyvFQMeIZ62WGQEPQ,1813
|
29
35
|
lavavu/html/drawbox.js,sha256=SJxFSmWd7QVFI5__66hFkKzLKeqg1JPcx-gJuqdMkXw,34590
|
30
|
-
lavavu/html/webview.html,sha256=
|
36
|
+
lavavu/html/webview.html,sha256=f67d1NMRiSRYYjbSEtwpzzouzfK42EamrqEfoBPrh7k,1521
|
31
37
|
lavavu/html/emscripten-template.js,sha256=h63mzl3Lv7aQT1wMOiOucPOvHTJjpKkzsL-SFVYaZlA,6135
|
32
38
|
lavavu/html/draw.js,sha256=57LlHlYRh0IvWVwzGDnF6PaCxYLzokpokLNCuZlG1ds,84108
|
33
39
|
lavavu/html/dat-gui-light-theme.css,sha256=uPhvJs-1IAsdxudItyOw8lZy8Hrih0zmFM1u-xRwZ-M,1142
|
@@ -41,15 +47,9 @@ lavavu/shaders/lineShader.frag,sha256=2PQBMcb149jVKnsBhTvU1vf94x91O0kAdOBTSs8OpG
|
|
41
47
|
lavavu/shaders/fontShader.frag,sha256=clgomy2lu-1u7w0GwFd0BNU_L3-SkYt8zv03N5ciJug,351
|
42
48
|
lavavu/shaders/triShader.frag,sha256=SkPatq2s7Osa5o7U3lg-7We8ldY0oHZHCLuQjRY4Vgk,4601
|
43
49
|
lavavu/shaders/default.vert,sha256=3xKybexF39UGsESMLQQcqHlE1MgLCDEXUMLz4sr5blQ,352
|
44
|
-
lavavu/shaders/triShader.vert,sha256=
|
50
|
+
lavavu/shaders/triShader.vert,sha256=U_G_74Jybaw20-PI-NDgaLDDfxGhURHMxdvNYXEkBjc,1156
|
45
51
|
lavavu/shaders/lineShader.vert,sha256=5HDJMphXW438yMc0I2NtBdnvF6uXrOUac9hjk3S7mfk,501
|
46
52
|
lavavu/shaders/fontShader.vert,sha256=yCBmRugaPUeUQUdIh62-AK_5KELiJqVS2M82iyIqPwo,290
|
47
53
|
lavavu/shaders/pointShader.frag,sha256=3zREBdsimlL9fAXBPjhzomGaFUWmlG_QYkhwMTVURHQ,3291
|
48
54
|
lavavu/shaders/volumeShader.vert,sha256=uGdQjGqi7V5kE6V7nxymfugtU4cbf6u570xBy13RgmY,78
|
49
55
|
lavavu/shaders/default.frag,sha256=5XLYVfLwzN0sFT3aMYGmxbyquA_cmndp55YCOuy1t4E,180
|
50
|
-
lavavu-1.9.6.dist-info/RECORD,,
|
51
|
-
lavavu-1.9.6.dist-info/WHEEL,sha256=EfZGgIDXTDki1cNGEkgBr7YEgShBrw-nMmb-y67Rxxs,136
|
52
|
-
lavavu-1.9.6.dist-info/entry_points.txt,sha256=LC2qXR6EMe45Cb7zGAF99R9HFrAECP6Qkp_YuG6HZB0,44
|
53
|
-
lavavu-1.9.6.dist-info/top_level.txt,sha256=JptS0k1nlBumjLs_0hITr3_XUJhxqvKBXD2jGho3E3A,7
|
54
|
-
lavavu-1.9.6.dist-info/METADATA,sha256=EHgjIlNax60denK4kKXeAJziT1zFhX8e-9OqQUVd9WE,17877
|
55
|
-
lavavu-1.9.6.dist-info/licenses/LICENSE.md,sha256=EhfNgC6BYh5gDEaq4tcrN3S0wbO4CtJO46botJnCF8c,8603
|
File without changes
|
File without changes
|
File without changes
|