Skip to content

Commit 1e4a3e8

Browse files
wip points/edges/polygons protocols
1 parent b38eb62 commit 1e4a3e8

21 files changed

+358
-59
lines changed

src/opengeodeweb_viewer/object/object_methods.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,24 +100,41 @@ 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()
114113

115-
def SetVertexVisibility(self, id, visibility):
114+
def SetEdgesColor(self, id, color):
115+
actor = self.get_object(id)["actor"]
116+
actor.GetProperty().SetEdgeColor(color)
117+
self.render()
118+
119+
def SetPointsVisibility(self, id, visibility):
116120
actor = self.get_object(id)["actor"]
117121
actor.GetProperty().SetVertexVisibility(visibility)
118122
self.render()
119123

120-
def SetPointSize(self, id, size):
124+
def SetPointsSize(self, id, size):
121125
actor = self.get_object(id)["actor"]
122126
actor.GetProperty().SetPointSize(size)
123-
self.render()
127+
self.render()
128+
129+
def SetPolygonsVisibility(self, id, visibility):
130+
actor = self.get_object(id)["actor"]
131+
actor.GetProperty().SetPolygonVisibility(visibility)
132+
self.render()
133+
134+
def clearColors(self, id):
135+
db = self.get_object(id)
136+
mapper = db["mapper"]
137+
reader = db["reader"]
138+
reader.GetOutput().GetPointData().SetActiveScalars("")
139+
reader.GetOutput().GetCellData().SetActiveScalars("")
140+
mapper.ScalarVisibilityOff()
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+
prefix = "opengeodeweb_viewer.mesh.edges."
13+
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
14+
15+
def __init__(self):
16+
super().__init__()
17+
18+
@exportRpc(prefix + schemas_dict["visibility"]["rpc"])
19+
def setMeshEdgesVisibility(self, params):
20+
print(self.schemas_dict["visibility"]["rpc"], f"{params=}", flush=True)
21+
validate_schema(params, self.schemas_dict["visibility"])
22+
id = params["id"]
23+
visibility = bool(params["visibility"])
24+
self.SetEdgesVisibility(id, visibility)
25+
26+
@exportRpc(prefix + schemas_dict["color"]["rpc"])
27+
def setMeshEdgesColor(self, params):
28+
print(self.schemas_dict["color"]["rpc"], f"{params=}", flush=True)
29+
validate_schema(params, self.schemas_dict["color"])
30+
id = params["id"]
31+
color = bool(params["color"])
32+
self.SetEdgesColor(id, color)
33+
34+
@exportRpc(prefix + schemas_dict["size"]["rpc"])
35+
def setMeshEdgesSize(self, params):
36+
print(self.schemas_dict["size"]["rpc"], f"{params=}", flush=True)
37+
validate_schema(params, self.schemas_dict["size"])
38+
id = params["id"]
39+
size = bool(params["size"])
40+
self.SetEdgesSize(id, size)
41+
42+
43+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"rpc": "color",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string"
7+
},
8+
"red": {
9+
"type": "integer",
10+
"minimum": 0,
11+
"maximum": 255
12+
},
13+
"green": {
14+
"type": "integer",
15+
"minimum": 0,
16+
"maximum": 255
17+
},
18+
"blue": {
19+
"type": "integer",
20+
"minimum": 0,
21+
"maximum": 255
22+
},
23+
"alpha": {
24+
"type": "integer",
25+
"minimum": 0,
26+
"maximum": 1
27+
}
28+
},
29+
"required": [
30+
"id",
31+
"red",
32+
"green",
33+
"blue",
34+
"alpha"
35+
],
36+
"additionalProperties": false
37+
}
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: 5 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
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
@@ -42,10 +38,10 @@ def deregisterMesh(self, params):
4238
id = params["id"]
4339
self.deregisterObject(id)
4440

