@mlightcad/mtext-renderer 0.10.0 → 0.10.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 (42) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +523 -523
  3. package/dist/index.js +25481 -0
  4. package/dist/index.umd.cjs +14 -0
  5. package/dist/mtext-renderer-worker.js +30383 -0
  6. package/lib/cache/fontCacheManager.d.ts +71 -0
  7. package/lib/cache/index.d.ts +1 -0
  8. package/lib/cache/schema.d.ts +27 -0
  9. package/lib/common/eventManager.d.ts +26 -0
  10. package/lib/common/index.d.ts +2 -0
  11. package/lib/common/utils.d.ts +11 -0
  12. package/lib/font/baseFont.d.ts +81 -0
  13. package/lib/font/baseTextShape.d.ts +17 -0
  14. package/lib/font/charGeometryCache.d.ts +43 -0
  15. package/lib/font/defaultFontLoader.d.ts +50 -0
  16. package/lib/font/font.d.ts +25 -0
  17. package/lib/font/fontFactory.d.ts +31 -0
  18. package/lib/font/fontLoader.d.ts +58 -0
  19. package/lib/font/fontManager.d.ts +192 -0
  20. package/lib/font/index.d.ts +7 -0
  21. package/lib/font/meshFont.d.ts +138 -0
  22. package/lib/font/meshFontParser.d.ts +10 -0
  23. package/lib/font/meshTextShape.d.ts +33 -0
  24. package/lib/font/normalComputationToggle.d.ts +57 -0
  25. package/lib/font/shxFont.d.ts +62 -0
  26. package/lib/font/shxTextShape.d.ts +29 -0
  27. package/lib/font/threeFont.d.ts +50 -0
  28. package/lib/index.d.ts +5 -0
  29. package/lib/renderer/charBoxUtils.d.ts +4 -0
  30. package/lib/renderer/defaultStyleManager.d.ts +18 -0
  31. package/lib/renderer/index.d.ts +3 -0
  32. package/lib/renderer/mtext.d.ts +134 -0
  33. package/lib/renderer/mtextProcessor.d.ts +249 -0
  34. package/lib/renderer/styleManager.d.ts +20 -0
  35. package/lib/renderer/types.d.ts +199 -0
  36. package/lib/worker/baseRenderer.d.ts +92 -0
  37. package/lib/worker/index.d.ts +5 -0
  38. package/lib/worker/mainThreadRenderer.d.ts +49 -0
  39. package/lib/worker/mtextWorker.d.ts +1 -0
  40. package/lib/worker/unifiedRenderer.d.ts +69 -0
  41. package/lib/worker/webWorkerRenderer.d.ts +190 -0
  42. package/package.json +2 -2
