/** * Copyright (c) 2019-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Alexander Rose * @author Adam Midlik */ import { ParamDefinition as PD } from '../../../../mol-util/param-definition.js'; import { PluginStateObject } from '../../../../mol-plugin-state/objects.js'; import { Volume } from '../../../../mol-model/volume.js'; import { VolumeServerInfo } from './model.js'; import { Vec3 } from '../../../../mol-math/linear-algebra.js'; import { Color } from '../../../../mol-util/color/index.js'; import { PluginBehavior } from '../../behavior.js'; import { Structure } from '../../../../mol-model/structure.js'; import { PluginContext } from '../../../context.js'; declare const VolumeStreaming_base: { new (data: VolumeStreaming.Behavior, props?: { label: string; description?: string; } | undefined): { id: import("../../../../mol-util/index.js").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string; data: VolumeStreaming.Behavior; }; type: PluginStateObject.TypeInfo; is(obj?: import("../../../../mol-state/index.js").StateObject): obj is import("../../../../mol-state/index.js").StateObject; }; export declare class VolumeStreaming extends VolumeStreaming_base { } export declare namespace VolumeStreaming { const RootTag = "volume-streaming-info"; interface ChannelParams { isoValue: Volume.IsoValue; color: Color; wireframe: boolean; opacity: number; } function createParams(options?: { data?: VolumeServerInfo.Data; defaultView?: ViewTypes; channelParams?: DefaultChannelParams; }): { entry: PD.Mapped, "auto"> | PD.NamedParams, "cell"> | PD.NamedParams, "off"> | PD.NamedParams, "box"> | PD.NamedParams, "camera-target"> | PD.NamedParams, "selection-box">>; detailLevel: PD.Select; channels: PD.Group; }>> | PD.Group; 'fo-fc(+ve)': PD.Normalize; 'fo-fc(-ve)': PD.Normalize; }>>; }>, string>>; }; type EntryParamDefinition = ReturnType; type EntryParams = PD.Values; function createEntryParams(options: { entryData?: VolumeServerInfo.EntryData; defaultView?: ViewTypes; structure?: Structure; channelParams?: DefaultChannelParams; }): { view: PD.Mapped, "auto"> | PD.NamedParams, "cell"> | PD.NamedParams, "off"> | PD.NamedParams, "box"> | PD.NamedParams, "camera-target"> | PD.NamedParams, "selection-box">>; detailLevel: PD.Select; channels: PD.Group; }>> | PD.Group; 'fo-fc(+ve)': PD.Normalize; 'fo-fc(-ve)': PD.Normalize; }>>; }; function copyParams(origParams: Params): Params; const ViewTypeOptions: [ViewTypes, string][]; type ViewTypes = 'off' | 'box' | 'selection-box' | 'camera-target' | 'cell' | 'auto'; type ParamDefinition = ReturnType; type Params = PD.Values; type ChannelType = 'em' | '2fo-fc' | 'fo-fc(+ve)' | 'fo-fc(-ve)'; const ChannelTypeOptions: [ChannelType, string][]; interface ChannelInfo { data: Volume; color: Color; wireframe: boolean; isoValue: Volume.IsoValue.Relative; opacity: number; } type Channels = { [name in ChannelType]?: ChannelInfo; }; type DefaultChannelParams = { [name in ChannelType]?: Partial; }; class Behavior extends PluginBehavior.WithSubscribers { plugin: PluginContext; data: VolumeServerInfo.Data; private cache; params: Params; private lastLoci; private ref; infoMap: Map; private updateQueue; private cameraTargetObservable; private cameraTargetSubscription?; channels: Channels; get info(): VolumeServerInfo.EntryData; private queryData; private parseCif; private updateParams; private getStructureRoot; register(ref: string): void; unregister(): void; private isCameraTargetSame; private cameraTargetDistance; private _invTransform; private getBoxFromLoci; private updateAuto; private updateSelectionBox; private updateCameraTarget; private boxFromCameraTarget; private decideDetail; update(params: Params): Promise; private createChannel; getDescription(): "" | "Selection" | "Camera" | "Static Box" | "Cell"; constructor(plugin: PluginContext, data: VolumeServerInfo.Data); } } export {};