Commit Graph

946 Commits

Author SHA1 Message Date
Florin Malita
da90c37659 [skottie] Cleanup KeyframeAnimatorBuilder
Instead of plumbing the target value through bindImpl as an opaque
void*, store explicitly in builders.

More typesafe/elegant/flexible/etc.

TBR=
Change-Id: Ie28787072a6be3b0bfcd528b68431f9fb3fa3a71
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291576
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-22 03:44:46 +00:00
Chris Dalton
38e33df982 Disable WebGL antialias in CanvasKit
We were accidentally turning on MSAA via the "antialias" context attrib,
then feeding the render target into Ganesh and saying it was non-MSAA.

This will cause rendering artifacts in Ganesh if MSAA is unknowingly
enabled when we try to do coverage-based AA.

Also, the WebGL spec does not give us control over the exact sample
count or even guarantee that "antialias" means MSAA, so I think it's
best to leave that flag disabled by default. If a client wants MSAA,
they can create their own offscreen surface and blit it into the main
canvas.

Change-Id: I45f1596bfe9258963cff4b5d0a3921c5ba43145f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291029
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-21 22:19:05 +00:00
Nathaniel Nifong
67e21a1925 Revert "Wide color gamut support and working example."
breaks CPU-backed canvaskit build

This reverts commit 3d52abc846.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Wide color gamut support and working example.
> 
> Color space arguments accepted at surface creation, paint, gradient, and other call sites.
> Works correctly only when chrome happens to be rendering itself in the same color space
> the canvaskit user has chosen, there's not yet end to end color management of
> canvases supported in browsers.
> 
> readPixels not yet working due to possible chrome bug.
> 
> Change-Id: I3dea5b16c60a3871cd2a54f86716f4a438a90135
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289733
> Commit-Queue: Nathaniel Nifong <nifong@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>

TBR=kjlubick@google.com,brianosman@google.com,nifong@google.com

Change-Id: I2e03155c2512eec6730ecccda19df78174146008
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291339
Reviewed-by: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Nathaniel Nifong <nifong@google.com>
2020-05-21 20:22:08 +00:00
Nathaniel Nifong
3d52abc846 Wide color gamut support and working example.
Color space arguments accepted at surface creation, paint, gradient, and other call sites.
Works correctly only when chrome happens to be rendering itself in the same color space
the canvaskit user has chosen, there's not yet end to end color management of
canvases supported in browsers.

readPixels not yet working due to possible chrome bug.

Change-Id: I3dea5b16c60a3871cd2a54f86716f4a438a90135
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289733
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-21 19:26:11 +00:00
Mike Reed
1f60733fb3 Revert "Revert "move onto new factories for SkMatrix""
This reverts commit c80ee456ad.

fix: update flutter's gn file to add guard

Change-Id: Iac5171c8475d9a862d06255dab1c6f38f10de2f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291361
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-05-21 16:58:39 +00:00
Mike Reed
c80ee456ad Revert "move onto new factories for SkMatrix"
This reverts commit 046c2b7d90.

Reason for revert: need to update/guard flutter

Original change's description:
> move onto new factories for SkMatrix
> 
> Just rename, no functional changes expected.
> 
> Change-Id: Id77ab1cf6b1cab35087a7c56000750912cf47383
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290831
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: Ic74f177128913374b8c60b4df88f04cf72fbacb3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291359
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-05-21 16:05:20 +00:00
Ben Wagner
c7e35b2bfc Remove OneLineShaper::increment.
This private method is never used.

Change-Id: Ibd71b76d9d76698a8b8d19e5275959df2cf45e45
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291320
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-05-21 15:09:14 +00:00
Ben Wagner
fa00ae42ce Iterate over unresolved instead of cycling.
This makes it much clearer which code is actually adding to and removing
from the unresolved queue. This also makes fillGaps much more
performant since it no longer needs to make a full copy of the
unresolved blocks.