45-
@exportRpc(prefix + schemas_dict["set_visibility"]["rpc"])
41+
@exportRpc(prefix + 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.schemas_dict["visibility"]["rpc"], f"{params=}", flush=True)
44+
validate_schema(params, self.schemas_dict["visibility"])
4945
id = params["id"]
5046
visibility = bool(params["visibility"])
5147
self.SetVisibility(id, visibility)
@@ -58,30 +54,6 @@ def setMeshOpacity(self, params):
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-
8557
@exportRpc(prefix + schemas_dict["set_color"]["rpc"])
8658
def setMeshColor(self, params):
8759
print(self.schemas_dict["set_color"]["rpc"], f"{params=}", flush=True)
@@ -92,12 +64,7 @@ def setMeshColor(self, params):
9264
blue = params["blue"]
9365
self.SetColor(id, red, green, blue)
9466

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"]
67+
def setMeshVertexAttribute(self, id, name):
10168
reader = self.get_object(id)["reader"]
10269
points = reader.GetOutput().GetPointData()
10370
points.SetActiveScalars(name)
@@ -107,12 +74,7 @@ def setVertexAttribute(self, params):
10774
mapper.SetScalarRange(points.GetScalars().GetRange())
10875
self.render()
10976

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"]
77+
def setMeshPolygonAttribute(self, id, name):
11678
reader = self.get_object(id)["reader"]
11779
cells = reader.GetOutput().GetCellData()
11880
cells.SetActiveScalars(name)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 VtkMeshPointsView(VtkMeshView):
12+
prefix = "opengeodeweb_viewer.mesh.points."
13+
schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas"))
14+
15+
def __init__(self):
16+
super().__init__()
17+
18+
@exportRpc(prefix + schemas_dict["visibility"]["rpc"])
19+
def setMeshPointsVisibility(self, params):
20+
print(self.schemas_dict["visibility"]["rpc"], f"{params=}", flush=True)
21+
validate_schema(params, self.schemas_dict["visibility"])
22+
id = params["id"]
23+
visibility = bool(params["visibility"])
24+
self.SetVertexVisibility(id, visibility)
25+
26+
@exportRpc(prefix + schemas_dict["color"]["rpc"])
27+
def setMeshPointsSize(self, params):
28+
print(self.schemas_dict["color"]["rpc"], f"{params=}", flush=True)
29+
validate_schema(params, self.schemas_dict["color"])
30+
id = params["id"]
31+
color = params["color"]
32+
self.SetPointsColor(id, color)
33+
34+
@exportRpc(prefix + schemas_dict["size"]["rpc"])
35+
def setMeshPointsSize(self, params):
36+
print(self.schemas_dict["size"]["rpc"], f"{params=}", flush=True)
37+
validate_schema(params, self.schemas_dict["size"])
38+
id = params["id"]
39+
size = float(params["size"])
40+
self.SetPointSize(id, size)
41+
42+
@exportRpc(prefix + schemas_dict["vertex_attribute"]["rpc"])
43+
def setMeshPointsVertexAttribute(self, params):
44+
print(self.schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True)
45+
validate_schema(params, self.schemas_dict["vertex_attribute"])
46+
id = params["id"]
47+
name = str(params["name"])
48+
self.setMeshVertexAttribute(id, name)
49+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"rpc": "color",
3+
"type": "object",
4+
"properties": {
5+
"id": {
6+
"type": "string"
7+
},
8+
"red": {
9+
"type": "integer",
10+
"minimum": 0,
11+
"maximum": 255
12+
},
13+
"green": {
14+
"type": "integer",
15+
"minimum": 0,
16+
"maximum": 255
17+
},
18+
"blue": {
19+
"type": "integer",
20+
"minimum": 0,
21+
"maximum": 255
22+
},
23+
"alpha": {
24+
"type": "integer",
25+
"minimum": 0,
26+
"maximum": 1
27+
}
28+
},
29+
"required": [
30+
"id",
31+
"red",
32+
"green",
33+
"blue",
34+
"alpha"
35+
],
36+
"additionalProperties": false
37+
}

src/opengeodeweb_viewer/rpc/mesh/schemas/set_point_size.json renamed to src/opengeodeweb_viewer/rpc/mesh/points/schemas/size.json

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

0 commit comments

Comments
 (0)