molstar
Version:
A comprehensive macromolecular library.
89 lines (88 loc) • 3.87 kB
JavaScript
"use strict";
/**
* Copyright (c) 2018-2020 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.Geometry = void 0;
var mesh_1 = require("./mesh/mesh");
var points_1 = require("./points/points");
var text_1 = require("./text/text");
var lines_1 = require("./lines/lines");
var direct_volume_1 = require("./direct-volume/direct-volume");
var spheres_1 = require("./spheres/spheres");
var array_1 = require("../../mol-util/array");
var texture_mesh_1 = require("./texture-mesh/texture-mesh");
var image_1 = require("./image/image");
var cylinders_1 = require("./cylinders/cylinders");
var Geometry;
(function (Geometry) {
function getDrawCount(geometry) {
switch (geometry.kind) {
case 'mesh': return geometry.triangleCount * 3;
case 'points': return geometry.pointCount;
case 'spheres': return geometry.sphereCount * 2 * 3;
case 'cylinders': return geometry.cylinderCount * 4 * 3;
case 'text': return geometry.charCount * 2 * 3;
case 'lines': return geometry.lineCount * 2 * 3;
case 'direct-volume': return 12 * 3;
case 'image': return 2 * 3;
case 'texture-mesh': return geometry.vertexCount;
}
}
Geometry.getDrawCount = getDrawCount;
function getVertexCount(geometry) {
switch (geometry.kind) {
case 'mesh': return geometry.vertexCount;
case 'points': return geometry.pointCount;
case 'spheres': return geometry.sphereCount * 4;
case 'cylinders': return geometry.cylinderCount * 6;
case 'text': return geometry.charCount * 4;
case 'lines': return geometry.lineCount * 4;
case 'direct-volume':
var _a = geometry.gridDimension.ref.value, x = _a[0], y = _a[1], z = _a[2];
return x * y * z;
case 'image': return 4;
case 'texture-mesh': return geometry.vertexCount;
}
}
Geometry.getVertexCount = getVertexCount;
function getGroupCount(geometry) {
switch (geometry.kind) {
case 'mesh':
case 'points':
case 'spheres':
case 'cylinders':
case 'text':
case 'lines':
return getDrawCount(geometry) === 0 ? 0 : ((0, array_1.arrayMax)(geometry.groupBuffer.ref.value) + 1);
case 'direct-volume':
return 1;
case 'image':
return (0, array_1.arrayMax)(geometry.groupTexture.ref.value.array) + 1;
case 'texture-mesh':
return geometry.groupCount;
}
}
Geometry.getGroupCount = getGroupCount;
function getUtils(geometry) {
// TODO avoid casting
switch (geometry.kind) {
case 'mesh': return mesh_1.Mesh.Utils;
case 'points': return points_1.Points.Utils;
case 'spheres': return spheres_1.Spheres.Utils;
case 'cylinders': return cylinders_1.Cylinders.Utils;
case 'text': return text_1.Text.Utils;
case 'lines': return lines_1.Lines.Utils;
case 'direct-volume': return direct_volume_1.DirectVolume.Utils;
case 'image': return image_1.Image.Utils;
case 'texture-mesh': return texture_mesh_1.TextureMesh.Utils;
}
}
Geometry.getUtils = getUtils;
function getGranularity(locationIt, granularity) {
return granularity === 'instance' && locationIt.nonInstanceable ? 'group' : granularity;
}
Geometry.getGranularity = getGranularity;
})(Geometry = exports.Geometry || (exports.Geometry = {}));