Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
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
36 changes: 32 additions & 4 deletions opengeodeweb_viewer_schemas.json
Original file line number Diff line number Diff line change
Expand Up @@ -1183,6 +1183,13 @@
},
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": [
"constant",
"random"
]
},
"color": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1219,7 +1226,7 @@
"required": [
"id",
"block_ids",
"color"
"color_mode"
],
"additionalProperties": false
}
Expand Down Expand Up @@ -1268,6 +1275,13 @@
},
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": [
"constant",
"random"
]
},
"color": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1304,7 +1318,7 @@
"required": [
"id",
"block_ids",
"color"
"color_mode"
],
"additionalProperties": false
}
Expand Down Expand Up @@ -1374,6 +1388,13 @@
},
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": [
"constant",
"random"
]
},
"color": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1410,7 +1431,7 @@
"required": [
"id",
"block_ids",
"color"
"color_mode"
],
"additionalProperties": false
}
Expand Down Expand Up @@ -1548,6 +1569,13 @@
},
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": [
"constant",
"random"
]
},
"color": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1584,7 +1612,7 @@
"required": [
"id",
"block_ids",
"color"
"color_mode"
],
"additionalProperties": false
},
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,3 @@ wslink==1.12.4
yarl>=1
# via aiohttp

opengeodeweb-microservice==1.*,>=1.1.2rc1
25 changes: 22 additions & 3 deletions src/opengeodeweb_viewer/rpc/model/blocks/model_blocks_protocols.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
# Third party imports
from wslink import register as exportRpc # type: ignore
from opengeodeweb_microservice.schemas import get_schemas_dict
from vtkmodules.vtkRenderingCore import vtkCompositePolyDataMapper

# Local application imports
from opengeodeweb_viewer.utils_functions import (
validate_schema,
RpcParams,
deterministic_color,
)
from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView
from . import schemas
Expand All @@ -34,12 +36,29 @@ def setModelBlocksPolyhedraVisibility(self, rpc_params: RpcParams) -> None:
self.SetBlocksVisibility(params.id, params.block_ids, params.visibility)

@exportRpc(model_blocks_prefix + model_blocks_schemas_dict["color"]["rpc"])
def setModelBlocksPolyhedraColor(self, rpc_params: RpcParams) -> None:
def setModelBlocksColor(self, rpc_params: RpcParams) -> None:
validate_schema(
rpc_params,
self.model_blocks_schemas_dict["color"],
self.model_blocks_prefix,
)
params = schemas.Color.from_dict(rpc_params)
color = params.color
self.SetBlocksColor(params.id, params.block_ids, color.r, color.g, color.b)
pipeline = self.get_vtk_pipeline(params.id)
mapper = pipeline.mapper
if not isinstance(mapper, vtkCompositePolyDataMapper):
return
attr = mapper.GetCompositeDataDisplayAttributes()
for block_id in params.block_ids:
block_ds = pipeline.blockDataSets[block_id]
if params.color_mode == schemas.ColorMode.RANDOM:
geode_id = pipeline.blockGeodeIds[block_id]
r, g, b = deterministic_color(geode_id)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [mypy] reported by reviewdog 🐶
Argument 1 to "deterministic_color" has incompatible type "str | None"; expected "str" [arg-type]

attr.SetBlockColor(block_ds, [r, g, b])
elif params.color is not None:
r, g, b = (
params.color.r / 255,
params.color.g / 255,
params.color.b / 255,
)
attr.SetBlockColor(block_ds, [r, g, b])
mapper.Modified()
47 changes: 12 additions & 35 deletions src/opengeodeweb_viewer/rpc/model/blocks/schemas/color.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,48 +8,25 @@
},
"block_ids": {
"type": "array",
"items": {
"type": "integer"
},
"items": { "type": "integer" },
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": ["constant", "random"]
},
"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
}
"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"
],
"required": ["r", "g", "b"],
"additionalProperties": false
}
},
"required": [
"id",
"block_ids",
"color"
],
"required": ["id", "block_ids", "color_mode"],
"additionalProperties": false
}
}
9 changes: 8 additions & 1 deletion src/opengeodeweb_viewer/rpc/model/blocks/schemas/color.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from dataclasses_json import DataClassJsonMixin
from dataclasses import dataclass
from typing import Optional, List
from enum import Enum


