UNPKG

scichart

Version:

Fast WebGL JavaScript Charting Library and Framework

240 lines (239 loc) 10.3 kB
import { IThemeable } from "../../../Charting/Themes/IThemeable"; import { IThemeProvider } from "../../../Charting/Themes/IThemeProvider"; import { INotifyOnDpiChanged, TDpiChangedEventArgs } from "../../../Charting/Visuals/TextureManager/DpiHelper"; import { DeletableEntity } from "../../../Core/DeletableEntity"; import { IDeletable } from "../../../Core/IDeletable"; import { Point } from "../../../Core/Point"; import { TSciChart3D } from "../../../types/TSciChart3D"; import { BaseDataSeries3D } from "../../Model/DataSeries/BaseDataSeries3D"; import { IPaletteProvider3D } from "../../Model/DataSeries/IPaletteProvider3D"; import { BasePointMarker3D } from "../PointMarkers/BasePointMarker3D"; import { IBaseSceneEntity } from "../Primitives/BaseSceneEntity3D"; import { IRenderableSeriesSceneEntity } from "../Primitives/RenderableSeriesSceneEntity"; import { SciChart3DSurface } from "../SciChart3DSurface"; import { ESeriesType3D } from "./ESeriesType"; import { HitTestInfo3D } from "./HitTestInfo3D"; import { SeriesInfo3D } from "./SeriesInfo3D"; /** * @summary Defines the interface to a 3D Renderable Series (or 3D Chart Type) in SciChart's High Performance Real-time * {@link https://www.scichart.com/javascript-chart-features | JavaScript 3D Charts} * @remarks * A {@link BaseRenderableSeries3D | RenderableSeries} defines how data should be rendered. e.g. as a 3D Scatter Chart, 3D Point Line Chart etc... * This is independent from the {@link BaseDataSeries3D | DataSeries3D} which stores the data to render * * See derived types of {@link BaseDataSeries3D} to find out what data-series are available. * See derived types of {@link IRenderableSeries3D} to find out what 3D JavaScript Chart types are available. */ export interface IRenderableSeries3D extends IDeletable, IThemeable, INotifyOnDpiChanged { /** * A unique Id for the {@link IRenderableSeries3D} */ readonly id: string; /** * Gets the Series type. See {@link ESeriesType3D} for a list of values */ readonly type: ESeriesType3D; /** * Used internally - Gets the {@link IBaseSceneEntity | 3D Scene Entity} which renders the geometry in the 3D Scene */ readonly sceneEntity: IBaseSceneEntity; /** * Used internally - Gets or sets the parent {@link SciChart3DSurface} */ parentSurface: SciChart3DSurface; /** * The {@link BaseDataSeries3D | DataSeries} which provides a datasource for this {@link BaseRenderableSeries3D} to draw */ dataSeries: BaseDataSeries3D; /** * Gets or sets whether the {@link BaseDataSeries3D} is visible or not */ isVisible: boolean; /** * Gets or sets an optional Opacity from 0.0 (fully transparent) - 1.0 (fully opaque) */ opacity: number; /** * Gets or sets an optional Shininess factor, passed to 3D rendering shaders to make shiny objects */ shininess: number; /** * Gets or sets an optional {@link IPaletteProvider3D} - a PaletteProvider class which allows for per-point * data-point coloring on some 3D {@link BaseRenderableSeries3D} types. */ paletteProvider: IPaletteProvider3D; /** * Gets or sets the stroke color as an HTML Color code */ stroke: string; /** * A callback function which notifies the parent {@link SciChart3DSurface} that data or properties have changed and * the 3D Scene needs redrawing */ invalidateParentCallback: () => void; /** * A {@link BasePointMarker3D |3D Point Marker} which is used to draw an optional 3D point-marker at each Xyz data-point. * Applicable to some series types only */ pointMarker: BasePointMarker3D; /** * Called when the {@link IRenderableSeries3D} is attached to a {@link SciChart3DSurface} * @param scs the parent {@link SciChart3DSurface} */ onAttach(scs: SciChart3DSurface): void; /** * Called when the {@link IRenderableSeries3D} is detached from a {@link SciChart3DSurface} */ onDetach(): void; /** * Performs a HitTest operation on the series, returning the {@link SeriesInfo3D} containing the enriched Hit-Test result. * This contains information about the hit-test operation such as the values of the data under the mouse and * location of the data under the mouse in 3D world coordinates. This may be used for tooltips, * selection or inspection of the 3d scene through mouse-clicks * @param screenPoint The screen point (X,Y pixel coordinate in 2D space) */ hitTest(screenPoint: Point): SeriesInfo3D; } /** * Options to pass to the {@link BaseRenderableSeries3D} constructor */ export interface IBaseRenderableSeries3DOptions { /** * A unique Id for the {@link IRenderableSeries3D} */ readonly id?: string; /** * The {@link BaseDataSeries3D | DataSeries} which provides a datasource for this {@link IRenderableSeries3D} to draw */ dataSeries?: BaseDataSeries3D; /** * A {@link BasePointMarker3D |3D Point Marker} which is used to draw an optional 3D point-marker at each Xyz data-point. * Applicable to some series types only */ pointMarker?: BasePointMarker3D; /** * Gets or sets whether the {@link IRenderableSeries3D} is visible or not */ isVisible?: boolean; /** * Gets or sets the stroke color as an HTML Color code */ stroke?: string; /** * Gets or sets an optional Shininess factor, passed to 3D rendering shaders to make shiny objects */ shininess?: number; /** * Gets or sets the opacity of the {@link IRenderableSeries3D} * @remarks Value range 0.0 to 1.0. Default = 1. */ opacity?: number; } /** * @summary Defines the base class to a 3D Render Series (or 3D Chart Type) in SciChart's High Performance Real-time * {@link https://www.scichart.com/javascript-chart-features | JavaScript 3D Charts} * @remarks * A {@link BaseRenderableSeries3D} defines how data should be rendered. e.g. as a 3D Scatter Chart, 3D Point Line Chart etc... * This is independent from the {@link BaseDataSeries3D | DataSeries3D} which stores the data to render * * See derived types of {@link BaseDataSeries3D} to find out what data-series are available. * See derived types of {@link IRenderableSeries3D} to find out what 3D JavaScript Chart types are available. */ export declare abstract class BaseRenderableSeries3D extends DeletableEntity implements IRenderableSeries3D { /** @inheritDoc */ readonly id: string; /** @inheritDoc */ abstract type: ESeriesType3D; /** @inheritDoc */ invalidateParentCallback: () => void; /** * The {@link TSciChart3D | SciChart 3D WebAssembly Context} containing * native methods and access to our WebGL2 WebAssembly Drawing Engine * @protected */ protected readonly webAssemblyContext: TSciChart3D; private dataSeriesProperty; private isVisibleProperty; private parentSurfaceProperty; private sceneEntityProperty; protected pointMarkerProperty: BasePointMarker3D; private paletteProviderProperty; private strokeProperty; private shininessProperty; private opacityProperty; /** * Creates an instance of the {@link BaseRenderableSeries3D} * @param webAssemblyContext The {@link TSciChart3D | SciChart 3D WebAssembly Context} containing * native methods and access to our WebGL2 WebAssembly Drawing Engine * @param options Optional parameters of type {@link IBaseRenderableSeries3DOptions} to configure the series * @protected */ protected constructor(webAssemblyContext: TSciChart3D, options?: IBaseRenderableSeries3DOptions); /** @inheritDoc */ applyTheme(themeProvider: IThemeProvider): void; /** @inheritDoc */ get opacity(): number; /** @inheritDoc */ set opacity(opacity: number); /** @inheritDoc */ get sceneEntity(): IBaseSceneEntity; /** @inheritDoc */ get shininess(): number; /** @inheritDoc */ set shininess(shininess: number); /** @inheritDoc */ get paletteProvider(): IPaletteProvider3D; /** @inheritDoc */ set paletteProvider(paletteProvider: IPaletteProvider3D); /** @inheritDoc */ get stroke(): string; /** @inheritDoc */ set stroke(stroke: string); /** @inheritDoc */ get dataSeries(): BaseDataSeries3D; /** @inheritDoc */ set dataSeries(dataSeries: BaseDataSeries3D); /** @inheritDoc */ get pointMarker(): BasePointMarker3D; /** @inheritDoc */ set pointMarker(pointMarker: BasePointMarker3D); /** @inheritDoc */ get parentSurface(): SciChart3DSurface; /** @inheritDoc */ set parentSurface(parentSurface: SciChart3DSurface); /** @inheritDoc */ get isVisible(): boolean; /** @inheritDoc */ set isVisible(isVisible: boolean); /** @inheritDoc */ onAttach(scs: SciChart3DSurface): void; /** @inheritDoc */ onDetach(): void; /** @inheritDoc */ delete(): void; /** @inheritDoc */ onDpiChanged(args: TDpiChangedEventArgs): void; /** @inheritDoc */ hitTest(screenPoint: Point): SeriesInfo3D; /** * Is being called when the data for the underlying DataSeries changes * @protected */ protected dataSeriesDataChanged(): void; protected enrichHitTest(hitTestInfo: HitTestInfo3D): SeriesInfo3D; /** * Used internally - sets the {@link IRenderableSeriesSceneEntity | 3D Scene Entity} * @param sceneEntity * @protected */ protected setSceneEntity(sceneEntity: IRenderableSeriesSceneEntity): void; /** * Notifies listeners to {@link invalidateParentCallback} that a property has changed * @param propertyName * @protected */ protected notifyPropertyChanged(propertyName: string): void; protected attachPointMarker(pointMarker: BasePointMarker3D): void; protected detachPointMarker(pointMarker: BasePointMarker3D): void; private pointMarkerPropertyChanged; }