Skip to content

Commit 96b10c5

Browse files
authored
Merge pull request #102 from Geode-solutions/fix/no-render
Fix/no render
2 parents 94bf49e + 97597e0 commit 96b10c5

File tree

12 files changed

+23
-89
lines changed

12 files changed

+23
-89
lines changed

opengeodeweb_viewer_schemas.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,9 +1304,9 @@
13041304
"required": [],
13051305
"additionalProperties": false
13061306
},
1307-
"render_now": {
1308-
"$id": "opengeodeweb_viewer.viewer.render_now",
1309-
"rpc": "render_now",
1307+
"render": {
1308+
"$id": "opengeodeweb_viewer.viewer.render",
1309+
"rpc": "render",
13101310
"type": "object",
13111311
"properties": {},
13121312
"required": [],

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,3 @@ wslink==1.12.4
6161
yarl>=1
6262
# via aiohttp
6363

64-
opengeodeweb-microservice==1.*,>=1.0.8

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 6 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -31,81 +31,34 @@ def registerObject(
3131

3232
renderWindow = self.getView("-1")
3333
renderer = renderWindow.GetRenderers().GetFirstRenderer()
34+
resetCamara = True
35+
for registered_actor in renderer.GetActors():
36+
if registered_actor.visibility == True:
37+
resetCamara = False
3438
renderer.AddActor(data.actor)
35-
renderer.ResetCamera()
36-
renderWindow.Render()
37-
self.render()
39+
if resetCamara:
40+
renderer.ResetCamera()
3841

3942
def deregisterObject(self, data_id: str) -> None:
4043
actor = self.get_object(data_id).actor
4144
renderWindow = self.getView("-1")
4245
renderer = renderWindow.GetRenderers().GetFirstRenderer()
4346
renderer.RemoveActor(actor)
4447
self.deregister_object(data_id)
45-
self.render()
46-
47-
def applyTextures(self, data_id: str, textures: list[dict[str, str]]) -> None:
48-
textures_array: list[vtkTexture] = []
49-
images_reader_array: list[vtkXMLImageDataReader] = []
50-
51-
data = self.get_object(data_id)
52-
mapper = data["mapper"]
53-
actor = data["actor"]
54-
reader = data["reader"]
55-
56-
polydata_mapper = mapper.GetPolyDataMapper()
57-
poly_data = reader.GetPolyDataOutput()
58-
59-
for index, value in enumerate(textures):
60-
texture_name = value["texture_name"]
61-
id_texture = value["id"]
62-
print(f"{texture_name=} {id_texture=}", flush=True)
63-
64-
new_texture = vtkTexture()
65-
image_reader = vtkXMLImageDataReader()
66-
texture_path = self.get_data_file_path(data_id, id_texture)
67-
image_reader.SetFileName(texture_path)
68-
69-
shader_texture_name = f"VTK_TEXTURE_UNIT_{index}"
70-
polydata_mapper.MapDataArrayToMultiTextureAttribute(
71-
shader_texture_name,
72-
texture_name,
73-
vtkDataObject.FIELD_ASSOCIATION_POINTS,
74-
)
75-
76-
if index == 0:
77-
new_texture.SetBlendingMode(
78-
vtkTexture.VTK_TEXTURE_BLENDING_MODE_REPLACE
79-
)
80-
else:
81-
new_texture.SetBlendingMode(vtkTexture.VTK_TEXTURE_BLENDING_MODE_ADD)
82-
83-
images_reader_array.append(image_reader)
84-
new_texture.SetInputConnection(image_reader.GetOutputPort())
85-
86-
actor.GetProperty().SetTexture(shader_texture_name, new_texture)
87-
88-
textures_array.append(new_texture)
89-
images_reader_array.append(image_reader)
90-
91-
self.render()
9248

9349
def SetVisibility(self, data_id: str, visibility: bool) -> None:
9450
actor = self.get_object(data_id).actor
9551
actor.SetVisibility(visibility)
96-
self.render()
9752

9853
def SetOpacity(self, data_id: str, opacity: float) -> None:
9954
actor = self.get_object(data_id).actor
10055
actor.GetProperty().SetOpacity(opacity)
101-
self.render()
10256

10357
def SetColor(self, data_id: str, red: int, green: int, blue: int) -> None:
10458
mapper = self.get_object(data_id).mapper
10559
mapper.ScalarVisibilityOff()
10660
actor = self.get_object(data_id).actor
10761
actor.GetProperty().SetColor([red / 255, green / 255, blue / 255])
108-
self.render()
10962

11063
def SetEdgesVisibility(self, data_id: str, visibility: bool) -> None:
11164
actor = self.get_object(data_id).actor
@@ -114,12 +67,10 @@ def SetEdgesVisibility(self, data_id: str, visibility: bool) -> None:
11467
self.SetVisibility(data_id, visibility)
11568
else:
11669
actor.GetProperty().SetEdgeVisibility(visibility)
117-
self.render()
11870

11971
def SetEdgesWidth(self, data_id: str, width: float) -> None:
12072
actor = self.get_object(data_id).actor
12173
actor.GetProperty().SetEdgeWidth(width)
122-
self.render()
12374

12475
def SetEdgesColor(self, data_id: str, red: int, green: int, blue: int) -> None:
12576
actor = self.get_object(data_id).actor
@@ -128,7 +79,6 @@ def SetEdgesColor(self, data_id: str, red: int, green: int, blue: int) -> None:
12879
self.SetColor(data_id, red, green, blue)
12980
else:
13081
actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255])
131-
self.render()
13282

13383
def SetPointsVisibility(self, data_id: str, visibility: bool) -> None:
13484
actor = self.get_object(data_id).actor
@@ -137,12 +87,10 @@ def SetPointsVisibility(self, data_id: str, visibility: bool) -> None:
13787
self.SetVisibility(data_id, visibility)
13888
else:
13989
actor.GetProperty().SetVertexVisibility(visibility)
140-
self.render()
14190

14291
def SetPointsSize(self, data_id: str, size: float) -> None:
14392
actor = self.get_object(data_id).actor
14493
actor.GetProperty().SetPointSize(size)
145-
self.render()
14694

14795
def SetPointsColor(self, data_id: str, red: int, green: int, blue: int) -> None:
14896
actor = self.get_object(data_id).actor
@@ -151,23 +99,20 @@ def SetPointsColor(self, data_id: str, red: int, green: int, blue: int) -> None:
15199
self.SetColor(data_id, red, green, blue)
152100
else:
153101
actor.GetProperty().SetVertexColor([red / 255, green / 255, blue / 255])
154-
self.render()
155102

156103
def SetBlocksVisibility(
157104
self, data_id: str, block_ids: list[int], visibility: bool
158105
) -> None:
159106
mapper = self.get_object(data_id).mapper
160107
for block_id in block_ids:
161108
mapper.SetBlockVisibility(block_id, visibility)
162-
self.render()
163109

164110
def SetBlocksColor(
165111
self, data_id: str, block_ids: list[int], red: int, green: int, blue: int
166112
) -> None:
167113
mapper = self.get_object(data_id).mapper
168114
for block_id in block_ids:
169115
mapper.SetBlockColor(block_id, [red / 255, green / 255, blue / 255])
170-
self.render()
171116

172117
def clearColors(self, data_id: str) -> None:
173118
db = self.get_object(data_id)

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ def meshApplyTextures(self, rpc_params: RpcParams) -> None:
128128
break
129129
actor = self.get_object(mesh_id).actor
130130
actor.SetTexture(texture)
131-
self.render()
132131

133132
def displayAttributeOnVertices(self, data_id: str, name: str) -> None:
134133
reader = self.get_object(data_id).reader
@@ -138,7 +137,6 @@ def displayAttributeOnVertices(self, data_id: str, name: str) -> None:
138137
mapper.ScalarVisibilityOn()
139138
mapper.SetScalarModeToUsePointData()
140139
mapper.SetScalarRange(points.GetScalars().GetRange())
141-
self.render()
142140

143141
def displayAttributeOnCells(self, data_id: str, name: str) -> None:
144142
reader = self.get_object(data_id).reader
@@ -148,4 +146,3 @@ def displayAttributeOnCells(self, data_id: str, name: str) -> None:
148146
mapper.ScalarVisibilityOn()
149147
mapper.SetScalarModeToUseCellData()
150148
mapper.SetScalarRange(cells.GetScalars().GetRange())
151-
self.render()

src/opengeodeweb_viewer/rpc/viewer/schemas/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .set_background_color import *
66
from .reset_visualization import *
77
from .reset_camera import *
8-
from .render_now import *
8+
from .render import *
99
from .picked_ids import *
1010
from .grid_scale import *
1111
from .get_point_position import *

src/opengeodeweb_viewer/rpc/viewer/schemas/render_now.json renamed to src/opengeodeweb_viewer/rpc/viewer/schemas/render.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"rpc": "render_now",
2+
"rpc": "render",
33
"type": "object",
44
"properties": {},
55
"required": [],

src/opengeodeweb_viewer/rpc/viewer/schemas/render_now.py renamed to src/opengeodeweb_viewer/rpc/viewer/schemas/render.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33

44

55
@dataclass
6-
class RenderNow(DataClassJsonMixin):
6+
class Render(DataClassJsonMixin):
77
pass

src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,6 @@ def resetVisualization(self, rpc_params: RpcParams) -> None:
9393
renderer.SetBackground([180 / 255, 180 / 255, 180 / 255])
9494

9595
renderer.ResetCamera()
96-
renderWindow.Render()
97-
self.render()
9896

9997
@exportRpc(viewer_prefix + viewer_schemas_dict["set_background_color"]["rpc"])
10098
def setBackgroundColor(self, rpc_params: RpcParams) -> None:
@@ -109,9 +107,6 @@ def setBackgroundColor(self, rpc_params: RpcParams) -> None:
109107
renderer = renderWindow.GetRenderers().GetFirstRenderer()
110108

111109
renderer.SetBackground([color.r / 255, color.g / 255, color.b / 255])
112-
renderer.ResetCamera()
113-
renderWindow.Render()
114-
self.render()
115110

116111
@exportRpc(viewer_prefix + viewer_schemas_dict["reset_camera"]["rpc"])
117112
def resetCamera(self, rpc_params: RpcParams) -> None:
@@ -120,8 +115,6 @@ def resetCamera(self, rpc_params: RpcParams) -> None:
120115
)
121116
renderWindow = self.getView("-1")
122117
renderWindow.GetRenderers().GetFirstRenderer().ResetCamera()
123-
renderWindow.Render()
124-
self.render()
125118

