All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
CanvasKit.MakeAnimatedImageFromEncoded, SkCanvas.drawAnimatedImage.CanvasKit.SkFontMgr.FromData which takes several ArrayBuffers of font data, parses them, reading the metadata (e.g. family names) and stores them into a SkFontMgr.no_font compile option should strip out more dead code related to fonts.no_embedded_font option now allows creating a SkFontMgr.FromData instead of always having an empty one.SkCanvas.drawCircle(), SkCanvas.getSaveCount()SkPath.offset(), SkPath.drawOvalSkRRect support (SkCanvas.drawRRect, SkCanvas.drawDRRect, CanvasKit.RRectXY). Advanced users can specify the 8 individual radii, if needed.CanvasKit.computeTonalColors(), which returns TonalColors, which has an ambient SkColor and a spot SkColor.CanvasKit.SkColorFilter and a variety of factories. SkPaint.setColorFilter is the only consumer of these at the moment.CanvasKit.SkColorMatrix with functions .identity(), .scaled(), .concat() and others. Primarily for use with CanvasKit.SkColorFilter.MakeMatrix.MakeSkVertices uses a builder to save a copy.SkPath.arcTo is given seven arguments, it no longer turns the first four into a SkRect automatically, and instead uses them as arcTo(rx, ry, xAxisRotate, useSmallArc, isCCW, x, y) (see SkPath.h for more).SkSurface.grContext now exposed. GrContext has new methods for monitoring/setting the cache limits; tweaking these may lead to better performance in some cases. getResourceCacheLimitBytes, setResourceCacheLimitBytes, getResourceCacheUsageBytesSkCanvas.drawAtlas for efficiently drawing multiple sprites from a sprite sheet with a set of transforms, color blends, etc.SkColorBuilder, RSXFormBuilder, SkRectBuilder which increase performance by reducing the amount of malloc/free calls per frame, given that the array size is fixed.SkPicture support. SkSurface.captureFrameAsSkPicture is a helper function to capture an SkPicture, which can be dumped to disk (for debugging) with SkPicture.DEBUGONLY_saveAsFile.SkImage.readPixels, which returns a TypedArray of pixel values (safe to use anywhere, doesn't need a delete()).GrGLCaps support for WebGL - this shouldn't have any impacts on APIs or correctness, except by perhaps fixing a few bugs in various surface types.CanvasKit.MakeImageShader to SkImage.makeShader - removed clampUnpremul as argument.SkPathMeasure, RSXFormBuilder, SkFont.getWidths, SkTextBlob.MakeFromRSXform which were needed to add the helper function SkTextBlob.MakeOnPath.SkSurface.requestAnimationFrame - wrapper around window.requestAnimationFrame that takes care of the setup/tear down required to use CanvasKit optimally. The callback has an SkCanvas as the first parameter - callers should draw on that.modules/canvaskit (was experimental/canvaskit)CanvasKit.SkMatrix.invertSkCanvas.flush will be removed soon - client should only call SkSurface.flushCanvasKit.MakeSkVertices. The previous (and current default) behavior was for this to be true; some applications may go faster if set to false.SkCanvas.saveLayer(rect, paint)SkCanvas.restoreToCount(int) which can be used with the output of .save() and .saveLayer().See CanvasKit.MakeParticles(json);GetWebGLContext, MakeGrContext, MakeOnScreenGLSurface, MakeRenderTarget.SkSurface.getSurface() and SkCanvas.getSurface() for making compatible surfaces (typically used as a workspace and then “saved” with surface.makeImageSnapshot())CanvasKit.MakeWebGLCanvasSurface no longer takes a webgl context as a first arg, only a canvas or an id of a canvas. If users want to manage their own GL contexts, they should build the SkSurface themselves with GetWebGLContext -> MakeGrContext -> MakeOnScreenGLSurface.MakeManagedAnimation for supplying external assets (like images, fonts).SkPath.addRoundRect, SkPath.reset, SkPath.rewind exposed.SkCanvas.drawArc, SkCanvas.drawLine, SkCanvas.drawOval, SkCanvas.drawRoundRect exposed.CanvasKit.MakePathFromCmds and SkPath.toCmds.SkCanvas.drawTextBlob() and SkCanvas.SkTextBlob.MakeFromText() to draw text to a canvas.CanvasKit.TextEncoding enum. For use with SkTextBlob.ShapedText object and SkCanvas.drawText. At compile time, one can choose between using Harfbuzz/ICU (default) or a primitive one (“primitive_shaper”) which just does line breaking. Using Harfbuzz/ICU substantially increases code size (4.3 MB to 6.4 MB).SkCanvas.drawText() now requires an SkFont object for raw strings.SkPaint.setTextSize(), SkPaint.getTextSize(), SkPaint.setTypeface() which should be replaced by using SkFont.CanvasKitInit().then() interface (see 0.3.1 notes)ready() if already loaded.SkFont now exposed.MakeCanvasSurface can now take a canvas element directly.MakeWebGLCanvasSurface can now take a WebGL context as an integer and use it directly.CanvasKitInit(...).then() is no longer the recommended way to initialize things. It will be removed in 0.4.0. Use CanvasKitInit(...).ready(), which returns a real Promise.SkPaint.measureText - use SkFont.measureText instead.no_canvas to the compile.sh invocation.CanvasKit.FontMgr.DefaultRef() and fontmgr.MakeTypefaceFromData to load fonts.SkPath.setVolatile. Some animations see performance improvements by setting their paths' volatility to true.SkPath.addRect now correctly draws counter-clockwise vs clockwise.CanvasKit.MakeImageShader no longer takes encoded bytes, but an SkImage, created from CanvasKit.MakeImageFromEncoded. Additionally, the optional parameters clampIfUnpremul and localMatrix have been exposed.SkPath.arcTo now takes startAngle, sweepAngle, forceMoveTo as additional parameters.SkPath.stroke has a new option precision It defaults to 1.0.fontmgr.MakeTypefaceFromData for more font variety.CanvasKit.initFonts() - no longer needed.Beginning of Changelog history