Skip to content

Commit 608a816

Browse files
schemas in child classes
1 parent 9885b56 commit 608a816

39 files changed

+296
-384
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Standard library imports
2+
import os
3+
4+
# Third party imports
5+
import vtk
6+
7+
# Local application imports
8+
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
9+
from opengeodeweb_viewer.vtk_protocol import VtkView
10+
11+
12+
schemas_dir = os.path.join(os.path.dirname(__file__), "schemas")
13+
schemas_dict = get_schemas_dict(schemas_dir)
14+
15+
16+
class VtkObjectView(VtkView):
17+
def __init__(self):
18+
super().__init__()
19+
20+
def register(self, id, file_name, reader, filter, mapper):
21+
actor = vtk.vtkActor()
22+
self.register_object(id, reader, filter, actor, mapper, {})
23+
24+
reader.SetFileName(os.path.join(self.DATA_FOLDER_PATH, file_name))
25+
26+
actor.SetMapper(mapper)
27+
mapper.SetColorModeToMapScalars()
28+
mapper.SetResolveCoincidentTopologyLineOffsetParameters(1, -0.1)
29+
mapper.SetResolveCoincidentTopologyPolygonOffsetParameters(2, 0)
30+
mapper.SetResolveCoincidentTopologyPointOffsetParameter(-2)
31+
32+
renderWindow = self.getView("-1")
33+
renderer = renderWindow.GetRenderers().GetFirstRenderer()
34+
renderer.AddActor(actor)
35+
renderer.ResetCamera()
36+
renderWindow.Render()
37+
self.render()
38+
39+
def deregister(self, id):
40+
actor = self.get_object(id)["actor"]
41+
renderWindow = self.getView("-1")
42+
renderer = renderWindow.GetRenderers().GetFirstRenderer()
43+
renderer.RemoveActor(actor)
44+
self.deregister_object(id)
45+
self.render()
46+
47+
48+
# @exportRpc(schemas_dict["apply_textures"]["rpc"])
49+
def applyTextures(self, id, textures):
50+
# id = params["id"]
51+
# textures = params["textures"]
52+
textures_array = []
53+
images_reader_array = []
54+
55+
data = self.get_object(id)
56+
mapper = data["mapper"]
57+
actor = data["actor"]
58+
reader = data["reader"]
59+
60+
polydata_mapper = mapper.GetPolyDataMapper()
61+
poly_data = reader.GetPolyDataOutput()
62+
63+
for index, value in enumerate(textures):
64+
texture_name = value["texture_name"]
65+
texture_file_name = value["texture_file_name"]
66+
print(f"{texture_name=} {texture_file_name=}", flush=True)
67+
68+
new_texture = vtk.vtkTexture()
69+
image_reader = vtk.vtkXMLImageDataReader()
70+
image_reader.SetFileName(
71+
os.path.join(self.DATA_FOLDER_PATH, texture_file_name)
72+
)
73+
74+
shader_texture_name = f"VTK_TEXTURE_UNIT_{index}"
75+
polydata_mapper.MapDataArrayToMultiTextureAttribute(
76+
shader_texture_name,
77+
texture_name,
78+
vtk.vtkDataObject.FIELD_ASSOCIATION_POINTS,
79+
)
80+
81+
if index == 0:
82+
new_texture.SetBlendingMode(
83+
vtk.vtkTexture.VTK_TEXTURE_BLENDING_MODE_REPLACE
84+
)
85+
else:
86+
new_texture.SetBlendingMode(
87+
vtk.vtkTexture.VTK_TEXTURE_BLENDING_MODE_ADD
88+
)
89+
90+
images_reader_array.append(image_reader)
91+
new_texture.SetInputConnection(image_reader.GetOutputPort())
92+
93+
actor.GetProperty().SetTexture(shader_texture_name, new_texture)
94+
95+
textures_array.append(new_texture)
96+
images_reader_array.append(image_reader)
97+
98+
self.render()
99+
100+
101+
def SetVisibility(self, id, visibility):
102+
actor = self.get_object(id)["actor"]
103+
actor.SetVisibility(visibility)
104+
self.render()
105+
106+
def SetOpacity(self, id, opacity):
107+
actor = self.get_object(id)["actor"]
108+
actor.GetProperty().SetOpacity(opacity)
109+
self.render()
110+
111+
def SetColor(self, id, color):
112+
mapper = self.get_object(id)["mapper"]
113+
mapper.ScalarVisibilityOff()
114+
actor = self.get_object(id)["actor"]
115+
actor.GetProperty().SetColor(color)
116+
self.render()
117+
118+
def SetEdgeVisibility(self, id, visibility):
119+
actor = self.get_object(id)["actor"]
120+
actor.GetProperty().SetEdgeVisibility(visibility)
121+
self.render()
122+
123+
def SetVertexVisibility(self, id, visibility):
124+
actor = self.get_object(id)["actor"]
125+
actor.GetProperty().SetVertexVisibility(visibility)
126+
self.render()
127+
128+
def SetPointSize(self, id, size):
129+
validate_schema(params, schemas_dict["set_point_size"])
130+
actor = self.get_object(id)["actor"]
131+
actor.GetProperty().SetPointSize(size)
132+
self.render()

src/opengeodeweb_viewer/object/protocols.py

Lines changed: 0 additions & 181 deletions
This file was deleted.

src/opengeodeweb_viewer/object/schemas/set_color.json

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/opengeodeweb_viewer/object/schemas/set_opacity.json

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)