/** * Copyright (c) 2019-2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Alexander Rose * @author Ryan DiRisio */ import { StructureElement } from '../../../mol-model/structure.js'; import { PluginContext } from '../../../mol-plugin/context.js'; import { StateTransform, StateTransformer, StateObject, StateObjectCell } from '../../../mol-state/index.js'; import { StateTransforms } from '../../transforms.js'; import { PluginStateObject } from '../../objects.js'; import { StatefulPluginComponent } from '../../component.js'; import { ParamDefinition as PD } from '../../../mol-util/param-definition.js'; import { LociLabelTextParams } from '../../../mol-repr/shape/loci/common.js'; import { LineParams } from '../../../mol-repr/structure/representation/line.js'; import { Color } from '../../../mol-util/color/index.js'; export { StructureMeasurementManager }; export declare const MeasurementGroupTag = "measurement-group"; export declare const MeasurementOrderLabelTag = "measurement-order-label"; export type StructureMeasurementCell = StateObjectCell>>; export declare const StructureMeasurementParams: { distanceUnitLabel: PD.Text; textColor: PD.Color; }; export type StructureMeasurementOptions = PD.ValuesFor; export interface StructureMeasurementManagerState { labels: StructureMeasurementCell[]; distances: StructureMeasurementCell[]; angles: StructureMeasurementCell[]; dihedrals: StructureMeasurementCell[]; orientations: StructureMeasurementCell[]; planes: StructureMeasurementCell[]; options: StructureMeasurementOptions; } type StructureMeasurementManagerAddOptions = { customText?: string; selectionTags?: string | string[]; reprTags?: string | string[]; lineParams?: Partial>; labelParams?: Partial>; }; declare class StructureMeasurementManager extends StatefulPluginComponent { private plugin; readonly behaviors: { state: import("rxjs").BehaviorSubject; }; private stateUpdated; private getGroup; setOptions(options: StructureMeasurementOptions): Promise; addDistance(a: StructureElement.Loci, b: StructureElement.Loci, options?: StructureMeasurementManagerAddOptions & { visualParams?: Partial>; }): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; lineSizeAttenuation: boolean; linesColor: Color; linesSize: number; dashLength: number; }>>>; } | undefined>; addAngle(a: StructureElement.Loci, b: StructureElement.Loci, c: StructureElement.Loci, options?: StructureMeasurementManagerAddOptions & { visualParams?: Partial>; }): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; ignoreLight: boolean; sectorOpacity: number; color: Color; arcScale: number; doubleSided: boolean; flipSided: boolean; flatShaded: boolean; celShaded: boolean; xrayShaded: boolean | "inverted"; transparentBackfaces: "off" | "on" | "opaque"; bumpFrequency: number; bumpAmplitude: number; interior: PD.Normalize<{ color: /*elided*/ any; colorStrength: /*elided*/ any; substance: /*elided*/ any; substanceStrength: /*elided*/ any; }>; lineSizeAttenuation: boolean; linesSize: number; dashLength: number; }>>>; } | undefined>; addDihedral(a: StructureElement.Loci, b: StructureElement.Loci, c: StructureElement.Loci, d: StructureElement.Loci, options?: StructureMeasurementManagerAddOptions & { visualParams?: Partial>; }): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; ignoreLight: boolean; sectorOpacity: number; color: Color; arcScale: number; doubleSided: boolean; flipSided: boolean; flatShaded: boolean; celShaded: boolean; xrayShaded: boolean | "inverted"; transparentBackfaces: "off" | "on" | "opaque"; bumpFrequency: number; bumpAmplitude: number; interior: PD.Normalize<{ color: /*elided*/ any; colorStrength: /*elided*/ any; substance: /*elided*/ any; substanceStrength: /*elided*/ any; }>; lineSizeAttenuation: boolean; linesSize: number; dashLength: number; }>>>; } | undefined>; addLabel(a: StructureElement.Loci, options?: Omit & { visualParams?: Partial>; }): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; }>>>; } | undefined>; addOrientation(locis: StructureElement.Loci[]): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; alpha: number; quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest"; material: PD.Normalize<{ metalness: number; roughness: number; bumpiness: number; }>; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; }>>>; } | undefined>; addPlane(locis: StructureElement.Loci[]): Promise<{ selection: import("../../../mol-state/index.js").StateObjectSelector[]; isTransitive: boolean | undefined; label: string | undefined; }>>>; representation: import("../../../mol-state/index.js").StateObjectSelector; alpha: number; quality: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest"; material: PD.Normalize<{ metalness: number; roughness: number; bumpiness: number; }>; clip: PD.Normalize<{ variant: /*elided*/ any; objects: /*elided*/ any; }>; emissive: number; density: number; instanceGranularity: boolean; lod: import("../../../mol-math/linear-algebra.js").Vec3; cellSize: number; batchSize: number; }>>>; } | undefined>; addOrderLabels(locis: StructureElement.Loci[]): Promise<{ representation: import("../../../mol-state/index.js").StateObjectSelector>, StateTransformer>, StateObject>, any>> | import("../../../mol-state/index.js").StateObjectSelector>, StateTransformer>>; }>; private _empty; private getTransforms; private sync; constructor(plugin: PluginContext); }