A visual Node in the Renderer scene graph that renders text.

A Text Node is a special type of Node that renders text using a specific text renderer, such as Web/Canvas or Signed Distance Field (SDF) text.

For non-text rendering, see INode.

Users of the Renderer API, should generally interact with ITextNode objects instead of CoreTextNode objects.

interface ITextNode {
    absX: number;
    absY: number;
    alpha: number;
    autosize: boolean;
    boundsMargin: null | number | [number, number, number, number];
    calcZIndex: number;
    children: CoreNode[];
    childUpdateType: UpdateType;
    clipping: boolean;
    clippingRect: RectWithValid;
    color: number;
    colorBl: number;
    colorBottom: number;
    colorBr: number;
    colorLeft: number;
    colorRight: number;
    colorTl: number;
    colorTop: number;
    colorTr: number;
    data: undefined | CustomDataMap;
    destroyed: boolean;
    fontFamily: string;
    fontSize: number;
    fontStyle: "normal" | "italic" | "oblique";
    forceLoad: boolean;
    framebufferDimensions: null | Dimensions;
    globalTransform?: Matrix3d;
    h: number;
    hasRTTupdates: boolean;
    id: number;
    imageType:
        | null
        | "svg"
        | "regular"
        | "compressed";
    interactive: undefined | boolean;
    isRenderable: boolean;
    letterSpacing: number;
    lineHeight: number;
    localTransform?: Matrix3d;
    maxHeight: number;
    maxLines: number;
    maxWidth: number;
    mount: number;
    mountX: number;
    mountY: number;
    offsetY: number;
    overflowSuffix: string;
    parent: null | INode<CoreShaderNode<Record<string, unknown>>>;
    parentFramebufferDimensions: Dimensions;
    parentHasRenderTexture: boolean;
    parentRenderTexture: null | CoreNode;
    pivot: number;
    pivotX: number;
    pivotY: number;
    preloadBound?: Bound;
    premultipliedColorBl: number;
    premultipliedColorBr: number;
    premultipliedColorTl: number;
    premultipliedColorTr: number;
    props: CoreNodeProps;
    renderBound?: Bound;
    renderCoords?: RenderCoords;
    renderInfo: TextRenderInfo;
    renderState: CoreNodeRenderState;
    rotation: number;
    rtt: boolean;
    rttParent: null | CoreNode;
    scale: number;
    scaleX: number;
    scaleY: number;
    sceneGlobalTransform?: Matrix3d;
    sceneRenderCoords?: RenderCoords;
    shader: null | CoreShaderNode<any>;
    src: null | string;
    srcHeight: undefined | number;
    srcWidth: undefined | number;
    srcX: undefined | number;
    srcY: undefined | number;
    stage: Stage;
    strictBound?: Bound;
    text: string;
    textAlign: "center" | "left" | "right";
    textBaseline: TextBaseline;
    texture: null | Texture;
    textureCoords?: Bound;
    textureOptions: TextureOptions;
    updateShaderUniforms: boolean;
    updateTextureCoords: boolean;
    updateType: UpdateType;
    verticalAlign: TextVerticalAlign;
    w: number;
    wordBreak: "normal" | "break-all" | "break-word";
    worldAlpha: number;
    x: number;
    y: number;
    zIndex: number;
    zIndexLocked: number;
    allowTextGeneration(): boolean;
    animate(props: Partial<INodeAnimateProps<CoreShaderNode<Record<string, unknown>>>>, settings: Partial<AnimationSettings>): IAnimationController;
    calculateClippingRect(parentClippingRect: RectWithValid): void;
    calculateRenderCoords(): void;
    calculateZIndex(): void;
    checkRenderBounds(): CoreNodeRenderState;
    createRenderBounds(): void;
    destroy(): void;
    emit(event: string, data?: any): void;
    flush(): void;
    loadTexture(): void;
    off(event: string, listener?: ((target: any, data: any) => void)): void;
    on(event: string, listener: ((target: any, data: any) => void)): void;
    once(event: string, listener: ((target: any, data: any) => void)): void;
    removeAllListeners(): void;
    renderQuads(renderer: CoreRenderer): void;
    setRenderable(isRenderable: boolean): void;
    setRTTUpdates(type: number): void;
    setUpdateType(type: UpdateType): void;
    sortChildren(): void;
    unloadTexture(): void;
    update(delta: number, parentClippingRect: RectWithValid): void;
    updateBoundingRect(): void;
    updateIsRenderable(): void;
    updateLocalTransform(): void;
    updateRenderState(renderState: CoreNodeRenderState): void;
    updateTextureOwnership(isRenderable: boolean): void;
}

