[canvaskit] Add createPattern support to canvasAPI
Add Changelog to start tracking API changes (in preparation
for NPM)
Simplify globalAlpha passing.
API change:
- Make ImageShader take an SkImage instead of encoded bytes.
Bug: skia:
Change-Id: I716f001b54ed58da3f40ae4e060b7098b550af9f
Reviewed-on: https://skia-review.googlesource.com/c/175260
Reviewed-by: Florin Malita <fmalita@chromium.org>
diff --git a/experimental/canvaskit/interface.js b/experimental/canvaskit/interface.js
index e1b9d1f..0cc73d2 100644
--- a/experimental/canvaskit/interface.js
+++ b/experimental/canvaskit/interface.js
@@ -487,7 +487,7 @@
return dpe;
}
- // data is a TypedArray or ArrayBuffer
+ // data is a TypedArray or ArrayBuffer e.g. from fetch().then(resp.arrayBuffer())
CanvasKit.MakeImageFromEncoded = function(data) {
data = new Uint8Array(data);
@@ -507,13 +507,21 @@
return img;
}
- // imgData is an ArrayBuffer of data, e.g. from fetch().then(resp.arrayBuffer())
- CanvasKit.MakeImageShader = function(imgData, xTileMode, yTileMode) {
- var iptr = CanvasKit._malloc(imgData.byteLength);
- CanvasKit.HEAPU8.set(new Uint8Array(imgData), iptr);
- // No need to _free iptr, ImageShader takes it with SkData::MakeFromMalloc
-
- return CanvasKit._MakeImageShader(iptr, imgData.byteLength, xTileMode, yTileMode);
+ // imgData is an Encoded SkImage, e.g. from MakeImageFromEncoded
+ CanvasKit.MakeImageShader = function(img, xTileMode, yTileMode, clampUnpremul, localMatrix) {
+ if (!img) {
+ return null;
+ }
+ clampUnpremul = clampUnpremul || false;
+ if (localMatrix) {
+ // Add perspective args if not provided.
+ if (localMatrix.length === 6) {
+ localMatrix.push(0, 0, 1);
+ }
+ return CanvasKit._MakeImageShader(img, xTileMode, yTileMode, clampUnpremul, localMatrix);
+ } else {
+ return CanvasKit._MakeImageShader(img, xTileMode, yTileMode, clampUnpremul);
+ }
}
// pixels is a Uint8Array