libpag 4.5.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/LICENSE.txt +1589 -0
  2. package/README.md +172 -10
  3. package/README.zh_CN.md +114 -15
  4. package/lib/libpag.cjs.js +5418 -6177
  5. package/lib/libpag.cjs.js.map +1 -1
  6. package/lib/libpag.esm.js +5418 -6177
  7. package/lib/libpag.esm.js.map +1 -1
  8. package/lib/libpag.min.js +1 -1
  9. package/lib/libpag.min.js.map +1 -1
  10. package/lib/libpag.umd.js +5418 -6177
  11. package/lib/libpag.umd.js.map +1 -1
  12. package/lib/libpag.wasm +0 -0
  13. package/package.json +23 -11
  14. package/src/.pag.wasm-mt.md5 +1 -0
  15. package/src/.pag.wasm.md5 +1 -1
  16. package/src/core/matrix.ts +1 -2
  17. package/src/core/video-reader.ts +73 -94
  18. package/src/interfaces.ts +8 -17
  19. package/src/pag-composition.ts +12 -5
  20. package/src/pag-file.ts +146 -129
  21. package/src/pag-font.ts +1 -3
  22. package/src/pag-image-layer.ts +1 -2
  23. package/src/pag-image.ts +1 -3
  24. package/src/pag-layer.ts +2 -3
  25. package/src/pag-player.ts +7 -6
  26. package/src/pag-solid-layer.ts +1 -2
  27. package/src/pag-surface.ts +1 -2
  28. package/src/pag-text-layer.ts +1 -2
  29. package/src/pag-view.ts +3 -14
  30. package/src/pag.ts +0 -6
  31. package/src/types.ts +46 -3
  32. package/src/utils/decorators.ts +0 -42
  33. package/src/utils/type-utils.ts +1 -9
  34. package/src/utils/ua.ts +0 -1
  35. package/src/wasm/libpag.js +7 -6
  36. package/src/wasm/libpag.wasm +0 -0
  37. package/src/wasm-mt/libpag.js +2 -18
  38. package/src/wasm-mt/libpag.wasm +0 -0
  39. package/src/wechat/pag-file.ts +1 -2
  40. package/src/wechat/pag-image.ts +0 -2
  41. package/src/wechat/pag-view.ts +1 -2
  42. package/types/third_party/tgfx/web/src/core/path-rasterizer.d.ts +4 -0
  43. package/types/third_party/tgfx/web/src/core/scaler-context.d.ts +9 -2
  44. package/types/third_party/tgfx/web/src/utils/decorators.d.ts +0 -2
  45. package/types/web/src/core/video-reader.d.ts +4 -3
  46. package/types/web/src/interfaces.d.ts +8 -15
  47. package/types/web/src/pag-composition.d.ts +3 -3
  48. package/types/web/src/pag-file.d.ts +4 -4
  49. package/types/web/src/pag-player.d.ts +2 -2
  50. package/types/web/src/pag-view.d.ts +1 -1
  51. package/types/web/src/types.d.ts +12 -3
  52. package/types/web/src/utils/decorators.d.ts +0 -2
  53. package/types/web/src/utils/ua.d.ts +0 -1
  54. package/types/web/tsconfig.json +19 -0
  55. package/lib/libpag.worker.cjs.js +0 -798
  56. package/lib/libpag.worker.cjs.js.map +0 -1
  57. package/lib/libpag.worker.esm.js +0 -793
  58. package/lib/libpag.worker.esm.js.map +0 -1
  59. package/lib/libpag.worker.js +0 -804
  60. package/lib/libpag.worker.js.map +0 -1
  61. package/lib/libpag.worker.min.js +0 -2
  62. package/lib/libpag.worker.min.js.map +0 -1
  63. package/src/worker/client.ts +0 -80
  64. package/src/worker/events.ts +0 -41
  65. package/src/worker/pag-file.ts +0 -90
  66. package/src/worker/pag-image.ts +0 -43
  67. package/src/worker/pag-view.ts +0 -171
  68. package/src/worker/utils.ts +0 -29
  69. package/src/worker/video-reader.ts +0 -62
  70. package/src/worker/worker.ts +0 -169
  71. package/types/third_party/tgfx/web/src/core/web-mask.d.ts +0 -26
  72. package/types/web/src/utils/canvas.d.ts +0 -4
  73. package/types/web/src/worker/client.d.ts +0 -16
  74. package/types/web/src/worker/events.d.ts +0 -32
  75. package/types/web/src/worker/pag-file.d.ts +0 -33
  76. package/types/web/src/worker/pag-image.d.ts +0 -8
  77. package/types/web/src/worker/pag-view.d.ts +0 -67
  78. package/types/web/src/worker/utils.d.ts +0 -7
  79. package/types/web/src/worker/video-reader.d.ts +0 -16
  80. package/types/web/src/worker/worker.d.ts +0 -13
