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.
Windows server component knowledge is recommended before using this component.
The component has the following key concepts:
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.
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.
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.
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.
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.
|
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.
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.