@@ -0,0 +1,190 @@
1
+ import { StyleManager } from '../renderer/styleManager';
2
+ import { CharBox, ColorSettings, MTextData, TextStyle } from '../renderer/types';
3
+ import { MTextBaseRenderer, MTextObject } from './baseRenderer';
4
+ /**
5
+ * Configuration options for WebWorkerRenderer
6
+ */
7
+ export interface WebWorkerRendererConfig {
8
+ /**
9
+ * Number of worker instances to create in the pool
10
+ * @default Math.max(1, Math.min(4, navigator.hardwareConcurrency || 2))
11
+ */
12
+ poolSize?: number;
13
+ /**
14
+ * URL path to the worker script
15
+ * @default './assets/mtext-renderer-worker.js'
16
+ */
17
+ workerUrl?: string | URL;
18
+ /**
19
+ * Timeout duration in milliseconds for worker requests
20
+ * @default 120000
21
+ */
22
+ timeOut?: number;
23
+ }
24
+ interface SerializedMText {
25
+ type: string;
26
+ position: {
27
+ x: number;
28
+ y: number;
29
+ z: number;
30
+ };
31
+ rotation: {
32
+ x: number;
33
+ y: number;
34
+ z: number;
35
+ w: number;
36
+ };
37
+ scale: {
38
+ x: number;
39
+ y: number;
40
+ z: number;
41
+ };
42
+ box: {
43
+ min: {
44
+ x: number;
45
+ y: number;
46
+ z: number;
47
+ };
48
+ max: {
49
+ x: number;
50
+ y: number;
51
+ z: number;
52
+ };
53
+ };
54
+ children: SerializedChild[];
55
+ }
56
+ interface SerializedCharBox {
57
+ type: string;
58
+ char: string;
59
+ box: {
60
+ min: {
61
+ x: number;
62
+ y: number;
63
+ z: number;
64
+ };
65
+ max: {
66
+ x: number;
67
+ y: number;
68
+ z: number;
69
+ };
70
+ };
71
+ children: SerializedCharBox[];
72
+ }
73
+ interface SerializedChild {
74
+ type: 'mesh' | 'line';
75
+ position: {
76
+ x: number;
77
+ y: number;
78
+ z: number;
79
+ };
80
+ rotation: {
81
+ x: number;
82
+ y: number;
83
+ z: number;
84
+ w: number;
85
+ };
86
+ scale: {
87
+ x: number;
88
+ y: number;
89
+ z: number;
90
+ };
91
+ geometry: {
92
+ attributes: {
93
+ [key: string]: {
94
+ arrayBuffer: ArrayBuffer;
95
+ byteOffset: number;
96
+ length: number;
97
+ itemSize: number;
98
+ normalized: boolean;
99
+ };
100
+ };
101
+ index: {
102
+ arrayBuffer: ArrayBuffer;
103
+ byteOffset: number;
104
+ length: number;
105
+ componentType?: 'uint16' | 'uint32';
106
+ } | null;
107
+ };
108
+ material: {
109
+ type: string;
110
+ color: number;
111
+ transparent: boolean;
112
+ opacity: number;
113
+ side?: number;
114
+ linewidth?: number;
115
+ };
116
+ charBoxType?: CharBox['type'];
117
+ lineLayouts?: Array<{
118
+ y: number;
119
+ height: number;
120
+ breakIndex?: number;
121
+ }>;
122
+ charBoxes?: SerializedCharBox[];
123
+ }
124
+ /**
125
+ * Manages communication with the MText web worker
126
+ */
127
+ export declare class WebWorkerRenderer implements MTextBaseRenderer {
128
+ private workers;
129
+ private inFlightPerWorker;
130
+ private pendingRequests;
131
+ private requestId;
132
+ private poolSize;
133
+ private timeOut;
134
+ private readyPromise;
135
+ private isInitialized;
136
+ private defaultStyleManager;
137
+ constructor(config?: WebWorkerRendererConfig);
138
+ /**
139
+ * Used to manage materials used by texts
140
+ */
141
+ get styleManager(): StyleManager;
142
+ set styleManager(value: StyleManager);
143
+ private ensureInitialized;
144
+ /**
145
+ * Handles messages coming from any worker.
146
+ */
147
+ private handleWorkerMessage;
148
+ /**
149
+ * Attaches message and error handlers to a worker.
150
+ */
151
+ private attachWorkerHandlers;
152
+ private pickLeastLoadedWorker;
153
+ private sendMessageToAllWorkers;
154
+ private sendMessageToOneWorker;
155
+ private ensureTasksFinished;
156
+ /**
157
+ * Set URL to load fonts
158
+ * @param value - URL to load fonts
159
+ */
160
+ setFontUrl(value: string): Promise<void>;
161
+ /**
162
+ * Render MText in one worker and return serialized data asynchronously.
163
+ */
164
+ asyncRenderMText(mtextContent: MTextData, textStyle: TextStyle, colorSettings?: ColorSettings): Promise<MTextObject>;
165
+ /**
166
+ * Render MText synchronously.
167
+ * Notes: It isn't supported yet.
168
+ */
169
+ syncRenderMText(_mtextContent: MTextData, _textStyle: TextStyle, _colorSettings?: ColorSettings): MTextObject;
170
+ loadFonts(fonts: string[]): Promise<{
171
+ loaded: string[];
172
+ }>;
173
+ getAvailableFonts(): Promise<{
174
+ fonts: Array<{
175
+ name: string[];
176
+ }>;
177
+ }>;
178
+ /**
179
+ * Reconstruct MText object from JSON serialized data
180
+ */
181
+ reconstructMText(serializedData: SerializedMText, textStyle: TextStyle): MTextObject;
182
+ private deserializeCharBoxes;
183
+ private collectLayout;
184
+ /**
185
+ * Terminate the worker
186
+ */
187
+ terminate(): void;
188
+ destroy(): void;
189
+ }
190
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlightcad/mtext-renderer",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "AutoCAD MText renderer based on Three.js",
5
5
  "license": "MIT",
6
6
  "author": "MLight Lee <mlight.lee@outlook.com>",
@@ -33,7 +33,7 @@
33
33
  "3d-text"
34
34
  ],
35
35
  "dependencies": {
36
- "@mlightcad/mtext-parser": "^1.3.2",
36
+ "@mlightcad/mtext-parser": "^1.3.3",
37
37
  "@mlightcad/shx-parser": "^1.3.2",
38
38
  "iconv-lite": "^0.7.0",
39
39
  "idb": "^8.0.3",