@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
@@ -0,0 +1,410 @@
1
+ /**
2
+ * DisplayList - Cached rendering commands
3
+ *
4
+ * This module provides 100% API compatibility with MuPDF's display list operations.
5
+ * Display lists cache drawing commands for efficient re-rendering.
6
+ */
7
+ import { Rect, Matrix } from './geometry.js';
8
+ /**
9
+ * Display list command types
10
+ */
11
+ var CommandType;
12
+ (function (CommandType) {
13
+ CommandType[CommandType["FillPath"] = 0] = "FillPath";
14
+ CommandType[CommandType["StrokePath"] = 1] = "StrokePath";
15
+ CommandType[CommandType["ClipPath"] = 2] = "ClipPath";
16
+ CommandType[CommandType["ClipStrokePath"] = 3] = "ClipStrokePath";
17
+ CommandType[CommandType["FillText"] = 4] = "FillText";
18
+ CommandType[CommandType["StrokeText"] = 5] = "StrokeText";
19
+ CommandType[CommandType["ClipText"] = 6] = "ClipText";
20
+ CommandType[CommandType["ClipStrokeText"] = 7] = "ClipStrokeText";
21
+ CommandType[CommandType["IgnoreText"] = 8] = "IgnoreText";
22
+ CommandType[CommandType["FillShade"] = 9] = "FillShade";
23
+ CommandType[CommandType["FillImage"] = 10] = "FillImage";
24
+ CommandType[CommandType["FillImageMask"] = 11] = "FillImageMask";
25
+ CommandType[CommandType["ClipImageMask"] = 12] = "ClipImageMask";
26
+ CommandType[CommandType["PopClip"] = 13] = "PopClip";
27
+ CommandType[CommandType["BeginMask"] = 14] = "BeginMask";
28
+ CommandType[CommandType["EndMask"] = 15] = "EndMask";
29
+ CommandType[CommandType["BeginGroup"] = 16] = "BeginGroup";
30
+ CommandType[CommandType["EndGroup"] = 17] = "EndGroup";
31
+ CommandType[CommandType["BeginTile"] = 18] = "BeginTile";
32
+ CommandType[CommandType["EndTile"] = 19] = "EndTile";
33
+ })(CommandType || (CommandType = {}));
34
+ /**
35
+ * A display list - a cached list of rendering commands
36
+ */
37
+ export class DisplayList {
38
+ _commands = [];
39
+ _bounds = Rect.EMPTY;
40
+ _refCount = 1;
41
+ constructor(bounds) {
42
+ if (bounds) {
43
+ this._bounds = Rect.from(bounds);
44
+ }
45
+ }
46
+ /**
47
+ * Create a new display list
48
+ */
49
+ static create(bounds) {
50
+ return new DisplayList(bounds);
51
+ }
52
+ // ============================================================================
53
+ // Reference Counting
54
+ // ============================================================================
55
+ keep() {
56
+ this._refCount++;
57
+ return this;
58
+ }
59
+ drop() {
60
+ if (this._refCount > 0) {
61
+ this._refCount--;
62
+ }
63
+ }
64
+ /**
65
+ * Clone this display list
66
+ */
67
+ clone() {
68
+ const cloned = new DisplayList(this._bounds);
69
+ cloned._commands = this._commands.map((cmd) => ({
70
+ type: cmd.type,
71
+ data: { ...cmd.data }
72
+ }));
73
+ return cloned;
74
+ }
75
+ // ============================================================================
76
+ // Bounds
77
+ // ============================================================================
78
+ /**
79
+ * Get the bounding box of all commands
80
+ */
81
+ getBounds(ctm) {
82
+ if (ctm) {
83
+ return this._bounds.transform(Matrix.from(ctm));
84
+ }
85
+ return this._bounds;
86
+ }
87
+ /**
88
+ * Update bounds to include a rect
89
+ */
90
+ updateBounds(rect) {
91
+ this._bounds = this._bounds.union(rect);
92
+ }
93
+ // ============================================================================
94
+ // Command Management
95
+ // ============================================================================
96
+ /**
97
+ * Add a command to the display list
98
+ */
99
+ addCommand(type, data) {
100
+ this._commands.push({ type, data });
101
+ // Update bounds if command has a rect
102
+ if ('rect' in data && data.rect) {
103
+ this.updateBounds(Rect.from(data.rect));
104
+ }
105
+ }
106
+ /**
107
+ * Count number of commands
108
+ */
109
+ countCommands() {
110
+ return this._commands.length;
111
+ }
112
+ /**
113
+ * Check if display list is empty
114
+ */
115
+ isEmpty() {
116
+ return this._commands.length === 0;
117
+ }
118
+ /**
119
+ * Clear all commands
120
+ */
121
+ clear() {
122
+ this._commands = [];
123
+ this._bounds = Rect.EMPTY;
124
+ }
125
+ // ============================================================================
126
+ // Validation
127
+ // ============================================================================
128
+ /**
129
+ * Check if display list is valid
130
+ */
131
+ isValid() {
132
+ return true; // Display lists are always valid in this implementation
133
+ }
134
+ // ============================================================================
135
+ // Recording (Device-like interface for recording)
136
+ // ============================================================================
137
+ /**
138
+ * Record a fill path command
139
+ */
140
+ recordFillPath(path, evenOdd, ctm, colorspace, color, alpha) {
141
+ this.addCommand(CommandType.FillPath, {
142
+ path,
143
+ evenOdd,
144
+ ctm: Matrix.from(ctm),
145
+ colorspace,
146
+ color: [...color],
147
+ alpha
148
+ });
149
+ }
150
+ /**
151
+ * Record a stroke path command
152
+ */
153
+ recordStrokePath(path, stroke, ctm, colorspace, color, alpha) {
154
+ this.addCommand(CommandType.StrokePath, {
155
+ path,
156
+ stroke,
157
+ ctm: Matrix.from(ctm),
158
+ colorspace,
159
+ color: [...color],
160
+ alpha
161
+ });
162
+ }
163
+ /**
164
+ * Record a clip path command
165
+ */
166
+ recordClipPath(path, evenOdd, ctm) {
167
+ this.addCommand(CommandType.ClipPath, {
168
+ path,
169
+ evenOdd,
170
+ ctm: Matrix.from(ctm)
171
+ });
172
+ }
173
+ /**
174
+ * Record a clip stroke path command
175
+ */
176
+ recordClipStrokePath(path, stroke, ctm) {
177
+ this.addCommand(CommandType.ClipStrokePath, {
178
+ path,
179
+ stroke,
180
+ ctm: Matrix.from(ctm)
181
+ });
182
+ }
183
+ /**
184
+ * Record a fill text command
185
+ */
186
+ recordFillText(text, ctm, colorspace, color, alpha) {
187
+ this.addCommand(CommandType.FillText, {
188
+ text,
189
+ ctm: Matrix.from(ctm),
190
+ colorspace,
191
+ color: [...color],
192
+ alpha
193
+ });
194
+ }
195
+ /**
196
+ * Record a stroke text command
197
+ */
198
+ recordStrokeText(text, stroke, ctm, colorspace, color, alpha) {
199
+ this.addCommand(CommandType.StrokeText, {
200
+ text,
201
+ stroke,
202
+ ctm: Matrix.from(ctm),
203
+ colorspace,
204
+ color: [...color],
205
+ alpha
206
+ });
207
+ }
208
+ /**
209
+ * Record a clip text command
210
+ */
211
+ recordClipText(text, ctm) {
212
+ this.addCommand(CommandType.ClipText, {
213
+ text,
214
+ ctm: Matrix.from(ctm)
215
+ });
216
+ }
217
+ /**
218
+ * Record a clip stroke text command
219
+ */
220
+ recordClipStrokeText(text, stroke, ctm) {
221
+ this.addCommand(CommandType.ClipStrokeText, {
222
+ text,
223
+ stroke,
224
+ ctm: Matrix.from(ctm)
225
+ });
226
+ }
227
+ /**
228
+ * Record an ignore text command
229
+ */
230
+ recordIgnoreText(text, ctm) {
231
+ this.addCommand(CommandType.IgnoreText, {
232
+ text,
233
+ ctm: Matrix.from(ctm)
234
+ });
235
+ }
236
+ /**
237
+ * Record a fill image command
238
+ */
239
+ recordFillImage(image, ctm, alpha) {
240
+ this.addCommand(CommandType.FillImage, {
241
+ image,
242
+ ctm: Matrix.from(ctm),
243
+ alpha
244
+ });
245
+ }
246
+ /**
247
+ * Record a fill image mask command
248
+ */
249
+ recordFillImageMask(image, ctm, colorspace, color, _alpha) {
250
+ this.addCommand(CommandType.FillImageMask, {
251
+ image,
252
+ ctm: Matrix.from(ctm),
253
+ colorspace,
254
+ color: [...color]
255
+ });
256
+ }
257
+ /**
258
+ * Record a clip image mask command
259
+ */
260
+ recordClipImageMask(image, ctm) {
261
+ this.addCommand(CommandType.ClipImageMask, {
262
+ image,
263
+ ctm: Matrix.from(ctm)
264
+ });
265
+ }
266
+ /**
267
+ * Record a pop clip command
268
+ */
269
+ recordPopClip() {
270
+ this.addCommand(CommandType.PopClip, {});
271
+ }
272
+ /**
273
+ * Record a begin mask command
274
+ */
275
+ recordBeginMask(area, luminosity, colorspace, color) {
276
+ this.addCommand(CommandType.BeginMask, {
277
+ area: Rect.from(area),
278
+ luminosity,
279
+ colorspace,
280
+ color: [...color]
281
+ });
282
+ }
283
+ /**
284
+ * Record an end mask command
285
+ */
286
+ recordEndMask() {
287
+ this.addCommand(CommandType.EndMask, {});
288
+ }
289
+ /**
290
+ * Record a begin group command
291
+ */
292
+ recordBeginGroup(area, colorspace, isolated, knockout, blendMode, alpha) {
293
+ this.addCommand(CommandType.BeginGroup, {
294
+ area: Rect.from(area),
295
+ colorspace,
296
+ isolated,
297
+ knockout,
298
+ blendMode,
299
+ alpha
300
+ });
301
+ }
302
+ /**
303
+ * Record an end group command
304
+ */
305
+ recordEndGroup() {
306
+ this.addCommand(CommandType.EndGroup, {});
307
+ }
308
+ /**
309
+ * Record a begin tile command
310
+ */
311
+ recordBeginTile(area, view, xStep, yStep, ctm) {
312
+ this.addCommand(CommandType.BeginTile, {
313
+ area: Rect.from(area),
314
+ view: Rect.from(view),
315
+ xStep,
316
+ yStep,
317
+ ctm: Matrix.from(ctm)
318
+ });
319
+ }
320
+ /**
321
+ * Record an end tile command
322
+ */
323
+ recordEndTile() {
324
+ this.addCommand(CommandType.EndTile, {});
325
+ }
326
+ // ============================================================================
327
+ // Playback
328
+ // ============================================================================
329
+ /**
330
+ * Run (replay) the display list to a device
331
+ */
332
+ run(device, ctm) {
333
+ const transform = ctm ? Matrix.from(ctm) : Matrix.IDENTITY;
334
+ for (const cmd of this._commands) {
335
+ const combinedCtm = cmd.data.ctm ? transform.concat(cmd.data.ctm) : transform;
336
+ switch (cmd.type) {
337
+ case CommandType.FillPath:
338
+ device.fillPath(cmd.data.path, cmd.data.evenOdd, combinedCtm, cmd.data.colorspace, cmd.data.color, cmd.data.alpha);
339
+ break;
340
+ case CommandType.StrokePath:
341
+ device.strokePath(cmd.data.path, cmd.data.stroke, combinedCtm, cmd.data.colorspace, cmd.data.color, cmd.data.alpha);
342
+ break;
343
+ case CommandType.ClipPath:
344
+ device.clipPath(cmd.data.path, cmd.data.evenOdd, combinedCtm);
345
+ break;
346
+ case CommandType.ClipStrokePath:
347
+ device.clipStrokePath(cmd.data.path, cmd.data.stroke, combinedCtm);
348
+ break;
349
+ case CommandType.FillText:
350
+ device.fillText(cmd.data.text, combinedCtm, cmd.data.colorspace, cmd.data.color, cmd.data.alpha);
351
+ break;
352
+ case CommandType.StrokeText:
353
+ device.strokeText(cmd.data.text, cmd.data.stroke, combinedCtm, cmd.data.colorspace, cmd.data.color, cmd.data.alpha);
354
+ break;
355
+ case CommandType.ClipText:
356
+ device.clipText(cmd.data.text, combinedCtm);
357
+ break;
358
+ case CommandType.ClipStrokeText:
359
+ device.clipStrokeText(cmd.data.text, cmd.data.stroke, combinedCtm);
360
+ break;
361
+ case CommandType.IgnoreText:
362
+ device.ignoreText(cmd.data.text, combinedCtm);
363
+ break;
364
+ case CommandType.FillImage:
365
+ device.fillImage(cmd.data.image, combinedCtm, cmd.data.alpha);
366
+ break;
367
+ case CommandType.FillImageMask:
368
+ device.fillImageMask(cmd.data.image, combinedCtm, cmd.data.colorspace, cmd.data.color, cmd.data.alpha);
369
+ break;
370
+ case CommandType.ClipImageMask:
371
+ device.clipImageMask(cmd.data.image, combinedCtm);
372
+ break;
373
+ case CommandType.PopClip:
374
+ device.popClip();
375
+ break;
376
+ case CommandType.BeginMask:
377
+ device.beginMask(cmd.data.area, cmd.data.luminosity, cmd.data.colorspace, cmd.data.color);
378
+ break;
379
+ case CommandType.EndMask:
380
+ device.endMask();
381
+ break;
382
+ case CommandType.BeginGroup:
383
+ device.beginGroup(cmd.data.area, cmd.data.colorspace, cmd.data.isolated, cmd.data.knockout, cmd.data.blendMode, cmd.data.alpha);
384
+ break;
385
+ case CommandType.EndGroup:
386
+ device.endGroup();
387
+ break;
388
+ case CommandType.BeginTile:
389
+ device.beginTile(cmd.data.area, cmd.data.view, cmd.data.xStep, cmd.data.yStep, combinedCtm);
390
+ break;
391
+ case CommandType.EndTile:
392
+ device.endTile();
393
+ break;
394
+ }
395
+ }
396
+ }
397
+ // ============================================================================
398
+ // Iteration
399
+ // ============================================================================
400
+ /**
401
+ * Get all commands
402
+ */
403
+ getCommands() {
404
+ return this._commands.map((cmd) => ({
405
+ type: cmd.type,
406
+ data: { ...cmd.data }
407
+ }));
408
+ }
409
+ }
410
+ //# sourceMappingURL=display-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-list.js","sourceRoot":"","sources":["../src/display-list.ts"],"names":[],"mappings":"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"}