Commit Graph

1626 Commits

Author SHA1 Message Date
Florin Malita
4c0da73206 [skottie] Text fill/stroke opacity animators
Implement support for fill and stroke opacity animators.

TBR=reed
Bug: skia:11966
Change-Id: I206c949d0fc685c63043e672f16e9c1ac35a6d53
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405397
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
2021-05-13 20:03:52 +00:00
Jorge Betancourt
025b914468 [androidkit] add getter for matrices
Change-Id: I0fd42b2506d794622852bd55aa4e8c2545216312
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/407916
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-13 19:29:53 +00:00
John Stiles
154bd1f522 Avoid repeated failure messages in the dm logs.
Successful dm runs on Windows currently include this message many
thousands of times over. This pollutes the logs for no benefit.

Change-Id: I127b4588ed25d8f51ac70d0f87645bd9c28cec5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/408057
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2021-05-13 17:27:45 +00:00
Jorge Betancourt
e3f8030494 [androidkit] implement ThreadedSurface backed by WindowSurface
This moves ownership of the SkSurface to ThreadedSurface::fWindowSurface.

When we pass a Message to the SurfaceThread, we will include  a pointer to ThreadedSurface.fWindowSurface so we can call:
getCanvas() to draw the SkPicture
WindowSurface's constructor so it can hold the WindowContext made during the init

To reference WindowSurface in SurfaceThread, we need to make a header for Surface.cpp (added in this cl)

Change-Id: I8c67223eee301a1b6e0d05934e1f8597cf70bc64
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404918
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-13 17:15:49 +00:00
Brian Osman
a5842bc903 Move SkSpan to include/, for use in public API
Change-Id: I674f038600afd6d49316c1ece515941ee5579068
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406939
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-05-12 13:19:32 +00:00
Brian Osman
2305b7914e Use SkMakeSpan in SkShaper_harfbuzz
Fixes G3 roll

Change-Id: I0d7c3c74f793fb2c22db969fb2a6f93e39931918
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/407099
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2021-05-11 22:33:59 +00:00
Robert Phillips
0c9962a7c8 Revert "Switching SkText to UTF16"
This reverts commit a3262aa1d2.

Reason for revert: I believe this is blocking the Flutter roll

Original change's description:
> Switching SkText to UTF16
>
> Required some changes in SkUnicode to support it
> SkShaper still works on UTF8
>
> Change-Id: I76645668e1d9bf95eb4539a066deea2b24ecf5e9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406360
> Reviewed-by: Julia Lavrova <jlavrova@google.com>
> Commit-Queue: Julia Lavrova <jlavrova@google.com>

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

Change-Id: I68b66dfbc4f3668a8fb765d5f557699e396cd3f5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/407177
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-05-11 22:24:20 +00:00
Julia Lavrova
a3262aa1d2 Switching SkText to UTF16
Required some changes in SkUnicode to support it
SkShaper still works on UTF8

Change-Id: I76645668e1d9bf95eb4539a066deea2b24ecf5e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406360
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-05-11 20:31:29 +00:00
Brian Osman
ae87bf1e49 Remove SkSpan class template deduction guides
This effectively reverts a80ce1a36d,
and goes back to using SkMakeSpan (which works in C++14).

