skia2/modules/canvaskit
Kevin Lubick f5bc8fba95 [canvaskit] Create an SkImage from a frame of an SkAnimatedImage
Flutter on the web wants to be able to extract arbitrary frames from
an animated image and pass those into functions like:
drawAtlas, drawImage, drawImageRect

This should allow that to happen w/o having to add lots of variants like
drawAnimatedImage. If this sticks, is drawAnimatedImage still useful?
(maybe it saves a copy?)

Change-Id: I99d7045c5dea61d0a1bd6d335c88e7517f2c4fc2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263020
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-01-09 13:25:43 +00:00
..
canvaskit Tweak the CanvasKit interface to SkRuntimeEffect 2020-01-03 16:00:27 +00:00
fonts [canvaskit] Clean up embedded fonts 2019-10-09 14:51:39 +00:00
htmlcanvas [canvaskit] Add various ImageFilters 2019-10-29 14:48:33 +00:00
perf [canvaskit] Roll chrome version for testing 2019-10-18 17:37:52 +00:00
tests [canvaskit] Create an SkImage from a frame of an SkAnimatedImage 2020-01-09 13:25:43 +00:00
.gitignore [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
canvaskit_bindings.cpp [canvaskit] Create an SkImage from a frame of an SkAnimatedImage 2020-01-09 13:25:43 +00:00
CHANGELOG.md [canvaskit] Create an SkImage from a frame of an SkAnimatedImage 2020-01-09 13:25:43 +00:00
compile.sh [canvaskit] Add webp support 2020-01-08 18:10:16 +00:00
cpu.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
debug.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
externs.js [canvaskit] Add npm release target to ship smaller binaries 2020-01-06 13:13:06 +00:00
font.js [canvaskit] Add build flag for pathops 2020-01-06 13:10:43 +00:00
gpu.js [canvaskit] Request an 8 bit stencil buffer from the WebGL 1/2 context 2019-11-15 17:21:48 +00:00
helper.js [canvaskit] Expose a few more methods 2019-11-14 19:00:33 +00:00
interface.js [canvaskit] Add npm release target to ship smaller binaries 2020-01-06 13:13:06 +00:00
karma.bench.conf.js [canvaskit] Try some things to reduce GPU test flakiness 2019-11-21 20:56:42 +00:00
karma.conf.js [canvaskit] Try some things to reduce GPU test flakiness 2019-11-21 20:56:42 +00:00
Makefile [canvaskit] Add npm release target to ship smaller binaries 2020-01-06 13:13:06 +00:00
package.json [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
paragraph_bindings.cpp [canvaskit] Include direction from getRects 2019-11-20 13:27:22 +00:00
paragraph.js [canvaskit] Include direction from getRects 2019-11-20 13:27:22 +00:00
particles_bindings.cpp Particles: Better integration for ResourceProvider 2019-12-03 14:12:50 +00:00
particles.js Use ResourceProvider in particles 2019-11-27 16:45:23 +00:00
pathops.js [canvaskit] Add build flag for pathops 2020-01-06 13:10:43 +00:00
postamble.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
preamble.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
README.md Add instructions for compiling CanvasKit and viewing example page. 2020-01-02 13:04:27 +00:00
ready.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
release.js [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
rt_shader.js [canvaskit] Add npm release target to ship smaller binaries 2020-01-06 13:13:06 +00:00
serve.py [canvaskit] Move from experimental to modules 2019-03-11 21:09:52 +00:00
skottie_bindings.cpp use std::make_unique 2019-12-12 22:32:45 +00:00
skottie.js Use ResourceProvider in particles 2019-11-27 16:45:23 +00:00
skp.js [canvaskit] Add build flag for pathops 2020-01-06 13:10:43 +00:00
WasmAliases.h [canvaskit] Initial addition of SkParagraph 2019-10-03 18:04:55 +00:00

Prerequisites

To compile CanvasKit, you will first need to install emscripten. This will set the environment EMSDK (among others) which is required for compilation.

Compile and Test Locally

make release
make local-example

This will print a local endpoint for viewing the example. You can experiment with the CanvasKit API by modifying ./canvaskit/example.html and refreshing the page. For some more experimental APIs, there's also ./canvaskit/extra.html.

For other available build targets, see Makefile and compile.sh. For example, building a stripped-down version of CanvasKit with no text support or any of the "extras", one might run:

./compile.sh no_skottie no_particles no_font

Such a stripped-down version is about half the size of the default release build.