UNPKG

@lightningtv/renderer

Version:
60 lines (59 loc) 2.44 kB
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; }