--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License
+"Eclipse Public License v1.0" which accompanies this distribution,
+and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
+<!-- Initial Contributors:
+ Nokia Corporation - initial contribution.
+Contributors:
+-->
+<!DOCTYPE concept
+ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-829761B6-ECF7-5E15-A475-AEE357687067" xml:lang="en"><title>Animation
+overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1FDB9A85-EA5C-4FA9-902C-A2DD7C23EE28"><title>Purpose</title> <p>The animation component is a framework
+that provides support to build animated graphics applications. It provides
+the basic data types that allow animations to be incorporated into the normal
+drawing of a window from the client, or to be managed on the server as a sprite. </p> </section>
+<section id="GUID-81E07DE3-E680-410C-A22D-809D72E9CD6D"><title>Required background</title> <p><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Windows
+server</xref> component knowledge is recommended before using this component. </p> </section>
+<section id="GUID-DC47F478-274F-4669-AAF4-C6BD04D7D7D1"><title>Key concepts</title> <p>The component has the following key
+concepts: </p> <dl>
+<dlentry>
+<dt>Animation</dt>
+<dd><p>The animation is a fairly abstract interface owned by a client application.
+The interface is independent of the source of the data it uses, as the data
+providers are responsible for providing data to the animation. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Animator</dt>
+<dd><p>The animator represents each data type supported by the animation framework.
+It can handle data interpretation, timing and control of the animation. An
+animator is not be visible to the owner of the animation, but is controlled
+through it using a standard interface. The animators can either reside on
+the client or on the server. Each animation selects an animator plug-in to
+be used by providing an appropriate string obtained from the data provider. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Data provider</dt>
+<dd><p>A data provider is a generic interface to handle different kinds of
+data, which has different structures and behaviours, for example, GIFs and
+SVG (Scalable Vector Graphics). Animations access the data providers they
+own through an observer interface, which reports events to the animation.
+The interface in turn reports these events to the respective animators. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Observer</dt>
+<dd><p>An observer acts as an interface and is responsible for reporting events.
+The animation framework provides two such observers: a data provider observer,
+and an animation observer. The data provider observer is an interface between
+the animation and the data provider. Using this observer the animation can
+receive data and events from the data provider. The animation observer is
+an interface between the animation and the client application, and is used
+to report events to the client application. In Symbian OS v9.1, the animation
+observer is implemented to report only errors to the client application. </p> </dd>
+</dlentry>
+</dl> </section>
+<section id="GUID-71398AF6-16D5-4FC5-9342-44304C0A3066"><title>Architectural relationships</title> <p>The animation component
+provides a set of abstract classes with some basic functionality required
+for any type of animation. Implementors have to derive their own classes using
+these abstract classes to support specific animation types such as bitmap
+animation, sprite animation and so on. </p> <p>The animation framework also
+provides concrete implementations of the abstract classes. The concrete implementations
+of the <codeph>CAnimation</codeph> class are: </p> <ul>
+<li id="GUID-0E148B3E-F6D0-5AC0-B721-FB3BECD432F7"><p> <b>CBasicAnimation</b> </p> <p>This
+is a client-side animation class which can also act as a data provider observer
+and an animation drawer. It provides a bitmap and a mask on which the animation
+is submitted. This class establishes a session with the windows server before
+submitting the animation to a particular window. </p> </li>
+<li id="GUID-4E7B61AF-0FF0-5EBF-A46B-F42D747CF866"><p> <b>CSpriteAnimation</b> </p> <p>This
+is a server-side animation class for sprite based animations. The client has
+limited control over the animation, as sprites are server-side graphic objects
+and are controlled by the server. This class makes use of the windows server
+animation API to submit sprite animations. For more information on these APIs,
+refer to <xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Using Window
+Server (WSERV)</xref>. </p> </li>
+<li id="GUID-3514D632-4090-51BD-AD26-B98CA6B31ADC"><p> <b>CAnimationGroup</b> </p> <p>This
+class is not an animation class by itself, but is a collection of animations
+grouped together. It provides access to an array of animation references and
+handles all synchronisation issues among the animations in the group, provided
+all the animations are of the same type. For example, if a set of client-side
+animations are grouped together, they respond to commands collectively in
+synchronisation with each other. If the group includes both sprite and client-side
+animations, they will respond to commands collectively in asynchronous mode. </p> </li>
+</ul> <p>The framework provides the following concrete implementations for
+the other two abstract classes, <codeph>CAnimationDataProvider</codeph> and <codeph>CAnimator</codeph>: </p> <ul>
+<li id="GUID-C7FB57BB-25C4-5813-9C0A-B71433999EB3"><p> <b>CICLAnimationDataProvider</b> </p> <p>This
+class interprets various data types including animated GIFs using the <xref href="GUID-6B478F86-1EC4-5F78-B7C8-C2E5FCD974B6.dita">Image Conversion Library</xref> (ICL).
+It provides data to the animation class in the form of individual frames using
+the <codeph>CAnimationFrame</codeph> object which contains a bitmap, a mask,
+and frame information. </p> </li>
+<li id="GUID-650EDA72-3CC2-5A08-8E6A-F57755B6EEAE"><p> <b>CBitmapAnimator</b> </p> <p>This
+class can handle fixed sequence of bitmap frames passed by the data provider. </p> </li>
+</ul> </section>
+<section id="GUID-20A5B4F1-586A-4ADC-96C5-E4CF49EC7DA9"><title>API summary</title> <p> </p> <table id="GUID-CA7854D0-7D1C-5BCD-B9E5-A1FB2198AE15">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.60*"/><colspec colname="col1" colwidth="1.40*"/>
+<thead>
+<row>
+<entry>Class Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-40CEAB8C-2202-3E88-929F-35DA5BD554A4.dita"><apiname>CAnimation</apiname></xref> </p> </entry>
+<entry><p>This is an abstract generic class which provides the basic functionality
+for all types of animations. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-AD71F0EC-EB49-3D46-BEEE-B8ECD30BDDEA.dita"><apiname>CAnimator</apiname></xref> </p> </entry>
+<entry><p>This is an abstract class, which represents each type of data supported
+by the animation framework. This class is implemented as an ECOM plug-in. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CB96F59F-BEF9-3296-A80A-4E8E8BE354C6.dita"><apiname>CAnimationDataProvider</apiname></xref> </p> </entry>
+<entry><p>This is an abstract class, which takes the animation data and converts
+it into a format recognized by the animator. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-12B29886-1D43-37ED-8DC0-6F43D3E591E8.dita"><apiname>CBasicAnimation</apiname></xref> </p> </entry>
+<entry><p>This is a concrete implementation class of the <codeph>CAnimation</codeph> class.
+This class is used for basic client-side animations. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6BB621FF-F799-357C-BEAC-9767D68E7D50.dita"><apiname>CSpriteAnimation</apiname></xref> </p> </entry>
+<entry><p>This is a concrete implementation class of the <codeph>CAnimation</codeph> class.
+This class is used for sprite animations. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-65234329-B7A6-4A07-B32C-BB3B7D161F0C"><title>Typical uses</title> <p><b>Creating a basic animation </b> </p><p>The
+animation framework can be used to create a basic client-side animation using
+the <codeph>CBasicAnimation</codeph> class. You can also have your own implementation
+for other type of animations. For more information, refer to <xref href="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita">How
+to create a basic animation</xref>. </p> <p><b>Creating a sprite animation </b> </p><p>The
+animation framework supports server-side sprite animations using the <codeph>CSpriteAnimation</codeph> class.
+The procedure to create a sprite animation is the same as that for creating
+a basic client-side animation. The only difference between a client-side animation
+and a sprite animation is that client-side animations are redrawn by the client
+application. Whereas, for sprite animations redraws are handled automatically,
+as they run in the window server's high priority thread. </p> </section>
+</conbody><related-links>
+<link href="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita"><linktext>How to create
+a basic animation</linktext></link>
+<link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Using Window
+Server (WSERV)</linktext></link>
+</related-links></concept>
\ No newline at end of file