pixel-data-js 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/index.prod.cjs +157 -31
  2. package/dist/index.prod.cjs.map +1 -1
  3. package/dist/index.prod.d.ts +24 -12
  4. package/dist/index.prod.js +153 -30
  5. package/dist/index.prod.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/History/PixelAccumulator.ts +27 -6
  8. package/src/History/PixelMutator/mutatorApplyAlphaMask.ts +2 -0
  9. package/src/History/PixelMutator/mutatorApplyBinaryMask.ts +5 -1
  10. package/src/History/PixelMutator/mutatorApplyMask.ts +1 -0
  11. package/src/History/PixelMutator/mutatorBlendAlphaMask.ts +1 -0
  12. package/src/History/PixelMutator/mutatorBlendBinaryMask.ts +1 -0
  13. package/src/History/PixelMutator/mutatorBlendColor.ts +2 -0
  14. package/src/History/PixelMutator/mutatorBlendColorPaintAlphaMask.ts +1 -0
  15. package/src/History/PixelMutator/mutatorBlendColorPaintBinaryMask.ts +1 -0
  16. package/src/History/PixelMutator/mutatorBlendColorPaintMask.ts +1 -0
  17. package/src/History/PixelMutator/mutatorBlendColorPaintRect.ts +2 -0
  18. package/src/History/PixelMutator/mutatorBlendMask.ts +1 -0
  19. package/src/History/PixelMutator/mutatorBlendPixel.ts +1 -0
  20. package/src/History/PixelMutator/mutatorBlendPixelData.ts +1 -0
  21. package/src/History/PixelMutator/mutatorClear.ts +2 -1
  22. package/src/History/PixelMutator/mutatorFill.ts +53 -37
  23. package/src/History/PixelMutator/mutatorFillBinaryMask.ts +2 -1
  24. package/src/History/PixelMutator/mutatorInvert.ts +3 -2
  25. package/src/History/PixelMutator.ts +1 -2
  26. package/src/Paint/Render/PaintCursorRenderer.ts +9 -0
  27. package/src/PixelData/_pixelData-types.ts +7 -0
  28. package/src/PixelData/cropPixelData.ts +36 -0
  29. package/src/PixelData/fillPixelData.ts +6 -6
  30. package/src/PixelData/trimPixelData.ts +49 -0
  31. package/src/index.ts +2 -0