Change-Id: I62a5eb32118fec6745b7079f537ccbd07b018c12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291318
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
2020-05-21 15:07:19 +00:00
Mike Reed
046c2b7d90 move onto new factories for SkMatrix
Just rename, no functional changes expected.

Change-Id: Id77ab1cf6b1cab35087a7c56000750912cf47383
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290831
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2020-05-21 15:04:09 +00:00
Kevin Lubick
d1285b131b Upgrade CanvasKit emscripten to version 1.39.16.
Changes are largely mechanical.  Non-mechanical changes to support newer
versions of emscripten are enumerated below, in format ${EMSCRIPTEN_VERSION}:
${RELEVANT_CHANGE}.

- 1.39.9: TOTAL_MEMORY has been renamed INITIAL_MEMORY.
- 1.39.12: passing of linker flags to wasm-ld has changed in a way that requires
  supplying `--no-entry` to avoid error message "wasm-ld: error: entry symbol
  not defined (pass --no-entry to suppress): main".
- 1.39.16: The factory function created by using `MODULARIZE` build option now
  returns a Promise instead of the module instance.  As such, the ready.js
  workaround is removed.  Note this is a breaking API change for CanvasKit,
  which now uses just `then()` and not `ready().then()`.
- 1.38.33: `emsdk install` hasn't required the `-64bit` suffix on version names
  since `1.38.33`, so we remove them.  E.g. `emsdk install sdk-1.39.6-64bit`
  simply becomes `emsdk install sdk-1.39.16`.

cf. https://github.com/emscripten-core/emscripten/blob/master/ChangeLog.md

Bug: NONE
Change-Id: Iabec4bd5ad7db2e0715ad42c2e4cf7d67b192b4c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291182
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-21 14:18:48 +00:00
Florin Malita
67ff541ac1 [skottie] Add support for embedded fonts (glyph paths)
Parse embedded fonts into SkCustomTypefaces, and pass down the text
animation pipeline.  Things seem to mostly work for Latin examples.

Most existing Lottie files come with embedded fonts (the option is
enabled by default), so to minimize disruption only use the new
feature as a fallback for typefaces which cannot be resolved otherwise.

Also introduce a builder flag to prioritize embedded fonts over native
(kPreferEmbeddedFonts), and plumb in existing tools for testing.

Change-Id: Ia2a659f76e354fea6081b0f2e0dce1d8bdf63c52
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291180
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2020-05-21 01:27:34 +00:00
Julia Lavrova
656ee7bc0f Remove canvas save/translate/restore when it's not needed.
Except for decorations and ellipsis (for now).

Change-Id: I4079ff609e456fc2e3a15f0374b0bca18a318158
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291079
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-05-20 19:24:38 +00:00
Greg Daniel
49de1031d4 Reland "Remove deprecated flush calls."
This reverts commit 5e6d789ce4.

Reason for revert: Relanding with fix landed in chrome

Original change's description:
> Revert "Remove deprecated flush calls."
> 
> This reverts commit d8fd0bf574.
> 
> Reason for revert: chrome roll
> 
> Original change's description:
> > Remove deprecated flush calls.
> > 
> > Bug: skia:10118
> > Change-Id: I13758b5416784c296b8b5be9f3228230ac1be05f
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290540
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> 
> TBR=egdaniel@google.com,bsalomon@google.com
> 
> Change-Id: I49d35cdb258e632f645974c5ec62075d3392efe0
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10118
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290834
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,bsalomon@google.com

# Not skipping CQ checks because this is a reland.

Bug: skia:10118
Change-Id: Ie24d7845a4ad75f95afe59037ea80a9f38082f13
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290918
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-05-20 15:48:46 +00:00
Greg Daniel
5e6d789ce4 Revert "Remove deprecated flush calls."
This reverts commit d8fd0bf574.

Reason for revert: chrome roll

Original change's description:
> Remove deprecated flush calls.
> 
> Bug: skia:10118
> Change-Id: I13758b5416784c296b8b5be9f3228230ac1be05f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290540
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,bsalomon@google.com