Hierarchy

  • Omit<CoreTextNode, "animate" | "parent">
    • ITextNode

Properties

absX: number
absY: number
alpha: number
autosize: boolean
boundsMargin: null | number | [number, number, number, number]
calcZIndex: number = 0
children: CoreNode[] = []
childUpdateType: UpdateType = UpdateType.None
clipping: boolean
clippingRect: RectWithValid = ...
color: number
colorBl: number
colorBottom: number
colorBr: number
colorLeft: number
colorRight: number
colorTl: number
colorTop: number
colorTr: number
data: undefined | CustomDataMap
destroyed: boolean = false
fontFamily: string
fontSize: number
fontStyle: "normal" | "italic" | "oblique"
forceLoad: boolean
framebufferDimensions: null | Dimensions = null

only used when rtt = true

globalTransform?: Matrix3d
h: number
hasRTTupdates: boolean = false
id: number
imageType:
    | null
    | "svg"
    | "regular"
    | "compressed"
interactive: undefined | boolean
isRenderable: boolean = false
letterSpacing: number
lineHeight: number
localTransform?: Matrix3d
maxHeight: number
maxLines: number
maxWidth: number
mount: number
mountX: number
mountY: number
offsetY: number
overflowSuffix: string
parent: null | INode<CoreShaderNode<Record<string, unknown>>>
parentFramebufferDimensions: Dimensions
parentHasRenderTexture: boolean = false
parentRenderTexture: null | CoreNode
pivot: number
pivotX: number
pivotY: number
preloadBound?: Bound
premultipliedColorBl: number = 0
premultipliedColorBr: number = 0
premultipliedColorTl: number = 0
premultipliedColorTr: number = 0
props: CoreNodeProps
renderBound?: Bound
renderCoords?: RenderCoords
renderInfo: TextRenderInfo
renderState: CoreNodeRenderState = CoreNodeRenderState.Init
rotation: number
rtt: boolean
rttParent: null | CoreNode = null
scale: number
scaleX: number
scaleY: number
sceneGlobalTransform?: Matrix3d
sceneRenderCoords?: RenderCoords
shader: null | CoreShaderNode<any>
src: null | string
srcHeight: undefined | number
srcWidth: undefined | number
srcX: undefined | number
srcY: undefined | number
stage: Stage
strictBound?: Bound
text: string
textAlign: "center" | "left" | "right"
textBaseline: TextBaseline
texture: null | Texture
textureCoords?: Bound
textureOptions: TextureOptions
updateShaderUniforms: boolean = false
updateTextureCoords: boolean = false
updateType: UpdateType = UpdateType.All
verticalAlign: TextVerticalAlign
w: number
wordBreak: "normal" | "break-all" | "break-word"
worldAlpha: number = 1
x: number
y: number
zIndex: number
zIndexLocked: number

Methods

  • This function calculates the clipping rectangle for a node.

    The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions. If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.

    Finally, the node's parentClippingRect and clippingRect properties are updated.

    Parameters

    • parentClippingRect: RectWithValid

    Returns void

  • Parameters

    • event: string
    • Optionallistener: ((target: any, data: any) => void)
        • (target, data): void
        • Parameters

          • target: any
          • data: any

          Returns void

    Returns void

  • Parameters

    • event: string
    • listener: ((target: any, data: any) => void)
        • (target, data): void
        • Parameters

          • target: any
          • data: any

          Returns void

    Returns void

  • Parameters

    • event: string
    • listener: ((target: any, data: any) => void)
        • (target, data): void
        • Parameters

          • target: any
          • data: any

          Returns void

    Returns void

  • Override renderQuads to handle SDF vs Canvas rendering

    Parameters

    • renderer: CoreRenderer

    Returns void

  • Sets the renderable state and triggers changes if necessary.

    Parameters

    • isRenderable: boolean

      The new renderable state

    Returns void

  • Parameters

    • type: number

    Returns void

  • Change types types is used to determine the scope of the changes being applied

    Parameters

    • type: UpdateType

    Returns void

    See UpdateType for more information on each type

  • Override CoreNode's update method to handle text-specific updates

    Parameters

    • delta: number
    • parentClippingRect: RectWithValid

    Returns void

  • Override is renderable check for SDF text nodes

    Returns void

  • Changes the renderable state of the node.

    Parameters

    • isRenderable: boolean

    Returns void