126119
@exportRpc(viewer_prefix + viewer_schemas_dict["take_screenshot"]["rpc"])
127120
def takeScreenshot(self, rpc_params: RpcParams) -> dict[str, str | bytes]:
@@ -187,7 +180,6 @@ def updateData(self, rpc_params: RpcParams) -> None:
187180
tag,
188181
)
189182
mapper.SetScalarRange(scalars.GetRange())
190-
self.render()
191183

192184
@exportRpc(viewer_prefix + viewer_schemas_dict["get_point_position"]["rpc"])
193185
def getPointPosition(self, rpc_params: RpcParams) -> dict[str, float]:
@@ -251,7 +243,6 @@ def toggleGridScale(self, rpc_params: RpcParams) -> None:
251243
grid_scale = self.get_grid_scale()
252244
if grid_scale is not None:
253245
grid_scale.SetVisibility(params.visibility)
254-
self.render()
255246

256247
@exportRpc(viewer_prefix + viewer_schemas_dict["axes"]["rpc"])
257248
def toggleAxes(self, rpc_params: RpcParams) -> None:
@@ -262,7 +253,6 @@ def toggleAxes(self, rpc_params: RpcParams) -> None:
262253
axes = self.get_axes()
263254
if axes is not None:
264255
axes.SetVisibility(params.visibility)
265-
self.render()
266256

