Skip to content

Commit 01d051c

Browse files
Merge pull request #38 from Geode-solutions/feat/mesh_sub_protocols
Feat/mesh sub protocols
2 parents 4709c1b + 5025b3b commit 01d051c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+651
-253
lines changed

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,24 +100,56 @@ def SetOpacity(self, id, opacity):
100100
self.render()
101101

102102
def SetColor(self, id, red, green, blue):
103-
reader = self.get_object(id)["reader"]
104103
mapper = self.get_object(id)["mapper"]
105104
mapper.ScalarVisibilityOff()
106105
actor = self.get_object(id)["actor"]
107106
actor.GetProperty().SetColor([red, green, blue])
108107
self.render()
109108

110-
def SetEdgeVisibility(self, id, visibility):
109+
def SetEdgesVisibility(self, id, visibility):
111110
actor = self.get_object(id)["actor"]
112111
actor.GetProperty().SetEdgeVisibility(visibility)
113112
self.render()
113+
114+
def SetEdgesSize(self, id, size):
115+
actor = self.get_object(id)["actor"]
116+
actor.GetProperty().SetEdgeWidth(size)
117+
self.render()
114118

115-
def SetVertexVisibility(self, id, visibility):
119+
def SetEdgesColor(self, id, color):
120+
actor = self.get_object(id)["actor"]
121+
actor.GetProperty().SetEdgeColor(color)
122+
self.render()
123+
def SetPointsVisibility(self, id, visibility):
116124
actor = self.get_object(id)["actor"]
117125
actor.GetProperty().SetVertexVisibility(visibility)
126+
actor.GetProperty().SetEdgeVisibility(visibility)
118127
self.render()
119128

120-
def SetPointSize(self, id, size):
129+
def SetPointsSize(self, id, size):
121130
actor = self.get_object(id)["actor"]
122131
actor.GetProperty().SetPointSize(size)
123-
self.render()
132+
self.render()
133+
134+
def SetPointsColor(self, id, color):
135+
actor = self.get_object(id)["actor"]
136+
actor.GetProperty().SetVertexColor(color)
137+
self.render()
138+
139+
def SetPolygonsVisibility(self, id, visibility):
140+
actor = self.get_object(id)["actor"]
141+
actor.SetVisibility(visibility)
142+
self.render()
143+
144+
def SetPolygonsColor(self, id, color):
145+
actor = self.get_object(id)["actor"]
146+
actor.GetProperty().SetColor(color)
147+
self.render()
148+
149+
def clearColors(self, id):
150+
db = self.get_object(id)
151+
mapper = db["mapper"]
152+
reader = db["reader"]
153+
reader.GetOutput().GetPointData().SetActiveScalars("")
154+
reader.GetOutput().GetCellData().SetActiveScalars("")
155+
mapper.ScalarVisibilityOff()

src/opengeodeweb_viewer/rpc/generic/generic_protocols.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,21 @@
99

1010
# Local application imports
1111
from opengeodeweb_viewer.vtk_protocol import VtkView
12-
from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView
13-
from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView
1412
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
1513

1614
class VtkGenericView(VtkView):
17-
prefix = "opengeodeweb_viewer.generic."
18-
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
15+
generic_prefix = "opengeodeweb_viewer.generic."
16+
generic_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
1917

2018
def __init__(self, mesh_protocols, model_protocols):
2119
super().__init__()
2220
self.mesh_protocols = mesh_protocols
2321
self.model_protocols = model_protocols
2422

25-
@exportRpc(prefix + schemas_dict["register"]["rpc"])
23+
@exportRpc(generic_prefix + generic_schemas_dict["register"]["rpc"])
2624
def register(self, params):
27-
print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True)
28-
validate_schema(params, self.schemas_dict["register"])
25+
print(self.generic_prefix + self.generic_schemas_dict["register"]["rpc"], f"{params=}", flush=True)
26+
validate_schema(params, self.generic_schemas_dict["register"])
2927
viewer_object = params["viewer_object"]
3028
params.pop('viewer_object', None)
3129
print(f"{params=}", flush=True)
@@ -34,10 +32,10 @@ def register(self, params):
3432
elif viewer_object == "model":
3533
self.model_protocols.registerModel(params)
3634