Binary file
@@ -1,8 +1,7 @@
1
1
  import { PAGFile as NativePAGFile } from '../pag-file';
2
- import { destroyVerify, wasmAwaitRewind } from '../utils/decorators';
2
+ import { destroyVerify } from '../utils/decorators';
3
3
 
4
4
  @destroyVerify
5
- @wasmAwaitRewind
6
5
  export class PAGFile extends NativePAGFile {
7
6
  public static async load(data: ArrayBuffer) {
8
7
  return PAGFile.loadFromBuffer(data);
@@ -1,9 +1,7 @@
1
1
  import { ArrayBufferImage } from '@tgfx/wechat/array-buffer-image';
2
2
  import { PAGImage as NativePAGImage } from '../pag-image';
3
3
  import { PAGModule } from '../pag-module';
4
- import { wasmAwaitRewind } from '../utils/decorators';
5
4
 
6
- @wasmAwaitRewind
7
5
  export class PAGImage extends NativePAGImage {
8
6
  /**
9
7
  * Create pag image from ArrayBuffer.
@@ -3,7 +3,7 @@ import { PAGView as NativePAGView } from '../pag-view';
3
3
 
4
4
  import { RenderCanvas } from '../core/render-canvas';
5
5
  import { BackendContext } from '../core/backend-context';
6
- import { destroyVerify, wasmAwaitRewind } from '../utils/decorators';
6
+ import { destroyVerify } from '../utils/decorators';
7
7
 
8
8
  import type { PAGComposition } from '../pag-composition';
9
9
  import type { wx } from './interfaces';
@@ -35,7 +35,6 @@ function isOffscreenCanvas(canvas: any): boolean {
35
35
  }
36
36
 
37
37
  @destroyVerify
38
- @wasmAwaitRewind
39
38
  export class PAGView extends NativePAGView {
40
39
  /**
41
40
  * Create pag view.
@@ -0,0 +1,4 @@
1
+ import { ctor } from '../types';
2
+ export declare class PathRasterizer {
3
+ static readPixels(width: number, height: number, path: Path2D, fillType: ctor): Uint8Array;
4
+ }
@@ -1,8 +1,10 @@
1
- import type { Rect } from '../types';
1
+ import { ctor, Rect } from '../types';
2
2
  export declare class ScalerContext {
3
3
  static canvas: HTMLCanvasElement | OffscreenCanvas;
4
4
  static context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
5
5
  private static hasMeasureBoundsAPI;
6
+ static getLineCap(cap: ctor): CanvasLineCap;
7
+ static getLineJoin(join: ctor): CanvasLineJoin;
6
8
  static setCanvas(canvas: HTMLCanvasElement | OffscreenCanvas): void;
7
9
  static setContext(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
8
10
  static isUnicodePropertyEscapeSupported(): boolean;
@@ -23,7 +25,12 @@ export declare class ScalerContext {
23
25
  };
24
26
  getBounds(text: string, fauxBold: boolean, fauxItalic: boolean): Rect;
25
27
  getAdvance(text: string): number;
26
- generateImage(text: string, bounds: Rect): HTMLCanvasElement | OffscreenCanvas;
28
+ readPixels(text: string, bounds: Rect, fauxBold: boolean, stroke?: {
29
+ width: number;
30
+ cap: ctor;
31
+ join: ctor;
32
+ miterLimit: number;
33
+ }): Uint8Array;
27
34
  protected loadCanvas(): void;
28
35
  private measureText;
29
36
  }
@@ -1,3 +1 @@
1
- export declare function wasmAwaitRewind(constructor: any): void;
2
- export declare function wasmAsyncMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor): void;
3
1
  export declare function destroyVerify(constructor: any): void;
@@ -1,6 +1,6 @@
1
1
  import type { TimeRange, VideoReader as VideoReaderInterfaces } from '../interfaces';
2
2
  export declare class VideoReader {
3
- static create(source: Uint8Array | HTMLVideoElement, width: number, height: number, frameRate: number, staticTimeRanges: TimeRange[]): Promise<VideoReaderInterfaces>;
3
+ static create(source: Uint8Array | HTMLVideoElement, width: number, height: number, frameRate: number, staticTimeRanges: TimeRange[]): VideoReaderInterfaces;
4
4
  isSought: boolean;
5
5
  isPlaying: boolean;
6
6
  bitmap: ImageBitmap | null;
@@ -15,10 +15,11 @@ export declare class VideoReader {
15
15
  private height;
16
16
  private bitmapCanvas;
17
17
  private bitmapCtx;
18
- constructor(source: Uint8Array | HTMLVideoElement, width: number, height: number, frameRate: number, staticTimeRanges: TimeRange[], isWorker?: boolean);
18
+ private currentFrame;
19
+ constructor(source: Uint8Array | HTMLVideoElement, width: number, height: number, frameRate: number, staticTimeRanges: TimeRange[]);
19
20
  prepare(targetFrame: number, playbackRate: number): Promise<void>;
21
+ getCurrentFrame(): number;
20
22
  getVideo(): HTMLVideoElement;
21
- generateBitmap(): Promise<ImageBitmap>;
22
23
  play(): Promise<void>;
23
24
  pause(): void;
24
25
  stop(): void;
@@ -1,5 +1,4 @@
1
- import type { WebFont } from '@tgfx/core/web-mask';
2
- import type { ctor, Point, Rect, Vector } from './types';
1
+ import type { ctor, Rect } from './types';
3
2
  export interface TimeRange {
4
3
  start: number;
5
4
  end: number;
@@ -21,26 +20,20 @@ export interface FontMetrics {
21
20
  xHeight: number;
22
21
  capHeight: number;
23
22
  }
23
+ export interface Stroke {
24
+ width: number;
25
+ cap: ctor;
26
+ join: ctor;
27
+ miterLimit: number;
28
+ }
24
29
  export interface ScalerContext {
25
30
  fontString: (fauxBold: boolean, fauxItalic: boolean) => string;
26
31
  getAdvance: (text: string) => number;
27
32
  getBounds: (text: string, fauxBold: boolean, fauxItalic: boolean) => Rect;
28
33
  getFontMetrics: () => FontMetrics;
29
- generateImage: (text: string, bounds: Rect) => TexImageSource | OffscreenCanvas;
34
+ readPixels: (text: string, bounds: Rect, fauxBold: boolean, stroke?: Stroke) => Uint8Array | null;
30
35
  }
31
36
  export interface ScalerContextConstructor {
32
37
  isEmoji: (text: string) => boolean;
33
38
  new (fontName: string, fontStyle: string, size: number, fauxBold: boolean, fauxItalic: boolean): ScalerContext;
34
39
  }
35
- export interface WebMask {
36
- fillPath: (path: Path2D, fillType: ctor) => void;
37
- fillText: (webFont: WebFont, texts: Vector<string>, positions: Vector<Point>, matrixWasmIns: any) => void;
38
- strokeText: (webFont: WebFont, stroke: {
39
- width: number;
40
- cap: ctor;
41
- join: ctor;
42
- miterLimit: number;
43
- }, texts: Vector<string>, positions: Vector<Point>, matrixWasmIns: any) => void;
44
- clear: () => void;
45
- }
46
- export type WebMaskConstructor = new (canvas: HTMLCanvasElement | OffscreenCanvas) => WebMask;
@@ -1,5 +1,5 @@
1
1
  import { PAGLayer } from './pag-layer';
2
- import type { Marker } from './types';
2
+ import { type Marker, VecArray } from './types';
3
3
  export declare class PAGComposition extends PAGLayer {
4
4
  /**
5
5
  * Make a empty PAGComposition with specified size.
@@ -91,10 +91,10 @@ export declare class PAGComposition extends PAGLayer {
91
91
  /**
92
92
  * Returns an array of layers that match the specified layer name.
93
93
  */
94
- getLayersByName(layerName: string): import("@tgfx/types").Vector<import("./pag-image-layer").PAGImageLayer | PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>;
94
+ getLayersByName(layerName: string): VecArray;
95
95
  /**
96
96
  * Returns an array of layers that lie under the specified point. The point is in pixels and from
97
97
  * this PAGComposition's local coordinates.
98
98
  */
99
- getLayersUnderPoint(localX: number, localY: number): import("@tgfx/types").Vector<import("./pag-image-layer").PAGImageLayer | PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>;
99
+ getLayersUnderPoint(localX: number, localY: number): VecArray;
100
100
  }
@@ -1,6 +1,6 @@
1
1
  import { PAGComposition } from './pag-composition';
2
2
  import type { PAGImage } from './pag-image';
3
- import { LayerType, PAGTimeStretchMode, TextDocument } from './types';
3
+ import { LayerType, PAGTimeStretchMode, TextDocument, VecArray } from './types';
4
4
  export declare class PAGFile extends PAGComposition {
5
5
  /**
6
6
  * Load pag file from file.
@@ -49,7 +49,7 @@ export declare class PAGFile extends PAGComposition {
49
49
  /**
50
50
  * Return an array of layers by specified editable index and layer type.
51
51
  */
52
- getLayersByEditableIndex(editableIndex: Number, layerType: LayerType): import("@tgfx/types").Vector<import("./pag-image-layer").PAGImageLayer | import("./pag-layer").PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>;
52
+ getLayersByEditableIndex(editableIndex: Number, layerType: LayerType): VecArray;
53
53
  /**
54
54
  * Returns the indices of the editable layers in this PAGFile.
55
55
  * If the editableIndex of a PAGLayer is not present in the returned indices, the PAGLayer should
@@ -71,8 +71,8 @@ export declare class PAGFile extends PAGComposition {
71
71
  */
72
72
  setDuration(duration: number): void;
73
73
  /**
74
- * Set the duration of this PAGFile. Passing a value less than or equal to 0 resets the duration
75
- * to its default value.
74
+ * Make a copy of the original file, any modification to current file has no effect on the result
75
+ * file.
76
76
  */
77
77
  copyOriginal(): PAGFile;
78
78
  }
@@ -2,7 +2,7 @@ import { PAGSurface } from './pag-surface';
2
2
  import { Matrix } from './core/matrix';
3
3
  import { PAGComposition } from './pag-composition';
4
4
  import type { PAGLayer } from './pag-layer';
5
- import type { PAGScaleMode, Rect } from './types';
5
+ import { PAGScaleMode, Rect, VecArray } from './types';
6
6
  import type { VideoReader } from './interfaces';
7
7
  export declare class PAGPlayer {
8
8
  static create(): PAGPlayer;
@@ -140,7 +140,7 @@ export declare class PAGPlayer {
140
140
  *
141
141
  * this PAGComposition's local coordinates.
142
142
  */
143
- getLayersUnderPoint(localX: number, localY: number): import("@tgfx/types").Vector<import("./pag-image-layer").PAGImageLayer | PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>;
143
+ getLayersUnderPoint(localX: number, localY: number): VecArray;
144
144
  /**
145
145
  * Evaluates the PAGLayer to see if it overlaps or intersects with the specified point. The point
146
146
  *
@@ -182,7 +182,7 @@ export declare class PAGView {
182
182
  * will be set to PAGScaleMode::None when this method is called.
183
183
  */
184
184
  setMatrix(matrix: Matrix): void;
185
- getLayersUnderPoint(localX: number, localY: number): import("@tgfx/types").Vector<import("./pag-image-layer").PAGImageLayer | import("./pag-layer").PAGLayer | import("./pag-solid-layer").PAGSolidLayer | import("./pag-text-layer").PAGTextLayer>;
185
+ getLayersUnderPoint(localX: number, localY: number): import("./types").VecArray;
186
186
  /**
187
187
  * Update size when changed canvas size.
188
188
  */
@@ -15,8 +15,8 @@ import { PAGImageLayer } from './pag-image-layer';
15
15
  import { PAGSolidLayer } from './pag-solid-layer';
16
16
  import { Matrix as ClassMatrix } from './core/matrix';
17
17
  import { RenderCanvas } from './core/render-canvas';
18
- import type { ScalerContextConstructor, VideoDecoderConstructor, WebMaskConstructor } from './interfaces';
19
- import type { ArrayBufferImage } from '@tgfx//wechat/array-buffer-image';
18
+ import type { ScalerContextConstructor, VideoDecoderConstructor } from './interfaces';
19
+ import type { ArrayBufferImage } from '@tgfx/wechat/array-buffer-image';
20
20
  import type { TGFXPathFillType, TGFXLineCap, TGFXLineJoin, EmscriptenGL, ctor, Point, Vector, Rect } from '@tgfx/types';
21
21
  export type { EmscriptenGL, ctor, Point, Vector, Rect };
22
22
  declare global {
@@ -81,7 +81,6 @@ export interface PAG extends EmscriptenModule {
81
81
  PAGTextLayer: typeof PAGTextLayer;
82
82
  PAGImageLayer: typeof PAGImageLayer;
83
83
  PAGSolidLayer: typeof PAGSolidLayer;
84
- WebMask: WebMaskConstructor;
85
84
  ScalerContext: ScalerContextConstructor;
86
85
  VideoReader: VideoDecoderConstructor;
87
86
  GlobalCanvas: typeof GlobalCanvas;
@@ -468,3 +467,13 @@ export declare class SoftwareDecoder {
468
467
  export declare class SoftwareDecoderFactory {
469
468
  createSoftwareDecoder(pag: PAG): SoftwareDecoder | null;
470
469
  }
470
+ export declare class VecArray extends Array {
471
+ private isDeleted;
472
+ private constructor();
473
+ static create(): VecArray;
474
+ get(index: number): any;
475
+ push_back(value: any): void;
476
+ size(): number;
477
+ delete(): void;
478
+ private ensureNotDeleted;
479
+ }
@@ -1,3 +1 @@
1
- export declare function wasmAwaitRewind(constructor: any): void;
2
- export declare function wasmAsyncMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor): void;
3
1
  export declare function destroyVerify(constructor: any): void;
@@ -4,4 +4,3 @@ export declare const MACOS: boolean;
4
4
  export declare const IPHONE: boolean;
5
5
  export declare const WECHAT: boolean;
6
6
  export declare const SAFARI_OR_IOS_WEBVIEW: boolean;
7
- export declare const WORKER: boolean;
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "lib": ["ES5", "ES6", "DOM", "DOM.Iterable"],
4
+ "target": "ES2020",
5
+ "allowJs": true,
6
+ "sourceMap": true,
7
+ "esModuleInterop": true,
8
+ "moduleResolution": "Node",
9
+ "experimentalDecorators": true,
10
+ "strict": true,
11
+ "outDir": "./lib",
12
+ "baseUrl": ".",
13
+ "paths": {
14
+ "@tgfx/*": ["../third_party/tgfx/web/src/*"],
15
+ },
16
+ "resolveJsonModule": true
17
+ },
18
+ "include": ["src/**/*.ts", "demo/**/*.ts"]
19
+ }