W3C home > Mailing lists > Public > www-svg@w3.org > July 2000

Re: Animation and inherit

From: Jon Ferraiolo <jferraio@Adobe.COM>
Date: Thu, 13 Jul 2000 09:46:50 -0700
Message-Id: <200007131643.JAA17081@mail-345.corp.Adobe.COM>
To: Russ Shotts <rshotts@jasc.com>
Cc: www-svg@w3.org
Russ,
Consider animation to be a sequence of discrete frames. (This is usually
how it will be implemented.) At each frame, there is a document with a
current set of property values, some of which have been set by running
animations. At that moment in time, each element has a known value for each
property. (In the CSS model, every element has a "specified value" for
every possible property.) For that moment in time, recompute the entire
document by reapplying the CSS cascade, and redo all inheritance. Then
render the frame.

This model may sound very heavy, and likely to run very slowly in some
cases, but the model is necessary to prevent animations for overriding
!important settings in user style sheets, which must be supported to meet
the needs for accessibility. There are various shortcuts that an
implementation can use to avoid having to run the CSS cascade, and there
are guidelines to authors that can be given to minimize/eliminate the need
to run the CSS cascade with each frame. I would expect that animating a
property on a container element would tend generate some sort of
performance hit since inheritance might have to be recomputed for each of
the descendants of that container.

Jon Ferraiolo
SVG Editor
Adobe Systems Incorporated


At 12:25 PM 7/12/00 -0500, Russ Shotts wrote:
>
>
>Section 19.2.9 of the spec states that animated attributes and properties
>can be inherited by descendent elements.  What happens when an inherited
>attribute is animated on a descendent?  What if 'inherit' is used as a
>value?
>
>
>    <g style="stroke-width:5; stroke:black; fill:none" >  
>
>        <ellipse cx="300" cy="200" rx="100" ry="20" >
>            <animate attributeName="stroke-width" to="10" dur="10s"
>repeatCount="100"/>
>        </ellipse>
>
>        <ellipse cx="300" cy="400" rx="100" ry="20" >
>            <animate attributeName="stroke-width" values="10; inherit; 20"
>dur="10s" repeatCount="100"/>
>        </ellipse>
>
>    </g>
>
>
>
>What if the attribute is also animated on the parent group?
>
>    <g style="stroke-width:5; stroke:black; fill:none" >  
>        <animate attributeName="stroke-width" values="5; 20; 5;" begin="5s"
>dur="10s" repeatCount="100" additive="sum"/>
>
>        <ellipse cx="300" cy="200" rx="100" ry="20" >
>            <animate attributeName="stroke-width" to="10" dur="10s"
>repeatCount="100"/>
>        </ellipse>
>
>        <ellipse cx="300" cy="400" rx="100" ry="20" >
>            <animate attributeName="stroke-width" values="10; inherit; 20"
>dur="10s" repeatCount="100"/>
>        </ellipse>
>
>    </g>
>
>
>Thanks.
>
>Russ Shotts
>Senior Software Engineer
>Jasc Software, Inc
> 
Received on Thursday, 13 July 2000 12:52:05 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 15:54:19 GMT