UNPKG

molstar

Version:

A comprehensive macromolecular library.

89 lines (88 loc) 3.87 kB
"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 = {}));