diff -r 51a74ef9ed63 -r ae94777fff8f Symbian3/SDK/Source/GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita Fri Jun 11 12:39:03 2010 +0100 @@ -0,0 +1,147 @@ + + + + + +Animation +overview +
Purpose

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.

+
Required background

Windows +server component knowledge is recommended before using this component.

+
Key concepts

The component has the following key +concepts:

+ +
Animation
+

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.

+
+ +
Animator
+

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.

+
+ +
Data provider
+

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.

+
+ +
Observer
+

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.

+
+
+
Architectural relationships

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.

The animation framework also +provides concrete implementations of the abstract classes. The concrete implementations +of the CAnimation class are:

    +
  • CBasicAnimation

    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.

  • +
  • CSpriteAnimation

    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 Using Window +Server (WSERV).

  • +
  • CAnimationGroup

    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.

  • +

The framework provides the following concrete implementations for +the other two abstract classes, CAnimationDataProvider and CAnimator:

    +
  • CICLAnimationDataProvider

    This +class interprets various data types including animated GIFs using the Image Conversion Library (ICL). +It provides data to the animation class in the form of individual frames using +the CAnimationFrame object which contains a bitmap, a mask, +and frame information.

  • +
  • CBitmapAnimator

    This +class can handle fixed sequence of bitmap frames passed by the data provider.

  • +
+
API summary

+ + + +Class Name +Description + + + + +

CAnimation

+

This is an abstract generic class which provides the basic functionality +for all types of animations.

+
+ +

CAnimator

+

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.

+
+ +

CAnimationDataProvider

+

This is an abstract class, which takes the animation data and converts +it into a format recognized by the animator.

+
+ +

CBasicAnimation

+

This is a concrete implementation class of the CAnimation class. +This class is used for basic client-side animations.

+
+ +

CSpriteAnimation

+

This is a concrete implementation class of the CAnimation class. +This class is used for sprite animations.

+
+ + +
+
Typical uses

Creating a basic animation

The +animation framework can be used to create a basic client-side animation using +the CBasicAnimation class. You can also have your own implementation +for other type of animations. For more information, refer to How +to create a basic animation.

Creating a sprite animation

The +animation framework supports server-side sprite animations using the CSpriteAnimation 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.

+
+How to create +a basic animation +Using Window +Server (WSERV) +
\ No newline at end of file