Skip to content

Commit

Permalink
Don't allow interpolating 'fill:none' with 'fill:none'
Browse files Browse the repository at this point in the history
In SMIL we don't expect the 'none' value of the 'fill' property to be
additive and hence the following animation should have no effect:

  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="red" by="none"/>
  </rect>

Although SMIL doesn't make this entirely clear, [1] says that "by
animation" and "from-by animation" may only be used "with attributes
that support addition (e.g.  most numeric attributes)" and [2] says that
<paint>s are "only additive if each value can be converted to an RGB
color". As a result, the animation above should have no effect.

By extrapolation, animating from 'none' by 'none' should also have no
effect:

  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="none" by="none"/>
  </rect>

However, in Servo's interpolation of <paint>s we special case the
interpolation and addition of 'none' such that if both values are 'none'
it is allowed.

We should disallow this in order to produce the expected behavior and in
order to match Gecko's behavior.

[1] https://www.w3.org/TR/smil-animation/#AnimFuncValues
[2] https://www.w3.org/TR/SVG11/animate.html#AnimationAttributesAndProperties
  • Loading branch information
birtles committed Aug 16, 2017
1 parent dc654c9 commit 9ecb0aa
Showing 1 changed file with 0 additions and 1 deletion.
Expand Up @@ -2478,7 +2478,6 @@ impl Animatable for IntermediateSVGPaintKind {
}
// FIXME context values should be interpolable with colors
// Gecko doesn't implement this behavior either.
(&SVGPaintKind::None, &SVGPaintKind::None) => Ok(SVGPaintKind::None),
(&SVGPaintKind::ContextFill, &SVGPaintKind::ContextFill) => Ok(SVGPaintKind::ContextFill),
(&SVGPaintKind::ContextStroke, &SVGPaintKind::ContextStroke) => Ok(SVGPaintKind::ContextStroke),
_ => Err(())
Expand Down

0 comments on commit 9ecb0aa

Please sign in to comment.