@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.
- package/LICENSE +191 -0
- package/README.md +985 -0
- package/binding.gyp +73 -0
- package/dist/annot.d.ts +458 -0
- package/dist/annot.d.ts.map +1 -0
- package/dist/annot.js +697 -0
- package/dist/annot.js.map +1 -0
- package/dist/archive.d.ts +128 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +268 -0
- package/dist/archive.js.map +1 -0
- package/dist/buffer.d.ts +572 -0
- package/dist/buffer.d.ts.map +1 -0
- package/dist/buffer.js +971 -0
- package/dist/buffer.js.map +1 -0
- package/dist/colorspace.d.ts +287 -0
- package/dist/colorspace.d.ts.map +1 -0
- package/dist/colorspace.js +542 -0
- package/dist/colorspace.js.map +1 -0
- package/dist/context.d.ts +184 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +320 -0
- package/dist/context.js.map +1 -0
- package/dist/cookie.d.ts +164 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +306 -0
- package/dist/cookie.js.map +1 -0
- package/dist/device.d.ts +169 -0
- package/dist/device.d.ts.map +1 -0
- package/dist/device.js +350 -0
- package/dist/device.js.map +1 -0
- package/dist/display-list.d.ts +202 -0
- package/dist/display-list.d.ts.map +1 -0
- package/dist/display-list.js +410 -0
- package/dist/display-list.js.map +1 -0
- package/dist/document.d.ts +637 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +902 -0
- package/dist/document.js.map +1 -0
- package/dist/easy.d.ts +423 -0
- package/dist/easy.d.ts.map +1 -0
- package/dist/easy.js +644 -0
- package/dist/easy.js.map +1 -0
- package/dist/enhanced.d.ts +226 -0
- package/dist/enhanced.d.ts.map +1 -0
- package/dist/enhanced.js +368 -0
- package/dist/enhanced.js.map +1 -0
- package/dist/filter.d.ts +51 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +381 -0
- package/dist/filter.js.map +1 -0
- package/dist/font.d.ts +222 -0
- package/dist/font.d.ts.map +1 -0
- package/dist/font.js +381 -0
- package/dist/font.js.map +1 -0
- package/dist/form.d.ts +214 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +497 -0
- package/dist/form.js.map +1 -0
- package/dist/geometry.d.ts +469 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +780 -0
- package/dist/geometry.js.map +1 -0
- package/dist/image.d.ts +172 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +348 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +171 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +168 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +343 -0
- package/dist/link.js.map +1 -0
- package/dist/micropdf.d.ts +40 -0
- package/dist/micropdf.d.ts.map +1 -0
- package/dist/micropdf.js +45 -0
- package/dist/micropdf.js.map +1 -0
- package/dist/nanopdf.d.ts +40 -0
- package/dist/nanopdf.d.ts.map +1 -0
- package/dist/nanopdf.js +45 -0
- package/dist/nanopdf.js.map +1 -0
- package/dist/native.d.ts +242 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +509 -0
- package/dist/native.js.map +1 -0
- package/dist/output.d.ts +166 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +365 -0
- package/dist/output.js.map +1 -0
- package/dist/path.d.ts +420 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +687 -0
- package/dist/path.js.map +1 -0
- package/dist/pdf/object.d.ts +489 -0
- package/dist/pdf/object.d.ts.map +1 -0
- package/dist/pdf/object.js +1045 -0
- package/dist/pdf/object.js.map +1 -0
- package/dist/pixmap.d.ts +315 -0
- package/dist/pixmap.d.ts.map +1 -0
- package/dist/pixmap.js +590 -0
- package/dist/pixmap.js.map +1 -0
- package/dist/profiler.d.ts +159 -0
- package/dist/profiler.d.ts.map +1 -0
- package/dist/profiler.js +380 -0
- package/dist/profiler.js.map +1 -0
- package/dist/render-options.d.ts +227 -0
- package/dist/render-options.d.ts.map +1 -0
- package/dist/render-options.js +130 -0
- package/dist/render-options.js.map +1 -0
- package/dist/resource-tracking.d.ts +332 -0
- package/dist/resource-tracking.d.ts.map +1 -0
- package/dist/resource-tracking.js +653 -0
- package/dist/resource-tracking.js.map +1 -0
- package/dist/simple.d.ts +276 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +343 -0
- package/dist/simple.js.map +1 -0
- package/dist/stext.d.ts +290 -0
- package/dist/stext.d.ts.map +1 -0
- package/dist/stext.js +312 -0
- package/dist/stext.js.map +1 -0
- package/dist/stream.d.ts +174 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +476 -0
- package/dist/stream.js.map +1 -0
- package/dist/text.d.ts +337 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +454 -0
- package/dist/text.js.map +1 -0
- package/dist/typed-arrays.d.ts +127 -0
- package/dist/typed-arrays.d.ts.map +1 -0
- package/dist/typed-arrays.js +410 -0
- package/dist/typed-arrays.js.map +1 -0
- package/dist/types.d.ts +358 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +216 -0
- package/dist/types.js.map +1 -0
- package/native/annot.cc +557 -0
- package/native/buffer.cc +204 -0
- package/native/colorspace.cc +166 -0
- package/native/context.cc +84 -0
- package/native/cookie.cc +179 -0
- package/native/device.cc +179 -0
- package/native/display_list.cc +179 -0
- package/native/document.cc +268 -0
- package/native/enhanced.cc +70 -0
- package/native/font.cc +282 -0
- package/native/form.cc +523 -0
- package/native/geometry.cc +255 -0
- package/native/image.cc +216 -0
- package/native/include/micropdf/enhanced.h +38 -0
- package/native/include/micropdf/types.h +36 -0
- package/native/include/micropdf.h +106 -0
- package/native/include/mupdf-ffi.h +39 -0
- package/native/include/mupdf.h +11 -0
- package/native/include/mupdf_minimal.h +381 -0
- package/native/lib/linux-x64/libmicropdf.a +0 -0
- package/native/link.cc +234 -0
- package/native/micropdf.cc +71 -0
- package/native/output.cc +229 -0
- package/native/page.cc +572 -0
- package/native/path.cc +259 -0
- package/native/pixmap.cc +240 -0
- package/native/stext.cc +610 -0
- package/native/stream.cc +239 -0
- package/package.json +120 -0
- package/scripts/build-from-rust.js +97 -0
- package/scripts/install.js +184 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypedArray utilities for high-performance numeric operations.
|
|
3
|
+
*
|
|
4
|
+
* This module provides optimized operations using TypedArrays instead of
|
|
5
|
+
* regular JavaScript arrays for numeric data. TypedArrays offer:
|
|
6
|
+
* - Better memory efficiency (fixed-size elements)
|
|
7
|
+
* - Faster iteration (no type checking per element)
|
|
8
|
+
* - Better cache locality
|
|
9
|
+
* - Direct memory access for FFI operations
|
|
10
|
+
*
|
|
11
|
+
* @module typed-arrays
|
|
12
|
+
*/
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Color Arrays (Float32Array for 0-1 normalized colors)
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Create a color array from RGB values (0-255 or 0-1).
|
|
18
|
+
* Returns Float32Array normalized to 0-1 range.
|
|
19
|
+
*/
|
|
20
|
+
export function colorFromRGB(r, g, b, normalize = true) {
|
|
21
|
+
const color = new Float32Array(3);
|
|
22
|
+
if (normalize && (r > 1 || g > 1 || b > 1)) {
|
|
23
|
+
color[0] = r / 255;
|
|
24
|
+
color[1] = g / 255;
|
|
25
|
+
color[2] = b / 255;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
color[0] = r;
|
|
29
|
+
color[1] = g;
|
|
30
|
+
color[2] = b;
|
|
31
|
+
}
|
|
32
|
+
return color;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a color array from RGBA values.
|
|
36
|
+
*/
|
|
37
|
+
export function colorFromRGBA(r, g, b, a, normalize = true) {
|
|
38
|
+
const color = new Float32Array(4);
|
|
39
|
+
if (normalize && (r > 1 || g > 1 || b > 1 || a > 1)) {
|
|
40
|
+
color[0] = r / 255;
|
|
41
|
+
color[1] = g / 255;
|
|
42
|
+
color[2] = b / 255;
|
|
43
|
+
color[3] = a / 255;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
color[0] = r;
|
|
47
|
+
color[1] = g;
|
|
48
|
+
color[2] = b;
|
|
49
|
+
color[3] = a;
|
|
50
|
+
}
|
|
51
|
+
return color;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a grayscale color array.
|
|
55
|
+
*/
|
|
56
|
+
export function colorFromGray(gray, normalize = true) {
|
|
57
|
+
const color = new Float32Array(1);
|
|
58
|
+
color[0] = normalize && gray > 1 ? gray / 255 : gray;
|
|
59
|
+
return color;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a CMYK color array.
|
|
63
|
+
*/
|
|
64
|
+
export function colorFromCMYK(c, m, y, k, normalize = true) {
|
|
65
|
+
const color = new Float32Array(4);
|
|
66
|
+
if (normalize && (c > 1 || m > 1 || y > 1 || k > 1)) {
|
|
67
|
+
color[0] = c / 255;
|
|
68
|
+
color[1] = m / 255;
|
|
69
|
+
color[2] = y / 255;
|
|
70
|
+
color[3] = k / 255;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
color[0] = c;
|
|
74
|
+
color[1] = m;
|
|
75
|
+
color[2] = y;
|
|
76
|
+
color[3] = k;
|
|
77
|
+
}
|
|
78
|
+
return color;
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Point/Coordinate Arrays (Float32Array for x,y pairs)
|
|
82
|
+
// ============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Create a point array from coordinates.
|
|
85
|
+
* Stores as [x0, y0, x1, y1, x2, y2, ...]
|
|
86
|
+
*/
|
|
87
|
+
export function pointsFromCoords(...coords) {
|
|
88
|
+
return new Float32Array(coords);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a point array from Point-like objects.
|
|
92
|
+
*/
|
|
93
|
+
export function pointsFromObjects(points) {
|
|
94
|
+
const arr = new Float32Array(points.length * 2);
|
|
95
|
+
for (let i = 0; i < points.length; i++) {
|
|
96
|
+
const p = points[i];
|
|
97
|
+
arr[i * 2] = p.x;
|
|
98
|
+
arr[i * 2 + 1] = p.y;
|
|
99
|
+
}
|
|
100
|
+
return arr;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Transform points in-place by a matrix.
|
|
104
|
+
* Points are stored as [x0, y0, x1, y1, ...]
|
|
105
|
+
* Matrix is [a, b, c, d, e, f]
|
|
106
|
+
*/
|
|
107
|
+
export function transformPointsInPlace(points, a, b, c, d, e, f) {
|
|
108
|
+
const n = points.length;
|
|
109
|
+
for (let i = 0; i < n; i += 2) {
|
|
110
|
+
const x = points[i];
|
|
111
|
+
const y = points[i + 1];
|
|
112
|
+
points[i] = x * a + y * c + e;
|
|
113
|
+
points[i + 1] = x * b + y * d + f;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Transform points, returning a new array.
|
|
118
|
+
*/
|
|
119
|
+
export function transformPoints(points, a, b, c, d, e, f) {
|
|
120
|
+
const result = new Float32Array(points.length);
|
|
121
|
+
const n = points.length;
|
|
122
|
+
for (let i = 0; i < n; i += 2) {
|
|
123
|
+
const x = points[i];
|
|
124
|
+
const y = points[i + 1];
|
|
125
|
+
result[i] = x * a + y * c + e;
|
|
126
|
+
result[i + 1] = x * b + y * d + f;
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// Rectangle Arrays (Float32Array for x0, y0, x1, y1 quads)
|
|
132
|
+
// ============================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Create a rectangle array from coordinates.
|
|
135
|
+
* Stores as [x0, y0, x1, y1, ...]
|
|
136
|
+
*/
|
|
137
|
+
export function rectsFromCoords(...coords) {
|
|
138
|
+
return new Float32Array(coords);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Create a rectangle array from Rect-like objects.
|
|
142
|
+
*/
|
|
143
|
+
export function rectsFromObjects(rects) {
|
|
144
|
+
const arr = new Float32Array(rects.length * 4);
|
|
145
|
+
for (let i = 0; i < rects.length; i++) {
|
|
146
|
+
const r = rects[i];
|
|
147
|
+
arr[i * 4] = r.x0;
|
|
148
|
+
arr[i * 4 + 1] = r.y0;
|
|
149
|
+
arr[i * 4 + 2] = r.x1;
|
|
150
|
+
arr[i * 4 + 3] = r.y1;
|
|
151
|
+
}
|
|
152
|
+
return arr;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Transform rectangles in-place by a matrix.
|
|
156
|
+
* For axis-aligned transforms (b=0, c=0), preserves rectangle form.
|
|
157
|
+
* For other transforms, computes bounding box of transformed corners.
|
|
158
|
+
*/
|
|
159
|
+
export function transformRectsInPlace(rects, a, b, c, d, e, f) {
|
|
160
|
+
const n = rects.length;
|
|
161
|
+
// Fast path: translation only
|
|
162
|
+
if (a === 1 && b === 0 && c === 0 && d === 1) {
|
|
163
|
+
for (let i = 0; i < n; i += 4) {
|
|
164
|
+
rects[i] = rects[i] + e;
|
|
165
|
+
rects[i + 1] = rects[i + 1] + f;
|
|
166
|
+
rects[i + 2] = rects[i + 2] + e;
|
|
167
|
+
rects[i + 3] = rects[i + 3] + f;
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Fast path: axis-aligned (scale + translate)
|
|
172
|
+
if (b === 0 && c === 0) {
|
|
173
|
+
for (let i = 0; i < n; i += 4) {
|
|
174
|
+
let x0 = rects[i] * a + e;
|
|
175
|
+
let y0 = rects[i + 1] * d + f;
|
|
176
|
+
let x1 = rects[i + 2] * a + e;
|
|
177
|
+
let y1 = rects[i + 3] * d + f;
|
|
178
|
+
// Handle negative scale
|
|
179
|
+
if (x0 > x1)
|
|
180
|
+
[x0, x1] = [x1, x0];
|
|
181
|
+
if (y0 > y1)
|
|
182
|
+
[y0, y1] = [y1, y0];
|
|
183
|
+
rects[i] = x0;
|
|
184
|
+
rects[i + 1] = y0;
|
|
185
|
+
rects[i + 2] = x1;
|
|
186
|
+
rects[i + 3] = y1;
|
|
187
|
+
}
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// General case: transform corners and compute bounding box
|
|
191
|
+
for (let i = 0; i < n; i += 4) {
|
|
192
|
+
const x0 = rects[i], y0 = rects[i + 1];
|
|
193
|
+
const x1 = rects[i + 2], y1 = rects[i + 3];
|
|
194
|
+
// Transform all four corners
|
|
195
|
+
const p1x = x0 * a + y0 * c + e, p1y = x0 * b + y0 * d + f;
|
|
196
|
+
const p2x = x1 * a + y0 * c + e, p2y = x1 * b + y0 * d + f;
|
|
197
|
+
const p3x = x0 * a + y1 * c + e, p3y = x0 * b + y1 * d + f;
|
|
198
|
+
const p4x = x1 * a + y1 * c + e, p4y = x1 * b + y1 * d + f;
|
|
199
|
+
// Compute bounding box
|
|
200
|
+
rects[i] = Math.min(p1x, p2x, p3x, p4x);
|
|
201
|
+
rects[i + 1] = Math.min(p1y, p2y, p3y, p4y);
|
|
202
|
+
rects[i + 2] = Math.max(p1x, p2x, p3x, p4x);
|
|
203
|
+
rects[i + 3] = Math.max(p1y, p2y, p3y, p4y);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// ============================================================================
|
|
207
|
+
// Matrix Operations (Float32Array for [a, b, c, d, e, f])
|
|
208
|
+
// ============================================================================
|
|
209
|
+
/**
|
|
210
|
+
* Create an identity matrix.
|
|
211
|
+
*/
|
|
212
|
+
export function matrixIdentity() {
|
|
213
|
+
return new Float32Array([1, 0, 0, 1, 0, 0]);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Create a translation matrix.
|
|
217
|
+
*/
|
|
218
|
+
export function matrixTranslate(tx, ty) {
|
|
219
|
+
return new Float32Array([1, 0, 0, 1, tx, ty]);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create a scale matrix.
|
|
223
|
+
*/
|
|
224
|
+
export function matrixScale(sx, sy = sx) {
|
|
225
|
+
return new Float32Array([sx, 0, 0, sy, 0, 0]);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Create a rotation matrix (degrees).
|
|
229
|
+
*/
|
|
230
|
+
export function matrixRotate(degrees) {
|
|
231
|
+
// Fast paths for common angles
|
|
232
|
+
switch (degrees) {
|
|
233
|
+
case 0:
|
|
234
|
+
return new Float32Array([1, 0, 0, 1, 0, 0]);
|
|
235
|
+
case 90:
|
|
236
|
+
return new Float32Array([0, 1, -1, 0, 0, 0]);
|
|
237
|
+
case 180:
|
|
238
|
+
return new Float32Array([-1, 0, 0, -1, 0, 0]);
|
|
239
|
+
case 270:
|
|
240
|
+
case -90:
|
|
241
|
+
return new Float32Array([0, -1, 1, 0, 0, 0]);
|
|
242
|
+
}
|
|
243
|
+
const rad = (degrees * Math.PI) / 180;
|
|
244
|
+
const cos = Math.cos(rad);
|
|
245
|
+
const sin = Math.sin(rad);
|
|
246
|
+
return new Float32Array([cos, sin, -sin, cos, 0, 0]);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Concatenate two matrices in-place (m1 = m1 * m2).
|
|
250
|
+
*/
|
|
251
|
+
export function matrixConcatInPlace(m1, m2) {
|
|
252
|
+
const a = m1[0] * m2[0] + m1[1] * m2[2];
|
|
253
|
+
const b = m1[0] * m2[1] + m1[1] * m2[3];
|
|
254
|
+
const c = m1[2] * m2[0] + m1[3] * m2[2];
|
|
255
|
+
const d = m1[2] * m2[1] + m1[3] * m2[3];
|
|
256
|
+
const e = m1[4] * m2[0] + m1[5] * m2[2] + m2[4];
|
|
257
|
+
const f = m1[4] * m2[1] + m1[5] * m2[3] + m2[5];
|
|
258
|
+
m1[0] = a;
|
|
259
|
+
m1[1] = b;
|
|
260
|
+
m1[2] = c;
|
|
261
|
+
m1[3] = d;
|
|
262
|
+
m1[4] = e;
|
|
263
|
+
m1[5] = f;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Concatenate two matrices, returning new array.
|
|
267
|
+
*/
|
|
268
|
+
export function matrixConcat(m1, m2) {
|
|
269
|
+
return new Float32Array([
|
|
270
|
+
m1[0] * m2[0] + m1[1] * m2[2],
|
|
271
|
+
m1[0] * m2[1] + m1[1] * m2[3],
|
|
272
|
+
m1[2] * m2[0] + m1[3] * m2[2],
|
|
273
|
+
m1[2] * m2[1] + m1[3] * m2[3],
|
|
274
|
+
m1[4] * m2[0] + m1[5] * m2[2] + m2[4],
|
|
275
|
+
m1[4] * m2[1] + m1[5] * m2[3] + m2[5]
|
|
276
|
+
]);
|
|
277
|
+
}
|
|
278
|
+
// ============================================================================
|
|
279
|
+
// Batch Distance Calculations
|
|
280
|
+
// ============================================================================
|
|
281
|
+
/**
|
|
282
|
+
* Calculate distances from one point to multiple points.
|
|
283
|
+
* Returns Float32Array of distances.
|
|
284
|
+
*/
|
|
285
|
+
export function pointDistances(fromX, fromY, points) {
|
|
286
|
+
const n = points.length / 2;
|
|
287
|
+
const result = new Float32Array(n);
|
|
288
|
+
for (let i = 0; i < n; i++) {
|
|
289
|
+
const dx = points[i * 2] - fromX;
|
|
290
|
+
const dy = points[i * 2 + 1] - fromY;
|
|
291
|
+
result[i] = Math.sqrt(dx * dx + dy * dy);
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Calculate squared distances (faster, no sqrt).
|
|
297
|
+
*/
|
|
298
|
+
export function pointDistancesSquared(fromX, fromY, points) {
|
|
299
|
+
const n = points.length / 2;
|
|
300
|
+
const result = new Float32Array(n);
|
|
301
|
+
for (let i = 0; i < n; i++) {
|
|
302
|
+
const dx = points[i * 2] - fromX;
|
|
303
|
+
const dy = points[i * 2 + 1] - fromY;
|
|
304
|
+
result[i] = dx * dx + dy * dy;
|
|
305
|
+
}
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
// ============================================================================
|
|
309
|
+
// Containment Tests
|
|
310
|
+
// ============================================================================
|
|
311
|
+
/**
|
|
312
|
+
* Test which points are inside a rectangle.
|
|
313
|
+
* Returns Uint8Array (0 = outside, 1 = inside).
|
|
314
|
+
*/
|
|
315
|
+
export function rectContainsPoints(x0, y0, x1, y1, points) {
|
|
316
|
+
const n = points.length / 2;
|
|
317
|
+
const result = new Uint8Array(n);
|
|
318
|
+
for (let i = 0; i < n; i++) {
|
|
319
|
+
const px = points[i * 2];
|
|
320
|
+
const py = points[i * 2 + 1];
|
|
321
|
+
result[i] = px >= x0 && px < x1 && py >= y0 && py < y1 ? 1 : 0;
|
|
322
|
+
}
|
|
323
|
+
return result;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Count points inside a rectangle (no allocation).
|
|
327
|
+
*/
|
|
328
|
+
export function countPointsInRect(x0, y0, x1, y1, points) {
|
|
329
|
+
let count = 0;
|
|
330
|
+
const n = points.length;
|
|
331
|
+
for (let i = 0; i < n; i += 2) {
|
|
332
|
+
const px = points[i];
|
|
333
|
+
const py = points[i + 1];
|
|
334
|
+
if (px >= x0 && px < x1 && py >= y0 && py < y1) {
|
|
335
|
+
count++;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return count;
|
|
339
|
+
}
|
|
340
|
+
// ============================================================================
|
|
341
|
+
// Pixel Operations
|
|
342
|
+
// ============================================================================
|
|
343
|
+
/**
|
|
344
|
+
* Convert pixel data from one format to another.
|
|
345
|
+
* Supported: RGB to RGBA, RGBA to RGB, Gray to RGB, etc.
|
|
346
|
+
*/
|
|
347
|
+
export function convertPixelFormat(src, srcComponents, dstComponents, defaultAlpha = 255) {
|
|
348
|
+
const srcPixels = src.length / srcComponents;
|
|
349
|
+
const dst = new Uint8Array(srcPixels * dstComponents);
|
|
350
|
+
if (srcComponents === 3 && dstComponents === 4) {
|
|
351
|
+
// RGB to RGBA
|
|
352
|
+
for (let i = 0, j = 0; i < src.length; i += 3, j += 4) {
|
|
353
|
+
dst[j] = src[i];
|
|
354
|
+
dst[j + 1] = src[i + 1];
|
|
355
|
+
dst[j + 2] = src[i + 2];
|
|
356
|
+
dst[j + 3] = defaultAlpha;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
else if (srcComponents === 4 && dstComponents === 3) {
|
|
360
|
+
// RGBA to RGB
|
|
361
|
+
for (let i = 0, j = 0; i < src.length; i += 4, j += 3) {
|
|
362
|
+
dst[j] = src[i];
|
|
363
|
+
dst[j + 1] = src[i + 1];
|
|
364
|
+
dst[j + 2] = src[i + 2];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
else if (srcComponents === 1 && dstComponents === 3) {
|
|
368
|
+
// Gray to RGB
|
|
369
|
+
for (let i = 0, j = 0; i < src.length; i++, j += 3) {
|
|
370
|
+
dst[j] = dst[j + 1] = dst[j + 2] = src[i];
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
else if (srcComponents === 1 && dstComponents === 4) {
|
|
374
|
+
// Gray to RGBA
|
|
375
|
+
for (let i = 0, j = 0; i < src.length; i++, j += 4) {
|
|
376
|
+
dst[j] = dst[j + 1] = dst[j + 2] = src[i];
|
|
377
|
+
dst[j + 3] = defaultAlpha;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
throw new Error(`Unsupported conversion: ${srcComponents} -> ${dstComponents}`);
|
|
382
|
+
}
|
|
383
|
+
return dst;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Premultiply alpha in RGBA pixel data (in-place).
|
|
387
|
+
*/
|
|
388
|
+
export function premultiplyAlpha(pixels) {
|
|
389
|
+
for (let i = 0; i < pixels.length; i += 4) {
|
|
390
|
+
const a = pixels[i + 3] / 255;
|
|
391
|
+
pixels[i] = Math.round(pixels[i] * a);
|
|
392
|
+
pixels[i + 1] = Math.round(pixels[i + 1] * a);
|
|
393
|
+
pixels[i + 2] = Math.round(pixels[i + 2] * a);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Unpremultiply alpha in RGBA pixel data (in-place).
|
|
398
|
+
*/
|
|
399
|
+
export function unpremultiplyAlpha(pixels) {
|
|
400
|
+
for (let i = 0; i < pixels.length; i += 4) {
|
|
401
|
+
const a = pixels[i + 3];
|
|
402
|
+
if (a > 0 && a < 255) {
|
|
403
|
+
const scale = 255 / a;
|
|
404
|
+
pixels[i] = Math.min(255, Math.round(pixels[i] * scale));
|
|
405
|
+
pixels[i + 1] = Math.min(255, Math.round(pixels[i + 1] * scale));
|
|
406
|
+
pixels[i + 2] = Math.min(255, Math.round(pixels[i + 2] * scale));
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=typed-arrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-arrays.js","sourceRoot":"","sources":["../src/typed-arrays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,SAAS,GAAG,IAAI;IAC5E,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,SAAS,GAAG,IAAI;IAEhB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IAC1D,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,SAAS,GAAG,IAAI;IAEhB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,uDAAuD;AACvD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAG,MAAgB;IAClD,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkC;IAClE,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAoB,EACpB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS;IAET,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAoB,EACpB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS;IAET,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,2DAA2D;AAC3D,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAG,MAAgB;IACjD,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA2D;IAE3D,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACpB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAmB,EACnB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS;IAET,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;YACjC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;YACjC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,wBAAwB;YACxB,IAAI,EAAE,GAAG,EAAE;gBAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,GAAG,EAAE;gBAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,2DAA2D;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,EAClB,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACrB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,EACtB,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAErB,6BAA6B;QAC7B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAC7B,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAC7B,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAC7B,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAC7B,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,uBAAuB;QACvB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,0DAA0D;AAC1D,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,EAAU;IACpD,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,KAAa,EAAE;IACrD,OAAO,IAAI,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,+BAA+B;IAC/B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,EAAE;YACL,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,GAAG;YACN,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,GAAG,CAAC;QACT,KAAK,CAAC,EAAE;YACN,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAgB,EAAE,EAAgB;IACpE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IACrD,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;IACrD,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAgB,EAAE,EAAgB;IAC7D,OAAO,IAAI,YAAY,CAAC;QACtB,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;QACjC,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;QACjC,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;QACjC,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;QACjC,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;QAC1C,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa,EAAE,MAAoB;IAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,KAAa,EACb,MAAoB;IAEpB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,MAAoB;IAEpB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAE,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,MAAoB;IAEpB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACtB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC/C,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAe,EACf,aAAqB,EACrB,aAAqB,EACrB,YAAY,GAAG,GAAG;IAElB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;IAEtD,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QAC/C,cAAc;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACtD,cAAc;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACtD,cAAc;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAC7C,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACtD,eAAe;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YAC3C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,OAAO,aAAa,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,GAAG,CAAC;QAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC"}
|