@@ -71,6 +71,7 @@ __export(src_exports, {
71
71
  copyImageDataLike: () => copyImageDataLike,
72
72
  copyMask: () => copyMask,
73
73
  copyPixelData: () => copyPixelData,
74
+ cropPixelData: () => cropPixelData,
74
75
  darkenFast: () => darkenFast,
75
76
  darkenPerfect: () => darkenPerfect,
76
77
  darkerFast: () => darkerFast,
@@ -109,6 +110,7 @@ __export(src_exports, {
109
110
  getImageDataFromClipboard: () => getImageDataFromClipboard,
110
111
  getIndexedImageColor: () => getIndexedImageColor,
111
112
  getIndexedImageColorCounts: () => getIndexedImageColorCounts,
113
+ getPixelDataTransparentTrimmedBounds: () => getPixelDataTransparentTrimmedBounds,
112
114
  getRectsBounds: () => getRectsBounds,
113
115
  getSupportedPixelFormats: () => getSupportedPixelFormats,
114
116
  hardLightFast: () => hardLightFast,
@@ -204,7 +206,6 @@ __export(src_exports, {
204
206
  mutatorClear: () => mutatorClear,
205
207
  mutatorFill: () => mutatorFill,
206
208
  mutatorFillBinaryMask: () => mutatorFillBinaryMask,
207
- mutatorFillRect: () => mutatorFillRect,
208
209
  mutatorInvert: () => mutatorInvert,
209
210
  overlayFast: () => overlayFast,
210
211
  overlayPerfect: () => overlayPerfect,
@@ -248,6 +249,8 @@ __export(src_exports, {
248
249
  toBlendModeIndexAndName: () => toBlendModeIndexAndName,
249
250
  trimMaskRectBounds: () => trimMaskRectBounds,
250
251
  trimRectBounds: () => trimRectBounds,
252
+ trimTransparentPixelData: () => trimTransparentPixelData,
253
+ trimTransparentPixelDataInPlace: () => trimTransparentPixelDataInPlace,
251
254
  uInt32ArrayToImageData: () => uInt32ArrayToImageData,
252
255
  uInt32ArrayToImageDataLike: () => uInt32ArrayToImageDataLike,
253
256
  uInt32ArrayToPixelData: () => uInt32ArrayToPixelData,
@@ -2416,6 +2419,11 @@ var PixelAccumulator = class {
2416
2419
  storePixelBeforeState(x, y) {
2417
2420
  const shift = this.config.tileShift;
2418
2421
  const columns = this.config.targetColumns;
2422
+ const targetWidth = this.config.target.w;
2423
+ const targetHeight = this.config.target.h;
2424
+ if (x < 0 || x >= targetWidth || y < 0 || y >= targetHeight) {
2425
+ return null;
2426
+ }
2419
2427
  const tx = x >> shift;
2420
2428
  const ty = y >> shift;
2421
2429
  const id = ty * columns + tx;
@@ -2446,10 +2454,19 @@ var PixelAccumulator = class {
2446
2454
  storeRegionBeforeState(x, y, w, h) {
2447
2455
  const shift = this.config.tileShift;
2448
2456
  const columns = this.config.targetColumns;
2449
- const startX = x >> shift;
2450
- const startY = y >> shift;
2451
- const endX = x + w - 1 >> shift;
2452
- const endY = y + h - 1 >> shift;
2457
+ const targetWidth = this.config.target.w;
2458
+ const targetHeight = this.config.target.h;
2459
+ const clipX1 = Math.max(0, x);
2460
+ const clipY1 = Math.max(0, y);
2461
+ const clipX2 = Math.min(targetWidth - 1, x + w - 1);
2462
+ const clipY2 = Math.min(targetHeight - 1, y + h - 1);
2463
+ if (clipX2 < clipX1 || clipY2 < clipY1) {
2464
+ return null;
2465
+ }
2466
+ const startX = clipX1 >> shift;
2467
+ const startY = clipY1 >> shift;
2468
+ const endX = clipX2 >> shift;
2469
+ const endY = clipY2 >> shift;
2453
2470
  const startIndex = this.beforeTiles.length;
2454
2471
  for (let ty = startY; ty <= endY; ty++) {
2455
2472
  for (let tx = startX; tx <= endX; tx++) {
@@ -2920,6 +2937,7 @@ var mutatorApplyAlphaMask = ((writer, deps = defaults) => {
2920
2937
  const w = opts?.w ?? target.w;
2921
2938
  const h = opts?.h ?? target.h;
2922
2939
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
2940
+ if (!didChange) return false;
2923
2941
  return didChange(applyAlphaMaskToPixelData2(target, mask, opts));
2924
2942
  }
2925
2943
  };
@@ -3022,7 +3040,12 @@ var mutatorApplyBinaryMask = ((writer, deps = defaults2) => {
3022
3040
  const w = opts?.w ?? target.w;
3023
3041
  const h = opts?.h ?? target.h;
3024
3042
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3025
- return didChange(applyBinaryMaskToPixelData2(target, mask, opts));
3043
+ if (!didChange) return false;
3044
+ const b = applyBinaryMaskToPixelData2(target, mask, opts);
3045
+ console.log({
3046
+ b
3047
+ });
3048
+ return didChange(b);
3026
3049
  }
3027
3050
  };
3028
3051
  });
@@ -3045,6 +3068,7 @@ var mutatorApplyMask = ((writer, deps = defaults3) => {
3045
3068
  const w = opts?.w ?? target.w;
3046
3069
  const h = opts?.h ?? target.h;
3047
3070
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3071
+ if (!didChange) return false;
3048
3072
  if (mask.type === 1 /* BINARY */) {
3049
3073
  return didChange(applyBinaryMaskToPixelData2(target, mask, opts));
3050
3074
  } else {
@@ -3189,6 +3213,7 @@ var mutatorBlendAlphaMask = ((writer, deps = defaults4) => {
3189
3213
  const w = opts?.w ?? src.w;
3190
3214
  const h = opts?.h ?? src.h;
3191
3215
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3216
+ if (!didChange) return false;
3192
3217
  return didChange(blendPixelDataAlphaMask2(writer.config.target, src, mask, opts));
3193
3218
  }
3194
3219
  };
@@ -3316,6 +3341,7 @@ var mutatorBlendBinaryMask = ((writer, deps = defaults5) => {
3316
3341
  const w = opts?.w ?? src.w;
3317
3342
  const h = opts?.h ?? src.h;
3318
3343
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3344
+ if (!didChange) return false;
3319
3345
  return didChange(blendPixelDataBinaryMask2(writer.config.target, src, mask, opts));
3320
3346
  }
3321
3347
  };
@@ -3390,6 +3416,7 @@ var mutatorBlendColor = ((writer, deps = defaults6) => {
3390
3416
  const w = opts?.w ?? target.w;
3391
3417
  const h = opts?.h ?? target.h;
3392
3418
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3419
+ if (!didChange) return false;
3393
3420
  return didChange(blendColorPixelData2(target, color, opts));
3394
3421
  }
3395
3422
  };
@@ -3502,6 +3529,7 @@ var mutatorBlendColorPaintAlphaMask = ((writer, deps = defaults7) => {
3502
3529
  const tx = x + mask.centerOffsetX;
3503
3530
  const ty = y + mask.centerOffsetY;
3504
3531
  const didChange = writer.accumulator.storeRegionBeforeState(tx, ty, mask.w, mask.h);
3532
+ if (!didChange) return false;
3505
3533
  OPTS.x = tx;
3506
3534
  OPTS.y = ty;
3507
3535
  OPTS.alpha = alpha;
@@ -3598,6 +3626,7 @@ var mutatorBlendColorPaintBinaryMask = ((writer, deps = defaults8) => {
3598
3626
  const tx = x + mask.centerOffsetX;
3599
3627
  const ty = y + mask.centerOffsetY;
3600
3628
  const didChange = writer.accumulator.storeRegionBeforeState(tx, ty, mask.w, mask.h);
3629
+ if (!didChange) return false;
3601
3630
  OPTS.x = tx;
3602
3631
  OPTS.y = ty;
3603
3632
  OPTS.alpha = alpha;
@@ -3628,6 +3657,7 @@ var mutatorBlendColorPaintMask = ((writer, deps = defaults9) => {
3628
3657
  const tx = x + mask.centerOffsetX;
3629
3658
  const ty = y + mask.centerOffsetY;
3630
3659
  const didChange = writer.accumulator.storeRegionBeforeState(tx, ty, mask.w, mask.h);
3660
+ if (!didChange) return false;
3631
3661
  OPTS.x = tx;
3632
3662
  OPTS.y = ty;
3633
3663
  OPTS.alpha = alpha;
@@ -3669,6 +3699,7 @@ var mutatorBlendColorPaintRect = ((writer, deps = defaults10) => {
3669
3699
  OPTS.blendFn = blendFn;
3670
3700
  OPTS.alpha = alpha;
3671
3701
  const didChange = writer.accumulator.storeRegionBeforeState(topLeftX, topLeftY, brushWidth, brushHeight);
3702
+ if (!didChange) return false;
3672
3703
  return didChange(blendColorPixelData2(target, color, OPTS));
3673
3704
  }
3674
3705
  };
@@ -3691,6 +3722,7 @@ var mutatorBlendMask = ((writer, deps = defaults11) => {
3691
3722
  const w = opts?.w ?? src.w;
3692
3723
  const h = opts?.h ?? src.h;
3693
3724
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3725
+ if (!didChange) return false;
3694
3726
  if (mask.type === 1 /* BINARY */) {
3695
3727
  return didChange(blendPixelDataBinaryMask2(writer.config.target, src, mask, opts));
3696
3728
  } else {
@@ -3737,6 +3769,7 @@ var mutatorBlendPixel = ((writer, deps = defaults12) => {
3737
3769
  return {
3738
3770
  blendPixel(x, y, color, alpha, blendFn) {
3739
3771
  const didChange = writer.accumulator.storePixelBeforeState(x, y);
3772
+ if (!didChange) return false;
3740
3773
  return didChange(blendPixel2(writer.config.target, x, y, color, alpha, blendFn));
3741
3774
  }
3742
3775
  };
@@ -3844,6 +3877,7 @@ var mutatorBlendPixelData = ((writer, deps = defaults13) => {
3844
3877
  const w = opts?.w ?? src.w;
3845
3878
  const h = opts?.h ?? src.h;
3846
3879
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3880
+ if (!didChange) return false;
3847
3881
  return didChange(blendPixelData2(writer.config.target, src, opts));
3848
3882
  }
3849
3883
  };
@@ -3857,16 +3891,16 @@ function fillPixelData(dst, color, _x, _y, _w, _h) {
3857
3891
  let y;
3858
3892
  let w;
3859
3893
  let h;
3860
- if (typeof _x === "object") {
3861
- x = _x.x ?? 0;
3862
- y = _x.y ?? 0;
3863
- w = _x.w ?? dstW;
3864
- h = _x.h ?? dstH;
3865
- } else if (typeof _x === "number") {
3894
+ if (typeof _x === "number") {
3866
3895
  x = _x;
3867
3896
  y = _y;
3868
3897
  w = _w;
3869
3898
  h = _h;
3899
+ } else if (typeof _x === "object") {
3900
+ x = _x.x ?? 0;
3901
+ y = _x.y ?? 0;
3902
+ w = _x.w ?? dstW;
3903
+ h = _x.h ?? dstH;
3870
3904
  } else {
3871
3905
  x = 0;
3872
3906
  y = 0;
@@ -3931,6 +3965,7 @@ var mutatorClear = ((writer, deps = defaults14) => {
3931
3965
  const w = rect?.w ?? target.w;
3932
3966
  const h = rect?.h ?? target.h;
3933
3967
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3968
+ if (!didChange) return false;
3934
3969
  return didChange(fillPixelData2(target, 0, x, y, w, h));
3935
3970
  }
3936
3971
  };
@@ -3944,24 +3979,37 @@ var mutatorFill = ((writer, deps = defaults15) => {
3944
3979
  const {
3945
3980
  fillPixelData: fillPixelData2 = defaults15.fillPixelData
3946
3981
  } = deps;
3947
- return {
3948
- fill(color, x = 0, y = 0, w = writer.config.target.w, h = writer.config.target.h) {
3949
- const target = writer.config.target;
3950
- const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
3951
- return didChange(fillPixelData2(target, color, x, y, w, h));
3982
+ const config = writer.config;
3983
+ function fill(color, _x, _y, _w, _h) {
3984
+ const target = config.target;
3985
+ const dstW = target.w;
3986
+ const dstH = target.h;
3987
+ let x;
3988
+ let y;
3989
+ let w;
3990
+ let h;
3991
+ if (typeof _x === "number") {
3992
+ x = _x;
3993
+ y = _y;
3994
+ w = _w;
3995
+ h = _h;
3996
+ } else if (typeof _x === "object") {
3997
+ x = _x.x ?? 0;
3998
+ y = _x.y ?? 0;
3999
+ w = _x.w ?? dstW;
4000
+ h = _x.h ?? dstH;
4001
+ } else {
4002
+ x = 0;
4003
+ y = 0;
4004
+ w = dstW;
4005
+ h = dstH;
3952
4006
  }
3953
- };
3954
- });
3955
- var mutatorFillRect = ((writer, deps = defaults15) => {
3956
- const {
3957
- fillPixelData: fillPixelData2 = defaults15.fillPixelData
3958
- } = deps;
4007
+ const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
4008
+ if (!didChange) return false;
4009
+ return didChange(fillPixelData2(target, color, x, y, w, h));
4010
+ }
3959
4011
  return {
3960
- fillRect(color, rect) {
3961
- const target = writer.config.target;
3962
- const didChange = writer.accumulator.storeRegionBeforeState(rect.x, rect.y, rect.w, rect.h);
3963
- return didChange(fillPixelData2(target, color, rect.x, rect.y, rect.w, rect.h));
3964
- }
4012
+ fill
3965
4013
  };
3966
4014
  });
3967
4015
 
@@ -4023,6 +4071,7 @@ var mutatorFillBinaryMask = ((writer, deps = defaults16) => {
4023
4071
  return {
4024
4072
  fillBinaryMask(color, mask, x = 0, y = 0) {
4025
4073
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, mask.w, mask.h);
4074
+ if (!didChange) return false;
4026
4075
  return didChange(fillPixelDataBinaryMask2(writer.config.target, color, mask, x, y));
4027
4076
  }
4028
4077
  };
@@ -4107,7 +4156,8 @@ var mutatorInvert = ((writer, deps = defaults17) => {
4107
4156
  const w = opts?.w ?? target.w;
4108
4157
  const h = opts?.h ?? target.h;
4109
4158
  const didChange = writer.accumulator.storeRegionBeforeState(x, y, w, h);
4110
- return didChange(invertPixelData2(target, opts));
4159
+ if (!didChange) return false;
4160
+ return didChange?.(invertPixelData2(target, opts));
4111
4161
  }
4112
4162
  };
4113
4163
  });
@@ -4132,7 +4182,6 @@ function makeFullPixelMutator(writer) {
4132
4182
  ...mutatorClear(writer),
4133
4183
  ...mutatorFill(writer),
4134
4184
  ...mutatorFillBinaryMask(writer),
4135
- ...mutatorFillRect(writer),
4136
4185
  ...mutatorInvert(writer)
4137
4186
  };
4138
4187
  }
@@ -6266,6 +6315,9 @@ function makePaintCursorRenderer(reusableCanvasFactory) {
6266
6315
  const dy = centerY * _scale + currentBrush.centerOffsetY * _scale - 1;
6267
6316
  drawCtx.drawImage(canvas, Math.floor(dx), Math.floor(dy));
6268
6317
  }
6318
+ function drawRaw(drawCtx, x, y) {
6319
+ drawCtx.drawImage(canvas, Math.floor(x * _scale), Math.floor(y * _scale));
6320
+ }
6269
6321
  function getSettings() {
6270
6322
  return {
6271
6323
  color: _color,
@@ -6278,6 +6330,7 @@ function makePaintCursorRenderer(reusableCanvasFactory) {
6278
6330
  getBounds,
6279
6331
  getBoundsScaled: getOutlineBoundsScaled,
6280
6332
  draw,
6333
+ drawRaw,
6281
6334
  getSettings
6282
6335
  };
6283
6336
  }
@@ -6452,6 +6505,36 @@ function copyPixelData(target) {
6452
6505
  return makePixelData(new ImageData(buffer, target.w, target.h));
6453
6506
  }
6454
6507
 
6508
+ // src/PixelData/cropPixelData.ts
6509
+ function cropPixelData(src, x, y, w, h, out) {
6510
+ const cx = Math.max(x, 0);
6511
+ const cy = Math.max(y, 0);
6512
+ const cw = Math.min(x + w, src.w) - cx;
6513
+ const ch = Math.min(y + h, src.h) - cy;
6514
+ if (cw <= 0 || ch <= 0) {
6515
+ throw new Error(`Crop [${x},${y} ${w}x${h}] does not overlap PixelData [${src.w}x${src.h}]`);
6516
+ }
6517
+ const cropped = new ImageData(cw, ch);
6518
+ let dst32;
6519
+ if (out) {
6520
+ setPixelData(out, cropped);
6521
+ dst32 = out.data;
6522
+ } else {
6523
+ dst32 = new Uint32Array(cropped.data.buffer);
6524
+ }
6525
+ for (let row = 0; row < ch; row++) {
6526
+ const srcOffset = (cy + row) * src.w + cx;
6527
+ const dstOffset = row * cw;
6528
+ dst32.set(src.data.subarray(srcOffset, srcOffset + cw), dstOffset);
6529
+ }
6530
+ return out ?? {
6531
+ data: dst32,
6532
+ imageData: cropped,
6533
+ w: cw,
6534
+ h: ch
6535
+ };
6536
+ }
6537
+
6455
6538
  // src/PixelData/extractPixelDataBuffer.ts
6456
6539
  function extractPixelDataBuffer(source, _x, _y, _w, _h) {
6457
6540
  let x;
@@ -6667,6 +6750,46 @@ function rotateSquareInPlace(pixelData) {
6667
6750
  }
6668
6751
  }
6669
6752
 
6753
+ // src/PixelData/trimPixelData.ts
6754
+ function getPixelDataTransparentTrimmedBounds(target) {
6755
+ let minX = target.w;
6756
+ let minY = target.h;
6757
+ let maxX = -1;
6758
+ let maxY = -1;
6759
+ for (let y = 0; y < target.h; y++) {
6760
+ for (let x = 0; x < target.w; x++) {
6761
+ const alpha = target.data[y * target.w + x] >>> 24;
6762
+ if (alpha !== 0) {
6763
+ if (x < minX) minX = x;
6764
+ if (x > maxX) maxX = x;
6765
+ if (y < minY) minY = y;
6766
+ if (y > maxY) maxY = y;
6767
+ }
6768
+ }
6769
+ }
6770
+ if (maxX === -1) return null;
6771
+ return {
6772
+ x: minX,
6773
+ y: minY,
6774
+ w: maxX - minX + 1,
6775
+ h: maxY - minY + 1
6776
+ };
6777
+ }
6778
+ function trimTransparentPixelData(target) {
6779
+ const r = getPixelDataTransparentTrimmedBounds(target);
6780
+ if (!r) {
6781
+ throw new Error("PixelData is fully transparent \u2014 no crop bounds found");
6782
+ }
6783
+ return cropPixelData(target, r.x, r.y, r.w, r.h);
6784
+ }
6785
+ function trimTransparentPixelDataInPlace(target) {
6786
+ const r = getPixelDataTransparentTrimmedBounds(target);
6787
+ if (!r) {
6788
+ throw new Error("PixelData is fully transparent \u2014 no crop bounds found");
6789
+ }
6790
+ cropPixelData(target, r.x, r.y, r.w, r.h, target);
6791
+ }
6792
+
6670
6793
  // src/PixelData/uInt32ArrayToPixelData.ts
6671
6794
  function uInt32ArrayToPixelData(data, width, height) {
6672
6795
  const buffer = data.buffer;
@@ -6826,6 +6949,7 @@ function writePixelData(target, source, x = 0, y = 0) {
6826
6949
  copyImageDataLike,
6827
6950
  copyMask,
6828
6951
  copyPixelData,
6952
+ cropPixelData,
6829
6953
  darkenFast,
6830
6954
  darkenPerfect,
6831
6955
  darkerFast,
@@ -6864,6 +6988,7 @@ function writePixelData(target, source, x = 0, y = 0) {
6864
6988
  getImageDataFromClipboard,
6865
6989
  getIndexedImageColor,
6866
6990
  getIndexedImageColorCounts,
6991
+ getPixelDataTransparentTrimmedBounds,
6867
6992
  getRectsBounds,
6868
6993
  getSupportedPixelFormats,
6869
6994
  hardLightFast,
@@ -6959,7 +7084,6 @@ function writePixelData(target, source, x = 0, y = 0) {
6959
7084
  mutatorClear,
6960
7085
  mutatorFill,
6961
7086
  mutatorFillBinaryMask,
6962
- mutatorFillRect,
6963
7087
  mutatorInvert,
6964
7088
  overlayFast,
6965
7089
  overlayPerfect,
@@ -7003,6 +7127,8 @@ function writePixelData(target, source, x = 0, y = 0) {
7003
7127
  toBlendModeIndexAndName,
7004
7128
  trimMaskRectBounds,
7005
7129
  trimRectBounds,
7130
+ trimTransparentPixelData,
7131
+ trimTransparentPixelDataInPlace,
7006
7132
  uInt32ArrayToImageData,
7007
7133
  uInt32ArrayToImageDataLike,
7008
7134
  uInt32ArrayToPixelData,