svgtopt/SVG/SVGImpl/inc/SVGAnimationBase.h
author hgs
Wed, 03 Nov 2010 18:56:10 +0200
changeset 46 88edb906c587
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  SVG Implementation header file
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef _INC_CSVGANIMATIONBASE_
hgs
parents:
diff changeset
    20
#define _INC_CSVGANIMATIONBASE_
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32math.h>
hgs
parents:
diff changeset
    23
#include "SVGElementImpl.h"
hgs
parents:
diff changeset
    24
#include "SVGEventReceiver.h"
hgs
parents:
diff changeset
    25
#include "SVGEvent.h"
hgs
parents:
diff changeset
    26
#include "SVGSchemaData.h"
hgs
parents:
diff changeset
    27
#include "SVGAnimTimeController.h"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#include "GfxFloatFixPt.h"
hgs
parents:
diff changeset
    30
#include "GfxRectangle2D.h"
hgs
parents:
diff changeset
    31
#include "GfxGeneralPath.h"
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include "SVGSvgElementImpl.h"
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
const TUint32       KRmask                  = 0xff0000;
hgs
parents:
diff changeset
    38
const TUint32       KGmask                  = 0x00ff00;
hgs
parents:
diff changeset
    39
const TUint32       KBmask                  = 0x0000ff;
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
const TInt          KBeginElementOffsetRatio = 66;
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
//
hgs
parents:
diff changeset
    44
typedef TUint8      TAnimStatus;
hgs
parents:
diff changeset
    45
const TAnimStatus   KAnimNotActive          = 0;
hgs
parents:
diff changeset
    46
const TAnimStatus   KAnimActive             = 1;
hgs
parents:
diff changeset
    47
const TAnimStatus   KAnimEnd                = 2;
hgs
parents:
diff changeset
    48
const TAnimStatus   KAnimFinished           = 3;
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
typedef TUint8      TAnimFill;
hgs
parents:
diff changeset
    51
const TAnimFill     KAnimFillRemove         = 0;
hgs
parents:
diff changeset
    52
const TAnimFill     KAnimFillFreeze         = 1;
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
typedef TUint8      TAccumulate;
hgs
parents:
diff changeset
    55
const TAccumulate   KAccumNone              = 0;
hgs
parents:
diff changeset
    56
const TAccumulate   KAccumSum               = 1;
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
typedef TUint8      TAdditive;
hgs
parents:
diff changeset
    59
const TAdditive     KAdditiveReplace        = 0;
hgs
parents:
diff changeset
    60
const TAdditive     KAdditiveSum            = 1;
hgs
parents:
diff changeset
    61
const TAdditive     KAdditivePass           = 2;
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
typedef TUint8      TRestartMode;
hgs
parents:
diff changeset
    64
const TAccumulate   KRestartAlways          = 0;
hgs
parents:
diff changeset
    65
const TAccumulate   KRestartWhenNotActive   = 1;
hgs
parents:
diff changeset
    66
const TAccumulate   KRestartNever           = 2;
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
const TUint16       KRepeatCountMax         = 0xffff;
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
class               CSvgDocumentImpl;
hgs
parents:
diff changeset
    72
class               MXmlElementOpt;
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
/**
hgs
parents:
diff changeset
    76
 * Class description goes here.
hgs
parents:
diff changeset
    77
 *
hgs
parents:
diff changeset
    78
 *  @lib SVGEngine.lib
hgs
parents:
diff changeset
    79
 *  @since 1.0
hgs
parents:
diff changeset
    80
 */
hgs
parents:
diff changeset
    81
