UNPKG

molstar

Version:

A comprehensive macromolecular library.

86 lines 3.65 kB
/** * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { Mesh } from './mesh/mesh'; import { Points } from './points/points'; import { Text } from './text/text'; import { Lines } from './lines/lines'; import { DirectVolume } from './direct-volume/direct-volume'; import { Spheres } from './spheres/spheres'; import { arrayMax } from '../../mol-util/array'; import { TextureMesh } from './texture-mesh/texture-mesh'; import { Image } from './image/image'; import { Cylinders } from './cylinders/cylinders'; export 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 : (arrayMax(geometry.groupBuffer.ref.value) + 1); case 'direct-volume': return 1; case 'image': return 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.Utils; case 'points': return Points.Utils; case 'spheres': return Spheres.Utils; case 'cylinders': return Cylinders.Utils; case 'text': return Text.Utils; case 'lines': return Lines.Utils; case 'direct-volume': return DirectVolume.Utils; case 'image': return Image.Utils; case 'texture-mesh': return TextureMesh.Utils; } } Geometry.getUtils = getUtils; function getGranularity(locationIt, granularity) { return granularity === 'instance' && locationIt.nonInstanceable ? 'group' : granularity; } Geometry.getGranularity = getGranularity; })(Geometry || (Geometry = {})); //# sourceMappingURL=geometry.js.map