From 391642cbe50bd74656ad3ab4764a063f67c8a59c Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Mon, 27 Jan 2025 17:36:12 +0100 Subject: [PATCH 01/13] new data with polyhedrons --- src/tests/data/hybrid_solid.vtu | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/tests/data/hybrid_solid.vtu diff --git a/src/tests/data/hybrid_solid.vtu b/src/tests/data/hybrid_solid.vtu new file mode 100644 index 0000000..161c61c --- /dev/null +++ b/src/tests/data/hybrid_solid.vtu @@ -0,0 +1,19 @@ + + + + + + 0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 + + + 0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 + + + + 0 1 3 4 5 6 8 9 1 2 3 6 7 8 5 6 8 9 10 6 7 8 10 + 8 14 19 23 + 12 13 14 10 + + + + From e3bf44cecda474a559fdc68b771457f61d28ddd6 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Mon, 27 Jan 2025 17:36:23 +0100 Subject: [PATCH 02/13] export schemas --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 005e426..042d8d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ where = ["src"] "opengeodeweb_viewer.rpc.mesh.points.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.edges.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.mesh.polygons.schemas" = ["*.json"] +"opengeodeweb_viewer.rpc.mesh.polyhedrons.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.model.schemas" = ["*.json"] "opengeodeweb_viewer.rpc.viewer.schemas" = ["*.json"] From 62acea92b0664f21648d334dbdc9b7eee3933f31 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Mon, 27 Jan 2025 17:36:33 +0100 Subject: [PATCH 03/13] register protocols --- src/opengeodeweb_viewer/vtkw_server.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/vtkw_server.py index a9d10c4..134a0d9 100644 --- a/src/opengeodeweb_viewer/vtkw_server.py +++ b/src/opengeodeweb_viewer/vtkw_server.py @@ -16,6 +16,7 @@ from .rpc.mesh.points.points_protocols import VtkMeshPointsView from .rpc.mesh.edges.edges_protocols import VtkMeshEdgesView from .rpc.mesh.polygons.polygons_protocols import VtkMeshPolygonsView +from .rpc.mesh.polyhedrons.polyhedrons_protocols import VtkMeshPolyhedronsView from .rpc.model.model_protocols import VtkModelView from .rpc.generic.generic_protocols import VtkGenericView @@ -60,6 +61,7 @@ def initialize(self): self.registerVtkWebProtocol(VtkMeshPointsView()) self.registerVtkWebProtocol(VtkMeshEdgesView()) self.registerVtkWebProtocol(VtkMeshPolygonsView()) + self.registerVtkWebProtocol(VtkMeshPolyhedronsView()) self.registerVtkWebProtocol(model_protocols) self.registerVtkWebProtocol(VtkGenericView(mesh_protocols, model_protocols)) From 2984d1308416c62fa74898dc8bca53c7e343da26 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Mon, 27 Jan 2025 17:37:04 +0100 Subject: [PATCH 04/13] wip test protocols --- .../object/object_methods.py | 14 +++++ .../mesh/polyhedrons/polyhedrons_protocols.py | 50 ++++++++++++++++++ .../rpc/mesh/polyhedrons/schemas/color.json | 46 ++++++++++++++++ .../schemas/polygon_attribute.json | 17 ++++++ .../polyhedrons/schemas/vertex_attribute.json | 17 ++++++ .../mesh/polyhedrons/schemas/visibility.json | 17 ++++++ .../images/mesh/polyhedrons/register.jpeg | Bin 0 -> 5295 bytes .../polyhedrons/test_polyhedrons_protocols.py | 20 +++++++ src/tests/tests_output/test.jpeg | Bin 10543 -> 5295 bytes 9 files changed, 181 insertions(+) create mode 100644 src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py create mode 100644 src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/color.json create mode 100644 src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json create mode 100644 src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/vertex_attribute.json create mode 100644 src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/visibility.json create mode 100644 src/tests/data/images/mesh/polyhedrons/register.jpeg create mode 100644 src/tests/mesh/polyhedrons/test_polyhedrons_protocols.py diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index 1554c5c..dd29973 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -141,11 +141,25 @@ def SetPolygonsVisibility(self, id, visibility): actor.SetVisibility(visibility) self.render() + def SetPolygonsColor(self, id, color): actor = self.get_object(id)["actor"] actor.GetProperty().SetColor(color) self.render() + def SetPolyhedronsVisibility(self, id, visibility): + actor = self.get_object(id)["actor"] + actor.SetVisibility(visibility) + self.render() + + def SetPolyhedronsColor(self, id, color): + reader = self.get_object(id)["reader"] + cells = reader.GetOutput().GetCellData() + mapper = self.get_object(id)["mapper"] + mapper.ScalarVisibilityOff() + cells.SetColor(color) + + def clearColors(self, id): db = self.get_object(id) mapper = db["mapper"] diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py new file mode 100644 index 0000000..1b5e695 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py @@ -0,0 +1,50 @@ +# Standard library imports +import os + +# Third party imports +from wslink import register as exportRpc + +# Local application imports +from opengeodeweb_viewer.utils_functions import get_schemas_dict, validate_schema +from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView + +class VtkMeshPolyhedronsView(VtkMeshView): + mesh_polyhedrons_prefix = "opengeodeweb_viewer.mesh.polyhedrons." + mesh_polyhedrons_schemas_dict = get_schemas_dict(os.path.join(os.path.dirname(__file__), "schemas")) + + def __init__(self): + super().__init__() + + # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["visibility"]["rpc"]) + # def setMeshPolyhedronsVisibility(self, params): + # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + # validate_schema(params, self.mesh_polyhedrons_schemas_dict["visibility"]) + # id = params["id"] + # visibility = bool(params["visibility"]) + # self.SetPolyhedronsVisibility(id, visibility) + + @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["color"]["rpc"]) + def setMeshPolyhedronsColor(self, params): + print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["color"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polyhedrons_schemas_dict["color"]) + print("id", params["id"], flush=True) + id = params["id"] + print("color", params["color"], flush=True) + red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 + self.SetPolyhedronsColor(id, [red, green, blue]) + + # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"]) + # def setMeshPolyhedronsVertexAttribute(self, params): + # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) + # validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) + # id = params["id"] + # name = str(params["name"]) + # self.setMeshVertexAttribute(id, name) + + # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["polygon_attribute"]["rpc"]) + # def setMeshPolyhedronsPolygonAttribute(self, params): + # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["polygon_attribute"]["rpc"], f"{params=}", flush=True) + # validate_schema(params, self.mesh_polyhedrons_schemas_dict["polygon_attribute"]) + # id = params["id"] + # name = str(params["name"]) + # self.setMeshPolygonAttribute(id, name) diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/color.json b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/color.json new file mode 100644 index 0000000..720d50b --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/color.json @@ -0,0 +1,46 @@ +{ + "rpc": "color", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "color": { + "type": "object", + "properties": { + "r": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "g": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "b": { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "a": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + } + }, + "required": [ + "r", + "g", + "b" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "color" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json new file mode 100644 index 0000000..cb6c23a --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json @@ -0,0 +1,17 @@ +{ + "rpc": "polygon_attribute", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/vertex_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/vertex_attribute.json new file mode 100644 index 0000000..05368b8 --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/vertex_attribute.json @@ -0,0 +1,17 @@ +{ + "rpc": "vertex_attribute", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/visibility.json b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/visibility.json new file mode 100644 index 0000000..4b2368d --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/visibility.json @@ -0,0 +1,17 @@ +{ + "rpc": "visibility", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "visibility": { + "type": "boolean" + } + }, + "required": [ + "id", + "visibility" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/tests/data/images/mesh/polyhedrons/register.jpeg b/src/tests/data/images/mesh/polyhedrons/register.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0fa3f72d9e3099b2d31fab86a876a9b37e959dc9 GIT binary patch literal 5295 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 b#qVL)Oy7NMAarNtXQcd-;QW#??LQ-C` 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 Date: Tue, 11 Feb 2025 11:09:15 +0100 Subject: [PATCH 05/13] feat(polyhedrons): color protocol --- .../mesh/polyhedrons/polyhedrons_protocols.py | 2 +- .../data/images/mesh/polyhedrons/color.jpeg | Bin 0 -> 6804 bytes src/tests/tests_output/test.jpeg | Bin 5295 -> 6804 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/tests/data/images/mesh/polyhedrons/color.jpeg diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py index 1b5e695..f6309a4 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py @@ -31,7 +31,7 @@ def setMeshPolyhedronsColor(self, params): id = params["id"] print("color", params["color"], flush=True) red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 - self.SetPolyhedronsColor(id, [red, green, blue]) + self.SetColor(id, red, green, blue) # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"]) # def setMeshPolyhedronsVertexAttribute(self, params): diff --git a/src/tests/data/images/mesh/polyhedrons/color.jpeg b/src/tests/data/images/mesh/polyhedrons/color.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..634bc28cfc3e171b10b7b27d15dc558738ae2118 GIT binary patch literal 6804 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 literal 0 HcmV?d00001 diff --git a/src/tests/tests_output/test.jpeg b/src/tests/tests_output/test.jpeg index 0fa3f72d9e3099b2d31fab86a876a9b37e959dc9..634bc28cfc3e171b10b7b27d15dc558738ae2118 100644 GIT binary patch literal 6804 zcmdT|Wk6J0yWSIY&Cn$|GzdtCFd$t55`wgJmq;lk3?U#Xp@>K$oze&jNSBnP0SF2x zB1+w%&N<)F`;P!dA|c1zz}bO;g$>07;ou&j=yrgQ z;4=&WpqOYJ2Mjr!0`MVd6b6Bzn|ct?`lrkPxMXZnZT2x%#^HT%=QR4lb#ijj8}HoR ze$s~{+86zj@jLAq?eI3iEwhzJY9TaU03c>&lWDEXSULMJtYQU!FyZdR19y72Q!x{jTgUHt=9Tq%f{3@mY_zC1t|!ETO(CXN#cf6yUd{vp zgjcDSsgjU!VPKkzD-({N3yxGobe^gBJ+T=OHsI?;BT?uft07?F)^)4%nECg_0B8f% zPcCm-R=2}#cp~994FfAsf;Mz;n^$_YO;rZ1+ICc+%m zrpdXRCxFrZ@T4`sZ^*E^DXox2pC9y65PF_^{Xzz|(n1q0v4;LZ1fYH1nM@HG*}vA7 zD??wXs}sYDtr+w3dD%XEO{?N*{BlZ`xU;v_uUGStsAcf<$?**%-N291`=NAnRjBSa zk4gHB8ZtjF=wChlO&JT_3)x`+2#f)N{@D?s5DWm5PXI|wE(8LTF<`+oNn8WbJrWz; zQ$ZNuLm-BV3J@iz7@@Js74A`UN=}*P;jb~g?pXD5(k{AU1h0qZQAasBj$?sML{@dB ztlT?QxLI;{vUeKSwUAS*>)84!h|rKb^7J|KY&mm%c?@oyfd9oRJoY$rdtr_=Up%+S)g$BHPH2LAT}cW(+d%{|Er zScrtPB0cOgyAFW}o*S#fRL>KqZ?mhGYK%!)B(PB7n?AP@D3dB7$$qoKU3=cM&LMG} zuTeN4{SZLEH6$DWK|l~F0X_%{IexOnOqKhbL8_9eY&jhqF%}&p z;o5P}^)Ifw7d=?wEG%4Xker?%3UQp9V!VAW!)Xnxt;XdOtc7qucpEZ5EwUYMin2-f z18q2^@5=GES8O>4hw8+18u)tRvgmO;&dcL7M-V=a>Pezg#f+xGT}$j$X(yNPw$eJU znIoTosl3n&Vph4U2%Q(uy#uGL6N|N9k(d9ms!r=Py#;=`?Ho5B@~p(8{F~R!&`BQ( z7wYksH)J!0URG(L0we4AZotb$%2^t;FOtaFadj`l^#y_>bqx3{GiY0h1@k*xH6TJ) zW#CaEDcdE9I;I&_Lobb6klZfTD|FZrX-g9H`ZnICEbojP9ZadlaQzgihZN|*obzp? z3LUc@$)A+A)Zy8sY?<;#{kR-jmTmFg9)QyD6L^~_{+Kyb;XL8>sd_D~+rA@;6khv4 zc~g3}H^XO#2Wz*CA1?UU#(8ZP``hSne4=%br}V}y3c=E%A@L)=R?R#ls1V-k8WwzpUPTsF_#gR!nL>&s2hcPR>z%P1$)gR&Iz|<%=&=w|71(iCm3} z4aEnI=H#a(3GCB@$yv;QxLA}!MzK^Z=qBPah(|M7uNX}D;aPv@*yJpQhrd^F|Lau? zGCI+o3t&ky>MrBJ4_vMeOyx99_a-7E)15p^#NvvAUq17Ws$Is2UYlWV!}2g%y8dx( z9j~rQVr0N6O2FFERbqb3{_#zokMX2TB9jh|sXQhWN_U<;t-T-7a69noY~QdX?50q^ zmsCmrM)S3iCduuIN?~h7NHc+6A%**F0i!JQt>l{S_^}1gaMiRPAMc`HDtq@IR2KEO z%4Rnjcr~`ZPFwU&rqUAb2pQ%Z_xNUqVn=TqPP3}&hYmBIci?&dmOJkohSf5;b%GRuP4mS*g?FLIw4H!m)z9JcQAiy6KpZn{?Et2RmGHg!2q zbw7DPIi2ydg!0x(K*i*WfaS$bJE@1f+t+wG_oVByY93iz3}knTk_u4?km9GvyqDgy z-M!jr8?4ZRI`4+NH6KUWTg^r)dzV|A@-A#T>`K?W>ok#1u24uo)pWH;4gvjr@i*>0 zxk@phB^CLYyVl?R3lQhOC6Oplu9&_xcO0{2;)uXQAZdE_ol>IW`E#$##E%p`3}zJ- zBJ0^>Is|%-2N5Ya00x1sEmtWuB!x4Fle?+&1+KeX*Ox#wHp zPj@4vc`{P!_Y^8WBlc>1Emk+F2kH{OOs+(gb~s2aUhc8F{|YySHgYnjAZQNr0)M(a-X_d^_uW*2eGG zHjka>Ra(0GmM`HG^AFFFM|{5s4E|Svb(JP2v%5NVP0SCk-+g|$D)#+|hJX95)N?HI z@xp{L5H5}mK1n$`%*|J|bd%EI(`o*wr+#5e-BT*{_SQm#dSb4&b`uV<=d1?A?GAz1 zLqHLeE$DAmluvAVayeYNRgf7JX5xkj$r-$KU%;W2@Lx$$8J*XM28)Z;w{wFrseC%( z3Gd4g8ugU|qFjH=&be4c*_vvRsWfa#t0iJ3abu{Mhj1hCw|qGMchwR%bgN7iP8BBR z=jdekuxP$CW;hoGOvovSf1AI&S~=Q-Y8=|P-hY^pYjp8L?5fDx+P4b}>w*CWEjBg< z_lbO-{OsG6;GR`G1R$(4hMO86r!=#D75H3fzK`g#1kntIL4+&AXi2)_IDF1smv5(V zCsROxBE-WGK|c=xHdA>m*X-o@c%J$!V+gIUQvEff2ridwE19hDzG4)4u{S|*O=_x+ za&fp;W5V5!^do_XKz&QY@o(bd(R2umfrEh!0%INjv7Y=U82Pm-0KN-I8Ch+QAWUKs zQYJD60l~P0tYH|lrn!ZyTj1mJ(>W5RGZ&#>+n>jljC9mNO%#UG0R6Ud*qvzQ7BIlADmi z4Rr+d9!4rp5sgwuLmkvTOghu_)h_Muh_f@*yrEVv-1L^{E|*;dVf@0|bIN<5su77@ zT#K1t-)KVk#Zj{^P{wLOhAiijyxm0h!_0k|{6U4XaiKMz9M6u6&quO?xt!Xvr%EY8 z8q-P7Gr$bIHRbIzhYYap{69CY zK4U!H5i zmXuVPEz@<*I@88^=Z=0>r!md<$5^O{Yp-#ON7Ftu#R`_BgqdsJi`=@p`sDT&!^S3; zZ<}s?`dQ=0aIj0|W9miLWr>K0YoC%`D?F7%Cx(R^Lrk$;n<`Dv1N+3}ufTz4tbVHM80BQBAT1hcO)yqa=Uo;ydQG*J2T{>NQn!ptKcau9X6AFL+>SHjE277Cx=p>s?4rLot(HXi=b!nd>{4Bd1Ad}=Va8ZQAaG~-uHYL-ZUnc|UAtr( zb!E7OteVp1BPR3NNbQ-gD&CUIMzlW-_>y*I^+`w7;Ouu&z1?^+zFrRJxWg?+^CC%e z(O>WWf@q@nJz5n~szh~b=U#@#A4bI9GV$O`lfLP{G4H3xphj!kD^b3RvRV%JAT`$~ zP9U5A5n4PJkb68Pv%=7`6DS78(N4v8)rirZrJ6aP{)OJRPU53NuhQ?YDA2tYGU-i_+ED(5%6yRo%Z5(MxH zF9!|6n#~gN-lRp=;RsO}#Wd$84KiSSn1P9dDSC;6{1UYEL9AIzapPmd^-!R3ItvRa z`y*JB*WI3T9x-an_^d8(1Wk*&t!QehvJ3-%bq+rV!ux=O zZ0gQ03QW*)>RK)P9g*P|@iouiC?bCl)4;=(iNx!xXYhpbrm%p&vu2fm)#V>Cmkj)_ z0;{goszI%M?5zI8H$nGcQoDzMECvG)hKnL!1Ik=r+dPlr z#;tM>T($`o>0VSFshI0KXluMQQPZqw9G3p0WkMv}k9@job#>)5+G#JQx#kRb+qL@f z3~=^GXYUMH?OI*gKaFsHuNRqEY0o)MxtD(ka7w?5{qp3mrLUzVpfsl;ZL3xh%0p#ZW2r{ro96Kw1Y62S}N+ctW zDnoHpCvAh2f0!hkFEZ``R{}eh2q(6fIyaCCtJEwji@6*EZ z4Wy0zSM%SLA?R%g1~__42zs=MdFBX$1C0Dgw>Abo8BMc4wi#dtGJ_z_{L6RUx!&%6 zUw@^)=%#6OhYx$%6JEWU0tv!??AfB)oW}686*}+?%Xm;>{G}Nolqqz0|NKwekX3+0 z>fO1UGBl=CfugWT3e~NKl`NvCfZFc88#7QRe`{b~mfe_lcs(~~SY%MYM!lkyiow3wcpM_0}$|*E`i>+-#SQ`t*gFHw4AZaw>$tXU&FpCNk7!wp_ z@J@WL6rB@hbWXtNt(iZQ0)jJc0Q^W9Ew?zn^0w2o94(z-hXBL%@9_Bfw%@2Zx2QJQG1{h$!Q?wxiAtZqN_$XPHsgfyP7vf5;?oII z%BXQ%_^=K7kjME{`qVKQddG<-T9h3Y>s4NAZNJ~E{UL(vC3)jPMZvolRhJ|#^ z`^!Vs(}(^Q-pu~q_y_=zZBn-95^cUSN8P^JEQEUNZwups_~gFV7)+t3FZPXRvcyhI zq-hivHZZEWp;b|7C+LyF(wf-ynEl)p^yK}hQ=x}@beB5*o^&g80s$FKem*43H8ALO zmW|Hdfv79Z9T1pZMpn0lbh6UAFJ0JiocuYV!{n;N!u*^+U(lCUD2RFSlXY|Z1`ve= zg6F5#!(dWZfk1@6@ze2%+W_1afEm%;+IWuD1HhoMQPpX?M6F;R0E`#n(oBi`VFm`` zHoYoM&36F#OhCrf>3cgiJvV?PmOB61VNDvqt^%;n6EyFbL*55sgB4#)_1!|vgUACx z7;Uw4_zeDKAV6uS!JxEk4`3Pu80v&~7w!-x0}MFy6b?e$^np-A07`-Rk5WU4>*#TG z*r}c`4wfTAhj6In_?|0wOuY&$1UR1phDAuax)p%`X9V)zg|PLG=%@L(nc%`!jKV6= zYRo+deSRVigxz^h>Hk##6%twm5Ec$%m53wpZ)a&D@Eh}Y`2CTlvKggBx1m0*>Ts+l6^gCX7Xv& c1TLxB<-u?(|4n4++z(JvpW8uQ?BV2p0V+)!6aWAK literal 5295 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 b#qVL)Oy7NMAarNtXQcd Date: Tue, 11 Feb 2025 13:33:03 +0100 Subject: [PATCH 06/13] color methods harmonization --- .../object/object_methods.py | 36 +++--------------- .../rpc/mesh/edges/edges_protocols.py | 4 +- .../rpc/mesh/mesh_protocols.py | 2 +- .../rpc/mesh/points/points_protocols.py | 4 +- .../rpc/mesh/polygons/polygons_protocols.py | 6 +-- .../mesh/polyhedrons/polyhedrons_protocols.py | 23 ++++------- src/tests/tests_output/test.jpeg | Bin 6804 -> 10543 bytes 7 files changed, 22 insertions(+), 53 deletions(-) diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index dd29973..ae80b57 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -88,7 +88,6 @@ def applyTextures(self, id, textures): self.render() - def SetVisibility(self, id, visibility): actor = self.get_object(id)["actor"] actor.SetVisibility(visibility) @@ -103,7 +102,7 @@ def SetColor(self, id, red, green, blue): mapper = self.get_object(id)["mapper"] mapper.ScalarVisibilityOff() actor = self.get_object(id)["actor"] - actor.GetProperty().SetColor([red, green, blue]) + actor.GetProperty().SetColor([red/255, green/255, blue/255]) self.render() def SetEdgesVisibility(self, id, visibility): @@ -116,10 +115,11 @@ def SetEdgesSize(self, id, size): actor.GetProperty().SetEdgeWidth(size) self.render() - def SetEdgesColor(self, id, color): + def SetEdgesColor(self, id, red, green, blue): actor = self.get_object(id)["actor"] - actor.GetProperty().SetEdgeColor(color) + actor.GetProperty().SetEdgeColor([red/255, green/255, blue/255]) self.render() + def SetPointsVisibility(self, id, visibility): actor = self.get_object(id)["actor"] actor.GetProperty().SetVertexVisibility(visibility) @@ -131,35 +131,11 @@ def SetPointsSize(self, id, size): actor.GetProperty().SetPointSize(size) self.render() - def SetPointsColor(self, id, color): + def SetPointsColor(self, id, red, green, blue): actor = self.get_object(id)["actor"] - actor.GetProperty().SetVertexColor(color) + actor.GetProperty().SetVertexColor([red/255, green/255, blue/255]) self.render() - def SetPolygonsVisibility(self, id, visibility): - actor = self.get_object(id)["actor"] - actor.SetVisibility(visibility) - self.render() - - - def SetPolygonsColor(self, id, color): - actor = self.get_object(id)["actor"] - actor.GetProperty().SetColor(color) - self.render() - - def SetPolyhedronsVisibility(self, id, visibility): - actor = self.get_object(id)["actor"] - actor.SetVisibility(visibility) - self.render() - - def SetPolyhedronsColor(self, id, color): - reader = self.get_object(id)["reader"] - cells = reader.GetOutput().GetCellData() - mapper = self.get_object(id)["mapper"] - mapper.ScalarVisibilityOff() - cells.SetColor(color) - - def clearColors(self, id): db = self.get_object(id) mapper = db["mapper"] diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py index 7c9c772..73683ed 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/edges_protocols.py @@ -28,8 +28,8 @@ def setMeshEdgesColor(self, params): print(self.mesh_edges_prefix + self.mesh_edges_schemas_dict["color"]["rpc"], f"{params=}", flush=True) validate_schema(params, self.mesh_edges_schemas_dict["color"]) id = params["id"] - red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 - self.SetEdgesColor(id, [red, green, blue]) + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] + self.SetEdgesColor(id, red, green, blue) @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["size"]["rpc"]) def setMeshEdgesSize(self, params): diff --git a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py index 3614143..e01eaf2 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py @@ -59,7 +59,7 @@ def setMeshColor(self, params): print(self.mesh_prefix + self.mesh_schemas_dict["color"]["rpc"], f"{params=}", flush=True) validate_schema(params, self.mesh_schemas_dict["color"]) id = params["id"] - red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) def setMeshVertexAttribute(self, id, name): diff --git a/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py index 5039c33..7c1e16b 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py @@ -28,8 +28,8 @@ def setMeshPointsColor(self, params): print(self.mesh_points_prefix + self.mesh_points_schemas_dict["color"]["rpc"], f"{params=}", flush=True) validate_schema(params, self.mesh_points_schemas_dict["color"]) id = str(params["id"]) - red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 - self.SetPointsColor(id, [red, green, blue]) + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] + self.SetPointsColor(id, red, green, blue) @exportRpc(mesh_points_prefix + mesh_points_schemas_dict["size"]["rpc"]) def setMeshPointsSize(self, params): diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py index d6ffc1e..f621bfc 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py @@ -21,15 +21,15 @@ def setMeshPolygonsVisibility(self, params): validate_schema(params, self.mesh_polygons_schemas_dict["visibility"]) id = params["id"] visibility = bool(params["visibility"]) - self.SetPolygonsVisibility(id, visibility) + self.SetVisibility(id, visibility) @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["color"]["rpc"]) def setMeshPolygonsColor(self, params): print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["color"]["rpc"], f"{params=}", flush=True) validate_schema(params, self.mesh_polygons_schemas_dict["color"]) id = params["id"] - red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 - self.SetPolygonsColor(id, [red, green, blue]) + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] + self.SetColor(id, red, green, blue) @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["vertex_attribute"]["rpc"]) def setMeshPolygonsVertexAttribute(self, params): diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py index f6309a4..256c30c 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py @@ -15,13 +15,13 @@ class VtkMeshPolyhedronsView(VtkMeshView): def __init__(self): super().__init__() - # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["visibility"]["rpc"]) - # def setMeshPolyhedronsVisibility(self, params): - # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) - # validate_schema(params, self.mesh_polyhedrons_schemas_dict["visibility"]) - # id = params["id"] - # visibility = bool(params["visibility"]) - # self.SetPolyhedronsVisibility(id, visibility) + @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["visibility"]["rpc"]) + def setMeshPolyhedronsVisibility(self, params): + print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["visibility"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polyhedrons_schemas_dict["visibility"]) + id = params["id"] + visibility = bool(params["visibility"]) + self.SetVisibility(id, visibility) @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["color"]["rpc"]) def setMeshPolyhedronsColor(self, params): @@ -30,7 +30,7 @@ def setMeshPolyhedronsColor(self, params): print("id", params["id"], flush=True) id = params["id"] print("color", params["color"], flush=True) - red, green, blue = params["color"]["r"]/255, params["color"]["g"]/255, params["color"]["b"]/255 + red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"]) @@ -41,10 +41,3 @@ def setMeshPolyhedronsColor(self, params): # name = str(params["name"]) # self.setMeshVertexAttribute(id, name) - # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["polygon_attribute"]["rpc"]) - # def setMeshPolyhedronsPolygonAttribute(self, params): - # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["polygon_attribute"]["rpc"], f"{params=}", flush=True) - # validate_schema(params, self.mesh_polyhedrons_schemas_dict["polygon_attribute"]) - # id = params["id"] - # name = str(params["name"]) - # self.setMeshPolygonAttribute(id, name) diff --git a/src/tests/tests_output/test.jpeg b/src/tests/tests_output/test.jpeg index 634bc28cfc3e171b10b7b27d15dc558738ae2118..6b2509f219dee5c4eca6d83f49c57222970133e8 100644 GIT binary patch literal 10543 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 From 15f06785e1c74392f4c1823c58ce4744fdc7a6d6 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Tue, 11 Feb 2025 23:14:17 +0100 Subject: [PATCH 07/13] data with vertices & polyhedra attribute --- src/tests/data/hybrid_solid.vtu | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tests/data/hybrid_solid.vtu b/src/tests/data/hybrid_solid.vtu index 161c61c..7c86fa9 100644 --- a/src/tests/data/hybrid_solid.vtu +++ b/src/tests/data/hybrid_solid.vtu @@ -3,12 +3,15 @@ + 1 2 3 4 5 6 7 8 9 10 11 0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 - + + 3 4 5 6 + 0 1 3 4 5 6 8 9 1 2 3 6 7 8 5 6 8 9 10 6 7 8 10 8 14 19 23 From 4136e1de116303eb64ccd71671890901e8a55484 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Tue, 11 Feb 2025 23:14:39 +0100 Subject: [PATCH 08/13] rename mesh functions --- src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py index e01eaf2..696dc99 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py @@ -62,7 +62,7 @@ def setMeshColor(self, params): red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) - def setMeshVertexAttribute(self, id, name): + def displayAttributeOnVertices(self, id, name): reader = self.get_object(id)["reader"] points = reader.GetOutput().GetPointData() points.SetActiveScalars(name) @@ -72,7 +72,8 @@ def setMeshVertexAttribute(self, id, name): mapper.SetScalarRange(points.GetScalars().GetRange()) self.render() - def setMeshPolygonAttribute(self, id, name): + + def displayAttributeOnCells(self, id, name): reader = self.get_object(id)["reader"] cells = reader.GetOutput().GetCellData() cells.SetActiveScalars(name) From 655a3ab5cf442852413dfd7e661f4c19565055ad Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Tue, 11 Feb 2025 23:14:57 +0100 Subject: [PATCH 09/13] protocols & tests --- .gitignore | 2 +- .../rpc/mesh/polygons/polygons_protocols.py | 6 ++--- .../mesh/polyhedrons/polyhedrons_protocols.py | 22 +++++++++++----- ...tribute.json => polyhedron_attribute.json} | 2 +- .../data/images/mesh/polygons/visibility.jpeg | Bin 0 -> 2134 bytes .../polyhedrons/polyhedron_attribute.jpeg | Bin 0 -> 6408 bytes .../mesh/polyhedrons/vertex_attribute.jpeg | Bin 0 -> 12411 bytes .../images/mesh/polyhedrons/visibility.jpeg | Bin 0 -> 2134 bytes .../mesh/polygons/test_polygons_protocols.py | 10 +++++++- .../polyhedrons/test_polyhedrons_protocols.py | 24 +++++++++++++++++- 10 files changed, 52 insertions(+), 14 deletions(-) rename src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/{polygon_attribute.json => polyhedron_attribute.json} (86%) create mode 100644 src/tests/data/images/mesh/polygons/visibility.jpeg create mode 100644 src/tests/data/images/mesh/polyhedrons/polyhedron_attribute.jpeg create mode 100644 src/tests/data/images/mesh/polyhedrons/vertex_attribute.jpeg create mode 100644 src/tests/data/images/mesh/polyhedrons/visibility.jpeg diff --git a/.gitignore b/.gitignore index 8a512a7..c50471c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,5 @@ __pycache__/ latest_logs schemas.json build -src/tests/tests_output/ +/src/tests/tests_output/ *.egg-info diff --git a/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py index f621bfc..cd64c32 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polygons/polygons_protocols.py @@ -22,7 +22,7 @@ def setMeshPolygonsVisibility(self, params): id = params["id"] visibility = bool(params["visibility"]) self.SetVisibility(id, visibility) - + @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["color"]["rpc"]) def setMeshPolygonsColor(self, params): print(self.mesh_polygons_prefix + self.mesh_polygons_schemas_dict["color"]["rpc"], f"{params=}", flush=True) @@ -37,7 +37,7 @@ def setMeshPolygonsVertexAttribute(self, params): validate_schema(params, self.mesh_polygons_schemas_dict["vertex_attribute"]) id = params["id"] name = str(params["name"]) - self.setMeshVertexAttribute(id, name) + self.displayAttributeOnVertices(id, name) @exportRpc(mesh_polygons_prefix + mesh_polygons_schemas_dict["polygon_attribute"]["rpc"]) def setMeshPolygonsPolygonAttribute(self, params): @@ -45,4 +45,4 @@ def setMeshPolygonsPolygonAttribute(self, params): validate_schema(params, self.mesh_polygons_schemas_dict["polygon_attribute"]) id = params["id"] name = str(params["name"]) - self.setMeshPolygonAttribute(id, name) + self.displayAttributeOnCells(id, name) diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py index 256c30c..95d5345 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py @@ -33,11 +33,19 @@ def setMeshPolyhedronsColor(self, params): red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) - # @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"]) - # def setMeshPolyhedronsVertexAttribute(self, params): - # print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) - # validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) - # id = params["id"] - # name = str(params["name"]) - # self.setMeshVertexAttribute(id, name) + @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"]) + def setMeshPolyhedronsVertexAttribute(self, params): + print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) + id = params["id"] + name = str(params["name"]) + self.setMeshVertexAttribute(id, name) + + @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["polyhedron_attribute"]["rpc"]) + def setMeshPolyhedronsPolyhedronAttribute(self, params): + print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"], f"{params=}", flush=True) + validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) + id = params["id"] + name = str(params["name"]) + self.setMeshPolyhedronAttribute(id, name) diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polyhedron_attribute.json similarity index 86% rename from src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json rename to src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polyhedron_attribute.json index cb6c23a..6d3a1dd 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polygon_attribute.json +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/schemas/polyhedron_attribute.json @@ -1,5 +1,5 @@ { - "rpc": "polygon_attribute", + "rpc": "polyhedron_attribute", "type": "object", "properties": { "id": { diff --git a/src/tests/data/images/mesh/polygons/visibility.jpeg b/src/tests/data/images/mesh/polygons/visibility.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7eb6779c5adce43da5fb448027de30a414c5f20e GIT binary patch literal 2134 zcmex=qb(k5I7?=bZ znFSgDA7PLJIgWuD=u$Xf=U`>y}GYbddjNxwSiu5d*m3}aospI4M}_z?J0IJ4m-TK}Cr_V~7G2t5Hz70BlJA6{ zxkyyVvS&#=g3Q^A+AEz+Cz$9>k?h;|qwvkdNS-6-&9SuxI>ic0k8SszB+!!6(LH4aw+iF8TDk3g zclH`9%W{8=I^3to7nfudtY6678ZUf#bM@A>s=mbr+g5VVo~>`(QMNX@X z>Ux6d$%~i?b~STrMcq4sygfa|tro@b6h7&muIDm!*OFAnE@iVDW!K(Vh;BJ^YLV|o zE-RIHCAMbryS~>013(KH(kwu$S(#a(b~6D(o|R2dNLYkHR8h%L*(ks%FbN*!Z1zn5 z8TbV@HSU!#`S>>P;j^H5>%*Ca*RNdHoGx|xwnf;Lb4d)^nCxvZJ`PyXO zbY(GvaberlG@)B@t;dUWCr{fuY3;gx)_wX0GrmmQ&zjUW>wDJH>s{|09V~6CEWGwF zF#Emb>qmZp`PF^)&ar$p96FVDCUN`DCYAoMdbz0?HYCOn1rgbJ;w$#Ti z#OS=agw^uzb0nq+zB**}Vo&gMsd`u;$pFgfz;bdp0>%ntUoi%8Aan7snSr@eMi3Zn zjIf*uQp_l*$YAK;7=S301U`H>Kd6!xm8rsXIqe&}iOH)dnFBh;k}E45I)r5X6|dd~ zCjn_eND@HU2sFyk&;e=^s9+KJQC<4VqjQ3*SM&7c&8btbon3LWcgvRI8R1OJxJuCBB)oD^BRm6EF3Xdv!(IY>s&G z1{EnJKb>r0#xO~NVMB=okJ$aI_twSq)g~?X?OLwRx!k_&D1*^9m)w`TPG+a6WOpaJ j*Q|SYHYKiMp&QFzj<)c58lu1dGbkACTxVy||NkZc|7{Ay literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/polyhedrons/polyhedron_attribute.jpeg b/src/tests/data/images/mesh/polyhedrons/polyhedron_attribute.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..050d8574c1e3e56901fa4480d739384c44fbd14b GIT binary patch literal 6408 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 CBiaZ6 literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/polyhedrons/visibility.jpeg b/src/tests/data/images/mesh/polyhedrons/visibility.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7eb6779c5adce43da5fb448027de30a414c5f20e GIT binary patch literal 2134 zcmex=qb(k5I7?=bZ znFSgDA7PLJIgWuD=u$Xf=U`>y}GYbddjNxwSiu5d*m3}aospI4M}_z?J0IJ4m-TK}Cr_V~7G2t5Hz70BlJA6{ zxkyyVvS&#=g3Q^A+AEz+Cz$9>k?h;|qwvkdNS-6-&9SuxI>ic0k8SszB+!!6(LH4aw+iF8TDk3g zclH`9%W{8=I^3to7nfudtY6678ZUf#bM@A>s=mbr+g5VVo~>`(QMNX@X z>Ux6d$%~i?b~STrMcq4sygfa|tro@b6h7&muIDm!*OFAnE@iVDW!K(Vh;BJ^YLV|o zE-RIHCAMbryS~>013(KH(kwu$S(#a(b~6D(o|R2dNLYkHR8h%L*(ks%FbN*!Z1zn5 z8TbV@HSU!#`S>>P;j^H5>%*Ca*RNdHoGx|xwnf;Lb4d)^nCxvZJ`PyXO zbY(GvaberlG@)B@t;dUWCr{fuY3;gx)_wX0GrmmQ&zjUW>wDJH>s{|09V~6CEWGwF zF#Emb>qmZp`PF^)&ar$p96FVDCUN`DCYAoMdbz0?HYCOn1rgbJ;w$#Ti z#OS=agw^uzb0nq+zB**}Vo&gMsd`u;$pFgfz;bdp0>%ntUoi%8Aan7snSr@eMi3Zn zjIf*uQp_l*$YAK;7=S301U`H>Kd6!xm8rsXIqe&}iOH)dnFBh;k}E45I)r5X6|dd~ zCjn_eND@HU2sFyk&;e=^s9+KJQC<4VqjQ3*SM&7c&8btbon3LWcgvRI8R1OJxJuCBB)oD^BRm6EF3Xdv!(IY>s&G z1{EnJKb>r0#xO~NVMB=okJ$aI_twSq)g~?X?OLwRx!k_&D1*^9m)w`TPG+a6WOpaJ j*Q|SYHYKiMp&QFzj<)c58lu1dGbkACTxVy||NkZc|7{Ay literal 0 HcmV?d00001 diff --git a/src/tests/mesh/polygons/test_polygons_protocols.py b/src/tests/mesh/polygons/test_polygons_protocols.py index 78655aa..a519bcf 100644 --- a/src/tests/mesh/polygons/test_polygons_protocols.py +++ b/src/tests/mesh/polygons/test_polygons_protocols.py @@ -12,4 +12,12 @@ def test_polygons_color(server): test_register_mesh(server) server.call(VtkMeshPolygonsView.mesh_polygons_prefix + VtkMeshPolygonsView.mesh_polygons_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) - assert server.compare_image(3, "mesh/polygons/color.jpeg") == True \ No newline at end of file + assert server.compare_image(3, "mesh/polygons/color.jpeg") == True + + +def test_polygons_visibility(server): + + test_register_mesh(server) + + server.call(VtkMeshPolygonsView.mesh_polygons_prefix + VtkMeshPolygonsView.mesh_polygons_schemas_dict["visibility"]["rpc"], [{"id": "123456789", "visibility": False}]) + assert server.compare_image(3, "mesh/polygons/visibility.jpeg") == True diff --git a/src/tests/mesh/polyhedrons/test_polyhedrons_protocols.py b/src/tests/mesh/polyhedrons/test_polyhedrons_protocols.py index bd398df..65a9111 100644 --- a/src/tests/mesh/polyhedrons/test_polyhedrons_protocols.py +++ b/src/tests/mesh/polyhedrons/test_polyhedrons_protocols.py @@ -17,4 +17,26 @@ def test_polyhedrons_color(server): test_register_mesh(server) server.call(VtkMeshPolyhedronsView.mesh_polyhedrons_prefix + VtkMeshPolyhedronsView.mesh_polyhedrons_schemas_dict["color"]["rpc"], [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}]) - assert server.compare_image(3, "mesh/polyhedrons/color.jpeg") == True \ No newline at end of file + assert server.compare_image(3, "mesh/polyhedrons/color.jpeg") == True + +def test_polyhedrons_visibility(server): + + test_register_mesh(server) + + server.call(VtkMeshPolyhedronsView.mesh_polyhedrons_prefix + VtkMeshPolyhedronsView.mesh_polyhedrons_schemas_dict["visibility"]["rpc"], [{"id": "123456789", "visibility": False}]) + assert server.compare_image(3, "mesh/polyhedrons/visibility.jpeg") == True + +def test_vertex_attribute(server): + + test_register_mesh(server) + + server.call(VtkMeshPolyhedronsView.mesh_polyhedrons_prefix + VtkMeshPolyhedronsView.mesh_polyhedrons_schemas_dict["vertex_attribute"]["rpc"], [{"id": "123456789", "name": "toto_on_vertices"}]) + assert server.compare_image(3, "mesh/polyhedrons/vertex_attribute.jpeg") == True + + +def test_polyhedron_attribute(server): + + test_register_mesh(server) + + server.call(VtkMeshPolyhedronsView.mesh_polyhedrons_prefix + VtkMeshPolyhedronsView.mesh_polyhedrons_schemas_dict["polyhedron_attribute"]["rpc"], [{"id": "123456789", "name": "toto_on_polyhedra"}]) + assert server.compare_image(3, "mesh/polyhedrons/polyhedron_attribute.jpeg") == True \ No newline at end of file From 4be5438655ac9b844576f6b2d036ffa5ec2c2d44 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Tue, 11 Feb 2025 23:21:05 +0100 Subject: [PATCH 10/13] cleanup --- src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py | 2 +- .../rpc/mesh/polyhedrons/polyhedrons_protocols.py | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py index 7c1e16b..cd3fc2f 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/points/points_protocols.py @@ -45,5 +45,5 @@ def setMeshPointsVertexAttribute(self, params): validate_schema(params, self.mesh_points_schemas_dict["vertex_attribute"]) id = str(params["id"]) name = str(params["name"]) - self.setMeshVertexAttribute(id, name) + self.displayAttributeOnVertices(id, name) \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py index 95d5345..5cbcbfd 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/polyhedrons/polyhedrons_protocols.py @@ -27,9 +27,7 @@ def setMeshPolyhedronsVisibility(self, params): def setMeshPolyhedronsColor(self, params): print(self.mesh_polyhedrons_prefix + self.mesh_polyhedrons_schemas_dict["color"]["rpc"], f"{params=}", flush=True) validate_schema(params, self.mesh_polyhedrons_schemas_dict["color"]) - print("id", params["id"], flush=True) id = params["id"] - print("color", params["color"], flush=True) red, green, blue = params["color"]["r"], params["color"]["g"], params["color"]["b"] self.SetColor(id, red, green, blue) @@ -39,7 +37,7 @@ def setMeshPolyhedronsVertexAttribute(self, params): validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) id = params["id"] name = str(params["name"]) - self.setMeshVertexAttribute(id, name) + self.displayAttributeOnVertices(id, name) @exportRpc(mesh_polyhedrons_prefix + mesh_polyhedrons_schemas_dict["polyhedron_attribute"]["rpc"]) def setMeshPolyhedronsPolyhedronAttribute(self, params): @@ -47,5 +45,5 @@ def setMeshPolyhedronsPolyhedronAttribute(self, params): validate_schema(params, self.mesh_polyhedrons_schemas_dict["vertex_attribute"]) id = params["id"] name = str(params["name"]) - self.setMeshPolyhedronAttribute(id, name) + self.displayAttributeOnCells(id, name) From 59defb38b9567064daeef71b3d8fec71cda1d0dd Mon Sep 17 00:00:00 2001 From: semantic-release Date: Thu, 13 Feb 2025 14:46:11 +0000 Subject: [PATCH 11/13] 1.3.0-rc.1 Automatically generated by python-semantic-release --- CHANGELOG.md | 10 +++++++++- pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24a6dc7..a2d40f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # CHANGELOG +## v1.3.0-rc.1 (2025-02-13) + +### Features + +- **polyhedrons**: Color protocol + ([`15b35fc`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/15b35fcfdda1afc66f4eb4942d9f54006bbc9a0f)) + + ## v1.2.1 (2025-01-16) @@ -128,7 +136,7 @@ BREAKING CHANGE: change some rpc names in schemas -### BREAKING CHANGES +### Breaking Changes - **new rpcs**: Change some rpc names in schemas diff --git a/pyproject.toml b/pyproject.toml index 042d8d3..5e77e53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "OpenGeodeWeb-Viewer" -version = "1.2.1" +version = "1.3.0-rc.1" dynamic = ["dependencies"] authors = [ { name="Geode-solutions", email="team-web@geode-solutions.com" }, From 430f5c818a7b2af89f79ab47b81885f2a4f9924d Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Thu, 13 Feb 2025 16:19:05 +0100 Subject: [PATCH 12/13] fix(CICD): twine 6.0.1 --- .github/workflows/CICD.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index d70308d..9851137 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -40,7 +40,7 @@ jobs: - name: Upload PYPI if: steps.semantic-release.outputs.released == 'true' run: | - python3 -m pip install twine + python3 -m pip install twine==6.0.1 python3 -m twine upload --repository pypi dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }} - name: Setup NODE uses: actions/setup-node@v3 From 66c4dc39468a49b18a5152478d341402d8f9356d Mon Sep 17 00:00:00 2001 From: semantic-release Date: Thu, 13 Feb 2025 15:21:30 +0000 Subject: [PATCH 13/13] 1.3.0-rc.2 Automatically generated by python-semantic-release --- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2d40f0..fa64c69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # CHANGELOG +## v1.3.0-rc.2 (2025-02-13) + +### Bug Fixes + +- **CICD**: Twine 6.0.1 + ([`430f5c8`](https://github.com/Geode-solutions/OpenGeodeWeb-Viewer/commit/430f5c818a7b2af89f79ab47b81885f2a4f9924d)) + + ## v1.3.0-rc.1 (2025-02-13) ### Features diff --git a/pyproject.toml b/pyproject.toml index 5e77e53..9407cf1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "OpenGeodeWeb-Viewer" -version = "1.3.0-rc.1" +version = "1.3.0-rc.2" dynamic = ["dependencies"] authors = [ { name="Geode-solutions", email="team-web@geode-solutions.com" },