UNPKG

scichart

Version:

Fast WebGL JavaScript Charting Library and Framework

131 lines (130 loc) 6.54 kB
import { DeletableEntity } from "../../../Core/DeletableEntity"; import { IDeletable } from "../../../Core/IDeletable"; import { Rect } from "../../../Core/Rect"; import { EAxisAlignment } from "../../../types/AxisAlignment"; import { ELabelAlignment } from "../../../types/LabelAlignment"; import { SCRTPen, TSciChart } from "../../../types/TSciChart"; import { WebGlRenderContext2D } from "../../Drawing/WebGlRenderContext2D"; import { TextureManager } from "../TextureManager/TextureManager"; import { AxisBase2D } from "./AxisBase2D"; import { TTextStyle, TTickLineStyle } from "./AxisCore"; import { LabelProviderBase2D } from "./LabelProvider/LabelProviderBase2D"; /** * Draws an axis using our WebGL Rendering engine */ export declare class AxisRenderer extends DeletableEntity implements IDeletable { /** * The viewRect of the axis for ticks and labels. Does not include the axis Title. */ viewRect: Rect; drawDebug: boolean; textureManager: TextureManager; protected parentAxis: AxisBase2D; private webAssemblyContext; private desiredLabelsSize; private desiredTicksSize; private desiredHeightProperty; private desiredWidthProperty; private axisThicknessProperty; private measureTextCanvas; private keepLabelsWithinAxisProperty; private hideOverlappingLabelsProperty; /** * Creates an instance of a {@link AxisRenderer} * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and * access to our WebGL2 Engine and WebAssembly numerical methods */ constructor(webAssemblyContext: TSciChart); /** @inheritDoc */ delete(): void; /** * Called when the {@link AxisRenderer} is attached to an {@link AxisBase2D | Axis} * @param axis The Axis we are attached to. */ attachedToAxis(axis: AxisBase2D): void; /** * Called internally - measures the axis label area as part of the layout phase */ measure(isHorizontalAxis: boolean, labelStyle: TTextStyle, majorTickLabels: string[], ticksSize: number, labelProvider: LabelProviderBase2D, drawLabels: boolean, drawTicks: boolean): void; /** * Called internally - calculates desired labels size */ calcDesiredLabelsSize(isHorizontalAxis: boolean, labelProvider: LabelProviderBase2D, labelStyle: TTextStyle, majorTickLabels: string[]): number; /** * Called internally - Gets or sets desired height during the layout process */ get desiredHeight(): number; set desiredHeight(height: number); /** * Called internally - Gets or sets desired width during the layout process */ get desiredWidth(): number; set desiredWidth(width: number); /** * Gets or sets keepLabelsWithinAxis property. * When true (default), first and last labels will be shifted to stay within axis bounds. * If set to false, these labels will stay aligned to their ticks */ get keepLabelsWithinAxis(): boolean; set keepLabelsWithinAxis(value: boolean); /** * Gets or sets hideOverlappingLabels property. * Default (true) is to not show labels that would overlap. When using rotation you may want to set this false, * as the bounding box of rotated text may overlap even if the text itself does not. */ get hideOverlappingLabels(): boolean; set hideOverlappingLabels(value: boolean); /** * Gets or sets axis label area thickness, by default the size is calculated to have enough space for labels. * However, this property allows to set minimal width/height for vertical/horizontal axes. * Useful to align seriesViewRects for different charts */ get axisThickness(): number; set axisThickness(value: number); /** * Called internally as a part of the layout process */ layout(rect: Rect): void; /** * Called internally - draws labels */ drawLabels(renderContext: WebGlRenderContext2D, axisAlignment: EAxisAlignment, isInnerAxis: boolean, tickLabels: string[], tickCoords: number[], axisOffset: number, labelStyle: TTextStyle, isVerticalChart: boolean, isFlippedCoordinates: boolean, labelProvider: LabelProviderBase2D): void; /** * Called internally - adjusts labels for label alignment */ adjustForLabelAlignment(xCoord: number, labelWidth: number, labelAlignment: ELabelAlignment, axisAlignment: EAxisAlignment, isInnerAxis: boolean, axisWidth: number, tickSize: number): number; /** * Called internally */ layoutLabels(size: number, tickCoords: number[], labelSizes: number[], isFlippedCoordinates: boolean, padBefore?: number, padAfter?: number): { labelCoords: number[]; labelIndexes: number[]; }; /** * Called internally */ drawTicks(renderContext: WebGlRenderContext2D, axisAlignment: EAxisAlignment, isInnerAxis: boolean, tickCoords: number[], axisOffset: number, pen: SCRTPen, tickStyle: TTickLineStyle): void; /** * Called internally - draws axis labels when needed, for example for line annotations */ drawModifiersAxisLabel(renderContext: WebGlRenderContext2D, displayValue: string, coord: number, axisAlignment: EAxisAlignment, textStyle: TTextStyle, fill: string): Rect; /** * Called internally - used for {@link AxisMarkerAnnotation} */ createAxisMarker(axisAlignment: EAxisAlignment, text: string, textStyle: TTextStyle, backgroundColor?: string, opacity?: number): import("../TextureManager/TextureManager").TTextureObject; /** * Called internally - used for custom {@link AxisMarkerAnnotation} */ createAxisMarkerFromImage(image: HTMLImageElement, imageWidth: number, imageHeight: number): import("../TextureManager/TextureManager").TTextureObject; /** * Called internally */ createAnnotationLabelTexture(text: string, textStyle: TTextStyle, backgroundColor?: string, displayVertically?: boolean, displayMirrored?: boolean, opacity?: number): import("../TextureManager/TextureManager").TTextureObject; protected invalidateParent(): void; private drawLabelViewRects; } /** @ignore */ export declare const layoutLabelsHelper: (keepLabelsWithinAxis: boolean, hideOverlappingLabels: boolean, size: number, tickCoords: number[], labelSizes: number[], isFlippedCoordinates: boolean) => { labelCoords: number[]; labelIndexes: number[]; };