267257
@exportRpc(viewer_prefix + viewer_schemas_dict["update_camera"]["rpc"])
268258
def updateCamera(self, rpc_params: RpcParams) -> None:
@@ -280,12 +270,11 @@ def updateCamera(self, rpc_params: RpcParams) -> None:
280270
camera.SetPosition(camera_options.position)
281271
camera.SetViewAngle(camera_options.view_angle)
282272
camera.SetClippingRange(camera_options.clipping_range)
283-
self.render()
284273

285-
@exportRpc(viewer_prefix + viewer_schemas_dict["render_now"]["rpc"])
274+
@exportRpc(viewer_prefix + viewer_schemas_dict["render"]["rpc"])
286275
def renderNow(self, rpc_params: RpcParams) -> None:
287276
validate_schema(
288-
rpc_params, self.viewer_schemas_dict["render_now"], self.viewer_prefix
277+
rpc_params, self.viewer_schemas_dict["render"], self.viewer_prefix
289278
)
290279
self.render()
291280

@@ -304,4 +293,3 @@ def setZScaling(self, rpc_params: RpcParams) -> None:
304293
grid_scale = self.get_grid_scale()
305294
if grid_scale is not None:
306295
grid_scale.SetUse2DMode(True)
307-
self.render()

tests/conftest.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from opengeodeweb_viewer import config
1313
from opengeodeweb_microservice.database.connection import get_session, init_database
1414
from opengeodeweb_microservice.database.data import Data
15+
from opengeodeweb_viewer.rpc.viewer.viewer_protocols import VtkViewerView
1516

1617
type RpcTestParams = list[
1718
dict[str, str | int | float | bool | dict[str, int] | list[str]] | int
@@ -39,7 +40,7 @@ def call(self, rpc: str, params: RpcTestParams = None) -> None:
3940
self.ws.send(
4041
json.dumps(
4142
{
42-
"id": "rpc:test",
43+
"id": "rpc:" + rpc,
4344
"method": rpc,
4445
"args": params,
4546
}
@@ -100,6 +101,10 @@ def images_diff(self, first_image_path: str, second_image_path: str) -> float:
100101
return images_diff.GetThresholdedError()
101102

102103
def compare_image(self, filename: str) -> bool:
104+
self.call(
105+
VtkViewerView.viewer_prefix
106+
+ VtkViewerView.viewer_schemas_dict["render"]["rpc"]
107+
)
103108
while True:
104109
image = self.ws.recv()
105110
if isinstance(image, bytes):
File renamed without changes.

0 commit comments

Comments
 (0)