/** * Copyright (c) 2018-2026 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { Mesh } from './mesh/mesh.js'; import { Points } from './points/points.js'; import { Text } from './text/text.js'; import { RenderableState } from '../../mol-gl/renderable.js'; import { LocationIterator } from '../util/location-iterator.js'; import { ColorType } from './color-data.js'; import { SizeType } from './size-data.js'; import { Lines } from './lines/lines.js'; import { ParamDefinition as PD } from '../../mol-util/param-definition.js'; import { DirectVolume } from './direct-volume/direct-volume.js'; import { Color } from '../../mol-util/color/index.js'; import { Spheres } from './spheres/spheres.js'; import { TransformData } from './transform-data.js'; import { Theme } from '../../mol-theme/theme.js'; import { RenderObjectValues } from '../../mol-gl/render-object.js'; import { TextureMesh } from './texture-mesh/texture-mesh.js'; import { Image } from './image/image.js'; import { Cylinders } from './cylinders/cylinders.js'; export type GeometryKind = 'mesh' | 'points' | 'spheres' | 'cylinders' | 'text' | 'lines' | 'direct-volume' | 'image' | 'texture-mesh'; export type Geometry = T extends 'mesh' ? Mesh : T extends 'points' ? Points : T extends 'spheres' ? Spheres : T extends 'cylinders' ? Cylinders : T extends 'text' ? Text : T extends 'lines' ? Lines : T extends 'direct-volume' ? DirectVolume : T extends 'image' ? Image : T extends 'texture-mesh' ? TextureMesh : never; type GeometryParams = T extends 'mesh' ? Mesh.Params : T extends 'points' ? Points.Params : T extends 'spheres' ? Spheres.Params : T extends 'cylinders' ? Cylinders.Params : T extends 'text' ? Text.Params : T extends 'lines' ? Lines.Params : T extends 'direct-volume' ? DirectVolume.Params : T extends 'image' ? Image.Params : T extends 'texture-mesh' ? TextureMesh.Params : never; export interface GeometryUtils, V = RenderObjectValues> { Params: P; createEmpty(geometry?: G): G; createValues(geometry: G, transform: TransformData, locationIt: LocationIterator, theme: Theme, props: PD.Values

): V; createValuesSimple(geometry: G, props: Partial>, colorValue: Color, sizeValue: number, transform?: TransformData): V; updateValues(values: V, props: PD.Values

): void; updateBoundingSphere(values: V, geometry: G): void; createRenderableState(props: PD.Values

): RenderableState; updateRenderableState(state: RenderableState, props: PD.Values

): void; createPositionIterator(geometry: G, transform: TransformData): LocationIterator; } export declare namespace Geometry { type Params = GeometryParams; function getDrawCount(geometry: Geometry): number; function getVertexCount(geometry: Geometry): number; function getGroupCount(geometry: Geometry): number; function getUtils(geometry: G): GeometryUtils; function getGranularity(locationIt: LocationIterator, granularity: T): "group" | T; } export {};