Linear interpolation of discrete values

Hi all,

In our discussion about allowing linear interpolation on discrete values
(e.g. enumerations) I raised the concern that I thought SMIL somewhere
suggested using discrete animation even when linear interpolation is
possible if the animation values used enumerated values.[1]

It turned out the prose in question actually refers to addition:

  If a given attribute or property can take values of keywords (which
are not additive) or numeric values (which are additive), then additive
animations are possible if the subsequent animation uses a numeric value
even if the base animation uses a keyword value; however, if the
subsequent animation uses a keyword value, additive animation is not
possible.[2]

As a result it doesn't impact the proposal.

Gecko and Presto don't appear to heed the above section with regards to
addition either. I couldn't get sensible results out of WebKit for the
following test (it possibly doesn't support single-valued values animation).

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
 <script>
   function reportColours() {
    var colours = "";
    colours += "a:" + getColourForId("a");
    colours += "\n";
    colours += "b:" + getColourForId("b");
    alert(colours);
   }
   function getColourForId(id) {
    var elem = document.getElementById(id);
    return window.getComputedStyle(elem).getPropertyValue("color");
   }
 </script>
 <g color="rgb(50,50,50)" id="a">
   <animate attributeName="color" values="rgb(105,105,105)" additive="sum"/>
 </g>
 <g color="rgb(50,50,50)" id="b">
   <animate attributeName="color" values="dimgrey" additive="sum"
   onbegin="reportColours()"/>
 </g>
</svg>

Both Gecko and Presto report

  a:rgb(155, 155, 155)
  b:rgb(155, 155, 155)

Best regards,

Brian Birtles

(ACTION-3210)

[1] http://www.w3.org/2012/01/12-svg-irc#T00-50-31
[2] http://www.w3.org/TR/SVG11/animate.html#AnimationAttributesAndProperties

Received on Friday, 13 January 2012 06:12:54 UTC