@flighthq/bitmap 0.3.0-edge.1458.0c01b63
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/dist/bitmap.d.ts +17 -0
- package/dist/bitmap.d.ts.map +1 -0
- package/dist/bitmap.js +87 -0
- package/dist/bitmap.js.map +1 -0
- package/dist/bitmapAffine.d.ts +27 -0
- package/dist/bitmapAffine.d.ts.map +1 -0
- package/dist/bitmapAffine.js +159 -0
- package/dist/bitmapAffine.js.map +1 -0
- package/dist/bitmapAlpha.d.ts +27 -0
- package/dist/bitmapAlpha.d.ts.map +1 -0
- package/dist/bitmapAlpha.js +83 -0
- package/dist/bitmapAlpha.js.map +1 -0
- package/dist/bitmapBevel.d.ts +24 -0
- package/dist/bitmapBevel.d.ts.map +1 -0
- package/dist/bitmapBevel.js +102 -0
- package/dist/bitmapBevel.js.map +1 -0
- package/dist/bitmapBlur.d.ts +57 -0
- package/dist/bitmapBlur.d.ts.map +1 -0
- package/dist/bitmapBlur.js +263 -0
- package/dist/bitmapBlur.js.map +1 -0
- package/dist/bitmapChannel.d.ts +24 -0
- package/dist/bitmapChannel.d.ts.map +1 -0
- package/dist/bitmapChannel.js +127 -0
- package/dist/bitmapChannel.js.map +1 -0
- package/dist/bitmapColorMatrix.d.ts +57 -0
- package/dist/bitmapColorMatrix.d.ts.map +1 -0
- package/dist/bitmapColorMatrix.js +127 -0
- package/dist/bitmapColorMatrix.js.map +1 -0
- package/dist/bitmapCompare.d.ts +18 -0
- package/dist/bitmapCompare.d.ts.map +1 -0
- package/dist/bitmapCompare.js +64 -0
- package/dist/bitmapCompare.js.map +1 -0
- package/dist/bitmapComposite.d.ts +54 -0
- package/dist/bitmapComposite.d.ts.map +1 -0
- package/dist/bitmapComposite.js +262 -0
- package/dist/bitmapComposite.js.map +1 -0
- package/dist/bitmapConvolution.d.ts +17 -0
- package/dist/bitmapConvolution.d.ts.map +1 -0
- package/dist/bitmapConvolution.js +103 -0
- package/dist/bitmapConvolution.js.map +1 -0
- package/dist/bitmapCopy.d.ts +23 -0
- package/dist/bitmapCopy.d.ts.map +1 -0
- package/dist/bitmapCopy.js +78 -0
- package/dist/bitmapCopy.js.map +1 -0
- package/dist/bitmapCoverage.d.ts +11 -0
- package/dist/bitmapCoverage.d.ts.map +1 -0
- package/dist/bitmapCoverage.js +29 -0
- package/dist/bitmapCoverage.js.map +1 -0
- package/dist/bitmapCrop.d.ts +33 -0
- package/dist/bitmapCrop.d.ts.map +1 -0
- package/dist/bitmapCrop.js +175 -0
- package/dist/bitmapCrop.js.map +1 -0
- package/dist/bitmapDisplacement.d.ts +22 -0
- package/dist/bitmapDisplacement.d.ts.map +1 -0
- package/dist/bitmapDisplacement.js +111 -0
- package/dist/bitmapDisplacement.js.map +1 -0
- package/dist/bitmapDissolve.d.ts +21 -0
- package/dist/bitmapDissolve.d.ts.map +1 -0
- package/dist/bitmapDissolve.js +97 -0
- package/dist/bitmapDissolve.js.map +1 -0
- package/dist/bitmapDraw.d.ts +8 -0
- package/dist/bitmapDraw.d.ts.map +1 -0
- package/dist/bitmapDraw.js +14 -0
- package/dist/bitmapDraw.js.map +1 -0
- package/dist/bitmapEncode.d.ts +3 -0
- package/dist/bitmapEncode.d.ts.map +1 -0
- package/dist/bitmapEncode.js +18 -0
- package/dist/bitmapEncode.js.map +1 -0
- package/dist/bitmapFill.d.ts +12 -0
- package/dist/bitmapFill.d.ts.map +1 -0
- package/dist/bitmapFill.js +85 -0
- package/dist/bitmapFill.js.map +1 -0
- package/dist/bitmapFingerprint.d.ts +26 -0
- package/dist/bitmapFingerprint.d.ts.map +1 -0
- package/dist/bitmapFingerprint.js +99 -0
- package/dist/bitmapFingerprint.js.map +1 -0
- package/dist/bitmapFlip.d.ts +16 -0
- package/dist/bitmapFlip.d.ts.map +1 -0
- package/dist/bitmapFlip.js +98 -0
- package/dist/bitmapFlip.js.map +1 -0
- package/dist/bitmapFormat.d.ts +26 -0
- package/dist/bitmapFormat.d.ts.map +1 -0
- package/dist/bitmapFormat.js +80 -0
- package/dist/bitmapFormat.js.map +1 -0
- package/dist/bitmapFrom.d.ts +23 -0
- package/dist/bitmapFrom.d.ts.map +1 -0
- package/dist/bitmapFrom.js +90 -0
- package/dist/bitmapFrom.js.map +1 -0
- package/dist/bitmapGradient.d.ts +36 -0
- package/dist/bitmapGradient.d.ts.map +1 -0
- package/dist/bitmapGradient.js +176 -0
- package/dist/bitmapGradient.js.map +1 -0
- package/dist/bitmapGradientFill.d.ts +32 -0
- package/dist/bitmapGradientFill.d.ts.map +1 -0
- package/dist/bitmapGradientFill.js +120 -0
- package/dist/bitmapGradientFill.js.map +1 -0
- package/dist/bitmapHistogram.d.ts +20 -0
- package/dist/bitmapHistogram.d.ts.map +1 -0
- package/dist/bitmapHistogram.js +61 -0
- package/dist/bitmapHistogram.js.map +1 -0
- package/dist/bitmapImageChannel.d.ts +2 -0
- package/dist/bitmapImageChannel.d.ts.map +1 -0
- package/dist/bitmapImageChannel.js +2 -0
- package/dist/bitmapImageChannel.js.map +1 -0
- package/dist/bitmapMedian.d.ts +14 -0
- package/dist/bitmapMedian.d.ts.map +1 -0
- package/dist/bitmapMedian.js +77 -0
- package/dist/bitmapMedian.js.map +1 -0
- package/dist/bitmapMorphological.d.ts +29 -0
- package/dist/bitmapMorphological.d.ts.map +1 -0
- package/dist/bitmapMorphological.js +81 -0
- package/dist/bitmapMorphological.js.map +1 -0
- package/dist/bitmapNoise.d.ts +48 -0
- package/dist/bitmapNoise.d.ts.map +1 -0
- package/dist/bitmapNoise.js +245 -0
- package/dist/bitmapNoise.js.map +1 -0
- package/dist/bitmapPaletteMap.d.ts +17 -0
- package/dist/bitmapPaletteMap.d.ts.map +1 -0
- package/dist/bitmapPaletteMap.js +45 -0
- package/dist/bitmapPaletteMap.js.map +1 -0
- package/dist/bitmapPixel.d.ts +9 -0
- package/dist/bitmapPixel.d.ts.map +1 -0
- package/dist/bitmapPixel.js +36 -0
- package/dist/bitmapPixel.js.map +1 -0
- package/dist/bitmapPixelate.d.ts +13 -0
- package/dist/bitmapPixelate.d.ts.map +1 -0
- package/dist/bitmapPixelate.js +61 -0
- package/dist/bitmapPixelate.js.map +1 -0
- package/dist/bitmapQuery.d.ts +13 -0
- package/dist/bitmapQuery.d.ts.map +1 -0
- package/dist/bitmapQuery.js +46 -0
- package/dist/bitmapQuery.js.map +1 -0
- package/dist/bitmapRegion.d.ts +20 -0
- package/dist/bitmapRegion.d.ts.map +1 -0
- package/dist/bitmapRegion.js +28 -0
- package/dist/bitmapRegion.js.map +1 -0
- package/dist/bitmapResize.d.ts +17 -0
- package/dist/bitmapResize.d.ts.map +1 -0
- package/dist/bitmapResize.js +191 -0
- package/dist/bitmapResize.js.map +1 -0
- package/dist/bitmapRotate.d.ts +32 -0
- package/dist/bitmapRotate.d.ts.map +1 -0
- package/dist/bitmapRotate.js +143 -0
- package/dist/bitmapRotate.js.map +1 -0
- package/dist/bitmapShadow.d.ts +72 -0
- package/dist/bitmapShadow.d.ts.map +1 -0
- package/dist/bitmapShadow.js +175 -0
- package/dist/bitmapShadow.js.map +1 -0
- package/dist/bitmapSharpen.d.ts +16 -0
- package/dist/bitmapSharpen.d.ts.map +1 -0
- package/dist/bitmapSharpen.js +47 -0
- package/dist/bitmapSharpen.js.map +1 -0
- package/dist/bitmapTone.d.ts +28 -0
- package/dist/bitmapTone.d.ts.map +1 -0
- package/dist/bitmapTone.js +69 -0
- package/dist/bitmapTone.js.map +1 -0
- package/dist/bitmapTransform.d.ts +40 -0
- package/dist/bitmapTransform.d.ts.map +1 -0
- package/dist/bitmapTransform.js +163 -0
- package/dist/bitmapTransform.js.map +1 -0
- package/dist/bitmapWarp.d.ts +48 -0
- package/dist/bitmapWarp.d.ts.map +1 -0
- package/dist/bitmapWarp.js +284 -0
- package/dist/bitmapWarp.js.map +1 -0
- package/dist/contract.d.ts +43 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +43 -0
- package/dist/contract.js.map +1 -0
- package/dist/explainBitmapReadback.d.ts +3 -0
- package/dist/explainBitmapReadback.d.ts.map +1 -0
- package/dist/explainBitmapReadback.js +39 -0
- package/dist/explainBitmapReadback.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -0
- package/src/bitmap.test.ts +88 -0
- package/src/bitmapAffine.test.ts +98 -0
- package/src/bitmapAlpha.test.ts +110 -0
- package/src/bitmapBevel.test.ts +61 -0
- package/src/bitmapBlur.test.ts +234 -0
- package/src/bitmapChannel.test.ts +97 -0
- package/src/bitmapColorMatrix.test.ts +214 -0
- package/src/bitmapCompare.test.ts +92 -0
- package/src/bitmapComposite.test.ts +259 -0
- package/src/bitmapConvolution.test.ts +130 -0
- package/src/bitmapCopy.test.ts +48 -0
- package/src/bitmapCoverage.test.ts +39 -0
- package/src/bitmapCrop.test.ts +116 -0
- package/src/bitmapDisplacement.test.ts +181 -0
- package/src/bitmapDissolve.test.ts +99 -0
- package/src/bitmapDraw.test.ts +68 -0
- package/src/bitmapEncode.test.ts +18 -0
- package/src/bitmapFill.test.ts +83 -0
- package/src/bitmapFingerprint.test.ts +103 -0
- package/src/bitmapFlip.test.ts +53 -0
- package/src/bitmapFormat.test.ts +124 -0
- package/src/bitmapFrom.test.ts +86 -0
- package/src/bitmapGradient.test.ts +85 -0
- package/src/bitmapGradientFill.test.ts +107 -0
- package/src/bitmapHistogram.test.ts +64 -0
- package/src/bitmapImageChannel.test.ts +19 -0
- package/src/bitmapMedian.test.ts +39 -0
- package/src/bitmapMorphological.test.ts +69 -0
- package/src/bitmapNoise.test.ts +163 -0
- package/src/bitmapPaletteMap.test.ts +49 -0
- package/src/bitmapPixel.test.ts +117 -0
- package/src/bitmapPixelate.test.ts +40 -0
- package/src/bitmapQuery.test.ts +42 -0
- package/src/bitmapRegion.test.ts +34 -0
- package/src/bitmapResize.test.ts +106 -0
- package/src/bitmapRotate.test.ts +108 -0
- package/src/bitmapShadow.test.ts +159 -0
- package/src/bitmapSharpen.test.ts +44 -0
- package/src/bitmapTone.test.ts +104 -0
- package/src/bitmapTransform.test.ts +128 -0
- package/src/bitmapWarp.test.ts +118 -0
- package/src/explainBitmapReadback.test.ts +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmapTransform.d.ts","sourceRoot":"","sources":["../src/bitmapTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM7G;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,EAAE,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAC/B,IAAI,CAwBN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,SAAS,EAAE,kBAAkB,EAC7B,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,MAAU,EACjB,IAAI,GAAE,MAAmB,EACzB,UAAU,GAAE,OAAe,GAC1B,MAAM,CAkCR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,IAAI,CAsBN;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAoBtE"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { invalidateBitmap } from './bitmap';
|
|
2
|
+
let _scrollScratch = null;
|
|
3
|
+
/**
|
|
4
|
+
* Applies normalized-linear color scale/bias to `source`, writing into `dest`. The transformed
|
|
5
|
+
* size is the overlap of the two regions; pixels outside either bitmap are
|
|
6
|
+
* skipped. Safe to pass the same bitmap and region in `dest` and `source` for
|
|
7
|
+
* in-place modification (each pixel is read before it is written).
|
|
8
|
+
*/
|
|
9
|
+
export function applyBitmapColorScaleBias(dest, source, ct) {
|
|
10
|
+
const w = Math.min(dest.width, source.width);
|
|
11
|
+
const h = Math.min(dest.height, source.height);
|
|
12
|
+
for (let py = 0; py < h; py++) {
|
|
13
|
+
const sy = source.y + py;
|
|
14
|
+
const dy = dest.y + py;
|
|
15
|
+
if (sy < 0 || sy >= source.bitmap.height || dy < 0 || dy >= dest.bitmap.height)
|
|
16
|
+
continue;
|
|
17
|
+
for (let px = 0; px < w; px++) {
|
|
18
|
+
const sx = source.x + px;
|
|
19
|
+
const dx = dest.x + px;
|
|
20
|
+
if (sx < 0 || sx >= source.bitmap.width || dx < 0 || dx >= dest.bitmap.width)
|
|
21
|
+
continue;
|
|
22
|
+
const si = (sy * source.bitmap.width + sx) * 4;
|
|
23
|
+
const di = (dy * dest.bitmap.width + dx) * 4;
|
|
24
|
+
const r = source.bitmap.data[si];
|
|
25
|
+
const g = source.bitmap.data[si + 1];
|
|
26
|
+
const b = source.bitmap.data[si + 2];
|
|
27
|
+
const a = source.bitmap.data[si + 3];
|
|
28
|
+
dest.bitmap.data[di] = Math.max(0, Math.min(255, Math.round(r * ct.redScale + ct.redBias * 255)));
|
|
29
|
+
dest.bitmap.data[di + 1] = Math.max(0, Math.min(255, Math.round(g * ct.greenScale + ct.greenBias * 255)));
|
|
30
|
+
dest.bitmap.data[di + 2] = Math.max(0, Math.min(255, Math.round(b * ct.blueScale + ct.blueBias * 255)));
|
|
31
|
+
dest.bitmap.data[di + 3] = Math.max(0, Math.min(255, Math.round(a * ct.alphaScale + ct.alphaBias * 255)));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
invalidateBitmap(dest.bitmap);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Tests each pixel of `source` and writes `color` into `dest` where the test
|
|
38
|
+
* passes, or optionally copies the source pixel where it fails. The tested size
|
|
39
|
+
* is the overlap of the two regions. Returns the number of pixels that passed.
|
|
40
|
+
*
|
|
41
|
+
* The comparison is performed on the full packed 0xRRGGBBAA pixel value under
|
|
42
|
+
* `mask`. To test a single channel, supply a mask that isolates it — for
|
|
43
|
+
* example 0x000000ff tests only the alpha byte, and 0xff000000 tests only red.
|
|
44
|
+
*
|
|
45
|
+
* Safe to pass the same bitmap and region in `dest` and `source` (each pixel
|
|
46
|
+
* is read before it is written).
|
|
47
|
+
*/
|
|
48
|
+
export function applyBitmapThreshold(dest, source, operation, thresholdValue, color = 0, mask = 0xffffffff, copySource = false) {
|
|
49
|
+
const w = Math.min(dest.width, source.width);
|
|
50
|
+
const h = Math.min(dest.height, source.height);
|
|
51
|
+
const sd = source.bitmap.data;
|
|
52
|
+
const dd = dest.bitmap.data;
|
|
53
|
+
let changed = 0;
|
|
54
|
+
for (let py = 0; py < h; py++) {
|
|
55
|
+
const sy = source.y + py;
|
|
56
|
+
const dy = dest.y + py;
|
|
57
|
+
if (sy < 0 || sy >= source.bitmap.height || dy < 0 || dy >= dest.bitmap.height)
|
|
58
|
+
continue;
|
|
59
|
+
for (let px = 0; px < w; px++) {
|
|
60
|
+
const sx = source.x + px;
|
|
61
|
+
const dx = dest.x + px;
|
|
62
|
+
if (sx < 0 || sx >= source.bitmap.width || dx < 0 || dx >= dest.bitmap.width)
|
|
63
|
+
continue;
|
|
64
|
+
const si = (sy * source.bitmap.width + sx) * 4;
|
|
65
|
+
const di = (dy * dest.bitmap.width + dx) * 4;
|
|
66
|
+
const pixel = (((sd[si] << 24) | (sd[si + 1] << 16) | (sd[si + 2] << 8) | sd[si + 3]) & mask) >>> 0;
|
|
67
|
+
const passes = compare(pixel, operation, thresholdValue >>> 0);
|
|
68
|
+
if (passes) {
|
|
69
|
+
dd[di] = (color >>> 24) & 0xff;
|
|
70
|
+
dd[di + 1] = (color >> 16) & 0xff;
|
|
71
|
+
dd[di + 2] = (color >> 8) & 0xff;
|
|
72
|
+
dd[di + 3] = color & 0xff;
|
|
73
|
+
changed++;
|
|
74
|
+
}
|
|
75
|
+
else if (copySource) {
|
|
76
|
+
dd[di] = sd[si];
|
|
77
|
+
dd[di + 1] = sd[si + 1];
|
|
78
|
+
dd[di + 2] = sd[si + 2];
|
|
79
|
+
dd[di + 3] = sd[si + 3];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
invalidateBitmap(dest.bitmap);
|
|
84
|
+
return changed;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Blends each channel of `source` into `dest` using per-channel multipliers in
|
|
88
|
+
* [0, 1]: 0 keeps `dest`, 1 replaces with `source`, intermediate values blend
|
|
89
|
+
* proportionally. The blended size is the overlap of the two regions; pixels
|
|
90
|
+
* outside either bitmap are skipped.
|
|
91
|
+
*
|
|
92
|
+
* `dest` and `source` must not reference the same bitmap when their regions
|
|
93
|
+
* overlap at different offsets — the blend reads both, so a write to `dest`
|
|
94
|
+
* corrupts later reads from `source`. The same region in both is safe (the
|
|
95
|
+
* result equals `dest` for every multiplier).
|
|
96
|
+
*/
|
|
97
|
+
export function mergeBitmap(dest, source, redScale, greenScale, blueScale, alphaScale) {
|
|
98
|
+
const w = Math.min(dest.width, source.width);
|
|
99
|
+
const h = Math.min(dest.height, source.height);
|
|
100
|
+
const sd = source.bitmap.data;
|
|
101
|
+
const dd = dest.bitmap.data;
|
|
102
|
+
for (let py = 0; py < h; py++) {
|
|
103
|
+
const sy = source.y + py;
|
|
104
|
+
const dy = dest.y + py;
|
|
105
|
+
if (sy < 0 || sy >= source.bitmap.height || dy < 0 || dy >= dest.bitmap.height)
|
|
106
|
+
continue;
|
|
107
|
+
for (let px = 0; px < w; px++) {
|
|
108
|
+
const sx = source.x + px;
|
|
109
|
+
const dx = dest.x + px;
|
|
110
|
+
if (sx < 0 || sx >= source.bitmap.width || dx < 0 || dx >= dest.bitmap.width)
|
|
111
|
+
continue;
|
|
112
|
+
const si = (sy * source.bitmap.width + sx) * 4;
|
|
113
|
+
const di = (dy * dest.bitmap.width + dx) * 4;
|
|
114
|
+
dd[di] = Math.round(sd[si] * redScale + dd[di] * (1 - redScale));
|
|
115
|
+
dd[di + 1] = Math.round(sd[si + 1] * greenScale + dd[di + 1] * (1 - greenScale));
|
|
116
|
+
dd[di + 2] = Math.round(sd[si + 2] * blueScale + dd[di + 2] * (1 - blueScale));
|
|
117
|
+
dd[di + 3] = Math.round(sd[si + 3] * alphaScale + dd[di + 3] * (1 - alphaScale));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
invalidateBitmap(dest.bitmap);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Scrolls the content of `out` by `(dx, dy)`, wrapping at the edges.
|
|
124
|
+
* Uses a module-level scratch buffer that grows as needed and is reused
|
|
125
|
+
* across calls.
|
|
126
|
+
*/
|
|
127
|
+
export function scrollBitmap(out, dx, dy) {
|
|
128
|
+
const needed = out.data.length;
|
|
129
|
+
if (_scrollScratch === null || _scrollScratch.length < needed) {
|
|
130
|
+
_scrollScratch = new Uint8ClampedArray(needed);
|
|
131
|
+
}
|
|
132
|
+
_scrollScratch.set(out.data, 0);
|
|
133
|
+
for (let py = 0; py < out.height; py++) {
|
|
134
|
+
const srcY = (((py - dy) % out.height) + out.height) % out.height;
|
|
135
|
+
for (let px = 0; px < out.width; px++) {
|
|
136
|
+
const srcX = (((px - dx) % out.width) + out.width) % out.width;
|
|
137
|
+
const si = (srcY * out.width + srcX) * 4;
|
|
138
|
+
const di = (py * out.width + px) * 4;
|
|
139
|
+
out.data[di] = _scrollScratch[si];
|
|
140
|
+
out.data[di + 1] = _scrollScratch[si + 1];
|
|
141
|
+
out.data[di + 2] = _scrollScratch[si + 2];
|
|
142
|
+
out.data[di + 3] = _scrollScratch[si + 3];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
invalidateBitmap(out);
|
|
146
|
+
}
|
|
147
|
+
function compare(a, op, b) {
|
|
148
|
+
switch (op) {
|
|
149
|
+
case '<':
|
|
150
|
+
return a < b;
|
|
151
|
+
case '<=':
|
|
152
|
+
return a <= b;
|
|
153
|
+
case '>':
|
|
154
|
+
return a > b;
|
|
155
|
+
case '>=':
|
|
156
|
+
return a >= b;
|
|
157
|
+
case '==':
|
|
158
|
+
return a === b;
|
|
159
|
+
case '!=':
|
|
160
|
+
return a !== b;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=bitmapTransform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmapTransform.js","sourceRoot":"","sources":["../src/bitmapTransform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { BitmapEdgeMode, BitmapRegion, BitmapResizeMode } from '@flighthq/types/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Applies a full 3×3 projective (homography) warp to `source`, writing into
|
|
4
|
+
* `dest`. The `matrix` is a 9-element row-major array representing:
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* [ m0 m1 m2 ]
|
|
8
|
+
* [ m3 m4 m5 ]
|
|
9
|
+
* [ m6 m7 m8 ]
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* For each `dest` pixel `(x, y)`, the inverse matrix is applied as:
|
|
13
|
+
*
|
|
14
|
+
* ```
|
|
15
|
+
* w = m6*x + m7*y + m8
|
|
16
|
+
* srcX = (m0*x + m1*y + m2) / w
|
|
17
|
+
* srcY = (m3*x + m4*y + m5) / w
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* This is an inverse-mapping (destination-driven) warp, so every output pixel
|
|
21
|
+
* is filled by sampling `source`. Out-of-bounds source positions are resolved
|
|
22
|
+
* with `edgeMode` (default `'transparent'`). Sampling quality is controlled
|
|
23
|
+
* by `sampleMode` (default `'bilinear'`).
|
|
24
|
+
*
|
|
25
|
+
* Pass the **inverse** of the forward transform: if you want to map source
|
|
26
|
+
* points into dest, compute the forward matrix and invert it before passing.
|
|
27
|
+
*
|
|
28
|
+
* `dest` must not alias `source` when their regions overlap.
|
|
29
|
+
*/
|
|
30
|
+
export declare function warpBitmap(dest: Readonly<BitmapRegion>, source: Readonly<BitmapRegion>, matrix: Readonly<[number, number, number, number, number, number, number, number, number]>, edgeMode?: BitmapEdgeMode, sampleMode?: BitmapResizeMode): void;
|
|
31
|
+
/**
|
|
32
|
+
* Warps `source` into `dest` by mapping its four corners to the four corners of
|
|
33
|
+
* `dstQuad`. This is a perspective warp (homography) defined by 4 destination
|
|
34
|
+
* points corresponding to the source corners in order: top-left, top-right,
|
|
35
|
+
* bottom-right, bottom-left.
|
|
36
|
+
*
|
|
37
|
+
* `dstQuad` is an 8-element array `[x0, y0, x1, y1, x2, y2, x3, y3]` in
|
|
38
|
+
* destination-region-local coordinates. The source corners are mapped from the
|
|
39
|
+
* full `source` region in the same order.
|
|
40
|
+
*
|
|
41
|
+
* Internally computes the homography from source corners to `dstQuad` corners,
|
|
42
|
+
* inverts it, and delegates to `warpBitmap`. Edge and sample modes follow the
|
|
43
|
+
* same rules as `warpBitmap`.
|
|
44
|
+
*
|
|
45
|
+
* `dest` must not alias `source` when their regions overlap.
|
|
46
|
+
*/
|
|
47
|
+
export declare function warpBitmapQuad(dest: Readonly<BitmapRegion>, source: Readonly<BitmapRegion>, dstQuad: Readonly<[number, number, number, number, number, number, number, number]>, edgeMode?: BitmapEdgeMode, sampleMode?: BitmapResizeMode): void;
|
|
48
|
+
//# sourceMappingURL=bitmapWarp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmapWarp.d.ts","sourceRoot":"","sources":["../src/bitmapWarp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI/F;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1F,QAAQ,GAAE,cAA8B,EACxC,UAAU,GAAE,gBAA6B,GACxC,IAAI,CA+CN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC5B,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EACnF,QAAQ,GAAE,cAA8B,EACxC,UAAU,GAAE,gBAA6B,GACxC,IAAI,CAYN"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { invalidateBitmap } from './bitmap';
|
|
2
|
+
/**
|
|
3
|
+
* Applies a full 3×3 projective (homography) warp to `source`, writing into
|
|
4
|
+
* `dest`. The `matrix` is a 9-element row-major array representing:
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* [ m0 m1 m2 ]
|
|
8
|
+
* [ m3 m4 m5 ]
|
|
9
|
+
* [ m6 m7 m8 ]
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* For each `dest` pixel `(x, y)`, the inverse matrix is applied as:
|
|
13
|
+
*
|
|
14
|
+
* ```
|
|
15
|
+
* w = m6*x + m7*y + m8
|
|
16
|
+
* srcX = (m0*x + m1*y + m2) / w
|
|
17
|
+
* srcY = (m3*x + m4*y + m5) / w
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* This is an inverse-mapping (destination-driven) warp, so every output pixel
|
|
21
|
+
* is filled by sampling `source`. Out-of-bounds source positions are resolved
|
|
22
|
+
* with `edgeMode` (default `'transparent'`). Sampling quality is controlled
|
|
23
|
+
* by `sampleMode` (default `'bilinear'`).
|
|
24
|
+
*
|
|
25
|
+
* Pass the **inverse** of the forward transform: if you want to map source
|
|
26
|
+
* points into dest, compute the forward matrix and invert it before passing.
|
|
27
|
+
*
|
|
28
|
+
* `dest` must not alias `source` when their regions overlap.
|
|
29
|
+
*/
|
|
30
|
+
export function warpBitmap(dest, source, matrix, edgeMode = 'transparent', sampleMode = 'bilinear') {
|
|
31
|
+
const dw = dest.width;
|
|
32
|
+
const dh = dest.height;
|
|
33
|
+
const sw = source.width;
|
|
34
|
+
const sh = source.height;
|
|
35
|
+
if (dw === 0 || dh === 0 || sw === 0 || sh === 0)
|
|
36
|
+
return;
|
|
37
|
+
const [m0, m1, m2, m3, m4, m5, m6, m7, m8] = matrix;
|
|
38
|
+
const sd = source.bitmap.data;
|
|
39
|
+
const dd = dest.bitmap.data;
|
|
40
|
+
const sStride = source.bitmap.width;
|
|
41
|
+
const dStride = dest.bitmap.width;
|
|
42
|
+
for (let dy = 0; dy < dh; dy++) {
|
|
43
|
+
const oy = dest.y + dy;
|
|
44
|
+
if (oy < 0 || oy >= dest.bitmap.height)
|
|
45
|
+
continue;
|
|
46
|
+
for (let dx = 0; dx < dw; dx++) {
|
|
47
|
+
const ox = dest.x + dx;
|
|
48
|
+
if (ox < 0 || ox >= dStride)
|
|
49
|
+
continue;
|
|
50
|
+
const w = m6 * dx + m7 * dy + m8;
|
|
51
|
+
const di = (oy * dStride + ox) * 4;
|
|
52
|
+
if (Math.abs(w) < 1e-10) {
|
|
53
|
+
dd[di] = 0;
|
|
54
|
+
dd[di + 1] = 0;
|
|
55
|
+
dd[di + 2] = 0;
|
|
56
|
+
dd[di + 3] = 0;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const invW = 1 / w;
|
|
60
|
+
const sx = (m0 * dx + m1 * dy + m2) * invW;
|
|
61
|
+
const sy = (m3 * dx + m4 * dy + m5) * invW;
|
|
62
|
+
warpSampleBitmap(dd, di, sd, sw, sh, source.x, source.y, sStride, source.bitmap.height, sx, sy, sampleMode, edgeMode);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
invalidateBitmap(dest.bitmap);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Warps `source` into `dest` by mapping its four corners to the four corners of
|
|
69
|
+
* `dstQuad`. This is a perspective warp (homography) defined by 4 destination
|
|
70
|
+
* points corresponding to the source corners in order: top-left, top-right,
|
|
71
|
+
* bottom-right, bottom-left.
|
|
72
|
+
*
|
|
73
|
+
* `dstQuad` is an 8-element array `[x0, y0, x1, y1, x2, y2, x3, y3]` in
|
|
74
|
+
* destination-region-local coordinates. The source corners are mapped from the
|
|
75
|
+
* full `source` region in the same order.
|
|
76
|
+
*
|
|
77
|
+
* Internally computes the homography from source corners to `dstQuad` corners,
|
|
78
|
+
* inverts it, and delegates to `warpBitmap`. Edge and sample modes follow the
|
|
79
|
+
* same rules as `warpBitmap`.
|
|
80
|
+
*
|
|
81
|
+
* `dest` must not alias `source` when their regions overlap.
|
|
82
|
+
*/
|
|
83
|
+
export function warpBitmapQuad(dest, source, dstQuad, edgeMode = 'transparent', sampleMode = 'bilinear') {
|
|
84
|
+
const sw = source.width;
|
|
85
|
+
const sh = source.height;
|
|
86
|
+
if (sw === 0 || sh === 0 || dest.width === 0 || dest.height === 0)
|
|
87
|
+
return;
|
|
88
|
+
// Source corners in source-region-local space (top-left, top-right, bottom-right, bottom-left).
|
|
89
|
+
const srcPts = [0, 0, sw, 0, sw, sh, 0, sh];
|
|
90
|
+
// Compute homography: dstQuad ← srcPts (forward), then invert for the warp.
|
|
91
|
+
const H = computeHomography(srcPts, dstQuad);
|
|
92
|
+
if (H === null)
|
|
93
|
+
return;
|
|
94
|
+
const Hinv = invertMatrix3x3(H);
|
|
95
|
+
if (Hinv === null)
|
|
96
|
+
return;
|
|
97
|
+
warpBitmap(dest, source, Hinv, edgeMode, sampleMode);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Samples `source` at source-region-local `(sx, sy)`, writing four bytes into
|
|
101
|
+
* `dd[di..di+3]`.
|
|
102
|
+
*/
|
|
103
|
+
function warpSampleBitmap(dd, di, sd, sw, sh, originX, originY, sStride, sHeight, sx, sy, sampleMode, edgeMode) {
|
|
104
|
+
if (sampleMode === 'nearest') {
|
|
105
|
+
const ix = Math.round(sx);
|
|
106
|
+
const iy = Math.round(sy);
|
|
107
|
+
const cx = warpResolveEdge(ix, sw, edgeMode);
|
|
108
|
+
const cy = warpResolveEdge(iy, sh, edgeMode);
|
|
109
|
+
if (cx === null || cy === null) {
|
|
110
|
+
dd[di] = 0;
|
|
111
|
+
dd[di + 1] = 0;
|
|
112
|
+
dd[di + 2] = 0;
|
|
113
|
+
dd[di + 3] = 0;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const si = ((originY + cy) * sStride + (originX + cx)) * 4;
|
|
117
|
+
dd[di] = sd[si];
|
|
118
|
+
dd[di + 1] = sd[si + 1];
|
|
119
|
+
dd[di + 2] = sd[si + 2];
|
|
120
|
+
dd[di + 3] = sd[si + 3];
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (sampleMode === 'bicubic') {
|
|
124
|
+
warpSampleBicubic(dd, di, sd, sw, sh, originX, originY, sStride, sHeight, sx, sy, edgeMode);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// bilinear
|
|
128
|
+
warpSampleBilinear(dd, di, sd, sw, sh, originX, originY, sStride, sHeight, sx, sy, edgeMode);
|
|
129
|
+
}
|
|
130
|
+
function warpSampleBilinear(dd, di, sd, sw, sh, originX, originY, sStride, _sHeight, sx, sy, edgeMode) {
|
|
131
|
+
const x0 = Math.floor(sx);
|
|
132
|
+
const y0 = Math.floor(sy);
|
|
133
|
+
const tx = sx - x0;
|
|
134
|
+
const ty = sy - y0;
|
|
135
|
+
const cx00 = warpResolveEdge(x0, sw, edgeMode);
|
|
136
|
+
const cx10 = warpResolveEdge(x0 + 1, sw, edgeMode);
|
|
137
|
+
const cy00 = warpResolveEdge(y0, sh, edgeMode);
|
|
138
|
+
const cy10 = warpResolveEdge(y0 + 1, sh, edgeMode);
|
|
139
|
+
for (let c = 0; c < 4; c++) {
|
|
140
|
+
const v00 = cx00 !== null && cy00 !== null ? sd[((originY + cy00) * sStride + originX + cx00) * 4 + c] : 0;
|
|
141
|
+
const v10 = cx10 !== null && cy00 !== null ? sd[((originY + cy00) * sStride + originX + cx10) * 4 + c] : 0;
|
|
142
|
+
const v01 = cx00 !== null && cy10 !== null ? sd[((originY + cy10) * sStride + originX + cx00) * 4 + c] : 0;
|
|
143
|
+
const v11 = cx10 !== null && cy10 !== null ? sd[((originY + cy10) * sStride + originX + cx10) * 4 + c] : 0;
|
|
144
|
+
const top = v00 * (1 - tx) + v10 * tx;
|
|
145
|
+
const bottom = v01 * (1 - tx) + v11 * tx;
|
|
146
|
+
dd[di + c] = Math.round(top * (1 - ty) + bottom * ty);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function warpSampleBicubic(dd, di, sd, sw, sh, originX, originY, sStride, _sHeight, sx, sy, edgeMode) {
|
|
150
|
+
const x1 = Math.floor(sx);
|
|
151
|
+
const y1 = Math.floor(sy);
|
|
152
|
+
const tx = sx - x1;
|
|
153
|
+
const ty = sy - y1;
|
|
154
|
+
for (let c = 0; c < 4; c++) {
|
|
155
|
+
let sum = 0;
|
|
156
|
+
for (let m = -1; m <= 2; m++) {
|
|
157
|
+
const wy = catmullRomWeight(ty - m);
|
|
158
|
+
const ry = warpResolveEdge(y1 + m, sh, edgeMode);
|
|
159
|
+
for (let n = -1; n <= 2; n++) {
|
|
160
|
+
const wx = catmullRomWeight(tx - n);
|
|
161
|
+
const rx = warpResolveEdge(x1 + n, sw, edgeMode);
|
|
162
|
+
const v = rx !== null && ry !== null ? sd[((originY + ry) * sStride + originX + rx) * 4 + c] : 0;
|
|
163
|
+
sum += v * wy * wx;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
dd[di + c] = Math.max(0, Math.min(255, Math.round(sum)));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function warpResolveEdge(v, size, mode) {
|
|
170
|
+
if (v >= 0 && v < size)
|
|
171
|
+
return v;
|
|
172
|
+
switch (mode) {
|
|
173
|
+
case 'clamp':
|
|
174
|
+
return Math.max(0, Math.min(size - 1, v));
|
|
175
|
+
case 'wrap':
|
|
176
|
+
return ((v % size) + size) % size;
|
|
177
|
+
case 'mirror': {
|
|
178
|
+
const period = 2 * size;
|
|
179
|
+
const wrapped = ((v % period) + period) % period;
|
|
180
|
+
return wrapped < size ? wrapped : period - 1 - wrapped;
|
|
181
|
+
}
|
|
182
|
+
default:
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function catmullRomWeight(t) {
|
|
187
|
+
const a = Math.abs(t);
|
|
188
|
+
if (a >= 2)
|
|
189
|
+
return 0;
|
|
190
|
+
if (a >= 1)
|
|
191
|
+
return -0.5 * a * a * a + 2.5 * a * a - 4 * a + 2;
|
|
192
|
+
return 1.5 * a * a * a - 2.5 * a * a + 1;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Computes a homography H such that H * src[i] = dst[i] for 4 point pairs.
|
|
196
|
+
* Points are in [x0, y0, x1, y1, x2, y2, x3, y3] order.
|
|
197
|
+
* Returns null if the system is degenerate.
|
|
198
|
+
*/
|
|
199
|
+
function computeHomography(src, dst) {
|
|
200
|
+
// Direct Linear Transform (DLT) for 4 point correspondences.
|
|
201
|
+
// Builds an 8×8 linear system and solves it.
|
|
202
|
+
const A = [];
|
|
203
|
+
for (let i = 0; i < 4; i++) {
|
|
204
|
+
const sx = src[i * 2];
|
|
205
|
+
const sy = src[i * 2 + 1];
|
|
206
|
+
const dx = dst[i * 2];
|
|
207
|
+
const dy = dst[i * 2 + 1];
|
|
208
|
+
A.push([sx, sy, 1, 0, 0, 0, -dx * sx, -dx * sy, -dx]);
|
|
209
|
+
A.push([0, 0, 0, sx, sy, 1, -dy * sx, -dy * sy, -dy]);
|
|
210
|
+
}
|
|
211
|
+
// Extract the 8×8 sub-system (h8 = 1 normalization).
|
|
212
|
+
const b = [];
|
|
213
|
+
const M = [];
|
|
214
|
+
for (let r = 0; r < 8; r++) {
|
|
215
|
+
const row = A[r];
|
|
216
|
+
M.push(row.slice(0, 8));
|
|
217
|
+
b.push(row[8]);
|
|
218
|
+
}
|
|
219
|
+
const h = solveLinear8(M, b);
|
|
220
|
+
if (h === null)
|
|
221
|
+
return null;
|
|
222
|
+
return [h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7], 1];
|
|
223
|
+
}
|
|
224
|
+
/** Gaussian elimination to solve M*x = b for 8 unknowns. */
|
|
225
|
+
function solveLinear8(M, b) {
|
|
226
|
+
const n = 8;
|
|
227
|
+
// Augmented matrix [M | -b] (we negate b because the system is A*x + b = 0).
|
|
228
|
+
const aug = M.map((row, i) => [...row, -b[i]]);
|
|
229
|
+
for (let col = 0; col < n; col++) {
|
|
230
|
+
// Partial pivot.
|
|
231
|
+
let maxRow = col;
|
|
232
|
+
let maxVal = Math.abs(aug[col][col]);
|
|
233
|
+
for (let row = col + 1; row < n; row++) {
|
|
234
|
+
const v = Math.abs(aug[row][col]);
|
|
235
|
+
if (v > maxVal) {
|
|
236
|
+
maxVal = v;
|
|
237
|
+
maxRow = row;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (maxVal < 1e-12)
|
|
241
|
+
return null;
|
|
242
|
+
[aug[col], aug[maxRow]] = [aug[maxRow], aug[col]];
|
|
243
|
+
const pivot = aug[col][col];
|
|
244
|
+
for (let row = col + 1; row < n; row++) {
|
|
245
|
+
const factor = aug[row][col] / pivot;
|
|
246
|
+
for (let k = col; k <= n; k++) {
|
|
247
|
+
aug[row][k] -= factor * aug[col][k];
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Back-substitution.
|
|
252
|
+
const x = new Array(n).fill(0);
|
|
253
|
+
for (let row = n - 1; row >= 0; row--) {
|
|
254
|
+
let sum = aug[row][n];
|
|
255
|
+
for (let col = row + 1; col < n; col++) {
|
|
256
|
+
sum -= aug[row][col] * x[col];
|
|
257
|
+
}
|
|
258
|
+
x[row] = sum / aug[row][row];
|
|
259
|
+
}
|
|
260
|
+
return x;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Inverts a 3×3 matrix stored as a flat 9-element row-major array.
|
|
264
|
+
* Returns null if the matrix is singular.
|
|
265
|
+
*/
|
|
266
|
+
function invertMatrix3x3(m) {
|
|
267
|
+
const [a, b, c, d, e, f, g, h, k] = m;
|
|
268
|
+
const det = a * (e * k - f * h) - b * (d * k - f * g) + c * (d * h - e * g);
|
|
269
|
+
if (Math.abs(det) < 1e-12)
|
|
270
|
+
return null;
|
|
271
|
+
const invDet = 1 / det;
|
|
272
|
+
return [
|
|
273
|
+
(e * k - f * h) * invDet,
|
|
274
|
+
(c * h - b * k) * invDet,
|
|
275
|
+
(b * f - c * e) * invDet,
|
|
276
|
+
(f * g - d * k) * invDet,
|
|
277
|
+
(a * k - c * g) * invDet,
|
|
278
|
+
(c * d - a * f) * invDet,
|
|
279
|
+
(d * h - e * g) * invDet,
|
|
280
|
+
(b * g - a * h) * invDet,
|
|
281
|
+
(a * e - b * d) * invDet,
|
|
282
|
+
];
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=bitmapWarp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmapWarp.js","sourceRoot":"","sources":["../src/bitmapWarp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export * from './bitmap';
|
|
2
|
+
export * from './bitmapAffine';
|
|
3
|
+
export * from './bitmapAlpha';
|
|
4
|
+
export * from './bitmapBevel';
|
|
5
|
+
export * from './bitmapBlur';
|
|
6
|
+
export * from './bitmapChannel';
|
|
7
|
+
export * from './bitmapColorMatrix';
|
|
8
|
+
export * from './bitmapCompare';
|
|
9
|
+
export * from './bitmapComposite';
|
|
10
|
+
export * from './bitmapConvolution';
|
|
11
|
+
export * from './bitmapCopy';
|
|
12
|
+
export * from './bitmapCoverage';
|
|
13
|
+
export * from './bitmapCrop';
|
|
14
|
+
export * from './bitmapDisplacement';
|
|
15
|
+
export * from './bitmapDissolve';
|
|
16
|
+
export * from './bitmapDraw';
|
|
17
|
+
export * from './bitmapEncode';
|
|
18
|
+
export * from './bitmapFill';
|
|
19
|
+
export * from './bitmapFingerprint';
|
|
20
|
+
export * from './bitmapFlip';
|
|
21
|
+
export * from './bitmapFormat';
|
|
22
|
+
export * from './bitmapFrom';
|
|
23
|
+
export * from './bitmapGradient';
|
|
24
|
+
export * from './bitmapGradientFill';
|
|
25
|
+
export * from './bitmapHistogram';
|
|
26
|
+
export * from './bitmapImageChannel';
|
|
27
|
+
export * from './bitmapMedian';
|
|
28
|
+
export * from './bitmapMorphological';
|
|
29
|
+
export * from './bitmapNoise';
|
|
30
|
+
export * from './bitmapPaletteMap';
|
|
31
|
+
export * from './bitmapPixel';
|
|
32
|
+
export * from './bitmapPixelate';
|
|
33
|
+
export * from './bitmapQuery';
|
|
34
|
+
export * from './bitmapRegion';
|
|
35
|
+
export * from './bitmapResize';
|
|
36
|
+
export * from './bitmapRotate';
|
|
37
|
+
export * from './bitmapShadow';
|
|
38
|
+
export * from './bitmapSharpen';
|
|
39
|
+
export * from './bitmapTone';
|
|
40
|
+
export * from './bitmapTransform';
|
|
41
|
+
export * from './bitmapWarp';
|
|
42
|
+
export * from './explainBitmapReadback';
|
|
43
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
|
package/dist/contract.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export * from './bitmap';
|
|
2
|
+
export * from './bitmapAffine';
|
|
3
|
+
export * from './bitmapAlpha';
|
|
4
|
+
export * from './bitmapBevel';
|
|
5
|
+
export * from './bitmapBlur';
|
|
6
|
+
export * from './bitmapChannel';
|
|
7
|
+
export * from './bitmapColorMatrix';
|
|
8
|
+
export * from './bitmapCompare';
|
|
9
|
+
export * from './bitmapComposite';
|
|
10
|
+
export * from './bitmapConvolution';
|
|
11
|
+
export * from './bitmapCopy';
|
|
12
|
+
export * from './bitmapCoverage';
|
|
13
|
+
export * from './bitmapCrop';
|
|
14
|
+
export * from './bitmapDisplacement';
|
|
15
|
+
export * from './bitmapDissolve';
|
|
16
|
+
export * from './bitmapDraw';
|
|
17
|
+
export * from './bitmapEncode';
|
|
18
|
+
export * from './bitmapFill';
|
|
19
|
+
export * from './bitmapFingerprint';
|
|
20
|
+
export * from './bitmapFlip';
|
|
21
|
+
export * from './bitmapFormat';
|
|
22
|
+
export * from './bitmapFrom';
|
|
23
|
+
export * from './bitmapGradient';
|
|
24
|
+
export * from './bitmapGradientFill';
|
|
25
|
+
export * from './bitmapHistogram';
|
|
26
|
+
export * from './bitmapImageChannel';
|
|
27
|
+
export * from './bitmapMedian';
|
|
28
|
+
export * from './bitmapMorphological';
|
|
29
|
+
export * from './bitmapNoise';
|
|
30
|
+
export * from './bitmapPaletteMap';
|
|
31
|
+
export * from './bitmapPixel';
|
|
32
|
+
export * from './bitmapPixelate';
|
|
33
|
+
export * from './bitmapQuery';
|
|
34
|
+
export * from './bitmapRegion';
|
|
35
|
+
export * from './bitmapResize';
|
|
36
|
+
export * from './bitmapRotate';
|
|
37
|
+
export * from './bitmapShadow';
|
|
38
|
+
export * from './bitmapSharpen';
|
|
39
|
+
export * from './bitmapTone';
|
|
40
|
+
export * from './bitmapTransform';
|
|
41
|
+
export * from './bitmapWarp';
|
|
42
|
+
export * from './explainBitmapReadback';
|
|
43
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainBitmapReadback.d.ts","sourceRoot":"","sources":["../src/explainBitmapReadback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6B,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAerG,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,yBAAyB,CAG3B"}
|