molstar
Version:
A comprehensive macromolecular library.
90 lines • 4.31 kB
JavaScript
/**
* Copyright (c) 2018 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.BaseGeometry = exports.VisualQualityOptions = exports.VisualQualityNames = exports.VisualQualityInfo = void 0;
var mol_util_1 = require("../../mol-util");
var location_iterator_1 = require("../util/location-iterator");
var param_definition_1 = require("../../mol-util/param-definition");
var transform_data_1 = require("./transform-data");
var names_1 = require("../../mol-util/color/names");
var location_1 = require("../../mol-model/location");
var uniform_1 = require("../../mol-theme/color/uniform");
var uniform_2 = require("../../mol-theme/size/uniform");
exports.VisualQualityInfo = {
'custom': {},
'auto': {},
'highest': {},
'higher': {},
'high': {},
'medium': {},
'low': {},
'lower': {},
'lowest': {},
};
exports.VisualQualityNames = Object.keys(exports.VisualQualityInfo);
exports.VisualQualityOptions = param_definition_1.ParamDefinition.arrayToOptions(exports.VisualQualityNames);
//
var BaseGeometry;
(function (BaseGeometry) {
BaseGeometry.Params = {
alpha: param_definition_1.ParamDefinition.Numeric(1, { min: 0, max: 1, step: 0.01 }, { label: 'Opacity', isEssential: true, description: 'How opaque/transparent the representation is rendered.' }),
quality: param_definition_1.ParamDefinition.Select('auto', exports.VisualQualityOptions, { isEssential: true, description: 'Visual/rendering quality of the representation.' }),
};
BaseGeometry.ShadingCategory = { category: 'Shading' };
BaseGeometry.CustomQualityParamInfo = {
category: 'Custom Quality',
hideIf: function (params) { return typeof params.quality !== 'undefined' && params.quality !== 'custom'; }
};
function createSimple(colorValue, sizeValue, transform) {
if (colorValue === void 0) { colorValue = names_1.ColorNames.grey; }
if (sizeValue === void 0) { sizeValue = 1; }
if (!transform)
transform = (0, transform_data_1.createIdentityTransform)();
var locationIterator = (0, location_iterator_1.LocationIterator)(1, transform.instanceCount.ref.value, 1, function () { return location_1.NullLocation; }, false, function () { return false; });
var theme = {
color: (0, uniform_1.UniformColorTheme)({}, { value: colorValue }),
size: (0, uniform_2.UniformSizeTheme)({}, { value: sizeValue })
};
return { transform: transform, locationIterator: locationIterator, theme: theme };
}
BaseGeometry.createSimple = createSimple;
function createValues(props, counts) {
return {
alpha: mol_util_1.ValueCell.create(props.alpha),
uAlpha: mol_util_1.ValueCell.create(props.alpha),
uVertexCount: mol_util_1.ValueCell.create(counts.vertexCount),
uGroupCount: mol_util_1.ValueCell.create(counts.groupCount),
drawCount: mol_util_1.ValueCell.create(counts.drawCount),
};
}
BaseGeometry.createValues = createValues;
function updateValues(values, props) {
mol_util_1.ValueCell.updateIfChanged(values.alpha, props.alpha); // `uAlpha` is set in renderable.render
}
BaseGeometry.updateValues = updateValues;
function createRenderableState(props) {
if (props === void 0) { props = {}; }
var opaque = props.alpha === undefined ? true : props.alpha === 1;
return {
disposed: false,
visible: true,
alphaFactor: 1,
pickable: true,
colorOnly: false,
opaque: opaque,
writeDepth: opaque,
noClip: false,
};
}
BaseGeometry.createRenderableState = createRenderableState;
function updateRenderableState(state, props) {
state.opaque = props.alpha * state.alphaFactor >= 1;
state.writeDepth = state.opaque;
}
BaseGeometry.updateRenderableState = updateRenderableState;
})(BaseGeometry = exports.BaseGeometry || (exports.BaseGeometry = {}));
//# sourceMappingURL=base.js.map
;