@dataclass
Expand All @@ -14,11 +15,17 @@ def __post_init__(self) -> None:
a: Optional[float] = None


class ColorMode(Enum):
CONSTANT = "constant"
RANDOM = "random"


@dataclass
class Color(DataClassJsonMixin):
def __post_init__(self) -> None:
print(self, flush=True)

block_ids: List[int]
color: ColorClass
color_mode: ColorMode
id: str
color: Optional[ColorClass] = None
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
# Third party imports
from wslink import register as exportRpc # type: ignore
from opengeodeweb_microservice.schemas import get_schemas_dict
from vtkmodules.vtkRenderingCore import vtkCompositePolyDataMapper

# Local application imports
from opengeodeweb_viewer.utils_functions import (
validate_schema,
RpcParams,
deterministic_color,
)
from opengeodeweb_viewer.rpc.model.model_protocols import VtkModelView
from . import schemas
Expand All @@ -34,12 +36,29 @@ def setModelCornersPointsVisibility(self, rpc_params: RpcParams) -> None:
self.SetBlocksVisibility(params.id, params.block_ids, params.visibility)

@exportRpc(model_corners_prefix + model_corners_schemas_dict["color"]["rpc"])
def setModelCornersPointsColor(self, rpc_params: RpcParams) -> None:
def setModelCornersColor(self, rpc_params: RpcParams) -> None:
validate_schema(
rpc_params,
self.model_corners_schemas_dict["color"],
self.model_corners_prefix,
)
params = schemas.Color.from_dict(rpc_params)
color = params.color
self.SetBlocksColor(params.id, params.block_ids, color.r, color.g, color.b)
pipeline = self.get_vtk_pipeline(params.id)
mapper = pipeline.mapper
if not isinstance(mapper, vtkCompositePolyDataMapper):
return
attr = mapper.GetCompositeDataDisplayAttributes()
for block_id in params.block_ids:
block_ds = pipeline.blockDataSets[block_id]
if params.color_mode == schemas.ColorMode.RANDOM:
geode_id = pipeline.blockGeodeIds[block_id]
r, g, b = deterministic_color(geode_id)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [mypy] reported by reviewdog 🐶
Argument 1 to "deterministic_color" has incompatible type "str | None"; expected "str" [arg-type]

attr.SetBlockColor(block_ds, [r, g, b])
elif params.color is not None:
r, g, b = (
params.color.r / 255,
params.color.g / 255,
params.color.b / 255,
)
attr.SetBlockColor(block_ds, [r, g, b])
mapper.Modified()
47 changes: 12 additions & 35 deletions src/opengeodeweb_viewer/rpc/model/corners/schemas/color.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,48 +8,25 @@
},
"block_ids": {
"type": "array",
"items": {
"type": "integer"
},
"items": { "type": "integer" },
"minItems": 1
},
"color_mode": {
"type": "string",
"enum": ["constant", "random"]
},
"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
}
"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"
],
"required": ["r", "g", "b"],
"additionalProperties": false
}
},
"required": [
"id",
"block_ids",
"color"
],
"required": ["id", "block_ids", "color_mode"],
"additionalProperties": false
}
}
9 changes: 8 additions & 1 deletion src/opengeodeweb_viewer/rpc/model/corners/schemas/color.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from dataclasses_json import DataClassJsonMixin
from dataclasses import dataclass
from typing import Optional, List
from enum import Enum


@dataclass
Expand All @@ -14,11 +15,17 @@ def __post_init__(self) -> None:
a: Optional[float] = None


class ColorMode(Enum):
CONSTANT = "constant"
RANDOM = "random"


@dataclass
class Color(DataClassJsonMixin):
def __post_init__(self) -> None:
print(self, flush=True)

block_ids: List[int]
color: ColorClass
color_mode: ColorMode
id: str
color: Optional[ColorClass] = None
Loading
Loading