[canvaskit] Add test and extern for MakeImage
This was originally exposed for use with specs/web-img-decode and has
seen some actual use.
Change-Id: I6cc4fdf431b45cbbc21b91881c688c5545ca44a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/257317
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/modules/canvaskit/interface.js b/modules/canvaskit/interface.js
index a859cbd..294e5db 100644
--- a/modules/canvaskit/interface.js
+++ b/modules/canvaskit/interface.js
@@ -1065,20 +1065,20 @@
return img;
}
-// pixels is a Uint8Array
+// pixels must be a Uint8Array with bytes representing the pixel values
+// (e.g. each set of 4 bytes could represent RGBA values for a single pixel).
CanvasKit.MakeImage = function(pixels, width, height, alphaType, colorType) {
- var bytesPerPixel = pixels.byteLength / (width * height);
+ var bytesPerPixel = pixels.length / (width * height);
var info = {
'width': width,
'height': height,
'alphaType': alphaType,
'colorType': colorType,
};
- var pptr = CanvasKit._malloc(pixels.byteLength);
- CanvasKit.HEAPU8.set(pixels, pptr);
- // No need to _free iptr, Image takes it with SkData::MakeFromMalloc
+ var pptr = copy1dArray(pixels, CanvasKit.HEAPU8);
+ // No need to _free pptr, Image takes it with SkData::MakeFromMalloc
- return CanvasKit._MakeImage(info, pptr, pixels.byteLength, width * bytesPerPixel);
+ return CanvasKit._MakeImage(info, pptr, pixels.length, width * bytesPerPixel);
}
CanvasKit.MakeLinearGradientShader = function(start, end, colors, pos, mode, localMatrix, flags) {