37-
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
35+
@exportRpc(generic_prefix + generic_schemas_dict["deregister"]["rpc"])
3836
def deregister(self, params):
39-
print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
40-
validate_schema(params, self.schemas_dict["deregister"])
37+
print(self.generic_prefix + self.generic_schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
38+
validate_schema(params, self.generic_schemas_dict["deregister"])
4139
viewer_object = params["viewer_object"]
4240
params.pop('viewer_object', None)
4341
if viewer_object == "mesh":
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Standard library imports
2+
import os
3+
4+
# Third party imports
5+
from wslink import register as exportRpc
6+
7+
# Local application imports
8+
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
9+
from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView
10+
11+
class VtkMeshEdgesView(VtkMeshView):
12+
mesh_edges_prefix = "opengeodeweb_viewer.mesh.edges."
13+
mesh_edges_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
14+
15+
def __init__(self):
16+
super().__init__()
17+
18+
@exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["visibility"]["rpc"])
19+
def setMeshEdgesVisibility(self, params):
20+
print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True)
21+
validate_schema(params, self.mesh_edges_schemas_dict["visibility"])
22+
id = params["id"]
23+
visibility = bool(params["visibility"])
24+
self.SetEdgesVisibility(id, visibility)
25+
26+
@exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["color"]["rpc"])
27+
def setMeshEdgesColor(self, params):
28+
print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["color"]["rpc"], f"{params=}", flush=True)
29+
validate_schema(params, self.mesh_edges_schemas_dict["color"])
30+
id = params["id"]
31+
red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"]
32+
self.SetEdgesColor(id, [red, green, blue])
33+
34+
@exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["size"]["rpc"])
35+
def setMeshEdgesSize(self, params):
36+
print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["size"]["rpc"], f"{params=}", flush=True)
37+
validate_schema(params, self.mesh_edges_schemas_dict["size"])
38+
id = params["id"]
39+
size = bool(params["size"])
40+
self.SetEdgesSize(id, size)
41+
42+
43+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"rpc": "color",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string"
7+
},
8+
"color": {
9+
"type": "object",
10+
"properties": {
11+
"r": {
12+
"type": "integer",
13+
"minimum": 0,
14+
"maximum": 255
15+
},
16+
"g": {
17+
"type": "integer",
18+
"minimum": 0,
19+
"maximum": 255
20+
},
21+
"b": {
22+
"type": "integer",
23+
"minimum": 0,
24+
"maximum": 255
25+
},
26+
"a": {
27+
"type": "number",
28+
"minimum": 0,
29+
"maximum": 1,
30+
"default": 1
31+
}
32+
},
33+
"required": [
34+
"r",
35+
"g",
36+
"b"
37+
],
38+
"additionalProperties": false
39+
}
40+
},
41+
"required": [
42+
"id",
43+
"color"
44+
],
45+
"additionalProperties": false
46+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"rpc": "size",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string"
7+
},
8+
"size": {
9+
"type": "integer"
10+
}
11+
},
12+
"required": [
13+
"id",
14+
"size"
15+
],
16+
"additionalProperties": false
17+
}

