@@ -58,7 +58,9 @@ function vtkVolumeController(publicAPI, model) {
58
58
const dataArray =
59
59
sourceDS . getPointData ( ) . getScalars ( ) ||
60
60
sourceDS . getPointData ( ) . getArrays ( ) [ 0 ] ;
61
- const dataRange = dataArray . getRange ( ) ;
61
+ const dataRange = model . rescaleColorMap
62
+ ? model . colorDataRange
63
+ : dataArray . getRange ( ) ;
62
64
const preset = vtkColorMaps . getPresetByName (
63
65
model . el . querySelector ( '.js-color-preset' ) . value
64
66
) ;
@@ -196,6 +198,7 @@ function vtkVolumeController(publicAPI, model) {
196
198
model . widget . applyOpacity ( piecewiseFunction ) ;
197
199
model . widget . setContainer ( widgetContainer ) ;
198
200
model . widget . bindMouseListeners ( ) ;
201
+ model . colorDataRange = model . widget . getOpacityRange ( ) ;
199
202
200
203
// Attach listeners
201
204
domToggleButton . addEventListener ( 'click' , toggleVisibility ) ;
@@ -206,6 +209,11 @@ function vtkVolumeController(publicAPI, model) {
206
209
207
210
model . widget . onOpacityChange ( ( ) => {
208
211
model . widget . applyOpacity ( piecewiseFunction ) ;
212
+ model . colorDataRange = model . widget . getOpacityRange ( ) ;
213
+ if ( model . rescaleColorMap ) {
214
+ updateColorMapPreset ( ) ;
215
+ }
216
+
209
217
if ( ! model . renderWindow . getInteractor ( ) . isAnimating ( ) ) {
210
218
model . renderWindow . render ( ) ;
211
219
}
@@ -251,6 +259,15 @@ function vtkVolumeController(publicAPI, model) {
251
259
}
252
260
} ;
253
261
262
+ const rescaleColorMap = publicAPI . setRescaleColorMap ;
263
+ publicAPI . setSescaleColorMap = ( value ) => {
264
+ if ( rescaleColorMap ( value ) ) {
265
+ updateColorMapPreset ( ) ;
266
+ return true ;
267
+ }
268
+ return false ;
269
+ } ;
270
+
254
271
publicAPI . setSize = model . widget . setSize ;
255
272
publicAPI . render = model . widget . render ;
256
273
publicAPI . onAnimation = model . widget . onAnimation ;
@@ -267,6 +284,7 @@ function vtkVolumeController(publicAPI, model) {
267
284
const DEFAULT_VALUES = {
268
285
size : [ 600 , 300 ] ,
269
286
expanded : true ,
287
+ rescaleColorMap : false ,
270
288
} ;
271
289
272
290
// ----------------------------------------------------------------------------
@@ -276,7 +294,7 @@ export function extend(publicAPI, model, initialValues = {}) {
276
294
277
295
// Object methods
278
296
macro . obj ( publicAPI , model ) ;
279
- macro . setGet ( publicAPI , model , [ 'actor' , 'renderWindow' ] ) ;
297
+ macro . setGet ( publicAPI , model , [ 'actor' , 'renderWindow' , 'rescaleColorMap' ] ) ;
280
298
macro . get ( publicAPI , model , [ 'widget' ] ) ;
281
299
282
300
// Object specific methods
0 commit comments