Skip to content

Commit 197acaf

Browse files
committed
fix(ColorMaps): Allow user to specify custom color maps
Need to add `?serverColorMaps` to the URL to force the client to fetch the actual Presets instead of using a local version of it.
1 parent 7210cd9 commit 197acaf

File tree

4 files changed

+26
-9
lines changed

4 files changed

+26
-9
lines changed

bin/pvw-visualizer-cli.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ program
3737
.option('--proxies [proxyFile]', 'Path to a file with json text containing filters to load')
3838
.option('--no-auto-readers', 'If provided, disables ability to use non-configured readers\n')
3939

40+
.option('--no-built-in-palette', 'If provided, disables built-in color maps')
41+
.option('--color-palette-file [colorMap.json]', 'File to load to define a set of color map\n')
42+
4043
.option('--viewport [1x2560x1440]', 'Configure viewport {scale}x{maxWidth}x{maxHeight}')
4144
.option('--settings-lod-threshold [102400]', 'LOD Threshold in Megabytes\n')
4245

@@ -145,6 +148,15 @@ if (pvPythonExecs.length < 1) {
145148
cmdLine.push(program.virtualEnv);
146149
}
147150

151+
if (!program.builtInPalette) {
152+
cmdLine.push('--no-built-in-palette');
153+
}
154+
155+
if (program.colorPaletteFile) {
156+
cmdLine.push('--color-palette-file');
157+
cmdLine.push(program.colorPaletteFile);
158+
}
159+
148160
console.log(
149161
'\n==============================================================================='
150162
);

dist/Visualizer.js

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/pvw-visualizer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ def add_arguments(parser):
139139
parser.add_argument("--data", default=os.getcwd(), help="path to data directory to list, or else multiple directories given as 'name1=path1|name2=path2|...'", dest="path")
140140
parser.add_argument("--load-file", default=None, help="File to load if any based on data-dir base path", dest="file")
141141
parser.add_argument("--color-palette-file", default=None, help="File to load to define a set of color map", dest="palettes")
142+
parser.add_argument("--no-built-in-palette", help="If provided, disables built-in color maps", action="store_true", dest="hide_built_in_color_maps")
142143
parser.add_argument("--ds-host", default=None, help="Hostname to connect to for DataServer", dest="dsHost")
143144
parser.add_argument("--ds-port", default=11111, type=int, help="Port number to connect to for DataServer", dest="dsPort")
144145
parser.add_argument("--rs-host", default=None, help="Hostname to connect to for RenderServer", dest="rsHost")
@@ -174,6 +175,7 @@ def configure(args):
174175
_VisualizerServer.viewportMaxHeight = args.viewportMaxHeight
175176
_VisualizerServer.settingsLODThreshold = args.settingsLODThreshold
176177
_VisualizerServer.allReaders = not args.no_auto_readers
178+
_VisualizerServer.showBuiltin = not args.hide_built_in_color_maps
177179

178180
# If no save directory is provided, default it to the data directory
179181
if args.saveDataDir == '':
@@ -190,7 +192,7 @@ def initialize(self):
190192
self.registerVtkWebProtocol(pv_protocols.ParaViewWebStartupPluginLoader(_VisualizerServer.plugins))
191193
self.registerVtkWebProtocol(pv_protocols.ParaViewWebFileListing(_VisualizerServer.dataDir, "Home", _VisualizerServer.excludeRegex, _VisualizerServer.groupRegex))
192194
self.registerVtkWebProtocol(pv_protocols.ParaViewWebProxyManager(allowedProxiesFile=_VisualizerServer.proxies, baseDir=_VisualizerServer.dataDir, fileToLoad=_VisualizerServer.fileToLoad, allowUnconfiguredReaders=_VisualizerServer.allReaders))
193-
self.registerVtkWebProtocol(pv_protocols.ParaViewWebColorManager(pathToColorMaps=_VisualizerServer.colorPalette))
195+
self.registerVtkWebProtocol(pv_protocols.ParaViewWebColorManager(pathToColorMaps=_VisualizerServer.colorPalette, showBuiltin=_VisualizerServer.showBuiltin))
194196
self.registerVtkWebProtocol(pv_protocols.ParaViewWebMouseHandler())
195197
self.registerVtkWebProtocol(pv_protocols.ParaViewWebViewPort(_VisualizerServer.viewportScale, _VisualizerServer.viewportMaxWidth, _VisualizerServer.viewportMaxHeight))
196198
self.registerVtkWebProtocol(pv_protocols.ParaViewWebPublishImageDelivery(decode=False))

src/setup.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import macro from 'vtk.js/Sources/macro';
2+
import vtkURLExtract from 'vtk.js/Sources/Common/Core/URLExtract';
23

34
import { getActiveStore, dispatch, actions } from './redux';
45
import behaviorOnChange from './behavior';
56
import stateAccessor from './redux/selectors/stateAccessor';
67

8+
const serverColorMaps = vtkURLExtract.extractURLParameters().serverColorMaps;
9+
710
const resetProgress = macro.debounce(() => {
811
dispatch(actions.network.resetProgress());
912
}, 1000);
@@ -36,7 +39,7 @@ export default function setup(session) {
3639

3740
// Fetch heavy data after full initialization
3841
setTimeout(() => {
39-
dispatch(actions.colors.fetchColorMapImages());
42+
dispatch(actions.colors.fetchColorMapImages(512, !serverColorMaps));
4043
}, 2000);
4144

4245
// Attach default behavior

0 commit comments

Comments
 (0)