@lightningjs/renderer
Version:
Lightning 3 Renderer
111 lines (110 loc) • 4.07 kB
TypeScript
import type { TextRenderer, TrProps, TextRenderInfo } from './text-rendering/TextRenderer.js';
import { CoreNode, CoreNodeRenderState, type CoreNodeProps } from './CoreNode.js';
import type { Stage } from './Stage.js';
import type { RectWithValid } from './lib/utils.js';
import type { CoreRenderer } from './renderers/CoreRenderer.js';
import type { TextureLoadedEventHandler } from './textures/Texture.js';
import { BufferCollection } from './renderers/webgl/internal/BufferCollection.js';
import type { SdfShaderProps } from './shaders/webgl/SdfShader.js';
import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
/**
* Force Text Node to use a specific Text Renderer
*/
textRendererOverride?: string | null;
forceLoad: boolean;
}
export declare enum TextConstraint {
'none' = 0,
'width' = 1,
'height' = 2,
'both' = 3
}
export declare class CoreTextNode extends CoreNode implements CoreTextNodeProps {
private textRenderer;
private fontHandler;
private _layoutGenerated;
private _waitingForFont;
private _containType;
private _sdfBuffer;
private _sdfQuadCollection;
private _sdfShaderProps;
textProps: CoreTextNodeProps;
private _renderInfo;
constructor(stage: Stage, props: CoreTextNodeProps, textRenderer: TextRenderer);
protected onTextureLoaded: TextureLoadedEventHandler;
/**
* Delete the cached WebGLBuffer held by the SDF renderer ref and reset the
* ref so the next renderQuads call allocates a fresh one.
* Safe to call from destroy() or on text change.
*/
private releaseSdfBuffer;
allowTextGeneration(): boolean;
updateLocalTransform(): void;
/**
* Override CoreNode's update method to handle text-specific updates
*/
update(delta: number, parentClippingRect: RectWithValid): void;
/**
* Override is renderable check for SDF text nodes
*/
updateIsRenderable(): void;
/**
* Handle the result of text rendering for both Canvas and SDF renderers
*/
private handleRenderResult;
private emitTextLoadedEvent;
/**
* Override renderQuads to handle SDF vs Canvas rendering
*/
renderQuads(renderer: CoreRenderer): void;
updateRenderState(renderState: CoreNodeRenderState): void;
destroy(): void;
/**
* used in webgl SDF shader to get the quad buffer collection for rendering text quads
*/
get quadBufferCollection(): BufferCollection;
/**
* used in webgl SDF shader to get the SDF shader props for rendering text quads
*/
get sdfShaderProps(): SdfShaderProps;
get isSdfRenderOp(): boolean;
draw(renderer: WebGlRenderer): void;
set w(value: number);
get w(): number;
set h(value: number);
get h(): number;
get maxWidth(): number;
set maxWidth(value: number);
get maxHeight(): number;
set maxHeight(value: number);
get contain(): TrProps['contain'];
set contain(value: TrProps['contain']);
get text(): string;
set text(value: string);
get fontSize(): number;
set fontSize(value: number);
get fontFamily(): string;
set fontFamily(value: string);
get fontStyle(): TrProps['fontStyle'];
set fontStyle(value: TrProps['fontStyle']);
get textAlign(): TrProps['textAlign'];
set textAlign(value: TrProps['textAlign']);
get letterSpacing(): number;
set letterSpacing(value: number);
get lineHeight(): number;
set lineHeight(value: number);
get maxLines(): number;
set maxLines(value: number);
get verticalAlign(): TrProps['verticalAlign'];
set verticalAlign(value: TrProps['verticalAlign']);
get overflowSuffix(): string;
set overflowSuffix(value: string);
get wordBreak(): TrProps['wordBreak'];
set wordBreak(value: TrProps['wordBreak']);
get offsetY(): number;
set offsetY(value: number);
get forceLoad(): boolean;
set forceLoad(value: boolean);
get renderInfo(): TextRenderInfo | null;
}