Comments about SMIL Animations and CSS Inheritance

Dear SMIL experts,

I sent an email [1] on the SVG Public Mailing List concerning problems 
that I have when implementing SVG, SMIL and CSS together. In this email, 
I proposed changes to the SMIL specification to clarify some aspects 
about CSS inheritance and animation. Someone suggested to post the SMIL 
part of the comments on this reflector. Here they are.

A) Typo:
"The animation effect function of an element is the function which 
includes the affect of the underlying value and accounts for repeating 
and freezing of the element."
should read:
"The animation effect function of an element is the function which 
includes the _effect_ of the underlying value and accounts for repeating 
and freezing of the element. "

B) The following sentences from the animation sandwich model are at best 
confusing, if not contradictory. They should be clarified.

"The remainder of this discussion uses the generic term OM for both the 
XML DOM [DOM2] as well as the CSS-OM."
and
"Note that animations manipulate the presentation value coming out of 
the OM in which the attribute is defined, and pass the resulting value 
on to the next layer of document processing. This does not replace or 
override any of the normal document OM processing cascade. "
and
"The values produced by the animation are written into an override 
stylesheet for that element, which may be obtained using the 
getOverrideStyle() method. These new values then affect the cascade and 
are reflected in a new computed value (and thus, modified presentation)."

Saying in one sentence that the presentation value does not override the 
OM value and, in the other sentence, saying that it is obtained using a 
function named 'override' is confusing. Then saying that the 
presentation value affects the cascade while the first sentence says 
that it does not override the normal document cascade is also confusing. 
Then, I could not find a definition of CSS OM value, is it the CSS 
specified value ? Please use defined terminology and link terms to their 
definition.

C) For properties, the specification seems to say that the base value is 
the computed value ("is read using the (readonly) getComputedStyle() 
method"), but it also says that the result of the animation, the 
presentation value, becomes the new computed value ("reflected in a new 
computed value"). This looks like the result of the animation is 
modifying the input of the animation. If true, for additive animations, 
depending on the number of evaluations of the animation, one could get 
different result. I don't think this is what is wanted here. These 
sentences are confusing. I think it should say that "the new computed 
value" is only used for display, or by other animations, or for 
inheritance, but it should say that for the next computation of this 
animation the getComputeStyle function will not return that "new 
computed value" but will reevaluate the computed value as if that 
animation had not happen.

D) The main problem with the way animation and inheritance is described 
is that the text is spread over several specifications (DOM Core, DOM 
CSS, DOM View, CSS, SMIL). It is really is a big challenge to understand 
it. I'm not sure I understand it even after having read all of them and 
implemented (most of it). It would help if algorithms in pseudo-code 
were given for attributes and for properties.

Best regards,

Cyril Concolato

[1] http://lists.w3.org/Archives/Public/www-svg/2006Sep/0003.html

Received on Thursday, 7 September 2006 08:32:06 UTC