Change-Id: I49d35cdb258e632f645974c5ec62075d3392efe0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10118
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290834
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-05-19 20:58:40 +00:00
Elliot
03f12b9ec2 try adding some code to example.html
Change-Id: Icdf8503d9efb426a5bb4c8888f528d3d142f7289
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290841
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-19 18:55:15 +00:00
Greg Daniel
d8fd0bf574 Remove deprecated flush calls.
Bug: skia:10118
Change-Id: I13758b5416784c296b8b5be9f3228230ac1be05f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290540
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-05-19 18:01:24 +00:00
Ben Wagner
4651b99f32 Reland "Cache hb_face."
Creating an hb_face can be quite expensive, cache them.

This implementation is similar to the super simple caching strategy used
by libtxt. It uses a simple global LRU cache from SkFontID to hb_hbface
of size 100.

Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289442
Change-Id: I971620f7aaaf2d7b6902da8681e29d6d458429ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290761
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-05-19 17:42:14 +00:00
Ben Wagner
55b3dc0c14 Make SkParagraph Run moveable.
Because a destructor was declared the move constructor and assignment
were not implicitly declared or defined. Default everything to make it
obvious that Run may be copied or moved.

Change-Id: I862b392b12a15b9d44c58da4f73ddace7d5a1308
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290538
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-05-19 13:50:54 +00:00
Ben Wagner
0b13ceceaa Make TextLine::fEllipsis unique_ptr.
Clarify and simplify ownership of the ellipsis.

Change-Id: I3f4567d2a16b51ecc6406d872019c4665c49fe50
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290536
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-05-19 13:46:02 +00:00
Ben Wagner
e73e2fc356 Don't shadow the name textRange.
In TextLine::iterateThroughSingleRunByStyles there is a parameter named
textRange and a local variable also named textRange. This shadowing is a
bit confusing both when reading the code and when debugging, so rename
the local to runStyleTextRange to better describe what it is for.

Change-Id: Iea2f668b6e854140d749efa5c595de6d851118db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290496
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-05-19 13:45:52 +00:00
Mike Reed
7a4ea2baf5 Revert "Cache hb_face."
This reverts commit d19bb17782.

Reason for revert: windows build failure?
lld-link: error: undefined symbol: private: void __cdecl SkSemaphore::osSignal(int)


Original change's description:
> Cache hb_face.
> 
> Creating an hb_face can be quite expensive, cache them.
> 
> This implementation is similar to the super simple caching strategy used
> by libtxt. It uses a simple global LRU cache from SkFontID to hb_hbface
> of size 100.
> 
> Change-Id: I364a4548699cece50073e829a065c0a303245873
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289442
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

TBR=bungeman@google.com,reed@google.com

Change-Id: I31967a638fb497f28ca3d3f26ef3692dddff004d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290718
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-05-19 01:35:41 +00:00
Ben Wagner
d19bb17782 Cache hb_face.
Creating an hb_face can be quite expensive, cache them.

This implementation is similar to the super simple caching strategy used
by libtxt. It uses a simple global LRU cache from SkFontID to hb_hbface
of size 100.

Change-Id: I364a4548699cece50073e829a065c0a303245873
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289442
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-05-18 20:18:07 +00:00
Chris Dalton
75b6c00917 Revert "Convert pathkit's usage of SkPath::Iter to SkPatPriv::RangeIter"
This reverts commit 999257d870.

Reason for revert: Iter does not behave the same as RangeIter

Original change's description:
> Convert pathkit's usage of SkPath::Iter to SkPatPriv::RangeIter
> 
> Change-Id: If940941a66c1fda508970a73d8433a2d2a292e1c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287894
> Reviewed-by: Kevin Lubick <kjlubick@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

