Skip to content

Commit 4a50f92

Browse files
committed
add build files
1 parent 60cda60 commit 4a50f92

16 files changed

+185
-7
lines changed

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export(vtkReader)
1515
export(vtkShareDataSet)
1616
export(vtkSliceRepresentation)
1717
export(vtkView)
18+
export(vtkVolume)
1819
export(vtkVolumeController)
1920
export(vtkVolumeDataRepresentation)
2021
export(vtkVolumeRepresentation)

R/vtkVolume.R

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# AUTO GENERATED FILE - DO NOT EDIT
2+
3+
vtkVolume <- function(id=NULL, port=NULL, state=NULL) {
4+
5+
props <- list(id=id, port=port, state=state)
6+
if (length(props) > 0) {
7+
props <- props[!vapply(props, is.null, logical(1))]
8+
}
9+
component <- list(
10+
props = props,
11+
type = 'Volume',
12+
namespace = 'dash_vtk',
13+
propNames = c('id', 'port', 'state'),
14+
package = 'dashVtk'
15+
)
16+
17+
structure(component, class = c('dash_component', 'list'))
18+
}

dash_vtk/Volume.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# AUTO GENERATED FILE - DO NOT EDIT
2+
3+
from dash.development.base_component import Component, _explicitize_args
4+
5+
6+
class Volume(Component):
7+
"""A Volume component.
8+
Volume is exposing a vtkImageData to a downstream filter
9+
It takes the following set of properties:
10+
- state: { image: { ...imagedata-props }, field: { ...dataArray } }
11+
12+
Keyword arguments:
13+
- id (string; optional): The ID used to identify this component.
14+
- port (number; default 0): downstream connection port
15+
- state (dict; default {
16+
image: { dimension: [10, 10, 10] },
17+
}): State of the volume"""
18+
@_explicitize_args
19+
def __init__(self, id=Component.UNDEFINED, port=Component.UNDEFINED, state=Component.UNDEFINED, **kwargs):
20+
self._prop_names = ['id', 'port', 'state']
21+
self._type = 'Volume'
22+
self._namespace = 'dash_vtk'
23+
self._valid_wildcard_attributes = []
24+
self.available_properties = ['id', 'port', 'state']
25+
self.available_wildcard_properties = []
26+
27+
_explicit_args = kwargs.pop('_explicit_args')
28+
_locals = locals()
29+
_locals.update(kwargs) # For wildcard attrs
30+
args = {k: _locals[k] for k in _explicit_args if k != 'children'}
31+
32+
for k in []:
33+
if k not in args:
34+
raise TypeError(
35+
'Required argument `' + k + '` was not specified.')
36+
super(Volume, self).__init__(**args)

dash_vtk/_imports_.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from .ShareDataSet import ShareDataSet
1414
from .SliceRepresentation import SliceRepresentation
1515
from .View import View
16+
from .Volume import Volume
1617
from .VolumeController import VolumeController
1718
from .VolumeDataRepresentation import VolumeDataRepresentation
1819
from .VolumeRepresentation import VolumeRepresentation
@@ -33,6 +34,7 @@
3334
"ShareDataSet",
3435
"SliceRepresentation",
3536
"View",
37+
"Volume",
3638
"VolumeController",
3739
"VolumeDataRepresentation",
3840
"VolumeRepresentation"

dash_vtk/dash_vtk.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dash_vtk/dash_vtk.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dash_vtk/metadata.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,6 +1079,42 @@
10791079
}
10801080
}
10811081
},
1082+
"src/lib/components/Volume.react.js": {
1083+
"description": "Volume is exposing a vtkImageData to a downstream filter\nIt takes the following set of properties:\n - state: { image: { ...imagedata-props }, field: { ...dataArray } }",
1084+
"displayName": "Volume",
1085+
"methods": [],
1086+
"props": {
1087+
"id": {
1088+
"type": {
1089+
"name": "string"
1090+
},
1091+
"required": false,
1092+
"description": "The ID used to identify this component."
1093+
},
1094+
"port": {
1095+
"type": {
1096+
"name": "number"
1097+
},
1098+
"required": false,
1099+
"description": "downstream connection port",
1100+
"defaultValue": {
1101+
"value": "0",
1102+
"computed": false
1103+
}
1104+
},
1105+
"state": {
1106+
"type": {
1107+
"name": "object"
1108+
},
1109+
"required": false,
1110+
"description": "State of the volume",
1111+
"defaultValue": {
1112+
"value": "{\n image: { dimension: [10, 10, 10] },\n}",
1113+
"computed": false
1114+
}
1115+
}
1116+
}
1117+
},
10821118
"src/lib/components/VolumeController.react.js": {
10831119
"description": "VolumeController is a GUI to control the piecewise function",
10841120
"displayName": "VolumeController",

dash_vtk/utils/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from .vtk import to_mesh_state, presets
1+
from .vtk import to_mesh_state, to_volume_state, presets, preset_as_options

dash_vtk/utils/vtk.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020

2121
def to_mesh_state(dataset, field_to_keep=None):
22+
'''Expect any dataset and extract its surface into a dash_vtk.Mesh state property'''
2223
if dataset is None:
2324
return None
2425

@@ -95,6 +96,36 @@ def to_mesh_state(dataset, field_to_keep=None):
9596

9697
return state
9798

99+
100+
def to_volume_state(dataset):
101+
'''Expect a vtkImageData and extract its setting for the dash_vtk.Volume state'''
102+
if dataset is None or not dataset.IsA('vtkImageData'):
103+
return None
104+
105+
state = {
106+
'image': {
107+
'dimensions': dataset.GetDimensions(),
108+
'spacing': dataset.GetSpacing(),
109+
'origin': dataset.GetOrigin(),
110+
},
111+
}
112+
scalars = dataset.GetPointData().GetScalars()
113+
114+
if scalars is not None:
115+
values = vtk_to_numpy(scalars).ravel()
116+
js_types = to_js_type[str(values.dtype)]
117+
state['field'] = {
118+
'name': scalars.GetName(),
119+
'numberOfComponents': scalars.GetNumberOfComponents(),
120+
'dataRange': scalars.GetRange(-1),
121+
'type': js_types,
122+
'values': values,
123+
}
124+
125+
126+
return state
127+
128+
98129
presets = [
99130
"KAAMS",
100131
"Cool to Warm",
@@ -285,3 +316,9 @@ def to_mesh_state(dataset, field_to_keep=None):
285316
"Viridis (matplotlib)",
286317
"BlueObeliskElements",
287318
]
319+
320+
def toDropOption(name):
321+
return {'label': name, 'value': name}
322+
323+
324+
preset_as_options = list(map(toDropOption, presets))

deps/dash_vtk.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)