UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

83 lines (80 loc) 2.14 kB
import { TextStyle } from '../text/TextStyle.mjs'; import { canvasTextSplit } from '../text/utils/canvasTextSplit.mjs'; import { AbstractSplitText } from './AbstractSplitText.mjs'; "use strict"; const _SplitText = class _SplitText extends AbstractSplitText { constructor(config) { const completeOptions = { ..._SplitText.defaultOptions, ...config }; super(completeOptions); } /** * Creates a SplitText instance from an existing text object. * Useful for converting standard Text or Text objects into segmented versions. * @param text - The source text object to convert * @param options - Additional splitting options * @returns A new SplitText instance * @example * ```ts * const text = new Text({ * text: 'Bitmap Text', * style: { fontFamily: 'Arial' } * }); * * const segmented = SplitText.from(text); * * // with additional options * const segmentedWithOptions = SplitText.from(text, { * autoSplit: false, * lineAnchor: 0.5, * wordAnchor: { x: 0, y: 0.5 }, * }) * ``` */ static from(text, options) { const completeOptions = { ..._SplitText.defaultOptions, ...options, text: text.text, style: new TextStyle(text.style) }; return new _SplitText({ ...completeOptions }); } splitFn() { return canvasTextSplit({ text: this._originalText, style: this._style, chars: this._canReuseChars ? this.chars : [] }); } }; /** * Default configuration options for SplitText instances. * @example * ```ts * // Override defaults globally * SplitText.defaultOptions = { * autoSplit: false, * lineAnchor: 0.5, // Center alignment * wordAnchor: { x: 0, y: 0.5 }, // Left-center * charAnchor: { x: 0.5, y: 1 } // Bottom-center * }; * ``` */ _SplitText.defaultOptions = { autoSplit: true, // Auto-update on text/style changes lineAnchor: 0, // Top-left alignment wordAnchor: 0, // Top-left alignment charAnchor: 0 // Top-left alignment }; let SplitText = _SplitText; export { SplitText }; //# sourceMappingURL=SplitText.mjs.map