scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
131 lines (130 loc) • 6.54 kB
TypeScript
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[];
};