/** * Copyright (c) 2021-2026 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Sukolsak Sakshuwong * @author Alexander Rose */ import { GraphicsRenderObject } from '../../mol-gl/render-object.js'; import { BaseValues } from '../../mol-gl/renderable/schema.js'; import { TextureImage } from '../../mol-gl/renderable/util.js'; import { WebGLContext } from '../../mol-gl/webgl/context.js'; import { Mesh } from '../../mol-geo/geometry/mesh/mesh.js'; import { RuntimeContext } from '../../mol-task/index.js'; import { Color } from '../../mol-util/color/color.js'; import { RenderObjectExporter, RenderObjectExportData } from './render-object-exporter.js'; import { ValueCell } from '../../mol-util/value-cell.js'; type MeshMode = 'points' | 'lines' | 'triangles'; export interface AddMeshInput { mesh: { vertices: Float32Array; normals: Float32Array | undefined; indices: Uint32Array | undefined; groups: Float32Array | Uint8Array; vertexCount: number; drawCount: number; vertexMapping?: number[]; } | undefined; meshes: Mesh[] | undefined; values: BaseValues & { readonly uDoubleSided?: ValueCell; readonly aGroup?: ValueCell; readonly tPositionGroup?: ValueCell>; }; isGeoTexture: boolean; mode: MeshMode; webgl: WebGLContext | undefined; ctx: RuntimeContext; vertexMapping?: number[]; } export type MeshGeoData = { values: BaseValues & { readonly aGroup?: ValueCell; readonly tPositionGroup?: ValueCell>; }; groups?: Float32Array | Uint8Array; vertexCount: number; instanceIndex: number; isGeoTexture: boolean; mode: MeshMode; vertexMapping?: number[]; }; export declare abstract class MeshExporter implements RenderObjectExporter { abstract readonly fileExtension: string; private static getSizeFromTexture; private static getSize; protected static getGroup(groups: Float32Array | Uint8Array, i: number): number; protected static getInterpolatedColors(webgl: WebGLContext, input: { vertices: Float32Array; vertexCount: number; values: BaseValues; stride: 3 | 4; colorType: 'volume' | 'volumeInstance'; }): Uint8Array; protected static getInterpolatedOverpaint(webgl: WebGLContext, input: { vertices: Float32Array; vertexCount: number; values: BaseValues; stride: 3 | 4; colorType: 'volumeInstance'; }): Uint8Array; protected static getInterpolatedTransparency(webgl: WebGLContext, input: { vertices: Float32Array; vertexCount: number; values: BaseValues; stride: 3 | 4; colorType: 'volumeInstance'; }): Uint8Array; protected static quantizeColors(colorArray: Uint8Array, vertexCount: number): void; protected static getInstance(input: AddMeshInput, instanceIndex: number): { vertices: Float32Array; normals: Float32Array | undefined; indices: Uint32Array | undefined; groups: Float32Array | Uint8Array; vertexCount: number; drawCount: number; vertexMapping?: number[]; }; protected static getColor(vertexIndex: number, geoData: MeshGeoData, interpolatedColors?: Uint8Array, interpolatedOverpaint?: Uint8Array): Color; protected static getTransparency(vertexIndex: number, geoData: MeshGeoData, interpolatedTransparency?: Uint8Array): number; protected abstract addMeshWithColors(input: AddMeshInput): Promise; private addMesh; private addLineStrips; private addLineSegments; private addLines; private addPoints; private addSpheres; private addCylinders; private addTextureMesh; add(renderObject: GraphicsRenderObject, webgl: WebGLContext, ctx: RuntimeContext): Promise | undefined; protected options: { includeHidden: boolean; linesAsTriangles: boolean; pointsAsTriangles: boolean; primitivesQuality: "auto" | "high" | "medium" | "low"; }; abstract getData(ctx: RuntimeContext): Promise; abstract getBlob(ctx: RuntimeContext): Promise; } export {};