Change-Id: Iaa63c86b5acaadbdd60588b0a5c703820e810770
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406938
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2021-05-11 20:06:29 +00:00
Jorge Betancourt
e3934b937e [androidkit] expose lookAt, perspective, and inverse Matrix construction
Change-Id: I94de24b2e47365cd65025166d83dd8b6c8fda90a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405857
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-10 23:25:54 +00:00
Jorge Betancourt
c44ede6c78 [androidkit] expose minimal stroke settings to Java
Change-Id: I012aa2760ff2b39f0c21d6e235cf6731d13bfe3f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405856
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2021-05-10 16:33:32 +00:00
Mike Reed
1f85dd9159 Expose embolden on Font
Change-Id: I92c3b86b8cfff1a77e2a27503ec0cdc8b0cab784
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406037
Reviewed-by: Mike Reed <reed@google.com>
2021-05-09 18:03:44 +00:00
Mike Reed
7d093d8828 Quick out-of-range fix for selections
Change-Id: I6373f9a70c6e341a39114f0bdce50a92ee745dcb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/406036
Reviewed-by: Mike Reed <reed@google.com>
2021-05-09 17:28:45 +00:00
Mike Reed
511c327de6 Sync styles when inserting/deleting text
Change-Id: I263ae85b0b229d359b865d8b8c9f4aed736b0654
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405880
Reviewed-by: Mike Reed <reed@google.com>
2021-05-09 17:00:14 +00:00
Mike Reed
686dd910dd Track non-shaping style runs
We only break runs (from the shaper's perspective) on typeface/size
changes. All others we just track locally, and then 'chop up' our draws
accordingly.

Change-Id: I81695772f71175cd5116ed34981ecf16b52123c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405876
Reviewed-by: Mike Reed <reed@google.com>
2021-05-08 20:18:36 +00:00
Mike Reed
72de83df3a Manage styles in editor
Change-Id: Ifde8853a780b8406ef6b794cd458904ee0663771
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405694
Reviewed-by: Mike Reed <reed@google.com>
2021-05-07 21:17:42 +00:00
Julia Lavrova
b44d6f4099 Reland "LRU Cache requires exact float comparison"
This is a reland of 85a51865f9

Original change's description:
> LRU Cache requires exact float comparison
>
> Bug: oss-fuzz:30314
> Change-Id: Id5dccdbab2a4801e6796254a68e417dbdc0f7a4a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404780
> Commit-Queue: Julia Lavrova <jlavrova@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>

Bug: oss-fuzz:30314
Change-Id: I0736a068b5b952415099f56733b6748a5a93981a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405681
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-05-07 17:50:48 +00:00
Mike Reed
cced68e42c fakeBold is gone, scaleX is in (sort of)
Change-Id: I5db9e935d0c43de92a9688baf8cb1e1f9e74e7c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405684
Reviewed-by: Julia Lavrova <jlavrova@google.com>
2021-05-07 17:26:25 +00:00
Jorge Betancourt
062793401d [androidkit] optimize JNI calls in AndroidKit.Matrix transformations
Note: Shouldn't add or change the Skia API, only accepts an optional z value to preScale()

Change-Id: Ic73c723ebc2b75acca1fce5395953434ef1582e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404376
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2021-05-07 16:17:09 +00:00
Greg Daniel
bb4bf6eaaf Revert "LRU Cache requires exact float comparison"
This reverts commit 85a51865f9.

Reason for revert: possibly causing flutter roll failure

Original change's description:
> LRU Cache requires exact float comparison
>
> Bug: oss-fuzz:30314
> Change-Id: Id5dccdbab2a4801e6796254a68e417dbdc0f7a4a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404780
> Commit-Queue: Julia Lavrova <jlavrova@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>

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

Change-Id: I2cbbcf667734145b94359be4331bbf21e299d6a0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: oss-fuzz:30314
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405576
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2021-05-07 12:43:39 +00:00
Mike Reed
c48c3e5d57 Try new factory for ShapedLines
Known hacks for now:
- only default typeface
- only ascii support

Fonts have several limitations for now.

SkParagraph (our temporary backend) wants a fontmgr up front,
rather than just relying on the typefaces in its styles. This makes it
hard to inter-op with our JS api. Not a long-term problem, as this
backend is short-term. The hacky work-around is just to pass NULL for
the typeface for now.

Related but different, I haven't yet figured out how to "return" a
JS Typeface object. Something about bare-pointers and sk_sp. I'll figure
it out eventually, but for now I just set the output slot to null
as well. (there's a TODO in the .cpp)

Ascii support

JS strings are UTF16 (afaik). However, our current backend thinks in
terms of UTF8 offsets. Plus, (at the moment) when I try to access the
JS string for C++, it coerces to utf8 (std::string).

We can fix both of these eventually, but for now I'll just test with
ascii input characters, and the API can still work.


Change-Id: I62ca71b0b45d017ac8e3881c06720776dc2d75a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405400
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
2021-05-06 23:01:47 +00:00
Julia Lavrova
85a51865f9 LRU Cache requires exact float comparison
Bug: oss-fuzz:30314
Change-Id: Id5dccdbab2a4801e6796254a68e417dbdc0f7a4a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404780
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2021-05-06 20:25:27 +00:00
Florin Malita
71863fa787 [androidkit] Canvas save/concat/restore
Change-Id: Ide67a67e542b4e0962475e0638b95d3edb416c68
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/405279
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2021-05-06 17:39:57 +00:00
Julia Lavrova
a6bcec7dd8 Ensure TextBlobCache is populated before getShapedRuns.
Also fixing a small problem with offsets that never appeared
because we never use this code path (but could)

Bug: skia:11947
Change-Id: I8c02c696797ea45d35fcab5746fbc079326e4539
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404897
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
2021-05-06 17:39:37 +00:00
Florin Malita
d7a4c05aba [skottie] Add support for min/max text font size
Introduce two new text properties to control the font size range when
auto-scaling text:

 - plumb new json props ('mf' -- minimum font size, 'xf' -- maximum
   font size)
 - update the scale-to-fit binary search to use the specified extremes

Change-Id: I9e7e4915936a0be74bea473a520cf75acc05c84b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404781
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2021-05-06 15:41:07 +00:00
Kevin Lubick
3232a6625b [canvaskit] Small example fixes
Change-Id: If7a05b34975f2fee8f057e649bfe3a7b0fc541b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404778
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2021-05-05 17:20:26 +00:00
Tyler Denniston
95b2cf912c [svg] Implement feImage
Also cleaned up the IsFilterEffect() predicate a bit.

Bug: skia:10841
Change-Id: I8ef827df42d5d60cf06e74870191de7f27612376
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404218
Commit-Queue: Tyler Denniston <tdenniston@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-05 16:48:03 +00:00
Robert Phillips
3b97aa2cc9 Add NGA compilation stubs
Change-Id: I5309005146b8121528ad23589fa64cc6bf286aee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402578
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2021-05-05 16:48:01 +00:00
Tyler Denniston
080001cbf1 [svg] Fix nullptr deref for none input paints
This handles the case where a filter effect input is StrokePaint or
FillPaint, but the referencing element has a 'none' paint specified
(explicitly or via parsing error, as in the original bug report).

Bug: skia:11213
Change-Id: Ie710a9fc5ccb3c24014735e01c70a0ba42c7a99d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404696
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-05-05 16:37:53 +00:00
Jorge Betancourt
7bd87fc99c [androidkit] refactor Surface.getCanvas to be implemented at a subclass level
Change-Id: If726f4fc921ba84dd5498ab9f99fbd1a747398b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403676
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-05 16:37:52 +00:00
Tyler Denniston
2992fb0d60 [svg] Refactor SkSVGImage to expose image loading
This is in preparation for reusing the image loading + aspect ratio
mapping for <feImage>.

Change-Id: I53dcf904476aae386f672488379201524855a703
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404217
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-05-04 19:46:45 +00:00
Tyler Denniston
86f31f287e [svg] Fix filter effect subregion calculation
Somewhat subtle, but we were improperly handling the override of the
default subregion via the 'width' and 'height' <fe*> attributes.

Simple example: when specifying 'x' but not 'width', previously we
would use the overridden x (subregion.fLeft = boundaries.fLeft;), but
were not updating subregion.fRight based on the new fLeft value.

Bug: skia:10841
Change-Id: I309de4f0cf50a413ea6a0e7605926a3eb6cd94e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404205
Commit-Queue: Tyler Denniston <tdenniston@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-04 19:45:55 +00:00
Mike Reed
c1a5a48159 Move editor into utils
Change-Id: I2dd8877317cc751ec4380f1d88c1ef79dad96442
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404238
Reviewed-by: Mike Reed <reed@google.com>
2021-05-04 19:32:34 +00:00
Mike Reed
2a5eacb0f9 Split some helpers into separate js file
Also handle ctrl and meta better.

Change-Id: I2149f1dfaa4b0af58cae8d16ead5432d17e05916
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404157
Reviewed-by: Mike Reed <reed@google.com>
2021-05-04 15:18:28 +00:00
Mike Reed
faf7bf5966 Edit text
Change-Id: I57282da8f9d2bf1334bc8246c843dfdf475e338c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/404016
Reviewed-by: Mike Reed <reed@google.com>
2021-05-04 14:34:09 +00:00
Mike Reed
bf688645ac Support arrow-keys
Change-Id: I4cfd99001ea99888c8781e018f67c644d1d6e3d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403597
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-03 20:33:33 +00:00
Tyler Denniston
80ba617cab [svg] Implement 'display:none'
The full 'display' presentation attribute [1] has a number of settings
that we likely don't want to support. However, 'display:none' has some
practical uses and is easy enough to support. This progresses some
local tests as well as a few W3C tests.

[1] https://www.w3.org/TR/SVG11/painting.html#DisplayProperty

Bug: skia:10842
Change-Id: I60fef959fb45c3cfb229b85b720dfa69fc458bc3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403438
Commit-Queue: Tyler Denniston <tdenniston@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-05-03 18:11:54 +00:00
Mike Reed
ca2ad539f2 Remove getShapedRuns, add some dox
Change-Id: I7e226622475f7ee7173e7d2ec6fc388bd1792253
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403598
Reviewed-by: Yegor Jbanov <yjbanov@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2021-05-03 17:54:50 +00:00
Mike Reed
a46fe7d587 Return shapedlines for text api
Change-Id: I8f9aa6e0cffb3441706bd0efeb0886209cac012a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403256
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2021-05-03 14:21:11 +00:00
Mike Reed
097263bb50 Track mouse for cursor and hilites
Change-Id: Icfc8a28fa0c9e3118ef4ddc5ae12162aab3fb484
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/398556
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-04-30 20:49:40 +00:00
Kevin Lubick
5567862bda [canvaskit] Remove unnecessary imports
Change-Id: I16dff4eecb044edc49ba0dbee883feafb9fd820b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402997
Reviewed-by: Nathaniel Nifong <nifong@google.com>
2021-04-30 19:54:49 +00:00
Florin Malita
48fb05b81c [svg] Fix text object bounding box resolution
Two issues:

1) we are currently computing object bounding boxes using the
   RenderContext of the client resource, which can override presentation
   attributes

   -> introduce an OBBScope to capture not just the current OBB node but
      also its original RenderContext

2) text fragments must use the root <text> bounding box for OBB-relative
   units [1]

   -> update SkSVGTextFragment::renderText to not override the current
   OBBScope; this ensures we're using the root element scope for the
   whole text subtree


