@lightningjs/renderer
    Preparing search index...

    Interface ITextNode

    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 {
        _globalIsTranslate: boolean;
        _localIsTranslate: boolean;
        absX: number;
        absY: number;
        alpha: number;
        autosize: boolean;
        autosizer: null | Autosizer;
        boundsMargin: null | number | [number, number, number, number];
        calcZIndex: number;
        children: CoreNode[];
        childUpdateType: UpdateType;
        clipping: boolean;
        clippingRect: RectWithValid;
        clipRadius: number;
        color: number;
        colorBl: number;
        colorBottom: number;
        colorBr: number;
        colorLeft: number;
        colorRight: number;
        colorTl: number;
        colorTop: number;
        colorTr: number;
        contain: "none" | "both" | "height" | "width";
        data: undefined | CustomDataMap;
        destroyed: boolean;
        fontFamily: string;
        fontSize: number;
        fontStyle: "normal" | "italic" | "oblique";
        forceLoad: boolean;
        framebufferDimensions: null | Dimensions;
        globalTransform?: Matrix3d;
        h: number;
        hasRTTupdates: boolean;
        hasShaderTimeFn: boolean;
        id: number;
        imageType: null | "svg" | "regular" | "compressed";
        interactive: undefined | boolean;
        isCoreNode: boolean;
        isQuadDirty: boolean;
        isRenderable: boolean;
        isSimple: boolean;
        letterSpacing: number;
        lineHeight: number;
        localTransform?: Matrix3d;
        maxHeight: number;
        maxLines: number;
        maxWidth: number;
        mount: number;
        mountX: number;
        mountY: number;
        numQuads: number;
        offsetY: number;
        overflowSuffix: string;
        parent: null | INode<CoreShaderNode<Record<string, unknown>>>;
        parentAutosizer: null | Autosizer;
        parentFramebufferDimensions: null | Dimensions;
        parentHasRenderTexture: boolean;
        parentRenderTexture: null | CoreNode;
        pivot: number;
        pivotX: number;
        pivotY: number;
        preloadBound?: Bound;
        premultipliedColorBl: number;
        premultipliedColorBr: number;
        premultipliedColorTl: number;
        premultipliedColorTr: number;
        previousZIndex: number;
        props: CoreNodeProps;
        quadBufferCollection: BufferCollection;
        quadBufferIndex: number;
        renderBound?: Bound;
        renderCoords?: RenderCoords;
        renderInfo: null | TextRenderInfo;
        renderOpBufferIdx: number;
        renderOpTextures: WebGlCoreCtxTexture[];
        renderState: CoreNodeRenderState;
        richText: boolean;
        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;
        stencilDepth: number;
        strictBound?: Bound;
        text: string;
        textAlign: "center" | "left" | "right";
        textProps: CoreTextNodeProps;
        texture: null | Texture;
        textureCoords?: Bound;
        textureOptions: TextureOptions;
        time: number;
        updateShaderUniforms: boolean;
        updateType: UpdateType;
        verticalAlign: TextVerticalAlign;
        w: number;
        wordBreak: "overflow" | "break-all" | "break-word";
        worldAlpha: number;
        x: number;
        y: number;
        zIndex: number;
        addChild(node: CoreNode, previousParent?: null | CoreNode): void;
        addTexture(texture: WebGlCoreCtxTexture): number;
        allowTextGeneration(): boolean;
        animate(
            props: Partial<INodeAnimateProps<CoreShaderNode>>,
            settings: Partial<AnimationSettings>,
        ): IAnimationController;
        calculateClippingRect(parentClippingRect: RectWithValid): void;
        calculateRenderCoords(): void;
        checkBasicRenderability(): boolean;
        checkRenderBounds(): CoreNodeRenderState;
        clearListeners(events: readonly string[]): void;
        createRenderBounds(): void;
        destroy(): void;
        draw(renderer: WebGlCoreRenderer): void;
        emit(event: string, data?: any): void;
        flush(): void;
        getTimerValue(): number;
        hasDimensions(): boolean;
        hasListeners(event?: string): boolean;
        isOutOfBounds(): boolean;
        loadTexture(): void;
        off(event: string, listener?: EventListener): void;
        on(event: string, listener: EventListener): void;
        once(event: string, listener: EventListener): void;
        removeAllListeners(): void;
        removeChild(node: CoreNode, targetParent?: null | CoreNode): 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;
        updateIsSimple(): void;
        updateLocalTransform(): void;
        updateRenderState(renderState: CoreNodeRenderState): void;
        updateTextureOwnership(isRenderable: boolean): void;
    }

    Hierarchy

    Index

    Properties

    Methods

    Properties

    _globalIsTranslate: boolean = false

    True when globalTransform is a pure translation. Read by child nodes in update() to determine if the translate-only global fast path applies.

    _localIsTranslate: boolean = false

    True when localTransform is known to be in identity-shape (ta=1, tb=0, tc=0, td=1) so that subsequent updateLocalTransform calls can skip the 4 redundant field writes and use setTranslate() instead.

    absX: number
    absY: number
    alpha: number
    autosize: boolean
    autosizer: null | Autosizer = null

    Autosize properties

    boundsMargin: null | number | [number, number, number, number]
    calcZIndex: number = 0
    children: CoreNode[] = []
    childUpdateType: UpdateType = UpdateType.None
    clipping: boolean
    clippingRect: RectWithValid = NO_CLIPPING_RECT
    clipRadius: number
    color: number
    colorBl: number
    colorBottom: number
    colorBr: number
    colorLeft: number
    colorRight: number
    colorTl: number
    colorTop: number
    colorTr: number
    contain: "none" | "both" | "height" | "width"
    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
    hasShaderTimeFn: boolean = false
    id: number
    imageType: null | "svg" | "regular" | "compressed"
    interactive: undefined | boolean
    isCoreNode: boolean = ...
    isQuadDirty: boolean = false
    isRenderable: boolean = false
    isSimple: boolean = true

    True when the node has no rotation, no scale, no mount offset, and no contain-resize. The vast majority of nodes in a typical TV UI are "simple" — their local transform is a pure translation.

    letterSpacing: number
    lineHeight: number
    localTransform?: Matrix3d
    maxHeight: number
    maxLines: number
    maxWidth: number
    mount: number
    mountX: number
    mountY: number
    numQuads: number = 0
    offsetY: number
    overflowSuffix: string
    parent: null | INode<CoreShaderNode<Record<string, unknown>>>
    parentAutosizer: null | Autosizer = null
    parentFramebufferDimensions: null | 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
    previousZIndex: number = -1
    quadBufferCollection: BufferCollection
    quadBufferIndex: number = -1
    renderBound?: Bound
    renderCoords?: RenderCoords
    renderInfo: null | TextRenderInfo
    renderOpBufferIdx: number = 0
    renderOpTextures: WebGlCoreCtxTexture[] = []
    renderState: CoreNodeRenderState = CoreNodeRenderState.Init
    richText: boolean
    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
    stencilDepth: number = 0
    strictBound?: Bound
    text: string
    textAlign: "center" | "left" | "right"
    texture: null | Texture
    textureCoords?: Bound
    textureOptions: TextureOptions
    time: number
    updateShaderUniforms: boolean = false
    updateType: UpdateType = UpdateType.All
    verticalAlign: TextVerticalAlign
    w: number
    wordBreak: "overflow" | "break-all" | "break-word"
    worldAlpha: number = 1
    x: number
    y: number
    zIndex: 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

    • Clear all listeners for the given event names by setting their array length to 0, WITHOUT deleting the keys. This keeps the eventListeners object in V8's fast-properties mode and avoids re-allocating the arrays on the next on() call. Use this for objects with a known fixed set of event names (e.g. CoreAnimation, CoreAnimationController).

      Only writes arr.length = 0 when the array is non-empty -- skips the write (and the write barrier on old-gen objects) when already empty, which is the common case after unregisterAnimation() has removed all listeners.

      Parameters

      • events: readonly string[]

      Returns void

    • Check whether this emitter has any listeners registered.

      Parameters

      • Optionalevent: string

        Optional event name. When provided, checks only that event. When omitted, checks all events.

      Returns boolean

      true if at least one listener is registered.

    • 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

    • Recompute the isSimple flag and the cached contain-resize check.

      Returns void

      Called from property setters that affect whether the node is "simple" (rotation, scaleX, scaleY, mountX, mountY, texture, textureOptions). This runs on the cold setter path, not per-frame.

    • Changes the renderable state of the node.

      Parameters

      • isRenderable: boolean

      Returns void