TBR=kjlubick@google.com,csmartdalton@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Id1028577631ab616a60e0be71e27b32d9a1255e1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290188
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-05-15 21:48:13 +00:00
Julia Lavrova
3ea86251b9 Attaching ellipsis to emoji cluster
Bug: skia:10253
Change-Id: Id6b8507331facba4b69ebc96646a87c5e0eb6da9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/290132
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-05-15 21:02:30 +00:00
Brian Osman
28590d54f5 Add 'shader' as an alias for 'fragmentProcessor'
Change-Id: I2d95c63de18125e6258709b48b03abd7904b7537
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/278596
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-05-15 13:52:15 +00:00
Julia Lavrova
568f35f8d9 Turn off underline with gaps
Instead of using 'kGaps' as the default use 'kThrough' since that
is what is generally expected by default. The user can still set
the style to 'kGaps' if they wish.

Change-Id: Ibb04b8eb47393d645a49f98c7af976b5ed4f9c3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289884
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-05-14 20:51:05 +00:00
Kevin Lubick
5592f2485a [canvaskit] Update to 0.15.0
Change-Id: I5b1f02a8cef589e7b6f8653e2322610ebfdc3c8e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289891
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-14 19:54:26 +00:00
Kevin Lubick
e70af51c1a [canvaskit] Properly fix Safari (detect if WebGL2 is not available)
I believe we had incorrectly been using the wrong emscripten-provided
helper to make our WebGL contexts. Thus, the parameter that was
specifying webGL 1 vs 2 was not getting properly passed in
(I believe because of a closure-induced problem in minification).

I validated this build on my local Mac+Safari test harness.

Bug: skia:10171
Change-Id: Ifd5e55a6b64407bf84168e118d8dda4738ef5487
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289885
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-14 19:15:25 +00:00
Kevin Lubick
c2e80e132e [canvaskit] Disable getError calls for webGL
getError is known to be problematic for performance on Chrome
because it is synchronous. Disabling this should improve
performance in several cases.

Change-Id: I0d4a68ddb9625f09d7427e3c5f36883352c4f995
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289779
Reviewed-by: Brian Salomon <bsalomon@google.com>
2020-05-14 14:48:21 +00:00
Kevin Lubick
0c8884b6b4 [canvaskit] Fix memory leak in paragraph bindings
This also renames some variables to be consistent.

See https://github.com/flutter/flutter/issues/56938

Change-Id: I0db66fa334d5f5efc1f94fff1a367a32e03611ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289778
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2020-05-14 14:48:21 +00:00
Julia Lavrova
68d1433145 Fixing minor bugs: ellipsis on justified text
Change-Id: Ic0ebf53b221defa5d07ba2832666b322a2629547
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289020
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-05-13 14:59:21 +00:00
Adlai Holler
684838f1f5 Mark SkStringPrintf as SK_PRINTF_LIKE
Change-Id: I3d2ee8dca1d2e962794ce8c3c391779bff357f0c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288762
Commit-Queue: Adlai Holler <adlai@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
2020-05-12 15:22:14 +00:00
Julia Lavrova
dd1de25896 Fix TextHeightBehavior
Change-Id: I08148d2e942691c8d12070940bc2ee28855ffe59
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288761
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-05-11 20:32:55 +00:00
Florin Malita
c1f0e16f21 Revert "[skottie] Refactor property dispatch to avoid std::function"
This reverts commit e646fad962.

Reason for revert: g3 needs some work

Original change's description:
> [skottie] Refactor property dispatch to avoid std::function
> 
> Replace with a stateful LazyHandle implementation.
> 
> A secondaty objective is to preserve source-level API compat for
> existing clients.
> 
> TBR=
> Change-Id: I8e37b1e045a94d657996b7002e89cedb5b9d128f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288816
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Florin Malita <fmalita@chromium.org>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I7ef856af945929e9597f86e11edbec4057a305f9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288908
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2020-05-11 15:52:10 +00:00
Florin Malita
e646fad962 [skottie] Refactor property dispatch to avoid std::function
Replace with a stateful LazyHandle implementation.

A secondaty objective is to preserve source-level API compat for
existing clients.

