TextPathElement.d.ts 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { RenderingContext2D } from '../types';
  2. import PathParser, { CommandType } from '../PathParser';
  3. import Document from './Document';
  4. import TextElement from './TextElement';
  5. import PathElement from './PathElement';
  6. export interface IPoint {
  7. x: number;
  8. y: number;
  9. }
  10. export interface IPathCommand {
  11. type: CommandType;
  12. points: number[];
  13. start?: IPoint;
  14. pathLength: number;
  15. }
  16. interface ICachedPoint extends IPoint {
  17. distance: number;
  18. }
  19. interface IGlyphInfo {
  20. text: string;
  21. rotation: number;
  22. p0: ICachedPoint;
  23. p1: ICachedPoint;
  24. }
  25. export default class TextPathElement extends TextElement {
  26. type: string;
  27. protected textWidth: number;
  28. protected textHeight: number;
  29. protected pathLength: number;
  30. protected glyphInfo: IGlyphInfo[];
  31. protected readonly text: string;
  32. protected readonly dataArray: IPathCommand[];
  33. private letterSpacingCache;
  34. private equidistantCache;
  35. private readonly measuresCache;
  36. constructor(document: Document, node: HTMLElement, captureTextNodes?: boolean);
  37. getText(): string;
  38. path(ctx: RenderingContext2D): void;
  39. renderChildren(ctx: RenderingContext2D): void;
  40. protected getLetterSpacingAt(idx?: number): number;
  41. protected findSegmentToFitChar(ctx: RenderingContext2D, anchor: string, textFullWidth: number, fullPathWidth: number, spacesNumber: number, inputOffset: number, dy: number, c: string, charI: number): {
  42. offset: number;
  43. segment: {
  44. p0: ICachedPoint;
  45. p1: ICachedPoint;
  46. };
  47. rotation: number;
  48. };
  49. protected measureText(ctx: RenderingContext2D, text?: string): number;
  50. protected setTextData(ctx: RenderingContext2D): void;
  51. protected parsePathData(path: PathElement): IPathCommand[];
  52. protected pathM(pathParser: PathParser, points: number[]): void;
  53. protected pathL(pathParser: PathParser, points: number[]): 16;
  54. protected pathH(pathParser: PathParser, points: number[]): 16;
  55. protected pathV(pathParser: PathParser, points: number[]): 16;
  56. protected pathC(pathParser: PathParser, points: number[]): void;
  57. protected pathS(pathParser: PathParser, points: number[]): 32;
  58. protected pathQ(pathParser: PathParser, points: number[]): void;
  59. protected pathT(pathParser: PathParser, points: number[]): 128;
  60. protected pathA(pathParser: PathParser): number[];
  61. protected calcLength(x: number, y: number, commandType: CommandType, points: number[]): number;
  62. protected getPointOnLine(dist: number, p1x: number, p1y: number, p2x: number, p2y: number, fromX?: number, fromY?: number): IPoint;
  63. protected getPointOnPath(distance: number): IPoint;
  64. protected getLineLength(x1: number, y1: number, x2: number, y2: number): number;
  65. protected getPathLength(): number;
  66. protected getPointOnCubicBezier(pct: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number, p4x: number, p4y: number): IPoint;
  67. protected getPointOnQuadraticBezier(pct: number, p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): IPoint;
  68. protected getPointOnEllipticalArc(cx: number, cy: number, rx: number, ry: number, theta: number, psi: number): IPoint;
  69. protected buildEquidistantCache(inputStep: number, inputPrecision: number): void;
  70. protected getEquidistantPointOnPath(targetDistance: number, step?: number, precision?: number): ICachedPoint;
  71. }
  72. export {};
  73. //# sourceMappingURL=TextPathElement.d.ts.map