src/opengeodeweb_viewer/rpc/mesh/schemas/display_vertex_attribute.json renamed to src/opengeodeweb_viewer/rpc/mesh/edges/schemas/vertex_attribute.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"rpc": "display_vertex_attribute",
2+
"rpc": "vertex_attribute",
33
"type": "object",
44
"properties": {
55
"id": {

src/opengeodeweb_viewer/rpc/mesh/schemas/set_visibility.json renamed to src/opengeodeweb_viewer/rpc/mesh/edges/schemas/visibility.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"rpc": "set_visibility",
2+
"rpc": "visibility",
33
"type": "object",
44
"properties": {
55
"id": {

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 20 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,25 @@
11
# Standard library imports
2-
import json
32
import os
43

54
# Third party imports
65
import vtk
7-
from vtk.web import protocols as vtk_protocols
8-
from vtkmodules.vtkIOImage import vtkPNGWriter, vtkJPEGWriter
9-
from vtkmodules.vtkRenderingCore import (vtkWindowToImageFilter)
106
from wslink import register as exportRpc
117

128
# Local application imports
139
from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema
1410
from opengeodeweb_viewer.object.object_methods import VtkObjectView
1511

1612
class VtkMeshView(VtkObjectView):
17-
prefix = "opengeodeweb_viewer.mesh."
18-
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
13+
mesh_prefix = "opengeodeweb_viewer.mesh."
14+
mesh_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
1915

2016
def __init__(self):
2117
super().__init__()
2218

23-
@exportRpc(prefix + schemas_dict["register"]["rpc"])
19+
@exportRpc(mesh_prefix + mesh_schemas_dict["register"]["rpc"])
2420
def registerMesh(self, params):
25-
print(self.schemas_dict["register"]["rpc"], f"{params=}", flush=True)
26-
validate_schema(params, self.schemas_dict["register"])
21+
print(self.mesh_prefix + self.mesh_schemas_dict["register"]["rpc"], f"{params=}", flush=True)
22+
validate_schema(params, self.mesh_schemas_dict["register"])
2723
id = params["id"]
2824
file_name = params["file_name"]
2925
try:
@@ -35,69 +31,38 @@ def registerMesh(self, params):
3531
except Exception as e:
3632
print("error : ", str(e), flush=True)
3733

38-
@exportRpc(prefix + schemas_dict["deregister"]["rpc"])
34+
@exportRpc(mesh_prefix + mesh_schemas_dict["deregister"]["rpc"])
3935
def deregisterMesh(self, params):
40-
print(self.schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
41-
validate_schema(params, self.schemas_dict["deregister"])
36+
print(self.mesh_prefix + self.mesh_schemas_dict["deregister"]["rpc"], f"{params=}", flush=True)
37+
validate_schema(params, self.mesh_schemas_dict["deregister"])
4238
id = params["id"]
4339
self.deregisterObject(id)
4440

45-
@exportRpc(prefix + schemas_dict["set_visibility"]["rpc"])
41+
@exportRpc(mesh_prefix + mesh_schemas_dict["visibility"]["rpc"])
4642
def SetMeshVisibility(self, params):
47-
print(self.schemas_dict["set_visibility"]["rpc"], f"{params=}", flush=True)
48-
validate_schema(params, self.schemas_dict["set_visibility"])
43+
print(self.mesh_prefix + self.mesh_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True)
44+
validate_schema(params, self.mesh_schemas_dict["visibility"])
4945
id = params["id"]
5046
visibility = bool(params["visibility"])
5147
self.SetVisibility(id, visibility)
5248

53-
@exportRpc(prefix + schemas_dict["set_opacity"]["rpc"])
49+
@exportRpc(mesh_prefix + mesh_schemas_dict["opacity"]["rpc"])
5450
def setMeshOpacity(self, params):
55-
print(self.schemas_dict["set_opacity"]["rpc"], f"{params=}", flush=True)
56-
validate_schema(params, self.schemas_dict["set_opacity"])
51+
print(self.mesh_prefix + self.mesh_schemas_dict["opacity"]["rpc"], f"{params=}", flush=True)
52+
validate_schema(params, self.mesh_schemas_dict["opacity"])
5753
id = params["id"]
5854
opacity = float(params["opacity"])
5955
self.SetOpacity(id, opacity)
6056

61-
@exportRpc(prefix + schemas_dict["set_edge_visibility"]["rpc"])
62-
def setMeshEdgeVisibility(self, params):
63-
print(self.schemas_dict["set_edge_visibility"]["rpc"], f"{params=}", flush=True)
64-
validate_schema(params, self.schemas_dict["set_edge_visibility"])
65-
id = params["id"]
66-
visibility = bool(params["visibility"])
67-
self.SetEdgeVisibility(id, visibility)
68-
69-
@exportRpc(prefix + schemas_dict["set_point_visibility"]["rpc"])
70-
def setMeshPointVisibility(self, params):
71-
print(self.schemas_dict["set_point_visibility"]["rpc"], f"{params=}", flush=True)
72-
validate_schema(params, self.schemas_dict["set_point_visibility"])
73-
id = params["id"]
74-
visibility = bool(params["visibility"])
75-
self.SetVertexVisibility(id, visibility)
76-
77-
@exportRpc(prefix + schemas_dict["set_point_size"]["rpc"])
78-
def setMeshPointSize(self, params):
79-
print(self.schemas_dict["set_point_size"]["rpc"], f"{params=}", flush=True)
80-
validate_schema(params, self.schemas_dict["set_point_size"])
81-
id = params["id"]
82-
size = float(params["size"])
83-
self.SetPointSize(id, size)
84-
85-
@exportRpc(prefix + schemas_dict["set_color"]["rpc"])
57+
@exportRpc(mesh_prefix + mesh_schemas_dict["color"]["rpc"])
8658
def setMeshColor(self, params):
87-
print(self.schemas_dict["set_color"]["rpc"], f"{params=}", flush=True)
88-
validate_schema(params, self.schemas_dict["set_color"])
59+
print(self.mesh_prefix + self.mesh_schemas_dict["color"]["rpc"], f"{params=}", flush=True)
60+
validate_schema(params, self.mesh_schemas_dict["color"])
8961
id = params["id"]
90-
red = params["red"]
91-
green = params["green"]
92-
blue = params["blue"]
62+
red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"]
9363
self.SetColor(id, red, green, blue)
9464

95-
@exportRpc(prefix + schemas_dict["display_vertex_attribute"]["rpc"])
96-
def setVertexAttribute(self, params):
97-
print(self.schemas_dict["display_vertex_attribute"]["rpc"], f"{params=}", flush=True)
98-
validate_schema(params, self.schemas_dict["display_vertex_attribute"])
99-
id = params["id"]
100-
name = params["name"]
65+
def setMeshVertexAttribute(self, id, name):
10166
reader = self.get_object(id)["reader"]
10267
points = reader.GetOutput().GetPointData()
10368
points.SetActiveScalars(name)
@@ -107,12 +72,7 @@ def setVertexAttribute(self, params):
10772
mapper.SetScalarRange(points.GetScalars().GetRange())
10873
self.render()
10974

110-
@exportRpc(prefix + schemas_dict["display_polygon_attribute"]["rpc"])
111-
def setPolygonAttribute(self, params):
112-
print(self.schemas_dict["display_polygon_attribute"]["rpc"], f"{params=}", flush=True)
113-
validate_schema(params, self.schemas_dict["display_polygon_attribute"])
114-
id = params["id"]
115-
name = params["name"]
75+
def setMeshPolygonAttribute(self, id, name):
11676
reader = self.get_object(id)["reader"]
11777
cells = reader.GetOutput().GetCellData()
11878
cells.SetActiveScalars(name)

0 commit comments

Comments
 (0)