[1] https://www.w3.org/TR/SVG11/text.html#ObjectBoundingBoxUnitsTextObjects

Bug: skia:11936
Change-Id: Ib48ccd3dc22639de42ea150b881a26dda72fa4bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403037
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Tyler Denniston <tdenniston@google.com>
2021-04-30 19:09:18 +00:00
Tyler Denniston
cdcd9a76bb [svg] Implement spot light sources
Note Chrome, Firefox and Inkscape (only other viewers I tested) disagree
in smallish ways with the W3C png for filters-light-01. We're somewhere
in the middle, but likely conforming enough to call it correct.

Bug: skia:10841
Change-Id: Ia83b9936d260780148fe326b6d3b2248eef69aac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403036
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-04-30 18:40:58 +00:00
Florin Malita
3010f3d791 [svg] Refactor object bounding box access
Introduce a helper (SkSVGRenderContext::obbTransform) and refactor all
obb clients to funnel their calls through it.

This will facilitate some follow up obb changes.

Bug: skia:11936
Change-Id: If0d81b0fc9148389c2cb4bff597057a2afa2fb1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402956
Reviewed-by: Tyler Denniston <tdenniston@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2021-04-30 15:41:38 +00:00
Kevin Lubick
995f2e6159 [canvaskit] Scope IsWhiteSpace to GlyphRunFlags
Change-Id: I66120e39d1ba6099ff9be1e37438c85a11c7794e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402998
Reviewed-by: Mike Reed <reed@google.com>
2021-04-30 15:29:32 +00:00
Kevin Lubick
e2c14b5e88 [canvaskit] Make local-example explicitly use Python2
The script doesn't work with Python3.

