[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