TBR=
Change-Id: I8e37b1e045a94d657996b7002e89cedb5b9d128f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288816
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-11 14:13:38 +00:00
Nathaniel Nifong
ce1648f822 Restore offscreen surface example, Add GPU/CPU reporting function.
Change-Id: Ic360cef53aa22983e8b17a3488e97d6f28b27d97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288894
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Nathaniel Nifong <nifong@google.com>
2020-05-11 13:59:08 +00:00
Kevin Lubick
2887d35ca9 [canvaskit] Enable font edging
Adding in the mono rasterizer on freetype adds 12k of code size
(6k compressed), so we make it opt out and don't ship to npm with it.

Bug: skia:10192
Change-Id: I8352adbeaec288800ae1ca4709144860e9a1e84c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288546
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-05-08 13:22:18 +00:00
Florin Malita
0dc207f836 [skottie] Cleanup: refactor asset lookup to avoid std::function
The main value of current AnimationBuilder::attachAssetRef is to provide
scoping semantics for ref cycle detection.

Refactor using a RAII helper (ScopedAssetRef), and avoid std::function
callbacks.

Change-Id: Idf5327465b8a06313cd9ea89be5f229ddc0aef7f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288617
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-07 22:06:25 +00:00
Florin Malita
71c31415cd [skottie] Cleanup: rename ImageLayer -> FootageLayer
...since it's used for both image and video Lottie layers.

TBR=
Change-Id: I52e85d70d4adbda61dfa3b33acdf4eb17ddbf332
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288616
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-07 21:27:16 +00:00
Florin Malita
d7a27532bc [skottie] Include ExternalLayer.h explicitly
TBR=
Change-Id: Iab96dbf12279fbf457105726f798437412dae7f1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288457
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-07 13:16:55 +00:00
Florin Malita
2871ab0727 [skottie-wasm] Add support for nested animation playback
Plumb the newly added [1] ExternalAnimationPrecompInterceptor.

[1] https://skia-review.googlesource.com/c/skia/+/288130

Change-Id: I8e000692fdae8dd006405db98b6814e047f77276
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288356
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2020-05-07 12:31:57 +00:00
Julia Lavrova
6bdbd3da5d Lines ending with hard line breaks should not be justified
Bug: skia:10036
Change-Id: I4f1a41b3497bccb9e5f4b97163113b9241128bfd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288129
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-05-06 21:14:14 +00:00
Nathaniel Nifong
00de91c591 Add markCTM to canvaskit API, use in 3D cube example
Change-Id: Id0eafdf0fd69f080e26e2bee5c7b38eb55b6a5c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287897
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-06 21:10:34 +00:00
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
Julia Lavrova
18db52f2ee Skips in underline decorations
Bug: skia:10166
Change-Id: Ib1d71f69d8647840f71c8599ca3517cb575bf945
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287620
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2020-05-06 18:59:34 +00:00
Chris Dalton
999257d870 Convert pathkit's usage of SkPath::Iter to SkPatPriv::RangeIter
Change-Id: If940941a66c1fda508970a73d8433a2d2a292e1c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287894
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-05-06 14:26:19 +00:00
Mike Reed
0cbd58766a be sure to keep the fonts alive for the two loops
Bug: skia:10124
Change-Id: I449b72a00d714207a6bbc7948b5cdbb9a541b43f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287819
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-05-05 15:40:59 +00:00
Nathaniel Nifong
1bedbeb081 Pass 4f colors to private functions with float pointers
Change-Id: I4534a246c37870750298d39edcbc869781dc1008
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286880
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2020-05-05 13:17:28 +00:00
Julia Lavrova
9588a643d9 TextHeightBehavior implemented
Bug: skia:10201
Change-Id: I5398836d2068164282bab77fe8448654a72050d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286456
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2020-05-04 20:21:07 +00:00
Chris Dalton
f03781b6a9 Update canvaskit to use the new path iterator
Change-Id: I248396f7c0d176f846e0b87a5fed5b7e20063aa2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287598
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-05-04 19:36:27 +00:00