class CSvgAnimationBase : public CSvgElementImpl
hgs
parents:
diff changeset
    82
    {
hgs
parents:
diff changeset
    83
    public:
hgs
parents:
diff changeset
    84
        friend class                    CSvgAnimTimeController;
hgs
parents:
diff changeset
    85
	// function used by decoder to set the begin time list.
hgs
parents:
diff changeset
    86
    void SaveBeginTimeToList(TInt aTimeInMilliseconds);
hgs
parents:
diff changeset
    87
   
hgs
parents:
diff changeset
    88
    void				AddEndTime( TInt32 aEndTime );
hgs
parents:
diff changeset
    89
	void                SetBeginTimeList(RArray<TInt32>*& aList);
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
	void				SetBeginTime(TInt32 aTime);
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
	void				SetAbsoluteBeginTime(TInt32 aTime);
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
	void				SetDurationTime(TInt32 aTime);
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
	TBool   GetFromFlag();
hgs
parents:
diff changeset
    98
	TUint16 GetAttributeId();
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
	void	SetFromFlag();
hgs
parents:
diff changeset
   101
	void    SetFromInt(TInt32 aValue);
hgs
parents:
diff changeset
   102
	void    SetFromFloat(TFloatFixPt aValue);
hgs
parents:
diff changeset
   103
	void    SetFromPathL(CGfxGeneralPath*& aPath);
hgs
parents:
diff changeset
   104
	void    SetFromViewBox(TGfxRectangle2D aValue);
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
	void	SetToFlag();
hgs
parents:
diff changeset
   107
	void    SetToInt(TInt32 aValue);
hgs
parents:
diff changeset
   108
	void    SetToFloat(TFloatFixPt aValue);
hgs
parents:
diff changeset
   109
	void    SetToPath(CGfxGeneralPath*& aPath);
hgs
parents:
diff changeset
   110
	void    SetToViewBox(TGfxRectangle2D aValue);
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
	void	SetByFlag();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
	CSvgElementImpl*&		GetTargetElem();
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
	void    SetAnimFreeze();
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
   	void	SetValuesFlag();
hgs
parents:
diff changeset
   119
	void    SetIntValuesArray( RArray<TInt32>*& aArray);
hgs
parents:
diff changeset
   120
	void    SetFloatValuesArray( RArray<TFloatFixPt>*& aArray);
hgs
parents:
diff changeset
   121
	void    SetPathValuesArray( RPointerArray<CGfxGeneralPath>*& aArray);
hgs
parents:
diff changeset
   122
    void    SetViewBoxValuesArray( RArray<TGfxRectangle2D>*& aArray);
hgs
parents:
diff changeset
   123
	void    ResetFloatValuesArray();
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
	void    SetRepeatCount(TReal32 aCount);
hgs
parents:
diff changeset
   126
	void    SetRepeatDuration(TUint32 aDur);
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
	void   SetEndTime(TInt32 aTime);
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
	void   SetRestartMode(TRestartMode aMode);
hgs
parents:
diff changeset
   131
    void   SetAccumulate(TAccumulate aValue);
hgs
parents:
diff changeset
   132
	void   SetAdditive(TAdditive aValue);
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
	void  SetCalcMode(TAnimCalcMode aMode);
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
	void   SetKeyTimeArray(RArray<CSvgAnimTimeController::TKeyTime>*& aArray);
hgs
parents:
diff changeset
   137
	void   SetAnimTimeArray(RArray<TUint32>*& aArray);
hgs
parents:
diff changeset
   138
    void   SetKeyTimeFlag();
hgs
parents:
diff changeset
   139
	CGfxGeneralPath*  GetPathAttribute(TInt aAttributeId);
hgs
parents:
diff changeset
   140
	void SetPathAttribute(TInt aAttributeId, CGfxGeneralPath* aPathHandle);
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
	/*Function added for Forward reference support*/
hgs
parents:
diff changeset
   143
	TInt	SetRefElemById(const TDesC& aName);
hgs
parents:
diff changeset
   144
    void   CheckBeginTime();
hgs
parents:
diff changeset
   145
	// functions added for JSR-226
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
/**
hgs
parents:
diff changeset
   150
         * Need method description
hgs
parents:
diff changeset
   151
         *
hgs
parents:
diff changeset
   152
         * @since 1.0
hgs
parents:
diff changeset
   153
         * @param
hgs
parents:
diff changeset
   154
         * @return
hgs
parents:
diff changeset
   155
         */
hgs
parents:
diff changeset
   156
	TInt                GetAttributeFloat( const TInt aNameId,
hgs
parents:
diff changeset
   157
                                                       TFloatFixPt& aValue );
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
	/**
hgs
parents:
diff changeset
   160
         * Need method description
hgs
parents:
diff changeset
   161
         *
hgs
parents:
diff changeset
   162
         * @since 1.0
hgs
parents:
diff changeset
   163
         * @param
hgs
parents:
diff changeset
   164
         * @return
hgs
parents:
diff changeset
   165
         */
hgs
parents:
diff changeset
   166
	TInt                 SetAttributeFloatL( const TInt aNameId,
hgs
parents:
diff changeset
   167
                                                        const TFloatFixPt aValue );
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
	/**
hgs
parents:
diff changeset
   170
         * Need method description
hgs
parents:
diff changeset
   171
         *
hgs
parents:
diff changeset
   172
         * @since 1.0
hgs
parents:
diff changeset
   173
         * @param
hgs
parents:
diff changeset
   174
         * @return
hgs
parents:
diff changeset
   175
         */
hgs
parents:
diff changeset
   176
	TInt                SetAttributeIntL( const TInt aNameId,
hgs
parents:
diff changeset
   177
                                                      const TInt32 aValue );
hgs
parents:
diff changeset
   178
	/**
hgs
parents:
diff changeset
   179
         * Need method description
hgs
parents:
diff changeset
   180
         *
hgs
parents:
diff changeset
   181
         * @since 1.0
hgs
parents:
diff changeset
   182
         * @param
hgs
parents:
diff changeset
   183
         * @return
hgs
parents:
diff changeset
   184
         */
hgs
parents:
diff changeset
   185
	TInt                GetAttributeIntL( const TInt aNameId,
hgs
parents:
diff changeset
   186
                                                     TInt32& aValue );
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
// End of functions for Decoder
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
        /**
hgs
parents:
diff changeset
   193
         * Need method description
hgs
parents:
diff changeset
   194
         *
hgs
parents:
diff changeset
   195
         * @since 1.0
hgs
parents:
diff changeset
   196
         * @param
hgs
parents:
diff changeset
   197
         * @return
hgs
parents:
diff changeset
   198
         */
hgs
parents:
diff changeset
   199
        virtual                         ~CSvgAnimationBase();
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
         class TEventListItem
hgs
parents:
diff changeset
   202
            {
hgs
parents:
diff changeset
   203
            public:
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
                TInt32                                      iTime;
hgs
parents:
diff changeset
   206
                TInt32                                      iOffset;
hgs
parents:
diff changeset
   207
                TReal32                        				iRepeatValue;
hgs
parents:
diff changeset
   208
                CSvgElementImpl*                            iTargetElement;
hgs
parents:
diff changeset
   209
                HBufC*										iReferenceElemeId;
hgs
parents:
diff changeset
   210
                TUint16                                     iAccessKeyCode;
hgs
parents:
diff changeset
   211
				TUint16										iDummy; // Series 60 3.0 Byte Alignment
hgs
parents:
diff changeset
   212
                TSvgEvent                                   iEvent;
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
            };
hgs
parents:
diff changeset
   215
           CArrayFixFlat<TEventListItem>*           iEventList;
hgs
parents:
diff changeset
   216
           CArrayFixFlat<TEventListItem>*			iEndTimeList;
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
		// for decoder
hgs
parents:
diff changeset
   219
	   void				SetEventList(CArrayFixFlat<TEventListItem>*& aEventList);
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
	   void				SetEndTimeList(CArrayFixFlat<TEventListItem>*& aTimeList);
hgs
parents:
diff changeset
   222
	   TBool 			IsSelfDependentForBegin();
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
		void			SetFromValuesL();
hgs
parents:
diff changeset
   226
        // From SVG DOM / MSvgAnimationElement
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
        /**
hgs
parents:
diff changeset
   229
         * Need method description
hgs
parents:
diff changeset
   230
         *
hgs
parents:
diff changeset
   231
         * @since 1.0
hgs
parents:
diff changeset
   232
         * @param
hgs
parents:
diff changeset
   233
         * @return
hgs
parents:
diff changeset
   234
         */
hgs
parents:
diff changeset
   235
        TUint32                         SimpleDuration();
hgs
parents:
diff changeset
   236
        TUint32                         CompleteDuration();
hgs
parents:
diff changeset
   237
        // From SVG DOM / MElementTimeControl
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
        /**
hgs
parents:
diff changeset
   240
         * Need method description
hgs
parents:
diff changeset
   241
         *
hgs
parents:
diff changeset
   242
         * @since 1.0
hgs
parents:
diff changeset
   243
         * @param
hgs
parents:
diff changeset
   244
         * @return
hgs
parents:
diff changeset
   245
         */
hgs
parents:
diff changeset
   246
        TBool                           BeginElementL();
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
        /**
hgs
parents:
diff changeset
   249
         * Need method description
hgs
parents:
diff changeset
   250
         *
hgs
parents:
diff changeset
   251
         * @since 1.0
hgs
parents:
diff changeset
   252
         * @param
hgs
parents:
diff changeset
   253
         * @return
hgs
parents:
diff changeset
   254
         */
hgs
parents:
diff changeset
   255
        TBool                           BeginElementAtL( TFloatFixPt aOffset );
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
        /**
hgs
parents:
diff changeset
   258
         * Need method description
hgs
parents:
diff changeset
   259
         *
hgs
parents:
diff changeset
   260
         * @since 1.0
hgs
parents:
diff changeset
   261
         * @param
hgs
parents:
diff changeset
   262
         * @return
hgs
parents:
diff changeset
   263
         */
hgs
parents:
diff changeset
   264
        TBool                           EndElement();
hgs
parents:
diff changeset
   265
hgs
parents:
diff changeset
   266
        /**
hgs
parents:
diff changeset
   267
         * Need method description
hgs
parents:
diff changeset
   268
         *
hgs
parents:
diff changeset
   269
         * @since 1.0
hgs
parents:
diff changeset
   270
         * @param
hgs
parents:
diff changeset
   271
         * @return
hgs
parents:
diff changeset
   272
         */
hgs
parents:
diff changeset
   273
        TBool                           EndElementAt( TFloatFixPt aOffset );
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
        // From MXmlElement API
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
        /**
hgs
parents:
diff changeset
   280
         * Need method description
hgs
parents:
diff changeset
   281
         *
hgs
parents:
diff changeset
   282
         * @since 1.0
hgs
parents:
diff changeset
   283
         * @param
hgs
parents:
diff changeset
   284
         * @return
hgs
parents:
diff changeset
   285
         */
hgs
parents:
diff changeset
   286
        virtual TInt                    SetAttributeL( const TDesC& aName,
hgs
parents:
diff changeset
   287
                                                       const TDesC& aValue );
hgs
parents:
diff changeset
   288
        // From CSvgElementImpl
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
        /**
hgs
parents:
diff changeset
   292
         * Need method description
hgs
parents:
diff changeset
   293
         *
hgs
parents:
diff changeset
   294
         * @since 1.0
hgs
parents:
diff changeset
   295
         * @param
hgs
parents:
diff changeset
   296
         * @return
hgs
parents:
diff changeset
   297
         */
hgs
parents:
diff changeset
   298
        MXmlElement*        CloneL(MXmlElement* aParentElement);
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
        	/**
hgs
parents:
diff changeset
   301
         * Need method description
hgs
parents:
diff changeset
   302
         *
hgs
parents:
diff changeset
   303
         * @since 1.0
hgs
parents:
diff changeset
   304
         * @param
hgs
parents:
diff changeset
   305
         * @return
hgs
parents:
diff changeset
   306
         */
hgs
parents:
diff changeset
   307
        virtual void		 					ReInitializeAnimation();
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
		     /**
hgs
parents:
diff changeset
   310
         * Need method description
hgs
parents:
diff changeset
   311
         *
hgs
parents:
diff changeset
   312
         * @since 1.0
hgs
parents:
diff changeset
   313
         * @param
hgs
parents:
diff changeset
   314
         * @return
hgs
parents:
diff changeset
   315
         */
hgs
parents:
diff changeset
   316
        void                            GetAttrValueL();
hgs
parents:
diff changeset
   317
hgs
parents:
diff changeset
   318
		  /**
hgs
parents:
diff changeset
   319
         * Need method description
hgs
parents:
diff changeset
   320
         *
hgs
parents:
diff changeset
   321
         * @since 1.0
hgs
parents:
diff changeset
   322
         * @param
hgs
parents:
diff changeset
   323
         * @return
hgs
parents:
diff changeset
   324
         */
hgs
parents:
diff changeset
   325
        void                      SetTarget( CSvgElementImpl* );
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
		void                      SetAttributeId(const TUint16 aAtrId);
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
		// this is made a leaving function
hgs
parents:
diff changeset
   330
        void					  ResetL(MSvgEvent* aEvent,CSvgAnimationBase* aElement);
hgs
parents:
diff changeset
   331
hgs
parents:
diff changeset
   332
		void                      SetAttributeType(const TUint8 aAtrType);
hgs
parents:
diff changeset
   333
		virtual void              SetOriginalValues_DOMReuse();
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
		TAnimStatus				  GetAnimStatus();
hgs
parents:
diff changeset
   336
		void DeactivateAnimation(CSvgAnimationBase* aElement);
hgs
parents:
diff changeset
   337
		void CheckForEndTimesAndFreezeL(CSvgAnimationBase* aElement);
hgs
parents:
diff changeset
   338
		virtual  void SetAccumulateValuesForSetMediaTime();
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
        TInt32 GetAbsoluteBeginTime();
hgs
parents:
diff changeset
   341
        TInt32 GetEndTime();
hgs
parents:
diff changeset
   342
        void ResetAttrValueL();
hgs
parents:
diff changeset
   343
        
hgs
parents:
diff changeset
   344
          /**
hgs
parents:
diff changeset
   345
         * Need method description
hgs
parents:
diff changeset
   346
         *returns if the animation element has fill value freeze or not
hgs
parents:
diff changeset
   347
         * @since 3.2
hgs
parents:
diff changeset
   348
         * @param none
hgs
parents:
diff changeset
   349
         * @return return True if animation element has fill value as freeze
hgs
parents:
diff changeset
   350
         */
hgs
parents:
diff changeset
   351
		TBool IsFillFreeze();
hgs
parents:
diff changeset
   352
		
hgs
parents:
diff changeset
   353
		void ResetTimes();
hgs
parents:
diff changeset
   354
		
hgs
parents:
diff changeset
   355
hgs
parents:
diff changeset
   356
    protected:
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
        /**
hgs
parents:
diff changeset
   359
         * Need method description
hgs
parents:
diff changeset
   360
         *
hgs
parents:
diff changeset
   361
         * @since 1.0
hgs
parents:
diff changeset
   362
         * @param
hgs
parents:
diff changeset
   363
         * @return
hgs
parents:
diff changeset
   364
         */
hgs
parents:
diff changeset
   365
                                        CSvgAnimationBase( CSvgDocumentImpl* aDoc );
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
		/**
hgs
parents:
diff changeset
   369
		 * Need method description
hgs
parents:
diff changeset
   370
		 *
hgs
parents:
diff changeset
   371
		 * @since 1.0
hgs
parents:
diff changeset
   372
		 * @param
hgs
parents:
diff changeset
   373
		 * @return
hgs
parents:
diff changeset
   374
		 */
hgs
parents:
diff changeset
   375
		virtual void                    ConstructL(  const TUint8 aElemID );
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
    protected:
hgs
parents:
diff changeset
   380
hgs
parents:
diff changeset
   381
        /**
hgs
parents:
diff changeset
   382
         * Need method description
hgs
parents:
diff changeset
   383
         *
hgs
parents:
diff changeset
   384
         * @since 1.0
hgs
parents:
diff changeset
   385
         * @param
hgs
parents:
diff changeset
   386
         * @return
hgs
parents:
diff changeset
   387
         */
hgs
parents:
diff changeset
   388
        static TFloatFixPt                   BlendFloat( TInt32 aAlpha,
hgs
parents:
diff changeset
   389
                                                    TFloatFixPt aV1,
hgs
parents:
diff changeset
   390
                                                    TFloatFixPt aV2 );
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
        /**
hgs
parents:
diff changeset
   393
         * Need method description
hgs
parents:
diff changeset
   394
         *
hgs
parents:
diff changeset
   395
         * @since 1.0
hgs
parents:
diff changeset
   396
         * @param
hgs
parents:
diff changeset
   397
         * @return
hgs
parents:
diff changeset
   398
         */
hgs
parents:
diff changeset
   399
        static TInt32                   BlendInt( TInt32 aAlpha,
hgs
parents:
diff changeset
   400
                                                  TInt32 aV1,
hgs
parents:
diff changeset
   401
                                                  TInt32 aV2 );
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
        /**
hgs
parents:
diff changeset
   404
         * Need method description
hgs
parents:
diff changeset
   405
         *
hgs
parents:
diff changeset
   406
         * @since 1.0
hgs
parents:
diff changeset
   407
         * @param
hgs
parents:
diff changeset
   408
         * @return
hgs
parents:
diff changeset
   409
         */
hgs
parents:
diff changeset
   410
        static TUint32                  BlendColor( TInt32 aAlpha,
hgs
parents:
diff changeset
   411
                                                    TUint32 aV1,
hgs
parents:
diff changeset
   412
                                                    TUint32 aV2 );
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
        /**
hgs
parents:
diff changeset
   415
         * Need method description
hgs
parents:
diff changeset
   416
         *
hgs
parents:
diff changeset
   417
         * @since 1.0
hgs
parents:
diff changeset
   418
         * @param
hgs
parents:
diff changeset
   419
         * @return
hgs
parents:
diff changeset
   420
         */
hgs
parents:
diff changeset
   421
        static TUint32                  AddColor( TUint32 aV1, TUint32 aV2 );
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
        /**
hgs
parents:
diff changeset
   425
         * Need method description
hgs
parents:
diff changeset
   426
         *
hgs
parents:
diff changeset
   427
         * @since 1.0
hgs
parents:
diff changeset
   428
         * @param
hgs
parents:
diff changeset
   429
         * @return
hgs
parents:
diff changeset
   430
         */
hgs
parents:
diff changeset
   431
        static TUint32                  SubtractColor( TUint32 aV1,
hgs
parents:
diff changeset
   432
                                                       TUint32 aV2 );
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
        /**
hgs
parents:
diff changeset
   435
         * Need method description
hgs
parents:
diff changeset
   436
         *
hgs
parents:
diff changeset
   437
         * @since 1.0
hgs
parents:
diff changeset
   438
         * @param
hgs
parents:
diff changeset
   439
         * @return
hgs
parents:
diff changeset
   440
         */
hgs
parents:
diff changeset
   441
        TBool                           ReceiveEventProcL( MSvgEvent* aEvent,
hgs
parents:
diff changeset
   442
                                                          CSvgAnimationBase* aAnimElement );
hgs
parents:
diff changeset
   443
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
        /**
hgs
parents:
diff changeset
   446
         * Need method description
hgs
parents:
diff changeset
   447
         *
hgs
parents:
diff changeset
   448
         * @since 1.0
hgs
parents:
diff changeset
   449
         * @param
hgs
parents:
diff changeset
   450
         * @return
hgs
parents:
diff changeset
   451
         */
hgs
parents:
diff changeset
   452
        virtual TBool                   AnimProcL( MSvgTimerEvent* aEvent ) = 0;
hgs
parents:
diff changeset
   453
hgs
parents:
diff changeset
   454
        /**
hgs
parents:
diff changeset
   455
         * Need method description
hgs
parents:
diff changeset
   456
         *
hgs
parents:
diff changeset
   457
         * @since 1.0
hgs
parents:
diff changeset
   458
         * @param
hgs
parents:
diff changeset
   459
         * @return
hgs
parents:
diff changeset
   460
         */
hgs
parents:
diff changeset
   461
        virtual void                    SetToOriginalL();
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
        /**
hgs
parents:
diff changeset
   464
         * Need method description
hgs
parents:
diff changeset
   465
         *
hgs
parents:
diff changeset
   466
         * @since 1.0
hgs
parents:
diff changeset
   467
         * @param
hgs
parents:
diff changeset
   468
         * @return
hgs
parents:
diff changeset
   469
         */
hgs
parents:
diff changeset
   470
        virtual void                    SetFillValueL();
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
        /**
hgs
parents:
diff changeset
   473
         * Need method description
hgs
parents:
diff changeset
   474
         *
hgs
parents:
diff changeset
   475
         * @since 1.0
hgs
parents:
diff changeset
   476
         * @param
hgs
parents:
diff changeset
   477
         * @return
hgs
parents:
diff changeset
   478
         */
hgs
parents:
diff changeset
   479
        virtual void                    SetToInitialValueL();
hgs
parents:
diff changeset
   480
hgs
parents:
diff changeset
   481
        /**
hgs
parents:
diff changeset
   482
         * Need method description
hgs
parents:
diff changeset
   483
         *
hgs
parents:
diff changeset
   484
         * @since 1.0
hgs
parents:
diff changeset
   485
         * @param
hgs
parents:
diff changeset
   486
         * @return
hgs
parents:
diff changeset
   487
         */
hgs
parents:
diff changeset
   488
        virtual void                    SetToEndValueL();
hgs
parents:
diff changeset
   489
hgs
parents:
diff changeset
   490
	    /**
hgs
parents:
diff changeset
   491
         * Need method description
hgs
parents:
diff changeset
   492
         *
hgs
parents:
diff changeset
   493
         * @since 1.0
hgs
parents:
diff changeset
   494
         * @param
hgs
parents:
diff changeset
   495
         * @return
hgs
parents:
diff changeset
   496
         */
hgs
parents:
diff changeset
   497
        virtual void                    InitAnimationL();
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
        /**
hgs
parents:
diff changeset
   500
         * Need method description
hgs
parents:
diff changeset
   501
         *
hgs
parents:
diff changeset
   502
         * @since 1.0
hgs
parents:
diff changeset
   503
         * @param
hgs
parents:
diff changeset
   504
         * @return
hgs
parents:
diff changeset
   505
         */
hgs
parents:
diff changeset
   506
        virtual void                    ResetAnimationL() = 0;
hgs
parents:
diff changeset
   507
hgs
parents:
diff changeset
   508
        /**
hgs
parents:
diff changeset
   509
         * Need method description
hgs
parents:
diff changeset
   510
         *
hgs
parents:
diff changeset
   511
         * @since 1.0
hgs
parents:
diff changeset
   512
         * @param
hgs
parents:
diff changeset
   513
         * @return
hgs
parents:
diff changeset
   514
         */
hgs
parents:
diff changeset
   515
        virtual void                    SetAccumulateValues();
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
        /**
hgs
parents:
diff changeset
   519
         * Need method description
hgs
parents:
diff changeset
   520
         *
hgs
parents:
diff changeset
   521
         * @since 1.0
hgs
parents:
diff changeset
   522
         * @param
hgs
parents:
diff changeset
   523
         * @return
hgs
parents:
diff changeset
   524
         */
hgs
parents:
diff changeset
   525
        TBool                           IsElementAttrs( const TDesC& aAttrName );
hgs
parents:
diff changeset
   526
hgs
parents:
diff changeset
   527
        /**
hgs
parents:
diff changeset
   528
         * Need method description
hgs
parents:
diff changeset
   529
         *
hgs
parents:
diff changeset
   530
         * @since 1.0
hgs
parents:
diff changeset
   531
         * @param
hgs
parents:
diff changeset
   532
         * @return
hgs
parents:
diff changeset
   533
         */
hgs
parents:
diff changeset
   534
        TBool                           IsPresentationAttrs( const TDesC& aAttrName );
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
				public:
hgs
parents:
diff changeset
   537
        /**
hgs
parents:
diff changeset
   538
         * Need method description
hgs
parents:
diff changeset
   539
         *
hgs
parents:
diff changeset
   540
         * @since 1.0
hgs
parents:
diff changeset
   541
         * @param
hgs
parents:
diff changeset
   542
         * @return
hgs
parents:
diff changeset
   543
         */
hgs
parents:
diff changeset
   544
        void                            SetBeginByEventL( CSvgAnimationBase* aAnimElement,
hgs
parents:
diff changeset
   545
                                                         TInt32 aOffset, TBool aAddTime = EFalse);
hgs
parents:
diff changeset
   546
hgs
parents:
diff changeset
   547
        /**
hgs
parents:
diff changeset
   548
         * Need method description
hgs
parents:
diff changeset
   549
         *
hgs
parents:
diff changeset
   550
         * @since 1.0
hgs
parents:
diff changeset
   551
         * @param
hgs
parents:
diff changeset
   552
         * @return
hgs
parents:
diff changeset
   553
         */
hgs
parents:
diff changeset
   554
        void                            SetEndByEvent( CSvgAnimationBase* aAnimElement,
hgs
parents:
diff changeset
   555
                                                       TInt32 aOffset );
hgs
parents:
diff changeset
   556
		
hgs
parents:
diff changeset
   557
		void		 StoreRepeatId( const TDesC& aValue, TBool RepeatWasInBeginAtt );
hgs
parents:
diff changeset
   558
		
hgs
parents:
diff changeset
   559
        void        NotifyAnimationsRepeatingOnThisOneL( const TDesC* aId );
hgs
parents:
diff changeset
   560
		
hgs
parents:
diff changeset
   561
				protected:
hgs
parents:
diff changeset
   562
        /**
hgs
parents:
diff changeset
   563
         * Need method description
hgs
parents:
diff changeset
   564
         *
hgs
parents:
diff changeset
   565
         * @since 1.0
hgs
parents:
diff changeset
   566
         * @param
hgs
parents:
diff changeset
   567
         * @return
hgs
parents:
diff changeset
   568
         */
hgs
parents:
diff changeset
   569
        TInt32                          GetNumberOfEvents(const TDesC& aValue);
hgs
parents:
diff changeset
   570
hgs
parents:
diff changeset
   571
		/**
hgs
parents:
diff changeset
   572
         * Need method description
hgs
parents:
diff changeset
   573
         *
hgs
parents:
diff changeset
   574
         * @since 1.0
hgs
parents:
diff changeset
   575
         * @param
hgs
parents:
diff changeset
   576
         * @return
hgs
parents:
diff changeset
   577
         */
hgs
parents:
diff changeset
   578
        TInt32                          Duration();
hgs
parents:
diff changeset
   579
hgs
parents:
diff changeset
   580
        void CopyL(CSvgAnimationBase* aAnimationBase);
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
hgs
parents:
diff changeset
   583
        // to parse a viewBox attribute value.
hgs
parents:
diff changeset
   584
		TBool        ParseViewBoxValue(const TDesC& aValue, TGfxRectangle2D& aRect);
hgs
parents:
diff changeset
   585
		
hgs
parents:
diff changeset
   586
    private: 
hgs
parents:
diff changeset
   587
        /**
hgs
parents:
diff changeset
   588
         * This function computes the distance between colours for the purpose 
hgs
parents:
diff changeset
   589
         * of animateColor element. Colours are treated as a 3D 
hgs
parents:
diff changeset
   590
         * point with r, g, b acting as axes. It modifies the iValuesFloat 
hgs
parents:
diff changeset
   591
         * array and each index contains the cummulative length(from start 
hgs
parents:
diff changeset
   592
         * colour) of the segment with same index
hgs
parents:
diff changeset
   593
         *
hgs
parents:
diff changeset
   594
         * @since s60 v3.1
hgs
parents:
diff changeset
   595
         * @param none.
hgs
parents:
diff changeset
   596
         * @return none.
hgs
parents:
diff changeset
   597
         */
hgs
parents:
diff changeset
   598
        void FindColorDistanceL(); 
hgs
parents:
diff changeset
   599
hgs
parents:
diff changeset
   600
	public:
hgs
parents:
diff changeset
   601
		TAnimStatus                     iAnimStatus; // before start, during animation, or end
hgs
parents:
diff changeset
   602
hgs
parents:
diff changeset
   603
		HBufC*                      iRepeatId;
hgs
parents:
diff changeset
   604
		TBool						iRepeatInBegin;
hgs
parents:
diff changeset
   605
		
hgs
parents:
diff changeset
   606
    protected:
hgs
parents:
diff changeset
   607
hgs
parents:
diff changeset
   608
		// basic animation attributes
hgs
parents:
diff changeset
   609
        CSvgAnimTimeController*         iAnimTime;
hgs
parents:
diff changeset
   610
        CSvgElementImpl*                iTargetElement;    // default is parent element
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
        CGfxGeneralPath*                iEndPath;
hgs
parents:
diff changeset
   613
        RArray<TFloatFixPt>*                 iValuesFloat;
hgs
parents:
diff changeset
   614
        CGfxGeneralPath*                iOrgPath;
hgs
parents:
diff changeset
   615
        CGfxGeneralPath*                iFromPath;
hgs
parents:
diff changeset
   616
        CGfxGeneralPath*                iToPath;
hgs
parents:
diff changeset
   617
        CGfxGeneralPath*                iOrgFromPath;
hgs
parents:
diff changeset
   618
        RPointerArray<CGfxGeneralPath>* iValuesPath;
hgs
parents:
diff changeset
   619
        RArray<TInt32>*                 iValuesInt;
hgs
parents:
diff changeset
   620
hgs
parents:
diff changeset
   621
		TInt32                          iEndOffset;
hgs
parents:
diff changeset
   622
        TReal32                         iRepeatCount;
hgs
parents:
diff changeset
   623
hgs
parents:
diff changeset
   624
         TReal32                          iRepeatEndValue;
hgs
parents:
diff changeset
   625
hgs
parents:
diff changeset
   626
        TInt32                          iAbsoluteBeginTime;
hgs
parents:
diff changeset
   627
hgs
parents:
diff changeset
   628
        // properties that will be modified over time
hgs
parents:
diff changeset
   629
        TInt32                          iPropInt;
hgs
parents:
diff changeset
   630
        TFloatFixPt                          iPropFloat;
hgs
parents:
diff changeset
   631
hgs
parents:
diff changeset
   632
         // origianl value and animation value
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
        TInt32                          iAttributeFlag;
hgs
parents:
diff changeset
   635
        TInt32                          iEndInt;
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
        TInt32                          iOrgInt;
hgs
parents:
diff changeset
   638
        TInt32                          iFromInt;
hgs
parents:
diff changeset
   639
        TInt32                          iToInt;
hgs
parents:
diff changeset
   640
        TInt32                          iOrgFromInt;
hgs
parents:
diff changeset
   641
hgs
parents:
diff changeset
   642
		// for DOM Reuse
hgs
parents:
diff changeset
   643
        TBool                           iIsBeginSet;
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
        TFloatFixPt                          iOrgFloat;
hgs
parents:
diff changeset
   646
        TFloatFixPt                          iFromFloat;
hgs
parents:
diff changeset
   647
        TFloatFixPt                          iToFloat;
hgs
parents:
diff changeset
   648
        TFloatFixPt                          iOrgFromFloat;
hgs
parents:
diff changeset
   649
        TFloatFixPt                          iEndFloat;
hgs
parents:
diff changeset
   650
hgs
parents:
diff changeset
   651
      //viewBox Animation
hgs
parents:
diff changeset
   652
hgs
parents:
diff changeset
   653
		TGfxRectangle2D                iOrgViewBox;
hgs
parents:
diff changeset
   654
        TGfxRectangle2D                iFromViewBox;
hgs
parents:
diff changeset
   655
        TGfxRectangle2D                iToViewBox;
hgs
parents:
diff changeset
   656
        TGfxRectangle2D                iOrgFromViewBox;
hgs
parents:
diff changeset
   657
		RArray<TGfxRectangle2D>*                iValuesViewBox;
hgs
parents:
diff changeset
   658
		TGfxRectangle2D                iEndViewBox;
hgs
parents:
diff changeset
   659
    ////////
hgs
parents:
diff changeset
   660
hgs
parents:
diff changeset
   661
        TInt                            iBeginTimeIndex;
hgs
parents:
diff changeset
   662
       
hgs
parents:
diff changeset
   663
hgs
parents:
diff changeset
   664
hgs
parents:
diff changeset
   665
    //    TUint16                         iEndAccessKeyCode;
hgs
parents:
diff changeset
   666
hgs
parents:
diff changeset
   667
        TUint16                         iCurrentRepeatCount;
hgs
parents:
diff changeset
   668
         // target attribute
hgs
parents:
diff changeset
   669
        TUint16                         iAttrId;
hgs
parents:
diff changeset
   670
        TUint16                         iDataType;
hgs
parents:
diff changeset
   671
hgs
parents:
diff changeset
   672
     /*   CSvgElementImpl*                iEndSyncElementId;*/
hgs
parents:
diff changeset
   673
hgs
parents:
diff changeset
   674
hgs
parents:
diff changeset
   675
hgs
parents:
diff changeset
   676
        TUint8                           iInitDone;
hgs
parents:
diff changeset
   677
        TUint8                           iTargetSet;
hgs
parents:
diff changeset
   678
        TUint8                           iNoFrom;
hgs
parents:
diff changeset
   679
        TUint8                           iHaveTo;
hgs
parents:
diff changeset
   680
        TUint8                           iHaveBy;
hgs
parents:
diff changeset
   681
		TUint8                           iHaveValues;
hgs
parents:
diff changeset
   682
hgs
parents:
diff changeset
   683
hgs
parents:
diff changeset
   684
hgs
parents:
diff changeset
   685
    /*    TSvgEvent                       iEndReferenceEvent;*/
hgs
parents:
diff changeset
   686
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
        TAnimFill                       iFill;
hgs
parents:
diff changeset
   689
        TUint8                           iHadBegun;
hgs
parents:
diff changeset
   690
        TRestartMode                    iAnimRestart;
hgs
parents:
diff changeset
   691
        TAccumulate                     iAccumulate;
hgs
parents:
diff changeset
   692
        TAdditive                       iAdditive;
hgs
parents:
diff changeset
   693
        TAdditive                       iAdditiveOrg;
hgs
parents:
diff changeset
   694
hgs
parents:
diff changeset
   695
hgs
parents:
diff changeset
   696
hgs
parents:
diff changeset
   697
hgs
parents:
diff changeset
   698
hgs
parents:
diff changeset
   699
		//deleted by memory manager so dont do it yourself
hgs
parents:
diff changeset
   700
		CPaintCssValueImpl*				iFromPaint;
hgs
parents:
diff changeset
   701
		CPaintCssValueImpl*				iToPaint;
hgs
parents:
diff changeset
   702
hgs
parents:
diff changeset
   703
        TUint8                           iOverrideTime;
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
hgs
parents:
diff changeset
   706
        TUint8                           iRepeatCountSet;
hgs
parents:
diff changeset
   707
hgs
parents:
diff changeset
   708
        TBool                            iDoFreeze;
hgs
parents:
diff changeset
   709
hgs
parents:
diff changeset
   710
		//DOM Reusage
hgs
parents:
diff changeset
   711
hgs
parents:
diff changeset
   712
		TBool                            iCheckFirstAnim;
hgs
parents:
diff changeset
   713
hgs
parents:
diff changeset
   714
hgs
parents:
diff changeset
   715
hgs
parents:
diff changeset
   716
		TBool							iKeyTimesPresent;
hgs
parents:
diff changeset
   717
hgs
parents:
diff changeset
   718
		// these are kept only up to the loading time. after that this memory is freed.
hgs
parents:
diff changeset
   719
hgs
parents:
diff changeset
   720
hgs
parents:
diff changeset
   721
		/*HBufC*							iEndReferenceElemeId;*/
hgs
parents:
diff changeset
   722
		TBool 							iIsUserSeek;
hgs
parents:
diff changeset
   723
		TInt                         iEndTimeIndex;
hgs
parents:
diff changeset
   724
	//	TBool 							iHasEnded;
hgs
parents:
diff changeset
   725
hgs
parents:
diff changeset
   726
		TBool                           iIsEndEventSent;
hgs
parents:
diff changeset
   727
		TInt                            iNegativeBeginTime; // Himanshu: stores negative begin value;
hgs
parents:
diff changeset
   728
		static const TInt KIndefiniteAnimationDuration = 2147483647;
hgs
parents:
diff changeset
   729
    };
hgs
parents:
diff changeset
   730
hgs
parents:
diff changeset
   731
hgs
parents:
diff changeset
   732
#endif /* _INC_CSvgAnimationBase_ */