@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.
Files changed (219) hide show
  1. package/dist/bitmap.d.ts +17 -0
  2. package/dist/bitmap.d.ts.map +1 -0
  3. package/dist/bitmap.js +87 -0
  4. package/dist/bitmap.js.map +1 -0
  5. package/dist/bitmapAffine.d.ts +27 -0
  6. package/dist/bitmapAffine.d.ts.map +1 -0
  7. package/dist/bitmapAffine.js +159 -0
  8. package/dist/bitmapAffine.js.map +1 -0
  9. package/dist/bitmapAlpha.d.ts +27 -0
  10. package/dist/bitmapAlpha.d.ts.map +1 -0
  11. package/dist/bitmapAlpha.js +83 -0
  12. package/dist/bitmapAlpha.js.map +1 -0
  13. package/dist/bitmapBevel.d.ts +24 -0
  14. package/dist/bitmapBevel.d.ts.map +1 -0
  15. package/dist/bitmapBevel.js +102 -0
  16. package/dist/bitmapBevel.js.map +1 -0
  17. package/dist/bitmapBlur.d.ts +57 -0
  18. package/dist/bitmapBlur.d.ts.map +1 -0
  19. package/dist/bitmapBlur.js +263 -0
  20. package/dist/bitmapBlur.js.map +1 -0
  21. package/dist/bitmapChannel.d.ts +24 -0
  22. package/dist/bitmapChannel.d.ts.map +1 -0
  23. package/dist/bitmapChannel.js +127 -0
  24. package/dist/bitmapChannel.js.map +1 -0
  25. package/dist/bitmapColorMatrix.d.ts +57 -0
  26. package/dist/bitmapColorMatrix.d.ts.map +1 -0
  27. package/dist/bitmapColorMatrix.js +127 -0
  28. package/dist/bitmapColorMatrix.js.map +1 -0
  29. package/dist/bitmapCompare.d.ts +18 -0
  30. package/dist/bitmapCompare.d.ts.map +1 -0
  31. package/dist/bitmapCompare.js +64 -0
  32. package/dist/bitmapCompare.js.map +1 -0
  33. package/dist/bitmapComposite.d.ts +54 -0
  34. package/dist/bitmapComposite.d.ts.map +1 -0
  35. package/dist/bitmapComposite.js +262 -0
  36. package/dist/bitmapComposite.js.map +1 -0
  37. package/dist/bitmapConvolution.d.ts +17 -0
  38. package/dist/bitmapConvolution.d.ts.map +1 -0
  39. package/dist/bitmapConvolution.js +103 -0
  40. package/dist/bitmapConvolution.js.map +1 -0
  41. package/dist/bitmapCopy.d.ts +23 -0
  42. package/dist/bitmapCopy.d.ts.map +1 -0
  43. package/dist/bitmapCopy.js +78 -0
  44. package/dist/bitmapCopy.js.map +1 -0
  45. package/dist/bitmapCoverage.d.ts +11 -0
  46. package/dist/bitmapCoverage.d.ts.map +1 -0
  47. package/dist/bitmapCoverage.js +29 -0
  48. package/dist/bitmapCoverage.js.map +1 -0
  49. package/dist/bitmapCrop.d.ts +33 -0
  50. package/dist/bitmapCrop.d.ts.map +1 -0
  51. package/dist/bitmapCrop.js +175 -0
  52. package/dist/bitmapCrop.js.map +1 -0
  53. package/dist/bitmapDisplacement.d.ts +22 -0
  54. package/dist/bitmapDisplacement.d.ts.map +1 -0
  55. package/dist/bitmapDisplacement.js +111 -0
  56. package/dist/bitmapDisplacement.js.map +1 -0
  57. package/dist/bitmapDissolve.d.ts +21 -0
  58. package/dist/bitmapDissolve.d.ts.map +1 -0
  59. package/dist/bitmapDissolve.js +97 -0
  60. package/dist/bitmapDissolve.js.map +1 -0
  61. package/dist/bitmapDraw.d.ts +8 -0
  62. package/dist/bitmapDraw.d.ts.map +1 -0
  63. package/dist/bitmapDraw.js +14 -0
  64. package/dist/bitmapDraw.js.map +1 -0
  65. package/dist/bitmapEncode.d.ts +3 -0
  66. package/dist/bitmapEncode.d.ts.map +1 -0
  67. package/dist/bitmapEncode.js +18 -0
  68. package/dist/bitmapEncode.js.map +1 -0
  69. package/dist/bitmapFill.d.ts +12 -0
  70. package/dist/bitmapFill.d.ts.map +1 -0
  71. package/dist/bitmapFill.js +85 -0
  72. package/dist/bitmapFill.js.map +1 -0
  73. package/dist/bitmapFingerprint.d.ts +26 -0
  74. package/dist/bitmapFingerprint.d.ts.map +1 -0
  75. package/dist/bitmapFingerprint.js +99 -0
  76. package/dist/bitmapFingerprint.js.map +1 -0
  77. package/dist/bitmapFlip.d.ts +16 -0
  78. package/dist/bitmapFlip.d.ts.map +1 -0
  79. package/dist/bitmapFlip.js +98 -0
  80. package/dist/bitmapFlip.js.map +1 -0
  81. package/dist/bitmapFormat.d.ts +26 -0
  82. package/dist/bitmapFormat.d.ts.map +1 -0
  83. package/dist/bitmapFormat.js +80 -0
  84. package/dist/bitmapFormat.js.map +1 -0
  85. package/dist/bitmapFrom.d.ts +23 -0
  86. package/dist/bitmapFrom.d.ts.map +1 -0
  87. package/dist/bitmapFrom.js +90 -0
  88. package/dist/bitmapFrom.js.map +1 -0
  89. package/dist/bitmapGradient.d.ts +36 -0
  90. package/dist/bitmapGradient.d.ts.map +1 -0
  91. package/dist/bitmapGradient.js +176 -0
  92. package/dist/bitmapGradient.js.map +1 -0
  93. package/dist/bitmapGradientFill.d.ts +32 -0
  94. package/dist/bitmapGradientFill.d.ts.map +1 -0
  95. package/dist/bitmapGradientFill.js +120 -0
  96. package/dist/bitmapGradientFill.js.map +1 -0
  97. package/dist/bitmapHistogram.d.ts +20 -0
  98. package/dist/bitmapHistogram.d.ts.map +1 -0
  99. package/dist/bitmapHistogram.js +61 -0
  100. package/dist/bitmapHistogram.js.map +1 -0
  101. package/dist/bitmapImageChannel.d.ts +2 -0
  102. package/dist/bitmapImageChannel.d.ts.map +1 -0
  103. package/dist/bitmapImageChannel.js +2 -0
  104. package/dist/bitmapImageChannel.js.map +1 -0
  105. package/dist/bitmapMedian.d.ts +14 -0
  106. package/dist/bitmapMedian.d.ts.map +1 -0
  107. package/dist/bitmapMedian.js +77 -0
  108. package/dist/bitmapMedian.js.map +1 -0
  109. package/dist/bitmapMorphological.d.ts +29 -0
  110. package/dist/bitmapMorphological.d.ts.map +1 -0
  111. package/dist/bitmapMorphological.js +81 -0
  112. package/dist/bitmapMorphological.js.map +1 -0
  113. package/dist/bitmapNoise.d.ts +48 -0
  114. package/dist/bitmapNoise.d.ts.map +1 -0
  115. package/dist/bitmapNoise.js +245 -0
  116. package/dist/bitmapNoise.js.map +1 -0
  117. package/dist/bitmapPaletteMap.d.ts +17 -0
  118. package/dist/bitmapPaletteMap.d.ts.map +1 -0
  119. package/dist/bitmapPaletteMap.js +45 -0
  120. package/dist/bitmapPaletteMap.js.map +1 -0
  121. package/dist/bitmapPixel.d.ts +9 -0
  122. package/dist/bitmapPixel.d.ts.map +1 -0
  123. package/dist/bitmapPixel.js +36 -0
  124. package/dist/bitmapPixel.js.map +1 -0
  125. package/dist/bitmapPixelate.d.ts +13 -0
  126. package/dist/bitmapPixelate.d.ts.map +1 -0
  127. package/dist/bitmapPixelate.js +61 -0
  128. package/dist/bitmapPixelate.js.map +1 -0
  129. package/dist/bitmapQuery.d.ts +13 -0
  130. package/dist/bitmapQuery.d.ts.map +1 -0
  131. package/dist/bitmapQuery.js +46 -0
  132. package/dist/bitmapQuery.js.map +1 -0
  133. package/dist/bitmapRegion.d.ts +20 -0
  134. package/dist/bitmapRegion.d.ts.map +1 -0
  135. package/dist/bitmapRegion.js +28 -0
  136. package/dist/bitmapRegion.js.map +1 -0
  137. package/dist/bitmapResize.d.ts +17 -0
  138. package/dist/bitmapResize.d.ts.map +1 -0
  139. package/dist/bitmapResize.js +191 -0
  140. package/dist/bitmapResize.js.map +1 -0
  141. package/dist/bitmapRotate.d.ts +32 -0
  142. package/dist/bitmapRotate.d.ts.map +1 -0
  143. package/dist/bitmapRotate.js +143 -0
  144. package/dist/bitmapRotate.js.map +1 -0
  145. package/dist/bitmapShadow.d.ts +72 -0
  146. package/dist/bitmapShadow.d.ts.map +1 -0
  147. package/dist/bitmapShadow.js +175 -0
  148. package/dist/bitmapShadow.js.map +1 -0
  149. package/dist/bitmapSharpen.d.ts +16 -0
  150. package/dist/bitmapSharpen.d.ts.map +1 -0
  151. package/dist/bitmapSharpen.js +47 -0
  152. package/dist/bitmapSharpen.js.map +1 -0
  153. package/dist/bitmapTone.d.ts +28 -0
  154. package/dist/bitmapTone.d.ts.map +1 -0
  155. package/dist/bitmapTone.js +69 -0
  156. package/dist/bitmapTone.js.map +1 -0
  157. package/dist/bitmapTransform.d.ts +40 -0
  158. package/dist/bitmapTransform.d.ts.map +1 -0
  159. package/dist/bitmapTransform.js +163 -0
  160. package/dist/bitmapTransform.js.map +1 -0
  161. package/dist/bitmapWarp.d.ts +48 -0
  162. package/dist/bitmapWarp.d.ts.map +1 -0
  163. package/dist/bitmapWarp.js +284 -0
  164. package/dist/bitmapWarp.js.map +1 -0
  165. package/dist/contract.d.ts +43 -0
  166. package/dist/contract.d.ts.map +1 -0
  167. package/dist/contract.js +43 -0
  168. package/dist/contract.js.map +1 -0
  169. package/dist/explainBitmapReadback.d.ts +3 -0
  170. package/dist/explainBitmapReadback.d.ts.map +1 -0
  171. package/dist/explainBitmapReadback.js +39 -0
  172. package/dist/explainBitmapReadback.js.map +1 -0
  173. package/dist/index.d.ts +2 -0
  174. package/dist/index.d.ts.map +1 -0
  175. package/dist/index.js +2 -0
  176. package/dist/index.js.map +1 -0
  177. package/package.json +48 -0
  178. package/src/bitmap.test.ts +88 -0
  179. package/src/bitmapAffine.test.ts +98 -0
  180. package/src/bitmapAlpha.test.ts +110 -0
  181. package/src/bitmapBevel.test.ts +61 -0
  182. package/src/bitmapBlur.test.ts +234 -0
  183. package/src/bitmapChannel.test.ts +97 -0
  184. package/src/bitmapColorMatrix.test.ts +214 -0
  185. package/src/bitmapCompare.test.ts +92 -0
  186. package/src/bitmapComposite.test.ts +259 -0
  187. package/src/bitmapConvolution.test.ts +130 -0
  188. package/src/bitmapCopy.test.ts +48 -0
  189. package/src/bitmapCoverage.test.ts +39 -0
  190. package/src/bitmapCrop.test.ts +116 -0
  191. package/src/bitmapDisplacement.test.ts +181 -0
  192. package/src/bitmapDissolve.test.ts +99 -0
  193. package/src/bitmapDraw.test.ts +68 -0
  194. package/src/bitmapEncode.test.ts +18 -0
  195. package/src/bitmapFill.test.ts +83 -0
  196. package/src/bitmapFingerprint.test.ts +103 -0
  197. package/src/bitmapFlip.test.ts +53 -0
  198. package/src/bitmapFormat.test.ts +124 -0
  199. package/src/bitmapFrom.test.ts +86 -0
  200. package/src/bitmapGradient.test.ts +85 -0
  201. package/src/bitmapGradientFill.test.ts +107 -0
  202. package/src/bitmapHistogram.test.ts +64 -0
  203. package/src/bitmapImageChannel.test.ts +19 -0
  204. package/src/bitmapMedian.test.ts +39 -0
  205. package/src/bitmapMorphological.test.ts +69 -0
  206. package/src/bitmapNoise.test.ts +163 -0
  207. package/src/bitmapPaletteMap.test.ts +49 -0
  208. package/src/bitmapPixel.test.ts +117 -0
  209. package/src/bitmapPixelate.test.ts +40 -0
  210. package/src/bitmapQuery.test.ts +42 -0
  211. package/src/bitmapRegion.test.ts +34 -0
  212. package/src/bitmapResize.test.ts +106 -0
  213. package/src/bitmapRotate.test.ts +108 -0
  214. package/src/bitmapShadow.test.ts +159 -0
  215. package/src/bitmapSharpen.test.ts +44 -0
  216. package/src/bitmapTone.test.ts +104 -0
  217. package/src/bitmapTransform.test.ts +128 -0
  218. package/src/bitmapWarp.test.ts +118 -0
  219. 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"}
@@ -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,3 @@
1
+ import type { BitmapReadbackExplanation } from '@flighthq/types/contract';
2
+ export declare function explainBitmapReadback(source: CanvasImageSource, width: number, height: number): BitmapReadbackExplanation;
3
+ //# sourceMappingURL=explainBitmapReadback.d.ts.map
@@ -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"}