molstar
Version:
A comprehensive macromolecular library.
55 lines (54 loc) • 2.29 kB
JavaScript
/**
* Copyright (c) 2021-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.VolumeValueColorThemeProvider = exports.VolumeValueColorTheme = exports.getVolumeValueColorThemeParams = exports.VolumeValueColorThemeParams = void 0;
var color_1 = require("../../mol-util/color");
var param_definition_1 = require("../../mol-util/param-definition");
var names_1 = require("../../mol-util/color/names");
var Description = 'Assign color based on the given value of a volume cell.';
exports.VolumeValueColorThemeParams = {
colorList: param_definition_1.ParamDefinition.ColorList({
kind: 'interpolate',
colors: [
[names_1.ColorNames.white, 0],
[names_1.ColorNames.red, 0.25],
[names_1.ColorNames.white, 0.5],
[names_1.ColorNames.blue, 0.75],
[names_1.ColorNames.white, 1]
]
}, { offsets: true, isEssential: true }),
};
function getVolumeValueColorThemeParams(ctx) {
return exports.VolumeValueColorThemeParams; // TODO return copy
}
exports.getVolumeValueColorThemeParams = getVolumeValueColorThemeParams;
function VolumeValueColorTheme(ctx, props) {
var scale = color_1.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,
};
}
exports.VolumeValueColorTheme = VolumeValueColorTheme;
exports.VolumeValueColorThemeProvider = {
name: 'volume-value',
label: 'Volume Value',
category: "Miscellaneous" /* ColorTheme.Category.Misc */,
factory: VolumeValueColorTheme,
getParams: getVolumeValueColorThemeParams,
defaultValues: param_definition_1.ParamDefinition.getDefaultValues(exports.VolumeValueColorThemeParams),
isApplicable: function (ctx) { return !!ctx.volume; },
};
;