Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/opengeodeweb_viewer/rpc/viewer/schemas/get_mouse.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"rpc": "get_mouse",
"type": "object",
"properties": {
"x": {
"type": "integer"
},
"y": {
"type": "integer"
}
}
}
14 changes: 11 additions & 3 deletions src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import vtk
from vtk.web import protocols as vtk_protocols
from vtkmodules.vtkIOImage import vtkPNGWriter, vtkJPEGWriter
from vtkmodules.vtkRenderingCore import (vtkWindowToImageFilter)
from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
from wslink import register as exportRpc

# Local application imports
Expand All @@ -18,6 +18,7 @@
schemas_dict = get_schemas_dict(schemas_dir)
prefix = "opengeodeweb_viewer.viewer."


class VtkViewerView(VtkView):
def __init__(self):
super().__init__()
Expand Down Expand Up @@ -93,7 +94,7 @@ def takeScreenshot(self, params):
else:
raise Exception("output_extension not supported")

new_filename = filename + '.' + output_extension
new_filename = filename + "." + output_extension
file_path = os.path.join(self.DATA_FOLDER_PATH, new_filename)
writer.SetFileName(file_path)
writer.SetInputConnection(w2if.GetOutputPort())
Expand All @@ -104,7 +105,6 @@ def takeScreenshot(self, params):

return {"blob": self.addAttachment(file_content)}


@exportRpc(prefix + schemas_dict["update_data"]["rpc"])
def updateData(self, params):
print(schemas_dict["update_data"]["rpc"], params, flush=True)
Expand Down Expand Up @@ -145,3 +145,11 @@ def reset(self, params):
validate_schema(params, schemas_dict["reset"])
renderWindow = self.getView("-1")
renderWindow.GetRenderers().GetFirstRenderer().RemoveAllViewProps()

@exportRpc(prefix + schemas_dict["get_mouse"]["rpc"])
def getMouse(self, params):
print(schemas_dict["get_mouse"]["rpc"], params, flush=True)
validate_schema(params, schemas_dict["get_mouse"])
x = params["x"]
y = params["y"]
return {"x": x, "y": y}
71 changes: 59 additions & 12 deletions src/tests/test_viewer_protocols.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,31 @@

class_ = VtkViewerView()


def test_create_visualization(server):
server.call(class_.prefix + class_.schemas_dict["create_visualization"]["rpc"])
assert server.compare_image(3, "viewer/create_visualization.jpeg") == True


def test_reset_camera(server):
server.call(class_.prefix + class_.schemas_dict["reset_camera"]["rpc"])
assert server.compare_image(3, "viewer/reset_camera.jpeg") == True


def test_set_viewer_background_color(server):
server.call(class_.prefix + class_.schemas_dict["set_background_color"]["rpc"], [{"red": 0, "green": 0, "blue": 255}])
server.call(
class_.prefix + class_.schemas_dict["set_background_color"]["rpc"],
[{"red": 0, "green": 0, "blue": 255}],
)
assert server.compare_image(3, "viewer/set_background_color.jpeg") == True

def test_get_point_position(server):

def test_get_point_position(server):
test_register_mesh(server)

server.call(class_.prefix + class_.schemas_dict["get_point_position"]["rpc"], [{"x": 0, "y": 0}])
server.call(
class_.prefix + class_.schemas_dict["get_point_position"]["rpc"],
[{"x": 0, "y": 0}],
)
response = server.get_response()
assert "x" in response["result"]
assert "y" in response["result"]
Expand All @@ -45,7 +53,13 @@ def test_take_screenshot(server):
# Take a screenshot with background jpg
server.call(
class_.prefix + class_.schemas_dict["take_screenshot"]["rpc"],
[{"filename": "take_screenshot_with_background", "output_extension": "jpg", "include_background": True}],
[
{
"filename": "take_screenshot_with_background",
"output_extension": "jpg",
"include_background": True,
}
],
)

response = server.get_response()
Expand All @@ -56,16 +70,24 @@ def test_take_screenshot(server):
f.write(blob)
f.close()
first_image_path = os.path.join(server.test_output_dir, "test.jpg")
second_image_path = os.path.join(server.images_dir_path, "viewer/take_screenshot_with_background.jpg")
second_image_path = os.path.join(
server.images_dir_path, "viewer/take_screenshot_with_background.jpg"
)

assert server.images_diff(first_image_path, second_image_path) == 0.0

# Take a screenshot without background png
server.call(
class_.prefix + class_.schemas_dict["take_screenshot"]["rpc"],
[{"filename": "take_screenshot_without_background", "output_extension": "png", "include_background": True}],
[
{
"filename": "take_screenshot_without_background",
"output_extension": "png",
"include_background": True,
}
],
)

response = server.get_response()
response = server.get_response()
blob = server.get_response()
Expand All @@ -76,16 +98,24 @@ def test_take_screenshot(server):
f.write(blob)
f.close()
first_image_path = os.path.join(server.test_output_dir, "test.png")
second_image_path = os.path.join(server.images_dir_path, "viewer/take_screenshot_without_background.png")
second_image_path = os.path.join(
server.images_dir_path, "viewer/take_screenshot_without_background.png"
)

assert server.images_diff(first_image_path, second_image_path) == 0.0

# Take a screenshot with background png
server.call(
class_.prefix + class_.schemas_dict["take_screenshot"]["rpc"],
[{"filename": "take_screenshot_with_background", "output_extension": "png", "include_background": True}],
[
{
"filename": "take_screenshot_with_background",
"output_extension": "png",
"include_background": True,
}
],
)

response = server.get_response()
response = server.get_response()
blob = server.get_response()
Expand All @@ -96,6 +126,23 @@ def test_take_screenshot(server):
f.write(blob)
f.close()
first_image_path = os.path.join(server.test_output_dir, "test.png")
second_image_path = os.path.join(server.images_dir_path, "viewer/take_screenshot_with_background.png")
second_image_path = os.path.join(
server.images_dir_path, "viewer/take_screenshot_with_background.png"
)

assert server.images_diff(first_image_path, second_image_path) == 0.0


def test_get_mouse(server):
server.call(
class_.prefix + class_.schemas_dict["get_mouse"]["rpc"], [{"x": 100, "y": 200}]
)
response = server.get_response()
assert "x" in response["result"]
assert "y" in response["result"]
x = response["result"]["x"]
y = response["result"]["y"]
assert type(x) is int
assert type(y) is int
assert x == 100
assert y == 200