Summary: | Fix SVG animations which set rx or ry attributes | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Peter Molnar <pmolnar.u-szeged> | ||||
Component: | SVG | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | commit-queue, d-r, esprehn+autocc, fmalita, glenn, gyuyoung.kim, kondapallykalyan, pdr, schenney, zimmermann | ||||
Priority: | P2 | Keywords: | BlinkMergeCandidate | ||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Attachments: |
|
Description
Peter Molnar
2014-01-21 02:37:58 PST
Created attachment 221730 [details]
patch
Comment on attachment 221730 [details] patch Clearing flags on attachment: 221730 Committed r162438: <http://trac.webkit.org/changeset/162438> All reviewed patches have been landed. Closing bug. Comment on attachment 221730 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=221730&action=review > Source/WebCore/rendering/svg/SVGPathData.cpp:119 > + bool hasRx = rect->rx().value(lengthContext) > 0; > + bool hasRy = rect->ry().value(lengthContext) > 0; Wasteful to repeat these expressions once to evaluate the has booleans and a second time if either is true. Should refactor so we don’t do it twice. Also, is > 0 really the correct test? Is that from the spec, or just copying what the Blink folks did? Did the Blink folks give a rationale for that particular test? (In reply to comment #4) > (From update of attachment 221730 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=221730&action=review > > > Source/WebCore/rendering/svg/SVGPathData.cpp:119 > > + bool hasRx = rect->rx().value(lengthContext) > 0; > > + bool hasRy = rect->ry().value(lengthContext) > 0; > > Wasteful to repeat these expressions once to evaluate the has booleans and a second time if either is true. Should refactor so we don’t do it twice. Excellent catch Darin. We should definitely refactor that into a helper function. > > Also, is > 0 really the correct test? Is that from the spec, or just copying what the Blink folks did? Did the Blink folks give a rationale for that particular test? The Blink folks did a terrible job of describing this change and I apologize for that :( The spec is clear about negative rx/ry values in https://svgwg.org/svg2-draft/single-page.html#shapes-RectElement, and the new behavior matches Firefox (IE does not support SMIL). This change is really about making the negative rx/ry logic work for animations as well. The hasAttribute check is not appropriate for attributes that can be set by an animation element. (In reply to comment #5) > (In reply to comment #4) > > (From update of attachment 221730 [details] [details]) > > View in context: https://bugs.webkit.org/attachment.cgi?id=221730&action=review > > > > > Source/WebCore/rendering/svg/SVGPathData.cpp:119 > > > + bool hasRx = rect->rx().value(lengthContext) > 0; > > > + bool hasRy = rect->ry().value(lengthContext) > 0; > > > > Wasteful to repeat these expressions once to evaluate the has booleans and a second time if either is true. Should refactor so we don’t do it twice. > > Excellent catch Darin. We should definitely refactor that into a helper function. > > > > > Also, is > 0 really the correct test? Is that from the spec, or just copying what the Blink folks did? Did the Blink folks give a rationale for that particular test? > > The Blink folks did a terrible job of describing this change and I apologize for that :( > The spec is clear about negative rx/ry values in https://svgwg.org/svg2-draft/single-page.html#shapes-RectElement, and the new behavior matches Firefox (IE does not support SMIL). This change is really about making the negative rx/ry logic work for animations as well. The hasAttribute check is not appropriate for attributes that can be set by an animation element. I created a new bug for the follow-up: https://bugs.webkit.org/show_bug.cgi?id=127423 The double calculation issue is resolved there. |