Skip to content

Commit 7d4cb86

Browse files
committed
fix(api): add update method and fix tests
1 parent b0b509d commit 7d4cb86

File tree

6 files changed

+19
-36
lines changed

6 files changed

+19
-36
lines changed

examples/vtk_cone_bare_jpg.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def __init__(self, window, name, target_fps=30):
9898

9999
def _get_metadata(self):
100100
return dict(
101-
type="image/jpeg",
101+
type="image/jpeg", # supported mime/type
102102
codec="", # video codec, not relevant here
103103
w=self._view.GetSize()[0],
104104
h=self._view.GetSize()[1],
@@ -152,12 +152,7 @@ def on_interaction(self, origin, event):
152152
self.animating = False
153153
else:
154154
event_str = json.dumps(event)
155-
status = vtkRemoteInteractionAdapter.ProcessEvent(self._iren, event_str)
156-
157-
# Force Render next time InteractiveRender is called
158-
if status:
159-
...
160-
# HELPER.InvalidateCache(self._view)
155+
vtkRemoteInteractionAdapter.ProcessEvent(self._iren, event_str)
161156

162157

163158
@TrameApp()

examples/vtk_cone_bare_raw.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def __init__(self, window, name, target_fps=30):
7676

7777
def _get_metadata(self):
7878
return dict(
79-
type="image/rgb24", # mime time
79+
type="image/rgb24", # supported mime/type
8080
codec="", # video codec, not relevant here
8181
w=self._view.GetSize()[0],
8282
h=self._view.GetSize()[1],
@@ -134,12 +134,7 @@ def on_interaction(self, origin, event):
134134
self.animating = False
135135
else:
136136
event_str = json.dumps(event)
137-
status = vtkRemoteInteractionAdapter.ProcessEvent(self._iren, event_str)
138-
139-
# Force Render next time InteractiveRender is called
140-
if status:
141-
...
142-
# HELPER.InvalidateCache(self._view)
137+
vtkRemoteInteractionAdapter.ProcessEvent(self._iren, event_str)
143138

144139

145140
@TrameApp()

examples/vtk_cone_simple.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def build_ui(self):
152152
@change("resolution")
153153
def update_cone(self, resolution, **kwargs):
154154
self.cone_source.SetResolution(resolution)
155-
self.view_handler.render()
155+
self.view_handler.update()
156156

157157
@change("scale")
158158
def update_scale(self, scale, **_):

tests/test_rca_utils.py

+12-19
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@
1313
from trame_rca.utils import (
1414
RcaEncoder,
1515
RcaRenderScheduler,
16-
get_encode_fn,
17-
encode_np_img_to_format_with_meta,
18-
render_to_image,
16+
VtkImageExtract,
1917
time_now_ms,
20-
vtk_img_to_numpy_array,
2118
)
2219

2320
from vtkmodules.vtkFiltersSources import vtkConeSource
@@ -55,15 +52,11 @@ def a_threed_view():
5552

5653
@pytest.mark.parametrize("img_format", ["jpeg", "png", "avif", "webp"])
5754
def test_a_view_can_be_encoded_to_format(a_threed_view, tmpdir, img_format):
58-
encode_fn = get_encode_fn(RcaEncoder(img_format))
59-
img = encode_fn(
60-
*vtk_img_to_numpy_array(render_to_image(a_threed_view)),
61-
img_format,
62-
100,
55+
img, *_ = RcaEncoder(img_format).encode(
56+
*VtkImageExtract(a_threed_view).img_cols_rows, 100
6357
)
64-
dest_file = Path(tmpdir).joinpath(f"test_img.{img_format}")
65-
with open(dest_file, "wb") as f:
66-
f.write(img)
58+
dest_file = Path(tmpdir) / f"test_img.{img_format}"
59+
dest_file.write_bytes(img)
6760

6861
assert dest_file.is_file()
6962
im = Image.open(dest_file)
@@ -72,18 +65,18 @@ def test_a_view_can_be_encoded_to_format(a_threed_view, tmpdir, img_format):
7265

7366
@pytest.mark.parametrize("img_format", ["jpeg", "png", "avif", "webp"])
7467
def test_np_encode_can_be_done_using_multiprocess(a_threed_view, img_format):
75-
array, cols, rows = vtk_img_to_numpy_array(render_to_image(a_threed_view))
68+
encoder = RcaEncoder(img_format)
69+
array, cols, rows = VtkImageExtract(a_threed_view).img_cols_rows
7670
now_ms = time_now_ms()
77-
encode_fn = get_encode_fn(RcaEncoder(img_format))
7871

7972
with Pool(1) as p:
8073
encoded, meta, ret_now_ms = p.apply(
81-
encode_np_img_to_format_with_meta,
82-
args=(encode_fn, array, img_format, cols, rows, 100, now_ms),
74+
encoder.encode,
75+
args=(array, cols, rows, 100),
8376
)
8477
assert meta
85-
assert meta["st"] == now_ms
86-
assert ret_now_ms == now_ms
78+
assert meta["st"] >= now_ms
79+
assert ret_now_ms >= now_ms
8780
assert encoded
8881

8982

@@ -186,7 +179,7 @@ async def test_groups_close_request_render_together(
186179
await scheduler.close()
187180

188181

189-
@pytest.mark.parametrize("server_path", ["examples/00_cone/app.py"])
182+
@pytest.mark.parametrize("server_path", ["examples/vtk_cone_simple.py"])
190183
def test_rca_view_is_interactive(server):
191184
with SB() as sb:
192185
assert server.port

trame_rca/utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -336,5 +336,5 @@ def schedule_render(self):
336336
"""
337337
self._scheduler.schedule_render()
338338

339-
def render(self):
339+
def update(self):
340340
self.schedule_render()

trame_rca/widgets/rca.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""RCA Widgets only support vue2 for now."""
1+
"""RCA Widgets support both vue2 and vue3."""
22

33
from trame_client.widgets.core import AbstractElement
44
from trame_rca.utils import RcaViewAdapter, RcaRenderScheduler

0 commit comments

Comments
 (0)