skia2/resources/skottie
Florin Malita fbddfbb9f3 [skottie] Introduce an external layer API
Add support for external precomp Skottie layers.  This allows embedders
to seamlessly mix custom/Lottie content.

General flow:

  * embedders register a PrecompInterceptor callback with
    the animation builder
  * at build time, Skottie invokes the callback for each pre-composed
    layer
    - the returned ExternalLayer implementation is used instead of the
      Lottie layer payload
    - (a nullptr value signals Skottie to use the usual Lottie payload)
  * at render time, ExternalLayer::render() is called to defer content
    rendering to the embedder

Also implement a sample PrecompInterceptor which attempts to substitute
precmp layers matching a given pattern with external Lottie animations:

   precomp_name: "__foo.json"  -> Animation("foo.json")

This new mechanism is a generalization of (and supersedes) the old
NestedAnimation hack - so we can remove that.

Change-Id: Id80fe11881c62b8717c2476117c7c03ad5300eef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288130
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2020-05-06 20:31:14 +00:00
..
images [skottie] Fix layer transform vs. effects interactions 2019-06-17 12:26:13 +00:00
skottie_sample_1.json [skottie] GM exercising external font loading 2018-09-20 19:05:35 +00:00
skottie_sample_2.json [skottie] GM exercising external font loading 2018-09-20 19:05:35 +00:00
skottie_sample_multiframe.json [skottie] Multi-frame image support 2018-10-03 19:02:35 +00:00
skottie_sample_search.json [skottie] Add a custom property manager util class 2018-11-28 17:12:07 +00:00
skottie_sample_webfont.json [skottie] Add custom props rendering GM 2020-01-17 13:53:02 +00:00
skottie-3d-2planes.json [skottie] Add a couple more 3D tests 2019-11-04 19:08:43 +00:00
skottie-3d-3planes.json [skottie] Add a couple more 3D tests 2019-11-04 19:08:43 +00:00
skottie-3d-parenting-camera.json [skottie] 3D layer parenting refinements 2019-10-28 20:29:54 +00:00
skottie-3d-parenting-nocamera.json [skottie] 3D layer parenting refinements 2019-10-28 20:29:54 +00:00
skottie-3d-rotation-order.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-bezier-extranormal.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-brightnesscontrast-legacy.json [skottie] Brightness and Contrast effect 2020-04-28 14:33:12 +00:00
skottie-brightnesscontrast.json [skottie] Contrast cleanup 2020-04-29 13:57:22 +00:00
skottie-camera-one-node.json [skottie] One-node camera support 2019-11-14 18:45:18 +00:00
skottie-camera-parent-1.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-camera-parent-2.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-camera-parent-3.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-camera-precomp.json [skottie] Fix precomposed camera sizing 2019-12-05 14:34:15 +00:00
skottie-camera-rotation.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-chained-mattes.json [skottie] Cascading track matte support 2019-12-12 21:42:11 +00:00
skottie-corner-pin-effect.json [skottie] Corner pin effect 2020-04-05 16:47:06 +00:00
skottie-dropshadow-style.json [skottie] Initial drop shadow style support 2020-03-25 12:14:26 +00:00
skottie-effects-tranform.json [skottie] Fix layer transform vs. effects interactions 2019-06-17 12:26:13 +00:00
skottie-fill-effect.json [skottie] Cleanup: convert remaining effects to new adapter pattern 2020-01-30 15:30:08 +00:00
skottie-gradient-opacity.json [skottie] Streamlined gradient stop merger 2019-11-05 19:44:11 +00:00
skottie-gradient-ramp.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-hidden-shapes-layers.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-huesaturation-effect.json [skottie] Initial Hue/Saturate effect support 2019-08-02 18:04:14 +00:00
skottie-innerglow-style.json [skottie] Initial outer/inner glow 2020-04-23 13:46:48 +00:00
skottie-innershadow-style.json [skottie] Initial inner shadow layer style support 2020-04-17 19:57:08 +00:00
skottie-invert-effect.json [skottie] Invert effect support 2019-12-11 23:07:04 +00:00
skottie-levels-effect.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-line-height.json [skottie] Text line height support 2019-05-08 19:27:52 +00:00
skottie-linear-wipe-effect.json [skottie] Add forgotten linear-wipe test 2019-07-03 15:06:42 +00:00
skottie-luma-matte.json [skottie] Luma matte support 2019-10-16 13:17:51 +00:00
skottie-mask-feather.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-matte-blendmode.json [skottie] Fix layer blend modes under mattes 2019-10-29 01:49:26 +00:00
skottie-motion-blur-mask.json [sksg] Fix mask/context overrides interaction 2019-09-04 14:09:44 +00:00
skottie-motion-blur-ph0.json [skottie] Motion blur support 2019-07-09 13:02:17 +00:00
skottie-motion-blur-ph360.json [skottie] Motion blur support 2019-07-09 13:02:17 +00:00
skottie-motion-blur-ph-360.json [skottie] Motion blur support 2019-07-09 13:02:17 +00:00
skottie-motiontile-effect-phase.json [skottie] Add support for motion tile phase 2019-06-18 14:01:22 +00:00
skottie-motiontile-effect.json [skottie] Motion tile effect 2019-06-17 18:20:15 +00:00
skottie-multi-range-selectors.json [skottie] Add support for multiple range selectors 2019-08-14 17:34:02 +00:00
skottie-nested-animation.json [skottie] Introduce an external layer API 2020-05-06 20:31:14 +00:00
skottie-outerglow-style.json [skottie] Initial outer/inner glow 2020-04-23 13:46:48 +00:00
skottie-prolevels-effect.json [skottie] Add support for ADBE Pro Levels2 effect 2020-02-05 21:05:08 +00:00
skottie-radial-wipe-effect.json [skottie] Radial swipe effect 2019-06-21 14:03:45 +00:00
skottie-shift-channels-effect.json [skottie] Shift Channels effect support 2019-10-22 20:36:01 +00:00
skottie-text-animator-1.json [skottie] Add support for scale and rotation text animators 2019-05-31 20:41:19 +00:00
skottie-text-animator-2.json [skottie] Initial text range selector support 2019-06-04 20:50:32 +00:00
skottie-text-animator-3.json [skottie] Add support for RangeSelector shapes 2019-06-06 13:51:11 +00:00
skottie-text-animator-4.json [skottie] Fix zero-overlap selector handling 2019-06-06 16:09:39 +00:00
skottie-text-animator-5.json [skottie] Animated text tracking support 2019-06-11 13:41:28 +00:00
skottie-text-animator-6.json [skottie] Animated text tracking support 2019-06-11 13:41:28 +00:00
skottie-text-animator-7.json [skottie] Animated text tracking support 2019-06-11 13:41:28 +00:00
skottie-text-animator-8.json [skottie] Text selector ease-high/ease-low support 2019-08-29 21:34:10 +00:00
skottie-text-blur.json [skottie] Add support for text animator blur 2020-02-24 14:01:16 +00:00
skottie-text-grouping-alignment-2.json [skottie] Add another text grouping test 2020-03-03 15:17:20 +00:00
skottie-text-grouping-alignment.json [skottie] Text anchor point grouping support 2020-03-02 23:07:39 +00:00
skottie-text-perchar-3d.json [skottie] Initial support for per-character 3D 2020-02-21 21:14:02 +00:00
skottie-text-resize-to-fit.json [skottie] Add kBottom text alignment extension 2019-05-24 15:28:01 +00:00
skottie-text-scale-to-fit.json [skottie] Shaper downscale-to-fit vertical alignment mode 2019-08-19 18:59:06 +00:00
skottie-text-valign-2.json [skottie] Use hybrid bounds for custom Shaper VAlign modes 2019-06-28 11:35:09 +00:00
skottie-text-valign-bottom.json [skottie] Add kBottom text alignment extension 2019-05-24 15:28:01 +00:00
skottie-text-valign-scaletofit.json [skottie] Separate text resize options 2020-01-29 00:09:42 +00:00
skottie-text-valign.json [skottie] Relocate "GMs" to resources/ 2019-05-03 16:14:46 +00:00
skottie-text-vertical-clip.json [skottie] Clip overflowing paragraph lines 2020-02-20 18:35:15 +00:00
skottie-time-reverse.json [skottie] Fix handling of time-reversed precomp layers 2020-02-28 19:42:51 +00:00
skottie-transform-effect.json [skottie] Add support for Transform distort effect 2019-06-14 16:58:31 +00:00
skottie-trimpath-fill.json [SkTrimPathEffect] Preserve wrap-around continuity 2020-04-07 14:40:17 +00:00
skottie-trimpath-modes.json [skottie] Fix trim path mode interpretation 2019-11-05 18:31:24 +00:00
skottie-tritone-effect.json [skottie] Cleanup: convert remaining effects to new adapter pattern 2020-01-30 15:30:08 +00:00
skottie-venetianblinds-effect.json [skottie] Venetian Blinds effect 2019-06-26 13:13:10 +00:00