UNPKG

molstar

Version:

A comprehensive macromolecular library.

58 lines 2.06 kB
/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { __spreadArray } from "tslib"; import { spline } from '../../../mol-math/interpolate'; import { ColorScale } from '../../../mol-util/color'; import { ValueCell } from '../../../mol-util'; export function getControlPointsFromString(s) { return s.split(/\s*,\s*/).map(function (p) { var ps = p.split(/\s*:\s*/); return { x: parseFloat(ps[0]), alpha: parseFloat(ps[1]) }; }); } export function getControlPointsFromVec2Array(array) { return array.map(function (v) { return ({ x: v[0], alpha: v[1] }); }); } export function createTransferFunctionTexture(controlPoints, listOrName, texture) { var cp = __spreadArray(__spreadArray([ { x: 0, alpha: 0 }, { x: 0, alpha: 0 } ], controlPoints, true), [ { x: 1, alpha: 0 }, { x: 1, alpha: 0 }, ], false); var scale = ColorScale.create({ domain: [0, 1], listOrName: listOrName }); var n = 256; var array = texture ? texture.ref.value.array : new Uint8Array(n * 4); var k = 0; var x1, x2; var a0, a1, a2, a3; var il = controlPoints.length + 1; for (var i = 0; i < il; ++i) { x1 = cp[i + 1].x; x2 = cp[i + 2].x; a0 = cp[i].alpha; a1 = cp[i + 1].alpha; a2 = cp[i + 2].alpha; a3 = cp[i + 3].alpha; var jl = Math.round((x2 - x1) * n); for (var j = 0; j < jl; ++j) { var t = j / jl; array[k * 4 + 3] = Math.max(0, spline(a0, a1, a2, a3, t, 0.5) * 255); scale.colorToArray(k / 255, array, k * 4); ++k; } } var textureImage = { array: array, width: 256, height: 1 }; if (texture) { ValueCell.update(texture, textureImage); return texture; } else { return ValueCell.create(textureImage); } } //# sourceMappingURL=transfer-function.js.map