Florin Malita
7d529881c4
[SVGDom] Clipped clipPath support
...
ClipPaths can be clipped too, e.g.:
<clipPath id="clip1" clip-path="url(#clip2)">...</clipPath>
Since we're not really drawing clips but resolving their geometry,
asPath() needs to take composed clipping into account (and intersect as
needed).
R=reed@google.com ,robertphillips@google.com,stephana@google.com
Change-Id: I25959e22fe50f72042147cfe6b416b6b9ac20cd4
Reviewed-on: https://skia-review.googlesource.com/5720
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2016-12-09 16:06:25 +00:00
Florin Malita
ce8840e384
[SVGDom] ClipPath support
...
* clip-path attribute handling
* clipPath container element
* asPath() SkSVGNode virtual for capturing subtree geometry
R=robertphillips@google.com ,stephana@google.com
Change-Id: I9597534fe3047b631da6309eafac055dff5696e9
Reviewed-on: https://skia-review.googlesource.com/5650
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2016-12-08 15:00:18 +00:00
Florin Malita
e932d4b3a9
[SVGDom] Add fill-rule support
...
There's a bit of friction with this attribute, because per spec it is
an inherited presentation attribute, but in Skia it is part of the
actual SkPath state.
So we must add some plumbing to SkSVGShape & friends to allow overriding
the fill type at render-time.
R=robertphillips@google.com ,stephana@google.com
Change-Id: I9c926d653c6211beb3914bffac50d4349dbdd2c0
Reviewed-on: https://skia-review.googlesource.com/5415
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2016-12-06 16:05:41 +00:00
fmalita
bef51c23c3
[SVGDom] Opacity optimization
...
Apply opacity as fill/stroke paint alpha instead of saveLayer, when
possible.
R=robertphillips@google.com ,stephana@google.com,reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353503005
Committed: https://skia.googlesource.com/skia/+/3dbb7b9f196d793fbd16243157ee67638891f5dc
Review-Url: https://codereview.chromium.org/2353503005
2016-09-20 15:45:57 -07:00
borenet
a5344ee50a
Revert of [SVGDom] Opacity optimization (patchset #4 id:60001 of https://codereview.chromium.org/2353503005/ )
...
Reason for revert:
Failing assertion
Original issue's description:
> [SVGDom] Opacity optimization
>
> Apply opacity as fill/stroke paint alpha instead of saveLayer, when
> possible.
>
> R=robertphillips@google.com ,stephana@google.com,reed@google.com
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353503005
>
> Committed: https://skia.googlesource.com/skia/+/3dbb7b9f196d793fbd16243157ee67638891f5dc
TBR=reed@google.com ,robertphillips@google.com,stephana@google.com,fmalita@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/2359603002
2016-09-20 13:39:46 -07:00
fmalita
3dbb7b9f19
[SVGDom] Opacity optimization
...
Apply opacity as fill/stroke paint alpha instead of saveLayer, when
possible.
R=robertphillips@google.com ,stephana@google.com,reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353503005
Review-Url: https://codereview.chromium.org/2353503005
2016-09-20 12:44:31 -07:00
fmalita
7cf4ae7122
[SVGDom] Only apply opacity when needed
...
Opacity: 1 is a no-op, but it shows up quite a bit in existing documents.
R=robertphillips@google.com ,stephana@google.com,reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349143002
Review-Url: https://codereview.chromium.org/2349143002
2016-09-19 06:42:39 -07:00
fmalita
e1baa7c105
[SVGDom] Expose intrinsic size info
...
* expose intrinsic size info on <svg> nodes.
* tweak the SkSVGDOM constructor to no longer take an container size
param, but instead default to intrinsic size
* update clients to call SkSVGDOM::setContainerSize() explicitly, when
needed
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345533002
Review-Url: https://codereview.chromium.org/2345533002
2016-09-14 12:04:30 -07:00
fmalita
ceb93abddc
[SVGDom] Linear gradient 'gradientTransform' support
...
R=stephana@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339533002
Review-Url: https://codereview.chromium.org/2339533002
2016-09-13 13:59:05 -07:00
fmalita
cecd617a42
[SVGDom] Linear gradient 'spreadMethod' support
...
R=stephana@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2337203002
Review-Url: https://codereview.chromium.org/2337203002
2016-09-13 12:56:11 -07:00
fmalita
28d5b72d86
[SVGDom] Initial linear gradient support
...
Kind of a big change, to connect several new bits into something useful:
* ID tracking & lookup
* new asPaint() node virtual to support shader (and in the future filter) based paint servers
* <defs>, <linearGradient> and <stop> element support
* 'href', 'offset', 'stop-color', 'stop-opacity' attribute support
* IRI/FuncIRI and rgb(...) parsing
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2327233003
Review-Url: https://codereview.chromium.org/2327233003
2016-09-12 17:06:47 -07:00
fmalita
a26cab0c53
[SVGDom] Don't truncate opacity scalars
...
Round instead, for more accurate values.
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2284123003
Review-Url: https://codereview.chromium.org/2284123003
2016-08-29 05:54:42 -07:00
fmalita
6cf896d7ce
Reland: Experimental parsing expression grammar (PEG) template library
...
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271743002
Committed: https://skia.googlesource.com/skia/+/9d08cbc8c6131ff61a1e71cc5c8cf27841d62b42
Review-Url: https://codereview.chromium.org/2271743002
2016-08-25 08:44:35 -07:00
fmalita
0172e77ad6
Revert of Experimental parsing expression grammar (PEG) template library (patchset #8 id:140001 of https://codereview.chromium.org/2271743002/ )
...
Reason for revert:
G3 roll & Msan woes.
Original issue's description:
> Experimental parsing expression grammar (PEG) template library
>
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271743002
>
> Committed: https://skia.googlesource.com/skia/+/9d08cbc8c6131ff61a1e71cc5c8cf27841d62b42
TBR=mtklein@google.com ,bungeman@google.com,reed@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review-Url: https://codereview.chromium.org/2275943004
2016-08-25 05:50:26 -07:00
fmalita
9d08cbc8c6
Experimental parsing expression grammar (PEG) template library
...
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2271743002
Review-Url: https://codereview.chromium.org/2271743002
2016-08-24 18:23:25 -07:00
fmalita
be49378e92
[SVGDom] Fix <ellipse> positioning
...
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253283002
Review-Url: https://codereview.chromium.org/2253283002
2016-08-17 15:08:48 -07:00
fmalita
280e282d2a
[SVGDom] Add support for assorted absolute units
...
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259473002
Review-Url: https://codereview.chromium.org/2259473002
2016-08-17 14:51:03 -07:00
fmalita
d24ee1419f
[SVGDom] Add <line> support
...
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2244223005
Review-Url: https://codereview.chromium.org/2244223005
2016-08-17 08:38:15 -07:00
fmalita
dc4c2a9fb7
[SVGDom] Add <circle>, <ellipse> support
...
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2249033003
Review-Url: https://codereview.chromium.org/2249033003
2016-08-16 15:38:51 -07:00
fmalita
6fb0648c35
[SVGDom] Add opacity support
...
Group opacity support. Unlike the other presentation attributes we
support thus far, group opacity is not inherited.
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246943002
Review-Url: https://codereview.chromium.org/2246943002
2016-08-15 12:45:11 -07:00
fmalita
ca39d716f1
[SVGDom] SVGPong sample app
...
Shows off SVG dom-based animations.
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2243853003
Review-Url: https://codereview.chromium.org/2243853003
2016-08-12 13:17:11 -07:00
fmalita
5b31f321fc
[SVGDom] <polygon> & <polyline> support
...
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2235273003
Review-Url: https://codereview.chromium.org/2235273003
2016-08-12 12:15:33 -07:00
fmalita
2d961e086b
[SVGDom] Add more presentation attributes.
...
Implement proper presentation attribute inheritance, and add
support for
* fill-opacity
* stroke-linecap
* stroke-linejoin
* stroke-opacity
* stroke-width
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2234153002
Review-Url: https://codereview.chromium.org/2234153002
2016-08-11 09:16:29 -07:00
fmalita
286a8657da
[SVGDom] Add rx/ry support for <rect>
...
R=stephana@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2234863002
Review-Url: https://codereview.chromium.org/2234863002
2016-08-10 17:11:29 -07:00
fmalita
fea704e115
[SVGDom] Disable verbose parsing messages be default
...
Guard with SK_VERBOSE_SVG_PARSING
R=robertphillips@google.com ,rmistry@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2235963003
Review-Url: https://codereview.chromium.org/2235963003
2016-08-10 16:25:33 -07:00
fmalita
61f36b3708
[SVGDom] Improve whitespace handling in style parsing
...
Handle whitespace-padded style names/values.
R=stephana@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2225623002
Review-Url: https://codereview.chromium.org/2225623002
2016-08-08 13:58:50 -07:00
fmalita
c97796b47b
[SVGDom] Improved transform parsing
...
Update 'transform' attribute parsing to a more robust, SkSVGAttributeParser-based implementation.
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2220933003
Review-Url: https://codereview.chromium.org/2220933003
2016-08-08 12:58:57 -07:00
fmalita
397a517d1a
[SVGDom] Add viewBox support
...
The main feature is <svg> viewBox and proper viewport support, but the CL
touches a few other things:
* refactor SkSVGRenderContext to auto-restore canvas state, and split the
presentation bits into a separate CoW SkSVGPresentationContext
* introduce SkSVGNode::onPrepareToRender(), as a way for nodes to push their
custom state before the actual onRender() call (instead of relying on
non-virtual SkSVGNode to know about all possible state bits)
* add a "Type" suffix to SVG types, to disambiguate (e.g. SkSVGRectType vs.
SkSVGRect)
R=robertphillips@google.com ,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222793002
Review-Url: https://codereview.chromium.org/2222793002
2016-08-08 11:38:55 -07:00
fmalita
bffc256687
[SVGDom] Initial SVGLength support
...
Mostly plumb new length types, but also introduce a stateful parser,
rect shape and named color support.
R=reed@google.com ,robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2202053002
Review-Url: https://codereview.chromium.org/2202053002
2016-08-03 10:21:11 -07:00
fmalita
58649ccc75
[SVGDom] Parse style attributes
...
Dispatch style-encoded (style="foo: bar; ...") attributes via normal
attribute setters.
R=reed@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2193663002
Review-Url: https://codereview.chromium.org/2193663002
2016-07-29 08:52:03 -07:00
fmalita
6ceef3dd67
Initial SVG model
...
A minimal subset needed to render tiger.svg: <svg>, <g>, <path>, 'd', 'fill'/'stroke' (color-only), 'transform'.
R=reed@google.com ,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2164193002
Review-Url: https://codereview.chromium.org/2164193002
2016-07-26 18:46:34 -07:00
fmalita
2aafe6f427
Add SkSVGCanvas
...
Add a public SVG canvas factory + move the SVG files from
experimental -> src/svg/.
Update current clients to the new API.
R=reed@google.com , mtklein@google.com , halcanary@google.com
Review URL: https://codereview.chromium.org/902583006
2015-02-06 12:51:10 -08:00
reed
e73da40c35
add length parameter to addText, to match attr values
...
BUG=skia:3392
Review URL: https://codereview.chromium.org/896363002
2015-02-04 18:29:27 -08:00
fmalita
a9d9de45c1
[SkSVGDevice] drawTextOnPath() support
...
R=reed@google.com ,mtklein@google.com
Review URL: https://codereview.chromium.org/874853003
2015-02-04 17:54:46 -08:00
fmalita
12753ccc9a
[SkSVGDevice] Add support for more stroke params
...
stroke-linecap, stroke-linejoin, stroke-miterlimit, non-scaling-stroke.
R=mtklein@google.com
Review URL: https://codereview.chromium.org/897953004
2015-02-04 14:56:35 -08:00
fmalita
1a481fe4bf
[SkSVGDevice] Initial clipping support
...
Implement SVG clips based on clip stack flattening -
which is now exposed in SkClipStack::asPath() and shared
with SkCanvas's simplify-clip code.
R=reed@google.com ,mtklein@google.com
Review URL: https://codereview.chromium.org/876923003
2015-02-04 07:39:34 -08:00
fmalita
fe3f260ff9
[SkSVGDevice] Initial text support
...
R=reed@google.com ,mtklein@google.com
Review URL: https://codereview.chromium.org/899683002
2015-02-03 17:47:12 -08:00
fmalita
532faa9021
[SkSVGDevice] Initial shader/gradient support
...
* linear gradient support (based on shawcroft@google.com's CL)
* generic paint resources reorg
* opacity support
R=reed@google.com ,mtklein@google.com,halcanary@google.com
Review URL: https://codereview.chromium.org/892973002
2015-02-03 05:44:40 -08:00
fmalita
93957f4e80
Initial SVG backend stubbing
...
This adds SkSVGDevice and a small utility for converting SKP files to SVG (skp2svg).
R=reed@google.com ,jcgregorio@google.com
BUG=skia:3368
Review URL: https://codereview.chromium.org/892533002
2015-01-30 09:03:29 -08:00