@lexmata/micropdf 0.4.0

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 (170) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +985 -0
  3. package/binding.gyp +73 -0
  4. package/dist/annot.d.ts +458 -0
  5. package/dist/annot.d.ts.map +1 -0
  6. package/dist/annot.js +697 -0
  7. package/dist/annot.js.map +1 -0
  8. package/dist/archive.d.ts +128 -0
  9. package/dist/archive.d.ts.map +1 -0
  10. package/dist/archive.js +268 -0
  11. package/dist/archive.js.map +1 -0
  12. package/dist/buffer.d.ts +572 -0
  13. package/dist/buffer.d.ts.map +1 -0
  14. package/dist/buffer.js +971 -0
  15. package/dist/buffer.js.map +1 -0
  16. package/dist/colorspace.d.ts +287 -0
  17. package/dist/colorspace.d.ts.map +1 -0
  18. package/dist/colorspace.js +542 -0
  19. package/dist/colorspace.js.map +1 -0
  20. package/dist/context.d.ts +184 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +320 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/cookie.d.ts +164 -0
  25. package/dist/cookie.d.ts.map +1 -0
  26. package/dist/cookie.js +306 -0
  27. package/dist/cookie.js.map +1 -0
  28. package/dist/device.d.ts +169 -0
  29. package/dist/device.d.ts.map +1 -0
  30. package/dist/device.js +350 -0
  31. package/dist/device.js.map +1 -0
  32. package/dist/display-list.d.ts +202 -0
  33. package/dist/display-list.d.ts.map +1 -0
  34. package/dist/display-list.js +410 -0
  35. package/dist/display-list.js.map +1 -0
  36. package/dist/document.d.ts +637 -0
  37. package/dist/document.d.ts.map +1 -0
  38. package/dist/document.js +902 -0
  39. package/dist/document.js.map +1 -0
  40. package/dist/easy.d.ts +423 -0
  41. package/dist/easy.d.ts.map +1 -0
  42. package/dist/easy.js +644 -0
  43. package/dist/easy.js.map +1 -0
  44. package/dist/enhanced.d.ts +226 -0
  45. package/dist/enhanced.d.ts.map +1 -0
  46. package/dist/enhanced.js +368 -0
  47. package/dist/enhanced.js.map +1 -0
  48. package/dist/filter.d.ts +51 -0
  49. package/dist/filter.d.ts.map +1 -0
  50. package/dist/filter.js +381 -0
  51. package/dist/filter.js.map +1 -0
  52. package/dist/font.d.ts +222 -0
  53. package/dist/font.d.ts.map +1 -0
  54. package/dist/font.js +381 -0
  55. package/dist/font.js.map +1 -0
  56. package/dist/form.d.ts +214 -0
  57. package/dist/form.d.ts.map +1 -0
  58. package/dist/form.js +497 -0
  59. package/dist/form.js.map +1 -0
  60. package/dist/geometry.d.ts +469 -0
  61. package/dist/geometry.d.ts.map +1 -0
  62. package/dist/geometry.js +780 -0
  63. package/dist/geometry.js.map +1 -0
  64. package/dist/image.d.ts +172 -0
  65. package/dist/image.d.ts.map +1 -0
  66. package/dist/image.js +348 -0
  67. package/dist/image.js.map +1 -0
  68. package/dist/index.d.ts +171 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +339 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/link.d.ts +168 -0
  73. package/dist/link.d.ts.map +1 -0
  74. package/dist/link.js +343 -0
  75. package/dist/link.js.map +1 -0
  76. package/dist/micropdf.d.ts +40 -0
  77. package/dist/micropdf.d.ts.map +1 -0
  78. package/dist/micropdf.js +45 -0
  79. package/dist/micropdf.js.map +1 -0
  80. package/dist/nanopdf.d.ts +40 -0
  81. package/dist/nanopdf.d.ts.map +1 -0
  82. package/dist/nanopdf.js +45 -0
  83. package/dist/nanopdf.js.map +1 -0
  84. package/dist/native.d.ts +242 -0
  85. package/dist/native.d.ts.map +1 -0
  86. package/dist/native.js +509 -0
  87. package/dist/native.js.map +1 -0
  88. package/dist/output.d.ts +166 -0
  89. package/dist/output.d.ts.map +1 -0
  90. package/dist/output.js +365 -0
  91. package/dist/output.js.map +1 -0
  92. package/dist/path.d.ts +420 -0
  93. package/dist/path.d.ts.map +1 -0
  94. package/dist/path.js +687 -0
  95. package/dist/path.js.map +1 -0
  96. package/dist/pdf/object.d.ts +489 -0
  97. package/dist/pdf/object.d.ts.map +1 -0
  98. package/dist/pdf/object.js +1045 -0
  99. package/dist/pdf/object.js.map +1 -0
  100. package/dist/pixmap.d.ts +315 -0
  101. package/dist/pixmap.d.ts.map +1 -0
  102. package/dist/pixmap.js +590 -0
  103. package/dist/pixmap.js.map +1 -0
  104. package/dist/profiler.d.ts +159 -0
  105. package/dist/profiler.d.ts.map +1 -0
  106. package/dist/profiler.js +380 -0
  107. package/dist/profiler.js.map +1 -0
  108. package/dist/render-options.d.ts +227 -0
  109. package/dist/render-options.d.ts.map +1 -0
  110. package/dist/render-options.js +130 -0
  111. package/dist/render-options.js.map +1 -0
  112. package/dist/resource-tracking.d.ts +332 -0
  113. package/dist/resource-tracking.d.ts.map +1 -0
  114. package/dist/resource-tracking.js +653 -0
  115. package/dist/resource-tracking.js.map +1 -0
  116. package/dist/simple.d.ts +276 -0
  117. package/dist/simple.d.ts.map +1 -0
  118. package/dist/simple.js +343 -0
  119. package/dist/simple.js.map +1 -0
  120. package/dist/stext.d.ts +290 -0
  121. package/dist/stext.d.ts.map +1 -0
  122. package/dist/stext.js +312 -0
  123. package/dist/stext.js.map +1 -0
  124. package/dist/stream.d.ts +174 -0
  125. package/dist/stream.d.ts.map +1 -0
  126. package/dist/stream.js +476 -0
  127. package/dist/stream.js.map +1 -0
  128. package/dist/text.d.ts +337 -0
  129. package/dist/text.d.ts.map +1 -0
  130. package/dist/text.js +454 -0
  131. package/dist/text.js.map +1 -0
  132. package/dist/typed-arrays.d.ts +127 -0
  133. package/dist/typed-arrays.d.ts.map +1 -0
  134. package/dist/typed-arrays.js +410 -0
  135. package/dist/typed-arrays.js.map +1 -0
  136. package/dist/types.d.ts +358 -0
  137. package/dist/types.d.ts.map +1 -0
  138. package/dist/types.js +216 -0
  139. package/dist/types.js.map +1 -0
  140. package/native/annot.cc +557 -0
  141. package/native/buffer.cc +204 -0
  142. package/native/colorspace.cc +166 -0
  143. package/native/context.cc +84 -0
  144. package/native/cookie.cc +179 -0
  145. package/native/device.cc +179 -0
  146. package/native/display_list.cc +179 -0
  147. package/native/document.cc +268 -0
  148. package/native/enhanced.cc +70 -0
  149. package/native/font.cc +282 -0
  150. package/native/form.cc +523 -0
  151. package/native/geometry.cc +255 -0
  152. package/native/image.cc +216 -0
  153. package/native/include/micropdf/enhanced.h +38 -0
  154. package/native/include/micropdf/types.h +36 -0
  155. package/native/include/micropdf.h +106 -0
  156. package/native/include/mupdf-ffi.h +39 -0
  157. package/native/include/mupdf.h +11 -0
  158. package/native/include/mupdf_minimal.h +381 -0
  159. package/native/lib/linux-x64/libmicropdf.a +0 -0
  160. package/native/link.cc +234 -0
  161. package/native/micropdf.cc +71 -0
  162. package/native/output.cc +229 -0
  163. package/native/page.cc +572 -0
  164. package/native/path.cc +259 -0
  165. package/native/pixmap.cc +240 -0
  166. package/native/stext.cc +610 -0
  167. package/native/stream.cc +239 -0
  168. package/package.json +120 -0
  169. package/scripts/build-from-rust.js +97 -0
  170. package/scripts/install.js +184 -0
