import { NumberRange } from "../../../Core/NumberRange"; import type { SCRTDoubleVector, TSciChart } from "../../../types/TSciChart"; import type { WebGlRenderContext2D } from "../../Drawing/WebGlRenderContext2D"; import { RenderPassData } from "../../Services/RenderPassData"; import type { SciChartSurface } from "../SciChartSurface"; import type { IBaseStackedCollectionOptions } from "./BaseStackedCollection"; import { BaseStackedCollection } from "./BaseStackedCollection"; import type { BaseStackedRenderableSeries } from "./BaseStackedRenderableSeries"; /** * Options for {@link StackedXyCollection} and its subclasses (e.g. {@link StackedMountainCollection}) */ export interface IStackedXyCollectionOptions extends IBaseStackedCollectionOptions { /** * When true (default), positive values stack upward from the zero line and negative values stack downward independently. * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour. */ separatePositiveNegativeStacks?: boolean; } export declare abstract class StackedXyCollection extends BaseStackedCollection { private separatePositiveNegativeStacksProperty; /** * X values unwound from a FIFO circular buffer into logical (time) order. Only populated when * the source series are FIFO and not sweeping. The accumulated value vectors are built in the * same logical order, so X and Y stay aligned without going through the resampler (which * stacked collections bypass — they build their own RenderPassData in {@link draw}). */ private unwoundXValuesProperty; /** * Creates an instance of the {@link StackedMountainCollection} * @param webAssemblyContext The {@link TSciChart | SciChart WebAssembly Context} containing * native methods and access to our WebGL2 WebAssembly Drawing Engine * @param options Optional parameters of type {@link IStackedXyCollectionOptions} to configure the series */ constructor(webAssemblyContext: TSciChart, options?: IStackedXyCollectionOptions); /** @inheritDoc */ updateAccumulatedVectors(): void; /** * True when the stacked source series are FIFO and not sweeping, in which case the circular * buffer must be unwound into logical order for drawing. */ private get isSourceFifo(); /** * Rebuilds {@link unwoundXValuesProperty} in logical order from the (shared) source X values * when the source is a non-sweeping FIFO buffer. Cleared/ignored otherwise. */ private buildUnwoundXValues; /** @inheritDoc */ protected getXValuesForRange(): SCRTDoubleVector; /** @inheritDoc */ delete(): void; /** @inheritDoc */ draw(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void; /** @inheritDoc */ getXRange(): NumberRange; /** @inheritDoc */ protected computeYRange(seriesList: T[], xVisibleRange: NumberRange, isXCategoryAxis: boolean): NumberRange; /** @inheritDoc */ onAttach(scs: SciChartSurface): void; /** @inheritDoc */ onDetach(): void; /** @inheritDoc */ notifyPropertyChanged(propertyName: string): void; /** * When true (default), positive values stack upward from the zero line and negative values stack downward independently. * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour. */ get separatePositiveNegativeStacks(): boolean; /** * When true (default), positive values stack upward from the zero line and negative values stack downward independently. * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour. */ set separatePositiveNegativeStacks(value: boolean); /** @inheritDoc */ hasDataSeriesValues(): boolean; private detachChildSeries; private attachChildSeries; private checkXValuesCorrect; /** * @param numberOfElements - number of element expected is used for performance to reserve memory */ private clearAccumulatedVectors; private getLastVisibleSeries; }