import { TEasingFn } from "../../Core/Animations/EasingFunctions"; import { IIncludable } from "../../Core/IIncludable"; import { ObservableArray } from "../../Core/ObservableArray"; import { Thickness } from "../../Core/Thickness"; import { TChartTitleStyle } from "../../types/TextStyle"; import { TSciChart } from "../../types/TSciChart"; import { RenderSurface } from "../Drawing/RenderSurface"; import { WebGlRenderContext2D } from "../Drawing/WebGlRenderContext2D"; import { LayoutManager } from "../LayoutManager/LayoutManager"; import { IChartTitleRenderer } from "../Services/TitleRenderer"; import { AxisBase2D } from "./Axis/AxisBase2D"; import { ISciChartSubSurface } from "./ISciChartSubSurface"; import { ISciChartSurfaceNative } from "./ISciChartSurfaceNative"; import { IRenderableSeries } from "./RenderableSeries/IRenderableSeries"; export interface ISciChartSurface extends ISciChartSurfaceNative { /** * @summary Gets the collection of {@link AxisBase2D} - the X Axis on a {@link ISciChartSurface} * @description A {@link ISciChartSurface} can have one to many {@link AxisBase2D | XAxes}. * * Axis may be positioned on the left, right, top or bottom of the chart by using {@link AxisBase2D.axisAlignment}. * * XAxis may be positioned on the top/bottom (default) or left/right in the case of a rotated or vertical chart. * * Series and annotations may be linked to an axis via the {@link AxisCore.id}, {@link BaseRenderableSeries.xAxisId} and * {@link AnnotationBase.xAxisId} property. * @remarks * Adding an Axis to the chart causes it to automatically redraw. Note that Axis by default do not zoom to fit data. * See the {@link AxisBase2D.autoRange} property for more information. */ readonly xAxes: ObservableArray; /** * @summary Gets the collection of {@link AxisBase2D} - the Y Axis on a {@link ISciChartSurface} * @description A {@link ISciChartSurface} can have one to many {@link AxisBase2D | YAxes}. * * Axis may be positioned on the left, right, top or bottom of the chart by using {@link AxisBase2D.axisAlignment}. * * YAxis may be positioned on the left/right (default) or bottom/top in the case of a rotated or vertical chart. * * Series and annotations may be linked to an axis via the {@link AxisCore.id}, {@link BaseRenderableSeries.yAxisId} and * {@link AnnotationBase.yAxisId} property. * @remarks * Adding an Axis to the chart causes it to automatically redraw. Note that Axis by default do not zoom to fit data. * See the {@link AxisBase2D.autoRange} property for more information. */ readonly yAxes: ObservableArray; /** * @summary Gets the collection of {@link IRenderableSeries} - the chart types or series on this {@link ISciChartSurface} * @description A {@link ISciChartSurface} can have zero to many {@link IRenderableSeries | RenderableSeries}. * * The RenderableSeries are drawn as chart types, e.g. {@link FastLineRenderableSeries | Line series}, * {@link XyScatterRenderableSeries | Scatter series}. Each RenderableSeries * must have a {@link BaseDataSeries | DataSeries}. * * Use this collection to add and remove series to the chart. * @remarks * Adding a series to the chart causes it to automatically redraw. To zoom to fit the data after adding a series, either set * {@link AxisCore.autoRange} or call {@link SciChartSurface.zoomExtents} */ readonly renderableSeries: ObservableArray; /** * Gets the sub-chart counter value */ readonly subChartCounter: number; /** * The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and * access to our WebGL2 Engine and WebAssembly numerical methods */ readonly webAssemblyContext2D: TSciChart; /** * Gets or sets the Padding between the {@link ISciChartSurface} and its inner elements, in order top, right, bottom, left */ padding: Thickness; /** * Used internally - gets or sets the {@link LayoutManager} */ layoutManager: LayoutManager; renderSurface: RenderSurface; /** * Gets or sets the title text style and placement for the SciChartSurface as {@link TChartTitleStyle} */ titleStyle: TChartTitleStyle; /** * Controls the rendering of {@link SiCharSurface.title} */ chartTitleRenderer: IChartTitleRenderer; isSubSurface: boolean; /** * @summary Zooms the {@link SciChartSurface} in the Y direction to extents of all data (zoom to fit) * @description * @param animationDurationMs An optional animation duration. Default value is 0, which means 'no animation' * @param easingFunction An optional easing function for animations. See {@link TEasingFn} for a list of values */ zoomExtentsY(animationDurationMs?: number, easingFunction?: TEasingFn, axisSelectorFn?: (t: IIncludable) => boolean): void; /** * Gets the {@link AxisBase2D | XAxis} which matches the axisId. Returns undefined if not axis found * @param axisId The AxisId to search for */ getXAxisById(axisId: string): AxisBase2D | undefined; /** * Gets the {@link AxisBase2D | YAxis} which matches the axisId. Returns undefined if no axis found * @param axisId The AxisId to search for */ getYAxisById(axisId: string): AxisBase2D; /** * Gets the default {@link AxisBase2D | XAxis}, which is the first one X axis attached to the surface. */ getDefaultXAxis(): AxisBase2D | undefined; /** * Gets the default {@link AxisBase2D | YAxis}, which is the first one Y axis attached to the surface. */ getDefaultYAxis(): AxisBase2D; /** * Used internally - Adds a sub-chart */ addSubChartInternal(subSurface: ISciChartSubSurface): void; /** * Runs the drawing loop. Get context and pass drawing to SciChartRenderer */ doDrawingLoop(context: WebGlRenderContext2D | undefined): void; /** * Gets or sets the drawing order for surfaces and their subsurfaces. * This allows for a parent surface to draw over a subsurface. * This does not affect the drawing order of separate surfaces - use z-index on the container div to control that. */ getSurfaceRenderOrder(): number; }