- From: Dr. Olaf Hoffmann <Dr.O.Hoffmann@gmx.de>
- Date: Wed, 9 Jun 2010 20:18:23 +0200
- To: www-svg@w3.org
Ken Stacey: >Thanks Olaf, > >But I'm still confused. The example is confusing, I agree. > >> the SMIL result for the frozen value is #404040 + 0.5 * inherit. >> Because according to SVG/CSS inherit can be a time dependent color >> value, this result is time dependent as well. > >I understand that inherited values can be time dependent. The animation >function is time dependent, obviously, and must yield a valid value. At > 2.5s that value is a color. Why is that value not the frozen value? >Or, to edit your result above, why isn't the frozen value > >f(2.5) = #404040 + 0.5 * inherit(2.5) > >Ken I think, this case is not explictly discussed in SMIL. There it is not assumed, that something currently animated can be an item of a values list itself. Obviously SVG/CSS allows this anyway. To get f(t >2.5) = #404040 + 0.5 * inherit(2.5) one had to freeze the animation too, inherit results from, else this still changes. But as mentioned, the animation is not finished, until it is for example restarted or the document ends. Therefore still each time the viewer has to create a new presentation, it has to look for changes (SMIL cares more about new entries in the begin and end time lists). Because SVG wants the current value to be presented for inherit, the viewer has to update this for the presentation. The result f(t>2.5)=#404040 + 0.5 * inherit(t) is simply derived from SMIL formulas without thinking to much about what it means, before the result is written down (trying to get the result before interpreting it). Indeed SMIL only explains that one has to freeze the animation with f(t>2.5)=#404040 + 0.5 * inherit, but there is no indication, that 'inherit' itself is frozen too, just this interpolation state. And for <animate attributeName="fill" to="blue;inherit" dur="10s" fill="freeze" /> it is clearly expected, that if the inherited value is changed, the appearence has to change as well - else it would be pretty useless to put inherit into the animation at all. Just because the more complicated case results in a mixture, this does not indicate, that the expectation changes. But such a mixture can complicate implementations of course. I think, it would be helpful to mention this or your suggestion as the intended behaviour, whatever seems to be more useful. If written down as a rule this is much better then trying to derive a result from SMIL, I assume it was not intended for. Maybe I'm wrong with my result, then someone should explain how to get another result with the rules from SMIL. If you have <g> <animate attributeName="fill" values="blue;red" dur="10s" /> <circle r="1"> <animate attributeName="fill" by="green" dur="10s" end="5s" fill="freeze" /> </circle> </g> the color changes as well after 5s, because the underlying value still changes. Not really the same but already an indication, that things do not necessarily stop to change, if the animation with the highest priority is frozen (what would apply here only for 'to' instead of 'by'). Olaf
Received on Wednesday, 9 June 2010 18:26:53 UTC