package/dist/cookie.js ADDED
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Cookie - Operation progress and cancellation tracking
3
+ *
4
+ * This module provides 100% API compatibility with MuPDF's cookie operations.
5
+ * Cookies track progress, errors, and allow cancellation of long-running operations.
6
+ */
7
+ /**
8
+ * A cookie for tracking operation progress and cancellation
9
+ */
10
+ export class Cookie {
11
+ _abort = false;
12
+ _progress = 0;
13
+ _progressMax = 0;
14
+ _errors = 0;
15
+ _incomplete = false;
16
+ _refCount = 1;
17
+ constructor() { }
18
+ /**
19
+ * Create a new cookie
20
+ */
21
+ static create() {
22
+ return new Cookie();
23
+ }
24
+ // ============================================================================
25
+ // Reference Counting
26
+ // ============================================================================
27
+ keep() {
28
+ this._refCount++;
29
+ return this;
30
+ }
31
+ drop() {
32
+ if (this._refCount > 0) {
33
+ this._refCount--;
34
+ }
35
+ }
36
+ /**
37
+ * Clone this cookie
38
+ */
39
+ clone() {
40
+ const cloned = new Cookie();
41
+ cloned._abort = this._abort;
42
+ cloned._progress = this._progress;
43
+ cloned._progressMax = this._progressMax;
44
+ cloned._errors = this._errors;
45
+ cloned._incomplete = this._incomplete;
46
+ return cloned;
47
+ }
48
+ // ============================================================================
49
+ // Abort Control
50
+ // ============================================================================
51
+ /**
52
+ * Check if operation should abort
53
+ */
54
+ shouldAbort() {
55
+ return this._abort;
56
+ }
57
+ /**
58
+ * Request abortion of the operation
59
+ */
60
+ abort() {
61
+ this._abort = true;
62
+ }
63
+ /**
64
+ * Reset abort flag
65
+ */
66
+ resetAbort() {
67
+ this._abort = false;
68
+ }
69
+ /**
70
+ * Check if aborted
71
+ */
72
+ get isAborted() {
73
+ return this._abort;
74
+ }
75
+ // ============================================================================
76
+ // Progress Tracking
77
+ // ============================================================================
78
+ /**
79
+ * Get current progress
80
+ */
81
+ getProgress() {
82
+ return this._progress;
83
+ }
84
+ /**
85
+ * Set current progress
86
+ */
87
+ setProgress(progress) {
88
+ this._progress = Math.max(0, progress);
89
+ }
90
+ /**
91
+ * Increment progress
92
+ */
93
+ incProgress(delta = 1) {
94
+ this._progress = Math.max(0, this._progress + delta);
95
+ }
96
+ /**
97
+ * Get progress maximum
98
+ */
99
+ getProgressMax() {
100
+ return this._progressMax;
101
+ }
102
+ /**
103
+ * Set progress maximum
104
+ */
105
+ setProgressMax(max) {
106
+ this._progressMax = Math.max(0, max);
107
+ }
108
+ /**
109
+ * Get progress as percentage (0-100)
110
+ */
111
+ getProgressPercent() {
112
+ if (this._progressMax <= 0) {
113
+ return 0;
114
+ }
115
+ return Math.min(100, (this._progress / this._progressMax) * 100);
116
+ }
117
+ /**
118
+ * Get progress as float (0.0-1.0)
119
+ */
120
+ getProgressFloat() {
121
+ if (this._progressMax <= 0) {
122
+ return 0;
123
+ }
124
+ return Math.min(1.0, this._progress / this._progressMax);
125
+ }
126
+ /**
127
+ * Get remaining progress
128
+ */
129
+ getProgressRemaining() {
130
+ return Math.max(0, this._progressMax - this._progress);
131
+ }
132
+ /**
133
+ * Check if progress is complete
134
+ */
135
+ isComplete() {
136
+ return this._progressMax > 0 && this._progress >= this._progressMax;
137
+ }
138
+ // ============================================================================
139
+ // Error Tracking
140
+ // ============================================================================
141
+ /**
142
+ * Get error count
143
+ */
144
+ getErrors() {
145
+ return this._errors;
146
+ }
147
+ /**
148
+ * Set error count
149
+ */
150
+ setErrors(count) {
151
+ this._errors = Math.max(0, count);
152
+ }
153
+ /**
154
+ * Increment error count
155
+ */
156
+ incErrors(delta = 1) {
157
+ this._errors = Math.max(0, this._errors + delta);
158
+ }
159
+ /**
160
+ * Check if there are errors
161
+ */
162
+ hasErrors() {
163
+ return this._errors > 0;
164
+ }
165
+ // ============================================================================
166
+ // Incomplete Flag
167
+ // ============================================================================
168
+ /**
169
+ * Check if operation is incomplete
170
+ */
171
+ isIncomplete() {
172
+ return this._incomplete;
173
+ }
174
+ /**
175
+ * Set incomplete flag
176
+ */
177
+ setIncomplete(incomplete) {
178
+ this._incomplete = incomplete;
179
+ }
180
+ // ============================================================================
181
+ // Reset
182
+ // ============================================================================
183
+ /**
184
+ * Reset cookie to initial state
185
+ */
186
+ reset() {
187
+ this._abort = false;
188
+ this._progress = 0;
189
+ this._progressMax = 0;
190
+ this._errors = 0;
191
+ this._incomplete = false;
192
+ }
193
+ // ============================================================================
194
+ // Validation
195
+ // ============================================================================
196
+ /**
197
+ * Check if cookie is valid
198
+ */
199
+ isValid() {
200
+ return true; // Cookies are always valid in this implementation
201
+ }
202
+ // ============================================================================
203
+ // Status Summary
204
+ // ============================================================================
205
+ /**
206
+ * Get status summary
207
+ */
208
+ getStatus() {
209
+ return {
210
+ aborted: this._abort,
211
+ progress: this._progress,
212
+ progressMax: this._progressMax,
213
+ progressPercent: this.getProgressPercent(),
214
+ progressFloat: this.getProgressFloat(),
215
+ errors: this._errors,
216
+ incomplete: this._incomplete,
217
+ complete: this.isComplete()
218
+ };
219
+ }
220
+ /**
221
+ * Get status string
222
+ */
223
+ toString() {
224
+ const status = this.getStatus();
225
+ return `Cookie(progress=${status.progress}/${status.progressMax} [${status.progressPercent.toFixed(1)}%], errors=${status.errors}, aborted=${status.aborted}, incomplete=${status.incomplete})`;
226
+ }
227
+ }
228
+ /**
229
+ * Cookie-aware operation wrapper
230
+ */
231
+ export class CookieOperation {
232
+ _cookie;
233
+ _operation;
234
+ _onProgress;
235
+ _onError;
236
+ _running = false;
237
+ constructor(operation, options) {
238
+ this._cookie = Cookie.create();
239
+ this._operation = operation;
240
+ if (options?.onProgress) {
241
+ this._onProgress = options.onProgress;
242
+ }
243
+ if (options?.onError) {
244
+ this._onError = options.onError;
245
+ }
246
+ }
247
+ /**
248
+ * Get the cookie
249
+ */
250
+ get cookie() {
251
+ return this._cookie;
252
+ }
253
+ /**
254
+ * Check if operation is running
255
+ */
256
+ get isRunning() {
257
+ return this._running;
258
+ }
259
+ /**
260
+ * Run the operation
261
+ */
262
+ async run() {
263
+ if (this._running) {
264
+ throw new Error('Operation already running');
265
+ }
266
+ this._running = true;
267
+ this._cookie.reset();
268
+ try {
269
+ // Start progress monitoring
270
+ const progressInterval = setInterval(() => {
271
+ if (this._onProgress) {
272
+ this._onProgress(this._cookie.getProgress(), this._cookie.getProgressMax());
273
+ }
274
+ }, 100);
275
+ try {
276
+ const result = await this._operation(this._cookie);
277
+ clearInterval(progressInterval);
278
+ return result;
279
+ }
280
+ catch (error) {
281
+ clearInterval(progressInterval);
282
+ this._cookie.incErrors();
283
+ if (this._onError && error instanceof Error) {
284
+ this._onError(error);
285
+ }
286
+ throw error;
287
+ }
288
+ }
289
+ finally {
290
+ this._running = false;
291
+ }
292
+ }
293
+ /**
294
+ * Abort the operation
295
+ */
296
+ abort() {
297
+ this._cookie.abort();
298
+ }
299
+ /**
300
+ * Get progress as percentage
301
+ */
302
+ getProgress() {
303
+ return this._cookie.getProgressPercent();
304
+ }
305
+ }
306
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../src/cookie.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Device - PDF rendering device abstraction
3
+ *
4
+ * This module provides 100% API compatibility with MuPDF's device operations.
5
+ * Devices receive drawing commands and render them to various outputs.
6
+ */
7
+ import { Colorspace } from './colorspace.js';
8
+ import { Rect, Matrix, type RectLike, type MatrixLike } from './geometry.js';
9
+ import { Path, StrokeState } from './path.js';
10
+ import { Pixmap } from './pixmap.js';
11
+ /**
12
+ * Device types
13
+ */
14
+ export declare enum DeviceType {
15
+ Unknown = 0,
16
+ Draw = 1,
17
+ BBox = 2,
18
+ Trace = 3,
19
+ List = 4,
20
+ Custom = 5
21
+ }
22
+ /**
23
+ * Device hints for optimization
24
+ */
25
+ export declare enum DeviceHint {
26
+ NoCache = 1,
27
+ NoPureColor = 2
28
+ }
29
+ /**
30
+ * Blend modes for transparency
31
+ */
32
+ export declare enum BlendMode {
33
+ Normal = 0,
34
+ Multiply = 1,
35
+ Screen = 2,
36
+ Overlay = 3,
37
+ Darken = 4,
38
+ Lighten = 5,
39
+ ColorDodge = 6,
40
+ ColorBurn = 7,
41
+ HardLight = 8,
42
+ SoftLight = 9,
43
+ Difference = 10,
44
+ Exclusion = 11
45
+ }
46
+ /**
47
+ * Abstract base class for rendering devices
48
+ */
49
+ export declare abstract class Device {
50
+ private _refCount;
51
+ private _closed;
52
+ private _type;
53
+ private _hints;
54
+ constructor(type: DeviceType);
55
+ keep(): this;
56
+ drop(): void;
57
+ /**
58
+ * Close the device (finalize rendering)
59
+ */
60
+ close(): void;
61
+ protected onClose(): void;
62
+ get isClosed(): boolean;
63
+ get type(): DeviceType;
64
+ isValid(): boolean;
65
+ enableHints(hints: DeviceHint): void;
66
+ disableHints(hints: DeviceHint): void;
67
+ hasHint(hint: DeviceHint): boolean;
68
+ beginTile(area: RectLike, view: RectLike, xStep: number, yStep: number, ctm: MatrixLike): void;
69
+ protected onBeginTile(_area: Rect, _view: Rect, _xStep: number, _yStep: number, _ctm: Matrix): void;
70
+ endTile(): void;
71
+ protected onEndTile(): void;
72
+ fillPath(path: Path, evenOdd: boolean, ctm: MatrixLike, colorspace: Colorspace, color: number[], alpha: number): void;
73
+ protected abstract onFillPath(path: Path, evenOdd: boolean, ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
74
+ strokePath(path: Path, stroke: StrokeState, ctm: MatrixLike, colorspace: Colorspace, color: number[], alpha: number): void;
75
+ protected abstract onStrokePath(path: Path, stroke: StrokeState, ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
76
+ clipPath(path: Path, evenOdd: boolean, ctm: MatrixLike): void;
77
+ protected onClipPath(_path: Path, _evenOdd: boolean, _ctm: Matrix): void;
78
+ clipStrokePath(path: Path, stroke: StrokeState, ctm: MatrixLike): void;
79
+ protected onClipStrokePath(_path: Path, _stroke: StrokeState, _ctm: Matrix): void;
80
+ fillText(text: string, ctm: MatrixLike, colorspace: Colorspace, color: number[], alpha: number): void;
81
+ protected onFillText(_text: string, _ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
82
+ strokeText(text: string, stroke: StrokeState, ctm: MatrixLike, colorspace: Colorspace, color: number[], alpha: number): void;
83
+ protected onStrokeText(_text: string, _stroke: StrokeState, _ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
84
+ clipText(text: string, ctm: MatrixLike): void;
85
+ protected onClipText(_text: string, _ctm: Matrix): void;
86
+ clipStrokeText(text: string, stroke: StrokeState, ctm: MatrixLike): void;
87
+ protected onClipStrokeText(_text: string, _stroke: StrokeState, _ctm: Matrix): void;
88
+ ignoreText(text: string, ctm: MatrixLike): void;
89
+ protected onIgnoreText(_text: string, _ctm: Matrix): void;
90
+ fillImage(image: Pixmap, ctm: MatrixLike, alpha: number): void;
91
+ protected onFillImage(_image: Pixmap, _ctm: Matrix, _alpha: number): void;
92
+ fillImageMask(image: Pixmap, ctm: MatrixLike, colorspace: Colorspace, color: number[], alpha: number): void;
93
+ protected onFillImageMask(_image: Pixmap, _ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
94
+ clipImageMask(image: Pixmap, ctm: MatrixLike): void;
95
+ protected onClipImageMask(_image: Pixmap, _ctm: Matrix): void;
96
+ popClip(): void;
97
+ protected onPopClip(): void;
98
+ beginMask(area: RectLike, luminosity: boolean, colorspace: Colorspace, color: number[]): void;
99
+ protected onBeginMask(_area: Rect, _luminosity: boolean, _colorspace: Colorspace, _color: number[]): void;
100
+ endMask(): void;
101
+ protected onEndMask(): void;
102
+ beginGroup(area: RectLike, colorspace: Colorspace, isolated: boolean, knockout: boolean, blendMode: BlendMode, alpha: number): void;
103
+ protected onBeginGroup(_area: Rect, _colorspace: Colorspace, _isolated: boolean, _knockout: boolean, _blendMode: BlendMode, _alpha: number): void;
104
+ endGroup(): void;
105
+ protected onEndGroup(): void;
106
+ }
107
+ /**
108
+ * Draw device - renders to a pixmap
109
+ */
110
+ export declare class DrawDevice extends Device {
111
+ private _pixmap;
112
+ constructor(pixmap: Pixmap);
113
+ static create(pixmap: Pixmap): DrawDevice;
114
+ get pixmap(): Pixmap;
115
+ protected onFillPath(_path: Path, _evenOdd: boolean, _ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
116
+ protected onStrokePath(_path: Path, _stroke: StrokeState, _ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
117
+ }
118
+ /**
119
+ * BBox device - calculates bounding boxes
120
+ */
121
+ export declare class BBoxDevice extends Device {
122
+ private _bbox;
123
+ constructor();
124
+ static create(): BBoxDevice;
125
+ get bbox(): Rect;
126
+ protected onFillPath(path: Path, _evenOdd: boolean, ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
127
+ protected onStrokePath(path: Path, _stroke: StrokeState, ctm: Matrix, _colorspace: Colorspace, _color: number[], _alpha: number): void;
128
+ }
129
+ /**
130
+ * Trace device - logs drawing operations
131
+ */
132
+ export declare class TraceDevice extends Device {
133
+ private _log;
134
+ constructor();
135
+ static create(): TraceDevice;
136
+ get log(): string[];
137
+ protected onFillPath(_path: Path, evenOdd: boolean, _ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
138
+ protected onStrokePath(_path: Path, stroke: StrokeState, _ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
139
+ protected onFillText(text: string, _ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
140
+ protected onFillImage(image: Pixmap, _ctm: Matrix, alpha: number): void;
141
+ protected onBeginGroup(area: Rect, _colorspace: Colorspace, isolated: boolean, knockout: boolean, blendMode: BlendMode, alpha: number): void;
142
+ protected onEndGroup(): void;
143
+ }
144
+ /**
145
+ * Recorded device command
146
+ */
147
+ interface DeviceCommand {
148
+ type: string;
149
+ path?: Path;
150
+ stroke?: StrokeState;
151
+ evenOdd?: boolean;
152
+ ctm?: Matrix;
153
+ colorspace?: Colorspace;
154
+ color?: number[];
155
+ alpha?: number;
156
+ }
157
+ /**
158
+ * List device - records display list
159
+ */
160
+ export declare class ListDevice extends Device {
161
+ private _commands;
162
+ constructor();
163
+ static create(): ListDevice;
164
+ get commands(): DeviceCommand[];
165
+ protected onFillPath(path: Path, evenOdd: boolean, ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
166
+ protected onStrokePath(path: Path, stroke: StrokeState, ctm: Matrix, colorspace: Colorspace, color: number[], alpha: number): void;
167
+ }
168
+ export {};
169
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}