molstar
Version:
A comprehensive macromolecular library.
50 lines (49 loc) • 1.83 kB
JavaScript
/**
* Copyright (c) 2021-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import { ColorScale } from '../../mol-util/color';
import { ParamDefinition as PD } from '../../mol-util/param-definition';
import { ColorNames } from '../../mol-util/color/names';
var Description = 'Assign color based on the given value of a volume cell.';
export var VolumeValueColorThemeParams = {
colorList: PD.ColorList({
kind: 'interpolate',
colors: [
[ColorNames.white, 0],
[ColorNames.red, 0.25],
[ColorNames.white, 0.5],
[ColorNames.blue, 0.75],
[ColorNames.white, 1]
]
}, { offsets: true, isEssential: true }),
};
export function getVolumeValueColorThemeParams(ctx) {
return VolumeValueColorThemeParams; // TODO return copy
}
export function VolumeValueColorTheme(ctx, props) {
var scale = ColorScale.create({ domain: [0, 1], listOrName: props.colorList.colors });
var colors = [];
for (var i = 0; i < 256; ++i) {
colors[i] = scale.color(i / 255);
}
var palette = { colors: colors, filter: 'linear' };
return {
factory: VolumeValueColorTheme,
granularity: 'direct',
props: props,
description: Description,
legend: scale.legend,
palette: palette,
};
}
export var VolumeValueColorThemeProvider = {
name: 'volume-value',
label: 'Volume Value',
category: "Miscellaneous" /* ColorTheme.Category.Misc */,
factory: VolumeValueColorTheme,
getParams: getVolumeValueColorThemeParams,
defaultValues: PD.getDefaultValues(VolumeValueColorThemeParams),
isApplicable: function (ctx) { return !!ctx.volume; },
};