import * as PIXI from 'pixi.js'; /** * 支持文字动画 和 各种文字样式 */ export interface LinearFill { type: 'linear'; value: { angle?: number; points?: { x0: number; y0: number; x1: number; y1: number; }; colors: { color: string; offset: number; }[]; }; } export interface ConicFill { type: 'conic'; value: { points?: { startAngle?: number; x?: number; y?: number; }; colors: { color: string; offset: number; }[]; }; } export interface RadialFill { type: 'radial'; value: { points?: { x0: number; y0: number; r0: number; x1: number; y1: number; r1: number; }; colors: { color: string; offset: number; }[]; }; } export interface ImageFill { type: 'image'; value: { url: string; repeat: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | ''; }; } export type FillColor = string | LinearFill | ConicFill | RadialFill | ImageFill; export interface TextStyle { type: 'newTextStyle'; padding: [number, number, number, number]; radius: [number, number, number, number]; direction: 'vertical' | 'horizontal'; backgroundColor: FillColor; letterSpacing: number; lineHeight: number; fontFamily: string; fontSize: number; align: 'left' | 'center' | 'right' | 'justify'; fontWeight: 'bold' | 'bolder' | number; fontStyle: 'normal' | 'italic'; fillType: 'normal' | 'gradual'; fill: FillColor; stroke: { color: FillColor; lineJoin: 'miter' | 'round' | 'bevel'; lineWidth: number; }; shadow: { distance: number; angle: number; color: string; blur: number; }; } export interface Point { x: number; y: number; width: number; scalex?: number; scaley?: number; rotate?: number; opacity?: number; progress?: number; offsetX?: number; offsetY?: number; offsetScaleX?: number; offsetScaleY?: number; offsetOpacity?: number; offsetRotate?: number; } /** * 动画参数 */ export interface AnimateSet { } export declare class TxtTexture { private _text; private _textStyle; private _rectText; private _bgContext; private _bgCanvas; private _textContext; private _textCanvas; private _rect; private _points; private _lines; private _lineWidths; private _lineWidthMax; private _cacheImg; private _texture; private _scale; private _direction; constructor(text: string, textStyle: Partial, scale: number); get rectText(): PIXI.Container; get points(): Point[][]; get rect(): PIXI.Rectangle; private _drawBackground; /** * 更新文字 * @param text * @param textStyle */ update(text: string, textStyle?: Partial): PIXI.Rectangle; /** * 设置缩放比例 */ setScale(scale: number): PIXI.Rectangle; /** * 返回颜色参数 * @param color */ getColor(color: FillColor, scale: number): any; /** * 文字动画 * @param progress */ run(progress?: number): void; /** * 销毁 */ destroys(): void; /** * 创建图片填充 * @param src * @param repeat * @returns */ createPattern(src: string, repeat: any): Promise; /** * 加载字体 * @param fontFamily * @param url */ loadFont(fontFamily: string, url: string): Promise; init(): PIXI.Texture; private _setWordPosition; /** * 计算最大宽度,每个字的宽度 */ private _countLines; /** * 获取文字占用的canvas大小,阴影是错位的 * 往外padding加50px, * 通过pixi的文字来获取大小 */ getTextRect(): PIXI.Rectangle; } /** * 计算 * @param angleInDegrees * @param distance * @returns */ export declare function calculateVector(angleInDegrees: number, distance: number): { x: number; y: number; }; /** * 计算相交的长度 * @param width * @param height * @param angleInDegrees * @returns */ export declare function calculateIntersectingLength(width: number, height: number, angle: number): number; /** * 老数据的兼容 */ export declare function compatibilityTextStyle(textStyle: PIXI.TextStyle): any;