aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/svg/model/SkSVGRenderContext.cpp
Commit message (Collapse)AuthorAge
* Revert "Revert "SkTypes: extract SkTo""Gravatar Hal Canary2018-06-14
| | | | | | | | | | | | | | | | This reverts commit fdcfb8b7c23fbf18f872d2c31d27978235033876. > Original change's description: > > SkTypes: extract SkTo > > > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > > Reviewed-on: https://skia-review.googlesource.com/133620 > > Reviewed-by: Mike Klein <mtklein@google.com> Change-Id: Ida74fbc5c21248a724a5edbf9fae18a33bcb23aa Reviewed-on: https://skia-review.googlesource.com/134506 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Revert "SkTypes: extract SkTo"Gravatar Hal Canary2018-06-13
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 2a2f67592602b18527bc3fd449132d420cd5b62e. Reason for revert: this appears to be what is holding up the Chrome roll. Original change's description: > SkTypes: extract SkTo > > Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 > Reviewed-on: https://skia-review.googlesource.com/133620 > Reviewed-by: Mike Klein <mtklein@google.com> TBR=mtklein@google.com,halcanary@google.com No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Iafd738aedfb679a23c061a51afe4b98a8d4cdfae Reviewed-on: https://skia-review.googlesource.com/134504 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkTypes: extract SkToGravatar Hal Canary2018-06-12
| | | | | | Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09 Reviewed-on: https://skia-review.googlesource.com/133620 Reviewed-by: Mike Klein <mtklein@google.com>
* [SVGDom] Add 'stroke-dashoffset' supportGravatar Florin Malita2017-10-13
| | | | | | | | https://www.w3.org/TR/SVG/painting.html#StrokeDashoffsetProperty Change-Id: Ia25d0048a56ac3835cabcb4e1794d91667367d7c Reviewed-on: https://skia-review.googlesource.com/59820 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [SVGDom] Add 'stroke-dasharray' supportGravatar Florin Malita2017-10-13
| | | | | | | | https://www.w3.org/TR/SVG/painting.html#StrokeDasharrayProperty Change-Id: I9a63ebbd958d661c865ed405570b86cca68f63bf Reviewed-on: https://skia-review.googlesource.com/59700 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Robert Phillips <robertphillips@google.com>
* [SVGDom] Add 'visibility' supportGravatar Florin Malita2017-10-12
| | | | | | | | | https://www.w3.org/TR/SVG/painting.html#VisibilityProperty Change-Id: I8b872af26150d93cf39cf8eeba23c91e1decace3 Reviewed-on: https://skia-review.googlesource.com/58863 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [SVGDom] Initial <pattern> supportGravatar Florin Malita2017-10-11
| | | | | | | | | https://www.w3.org/TR/SVG/pservers.html#Patterns Change-Id: I80455c4ae04cf03526f8e8797f40b0b2d24e043f Reviewed-on: https://skia-review.googlesource.com/58461 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Robert Phillips <robertphillips@google.com>
* [SVGDom] Avoid some unneeded canvas save()sGravatar Florin Malita2017-10-11
| | | | | | | | | | | The canvas only needs to be saved once, per local SkSVGRenderContext. Add a helper (saveOnce) to implement this optimization. Change-Id: I0c21fa78ad9fd5d3d11de0a29f8441620488d676 Reviewed-on: https://skia-review.googlesource.com/58340 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Robert Phillips <robertphillips@google.com>
* [SVGDom] Add clip-rule supportGravatar Florin Malita2017-10-10
| | | | | | | | | | | | | Currently we use 'fill-rule' when emitting clip paths. This is wrong: per spec [1], clip paths observe 'clip-rule', not 'fill-rule'. [1] https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty Change-Id: Idf81de05e9601663c8dbc9856900ffa679daf4a5 Reviewed-on: https://skia-review.googlesource.com/57661 Reviewed-by: Robert Phillips <robertphillips@google.com> Reviewed-by: Stephan Altmueller <stephana@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [SVGDom] stroke-miterlimit supportGravatar Florin Malita2017-10-10
| | | | | | | | https://www.w3.org/TR/SVG/painting.html#StrokeMiterlimitProperty Change-Id: I5e488e95afe17c4b753e8177ea5783d4820e3d2c Reviewed-on: https://skia-review.googlesource.com/57221 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
* [SVGDom] Clipped clipPath supportGravatar Florin Malita2016-12-09
| | | | | | | | | | | | | | | | | 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>
* [SVGDom] ClipPath supportGravatar Florin Malita2016-12-08
| | | | | | | | | | | | | * 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>
* [SVGDom] Add fill-rule supportGravatar Florin Malita2016-12-06
| | | | | | | | | | | | | | | | 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>
* [SVGDom] Opacity optimizationGravatar fmalita2016-09-20
| | | | | | | | | | | 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
* Revert of [SVGDom] Opacity optimization (patchset #4 id:60001 of ↵Gravatar borenet2016-09-20
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [SVGDom] Opacity optimizationGravatar fmalita2016-09-20
| | | | | | | | | | 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
* [SVGDom] Only apply opacity when neededGravatar fmalita2016-09-19
| | | | | | | | | 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
* [SVGDom] Initial linear gradient supportGravatar fmalita2016-09-12
| | | | | | | | | | | | | | | 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
* [SVGDom] Don't truncate opacity scalarsGravatar fmalita2016-08-29
| | | | | | | | | 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
* [SVGDom] Add support for assorted absolute unitsGravatar fmalita2016-08-17
| | | | | | | R=robertphillips@google.com,stephana@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2259473002 Review-Url: https://codereview.chromium.org/2259473002
* [SVGDom] Add opacity supportGravatar fmalita2016-08-15
| | | | | | | | | | 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
* [SVGDom] Add more presentation attributes.Gravatar fmalita2016-08-11
| | | | | | | | | | | | | | | | 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
* [SVGDom] Add viewBox supportGravatar fmalita2016-08-08
| | | | | | | | | | | | | | | | | | | | 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
* [SVGDom] Initial SVGLength supportGravatar fmalita2016-08-03
| | | | | | | | | | 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
* Initial SVG modelGravatar fmalita2016-07-26
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