import { Point } from "../../../../Core/Point"; import { EDataLabelProviderType } from "../../../../types/DataLabelProviderType"; import type { SCRTDoubleVector, TSRTextBounds } from "../../../../types/TSciChart"; import type { WebGlRenderContext2D } from "../../../Drawing/WebGlRenderContext2D"; import type { RenderPassData } from "../../../Services/RenderPassData"; import { EColumnDataLabelPosition } from "./ColumnSeriesDataLabelProvider"; import type { IDataLabelProviderOptions } from "./DataLabelProvider"; import { DataLabelProvider } from "./DataLabelProvider"; import type { DataLabelState } from "./DataLabelState"; export interface IStackedColumnSeriesDataLabelProviderOptions extends IDataLabelProviderOptions { /** * Sets whether text should be positioned outside or inside the end of the column using {@link EColumnDataLabelPosition}. * Center positions the label in the middle of the stacked segment. * If Position then the {@link verticalTextPosition} property is used, or {@link horizontalTextPosition} if it is a vertical chart. * Default Outside */ positionMode?: EColumnDataLabelPosition; } export declare class StackedColumnSeriesDataLabelProvider extends DataLabelProvider { readonly type: EDataLabelProviderType; private yAdj; private positionModeProperty; bottomVector: SCRTDoubleVector; topVector: SCRTDoubleVector; groupIndex: number; groupSize: number; columnWidth: number; spacing: number; isOneHundredPercent: boolean; showDataLabelsAsPercentages: boolean; constructor(options?: IStackedColumnSeriesDataLabelProviderOptions); /** * Sets whether text should be positioned outside or inside the end of the column using {@link EColumnDataLabelPosition}. * Center positions the label in the middle of the stacked segment. * If Position then the {@link verticalTextPosition} property is used, or {@link horizontalTextPosition} if it is a vertical chart. * Default Outside */ get positionMode(): EColumnDataLabelPosition; /** * Sets whether text should be positioned outside or inside the end of the column using {@link EColumnDataLabelPosition}. * Center positions the label in the middle of the stacked segment. * If Position then the {@link verticalTextPosition} property is used, or {@link horizontalTextPosition} if it is a vertical chart. * Default Outside */ set positionMode(value: EColumnDataLabelPosition); CalculateShift(initialVal: number): number; /** * This provider draws its window back-to-front unless the X axis is flipped, and indexes its * accumulation vectors ({@link topVector} / {@link bottomVector}) by that mirrored ordinal - so the * mapping from a drawn ordinal to a source row is this mirror-reversal, not the base class's * flip-then-map. Overridden so that a {@link DataLabelProvider.textColumn} resolves against the same * row this provider's own getPosition places the label on. * @remarks The point series' `indexes` map is deliberately not applied: the accumulation vectors * are indexed by drawn ordinal, and a stacked column series is not resampled, so the two coincide. */ protected resolveSourceIndex(state: DataLabelState): number; getText(state: DataLabelState): string; generateDataLabels(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void; getPosition(state: DataLabelState, textBounds: TSRTextBounds): { position: Point; rotationCenter: Point; rotationAngle: number; }; toJSON(): { type: EDataLabelProviderType; options: { style: import("../../../..").TDataLabelStyle; color: string; }; }; }