Change-Id: I9ea6397506500f76570540f78aa736873769f92b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/403016
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2021-04-30 15:14:28 +00:00
Jorge Betancourt
14efdd3d50 [androidkit] add transformation operations to Matrix
Change-Id: I5a81087eb56f10786c136df7cf68bb0e34742abf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402676
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-04-30 14:07:18 +00:00
Tyler Denniston
8cfe718e0c [svg] Implement feDiffuseLighting
https://www.w3.org/TR/SVG11/filters.html#feDiffuseLightingElement

- Add SkSVGFeDiffuseLighting node
- Move distant light source direction computation into a method on
  SkSVGFeDistantLight
- Implement distant and point light sources for feDiffuseLighting

Bug: skia:10841
Change-Id: I74b8b9e04be5d2c5ac9f912d015dce96367040a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402645
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-04-29 19:59:48 +00:00
Jorge Betancourt
5cddd7f5e1 [androidkit] implement foundation for 4x4 matrices in AndroidKit backed by SkM44
Change-Id: If623efaadda6064598c6fd69daa4527a4e71cced
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402101
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2021-04-29 19:23:18 +00:00
Tyler Denniston
f208f81e1d [svg] Implement distant light sources for specular lighting
https://www.w3.org/TR/SVG11/filters.html#feDistantLightElement
(specular lighting only in this CL)

Tests filters-specular-01-f and filters-light-02-f should be passing
now. Note that our filters-light-02 result matches the behavior of
Chrome and Firefox, but is different than the official W3C png. We
currently think the test is somewhat poorly written, so we are
comfortable matching the output of Chrome and Firefox.

Bug: skia:10841
Change-Id: Id9517c8594a3826e5d98685d1e7d1d1b3d3cdf51
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402582
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Tyler Denniston <tdenniston@google.com>
2021-04-29 17:17:18 +00:00