[canvaskit] Add gradients and clips
Refactors things inside to support both color
and gradient as _fillStyle/_strokeStyle.
Bug: skia:
Change-Id: I364ceb7d55c41e11161d5577dcd1611a592bbc29
Reviewed-on: https://skia-review.googlesource.com/c/173421
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/experimental/canvaskit/interface.js b/experimental/canvaskit/interface.js
index 2481896..6ecb327 100644
--- a/experimental/canvaskit/interface.js
+++ b/experimental/canvaskit/interface.js
@@ -434,7 +434,6 @@
}
CanvasKit.MakeRadialGradientShader = function(center, radius, colors, pos, mode, localMatrix, flags) {
- // TODO: matrix and flags
var colorPtr = copy1dArray(colors, CanvasKit.HEAP32);
var posPtr = copy1dArray(pos, CanvasKit.HEAPF32);
flags = flags || 0;
@@ -456,6 +455,31 @@
return rgs;
}
+ CanvasKit.MakeTwoPointConicalGradientShader = function(start, startRadius, end, endRadius,
+ colors, pos, mode, localMatrix, flags) {
+ var colorPtr = copy1dArray(colors, CanvasKit.HEAP32);
+ var posPtr = copy1dArray(pos, CanvasKit.HEAPF32);
+ flags = flags || 0;
+
+ if (localMatrix) {
+ // Add perspective args if not provided.
+ if (localMatrix.length === 6) {
+ localMatrix.push(0, 0, 1);
+ }
+ var rgs = CanvasKit._MakeTwoPointConicalGradientShader(
+ start, startRadius, end, endRadius,
+ colorPtr, posPtr, colors.length, mode, flags, localMatrix);
+ } else {
+ var rgs = CanvasKit._MakeTwoPointConicalGradientShader(
+ start, startRadius, end, endRadius,
+ colorPtr, posPtr, colors.length, mode, flags);
+ }
+
+ CanvasKit._free(colorPtr);
+ CanvasKit._free(posPtr);
+ return rgs;
+ }
+
CanvasKit.MakeSkVertices = function(mode, positions, textureCoordinates, colors,
boneIndices, boneWeights, indices) {
var positionPtr = copy2dArray(positions, CanvasKit.HEAPF32);