@lightningtv/renderer
Version:
Lightning 3 Renderer
60 lines (59 loc) • 2.44 kB
TypeScript
import type { CoreNode } from '../../CoreNode.js';
import type { CoreTextNode } from '../../CoreTextNode.js';
import type { Stage } from '../../Stage.js';
import type { TrFontFace } from '../font-face-types/TrFontFace.js';
import { WebTrFontFace } from '../font-face-types/WebTrFontFace.js';
import { LightningTextTextureRenderer, type RenderInfo } from './LightningTextTextureRenderer.js';
import { TextRenderer, type TextRendererState, type TrFontProps, type TrPropSetters, type TrProps } from './TextRenderer.js';
declare module './TextRenderer.js' {
interface TextRendererMap {
canvas: CanvasTextRenderer;
}
}
export interface CanvasTextRendererState extends TextRendererState {
node: CoreTextNode;
props: TrProps;
fontInfo: {
fontFace: WebTrFontFace;
cssString: string;
loaded: boolean;
} | undefined;
textureNode: CoreNode | undefined;
lightning2TextRenderer: LightningTextTextureRenderer;
renderInfo: RenderInfo | undefined;
}
export declare class CanvasTextRenderer extends TextRenderer<CanvasTextRendererState> {
protected canvas: OffscreenCanvas | HTMLCanvasElement;
protected context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D;
/**
* Font family map used to store web font faces that were added to the
* canvas text renderer.
*/
private fontFamilies;
private fontFamilyArray;
type: 'canvas' | 'sdf';
constructor(stage: Stage);
getPropertySetters(): Partial<TrPropSetters<CanvasTextRendererState>>;
canRenderFont(props: TrFontProps): boolean;
isFontFaceSupported(fontFace: TrFontFace): boolean;
addFontFace(fontFace: TrFontFace): void;
createState(props: TrProps, node: CoreTextNode): CanvasTextRendererState;
updateState(state: CanvasTextRendererState): void;
renderSingleCanvasPage(state: CanvasTextRendererState): void;
loadFont: (state: CanvasTextRendererState) => void;
calculateRenderInfo(state: CanvasTextRendererState): RenderInfo;
renderQuads(): void;
destroyState(state: CanvasTextRendererState): void;
/**
* Invalidate the layout cache stored in the state. This will cause the text
* to be re-rendered on the next update.
*
* @remarks
* This also invalidates the visible window cache.
*
* @param state
*/
private invalidateLayoutCache;
private onFontLoaded;
private onFontLoadError;
}