svgtopt/SVG/SVGImpl/src/SVGAnimationElementImpl.cpp
author hgs
Wed, 03 Nov 2010 18:56:10 +0200
changeset 46 88edb906c587
child 19 df65ec4f2d28
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) 2005 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 source 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
// INCLUDE FILES
hgs
parents:
diff changeset
    20
#include "SVGAnimationElementImpl.h"
hgs
parents:
diff changeset
    21
#include "SVGDocumentImpl.h"
hgs
parents:
diff changeset
    22
#include "SVGSchemaData.h"
hgs
parents:
diff changeset
    23
#include "SVGAnimationBase.h"
hgs
parents:
diff changeset
    24
#include "SVGEvent.h"
hgs
parents:
diff changeset
    25
#include "SVGEventHandler.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#if !defined(__E32BASE_H__)
hgs
parents:
diff changeset
    28
#include <e32base.h>
hgs
parents:
diff changeset
    29
#endif
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// ============================= LOCAL FUNCTIONS ===============================
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// Setter functions
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// SetRecursionVariable: Set aIsRecursion to indicate that the element has been
hgs
parents:
diff changeset
    38
// cloned or not.
hgs
parents:
diff changeset
    39
//
hgs
parents:
diff changeset
    40
// Returns: TFloatFixPt
hgs
parents:
diff changeset
    41
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    42
//
hgs
parents:
diff changeset
    43
void CSvgAnimationElementImpl::SetRecursionVariable(TBool aIsRecursion)
hgs
parents:
diff changeset
    44
	{
hgs
parents:
diff changeset
    45
	iUseInRecursion = aIsRecursion;
hgs
parents:
diff changeset
    46
	}
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// Getter functions
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
// X: returns iX
hgs
parents:
diff changeset
    56
//
hgs
parents:
diff changeset
    57
// Returns: TFloatFixPt
hgs
parents:
diff changeset
    58
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
//
hgs
parents:
diff changeset
    60
TFloatFixPt CSvgAnimationElementImpl::X()
hgs
parents:
diff changeset
    61
    {
hgs
parents:
diff changeset
    62
    return iX;
hgs
parents:
diff changeset
    63
    }
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
// Y: returns iY
hgs
parents:
diff changeset
    68
//
hgs
parents:
diff changeset
    69
// Returns: TFloatFixPt
hgs
parents:
diff changeset
    70
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
TFloatFixPt CSvgAnimationElementImpl::Y()
hgs
parents:
diff changeset
    73
    {
hgs
parents:
diff changeset
    74
    return iY;
hgs
parents:
diff changeset
    75
    }
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    79
// Width: returns iWidth
hgs
parents:
diff changeset
    80
//
hgs
parents:
diff changeset
    81
// Returns: TFloatFixPt
hgs
parents:
diff changeset
    82
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    83
//
hgs
parents:
diff changeset
    84
TFloatFixPt CSvgAnimationElementImpl::Width()
hgs
parents:
diff changeset
    85
    {
hgs
parents:
diff changeset
    86
    return iWidth;
hgs
parents:
diff changeset
    87
    }
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
// Height: return iHeight
hgs
parents:
diff changeset
    92
//
hgs
parents:
diff changeset
    93
// Returns: TFloatFixPt
hgs
parents:
diff changeset
    94
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    95
//
hgs
parents:
diff changeset
    96
TFloatFixPt CSvgAnimationElementImpl::Height()
hgs
parents:
diff changeset
    97
    {
hgs
parents:
diff changeset
    98
    return iHeight;
hgs
parents:
diff changeset
    99
    }
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
// PreservRatio: Returns the PreserveAspecRatio's setting. Mainly used by encoder.
hgs
parents:
diff changeset
   104
//
hgs
parents:
diff changeset
   105
// Returns: Descriptor of PreserveAspecRatio value
hgs
parents:
diff changeset
   106
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   107
//
hgs
parents:
diff changeset
   108
const TDesC& CSvgAnimationElementImpl::PreservRatio()
hgs
parents:
diff changeset
   109
    {
hgs
parents:
diff changeset
   110
    return (TDesC&) *iPreservRatio;
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   115
// SetAttributeL: Called by Contenthandler or decoder to set attributes
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
// Returns: TInt error code
hgs
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   119
//
hgs
parents:
diff changeset
   120
TInt CSvgAnimationElementImpl::SetAttributeL( const TDesC& aName,
hgs
parents:
diff changeset
   121
                                        const TDesC& aValue )
hgs
parents:
diff changeset
   122
    {
hgs
parents:
diff changeset
   123
    _LIT( KXlink, "xlink:href" );
hgs
parents:
diff changeset
   124
    _LIT( KPreserveAspectRatio, "preserveAspectRatio" );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    if ( aName == KXlink )
hgs
parents:
diff changeset
   127
        {
hgs
parents:
diff changeset
   128
        // STEP 1 - Get the reference element
hgs
parents:
diff changeset
   129
        // If the first char is '#' then remove it
hgs
parents:
diff changeset
   130
        // This is possible if coming from cXML parser and not CVG Decoder
hgs
parents:
diff changeset
   131
        TInt pos = aValue.Locate( '#' );
hgs
parents:
diff changeset
   132
        if ( pos != KErrNotFound && pos == 0 )
hgs
parents:
diff changeset
   133
            {
hgs
parents:
diff changeset
   134
            HBufC*  tBufC   = HBufC::NewLC( aValue.Length() );
hgs
parents:
diff changeset
   135
            TPtr    tPtr    = tBufC->Des();
hgs
parents:
diff changeset
   136
            tPtr.Copy( aValue );
hgs
parents:
diff changeset
   137
            tPtr.Delete( pos, 1 );
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
			if ( this->SetXlinkAttributeL( aName, tPtr ) )
hgs
parents:
diff changeset
   140
				{
hgs
parents:
diff changeset
   141
				iReferencedElement = ( CSvgElementImpl * )
hgs
parents:
diff changeset
   142
					((CSvgDocumentImpl*)iOwnerDocument)->GetElementById( tPtr );
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
				if(iReferencedElement == NULL)
hgs
parents:
diff changeset
   145
					{
hgs
parents:
diff changeset
   146
					// failure in finding the referenced element
hgs
parents:
diff changeset
   147
					CleanupStack::PopAndDestroy( 1 ); // tBufC
hgs
parents:
diff changeset
   148
					return KErrReferencedElementNotFound;
hgs
parents:
diff changeset
   149
					}
hgs
parents:
diff changeset
   150
				}
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
			CleanupStack::PopAndDestroy( 1 ); // tBufC
hgs
parents:
diff changeset
   153
			}
hgs
parents:
diff changeset
   154
		}
hgs
parents:
diff changeset
   155
	else if ( aName == KPreserveAspectRatio )
hgs
parents:
diff changeset
   156
    	{
hgs
parents:
diff changeset
   157
        iPreservRatio = aValue.AllocL();
hgs
parents:
diff changeset
   158
    	}
hgs
parents:
diff changeset
   159
	else
hgs
parents:
diff changeset
   160
	    {
hgs
parents:
diff changeset
   161
    	CSvgAnimationBase::SetAttributeL(aName, aValue);
hgs
parents:
diff changeset
   162
	    }
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
	return KErrNone;
hgs
parents:
diff changeset
   165
    }
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   169
// SetAttributeFloatL: Called by Contenthandler or decoder to set attributes
hgs
parents:
diff changeset
   170
//
hgs
parents:
diff changeset
   171
// Returns: TInt error code
hgs
parents:
diff changeset
   172
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   173
//
hgs
parents:
diff changeset
   174
TInt CSvgAnimationElementImpl::SetAttributeFloatL( const TInt aNameId,
hgs
parents:
diff changeset
   175
                                                   const TFloatFixPt aValue )
hgs
parents:
diff changeset
   176
    {
hgs
parents:
diff changeset
   177
    switch ( aNameId )
hgs
parents:
diff changeset
   178
        {
hgs
parents:
diff changeset
   179
        case KAtrX:
hgs
parents:
diff changeset
   180
            iX = aValue;
hgs
parents:
diff changeset
   181
            break;
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
        case KAtrY:
hgs
parents:
diff changeset
   184
            iY = aValue;
hgs
parents:
diff changeset
   185
            break;
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
        case KAtrWidth:
hgs
parents:
diff changeset
   188
            iWidth = aValue;
hgs
parents:
diff changeset
   189
            break;
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
        case KAtrHeight:
hgs
parents:
diff changeset
   192
            iHeight = aValue;
hgs
parents:
diff changeset
   193
            break;
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
        default:
hgs
parents:
diff changeset
   196
            return CSvgElementImpl::SetAttributeFloatL( aNameId, aValue );
hgs
parents:
diff changeset
   197
        }
hgs
parents:
diff changeset
   198
    return KErrNone;
hgs
parents:
diff changeset
   199
    }
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   203
// GetAttributeFloat: returns value of the floating attribute
hgs
parents:
diff changeset
   204
//
hgs
parents:
diff changeset
   205
// Returns: TInt error code
hgs
parents:
diff changeset
   206
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   207
//
hgs
parents:
diff changeset
   208
TInt CSvgAnimationElementImpl::GetAttributeFloat( const TInt aNameId, TFloatFixPt& aValue )
hgs
parents:
diff changeset
   209
    {
hgs
parents:
diff changeset
   210
    switch ( aNameId )
hgs
parents:
diff changeset
   211
        {
hgs
parents:
diff changeset
   212
        case KAtrX:
hgs
parents:
diff changeset
   213
				 aValue = iX ;
hgs
parents:
diff changeset
   214
			     break;
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
        case KAtrY:
hgs
parents:
diff changeset
   217
				aValue = iY ;
hgs
parents:
diff changeset
   218
			    break;
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
        case KAtrWidth:
hgs
parents:
diff changeset
   221
				aValue = iWidth ;
hgs
parents:
diff changeset
   222
		        break;
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        case KAtrHeight:
hgs
parents:
diff changeset
   225
				aValue = iHeight ;
hgs
parents:
diff changeset
   226
		        break;
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
        default:
hgs
parents:
diff changeset
   229
            return CSvgElementImpl::GetAttributeFloat( aNameId, aValue );
hgs
parents:
diff changeset
   230
        }
hgs
parents:
diff changeset
   231
    return KErrNone;
hgs
parents:
diff changeset
   232
    }
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   237
// GetUriRefId: Get the id of reference target id
hgs
parents:
diff changeset
   238
//
hgs
parents:
diff changeset
   239
// Returns: TDesC& id
hgs
parents:
diff changeset
   240
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   241
//
hgs
parents:
diff changeset
   242
//const TDesC& CSvgAnimationElementImpl::GetUriRefId()
hgs
parents:
diff changeset
   243
//	{
hgs
parents:
diff changeset
   244
//	return (TDesC&) (iReferencedElement->Id());
hgs
parents:
diff changeset
   245
//	}
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   249
// IsUriRefSet: Return true or not if uri is set
hgs
parents:
diff changeset
   250
//
hgs
parents:
diff changeset
   251
// Returns: TBool
hgs
parents:
diff changeset
   252
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   253
//
hgs
parents:
diff changeset
   254
TBool CSvgAnimationElementImpl::IsUriRefSet()
hgs
parents:
diff changeset
   255
	{
hgs
parents:
diff changeset
   256
    if(iReferencedElement)
hgs
parents:
diff changeset
   257
        {
hgs
parents:
diff changeset
   258
		return ETrue;
hgs
parents:
diff changeset
   259
	    }
hgs
parents:
diff changeset
   260
	  else
hgs
parents:
diff changeset
   261
	    {
hgs
parents:
diff changeset
   262
		return EFalse;
hgs
parents:
diff changeset
   263
	    }
hgs
parents:
diff changeset
   264
	}
hgs
parents:
diff changeset
   265
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   269
// ReceiveEventL: The implemented function will be called whenever subscribed
hgs
parents:
diff changeset
   270
// events are received.
hgs
parents:
diff changeset
   271
//
hgs
parents:
diff changeset
   272
// From MSvgEventReceiver
hgs
parents:
diff changeset
   273
//
hgs
parents:
diff changeset
   274
// Return: TBool ETrue if redraw is needed
hgs
parents:
diff changeset
   275
//               EFalse if redraw is not needed
hgs
parents:
diff changeset
   276
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   277
//
hgs
parents:
diff changeset
   278
TBool CSvgAnimationElementImpl::ReceiveEventL( MSvgEvent* aEvent )
hgs
parents:
diff changeset
   279
    {
hgs
parents:
diff changeset
   280
    // Processing events after begin time
hgs
parents:
diff changeset
   281
	if( CSvgElementImpl::IsSVGEnginePaused())
hgs
parents:
diff changeset
   282
    {
hgs
parents:
diff changeset
   283
    	return EFalse;
hgs
parents:
diff changeset
   284
    }
hgs
parents:
diff changeset
   285
	CSvgEngineImpl* engine = ((CSvgDocumentImpl*)iOwnerDocument)->Engine();
hgs
parents:
diff changeset
   286
	if (engine == NULL)
hgs
parents:
diff changeset
   287
		{
hgs
parents:
diff changeset
   288
		return EFalse;
hgs
parents:
diff changeset
   289
		}
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
    TInt32 lEngineCurrentTime = engine->CurrentTIme();
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
    if ( lEngineCurrentTime < iAbsoluteBeginTime)
hgs
parents:
diff changeset
   294
        {
hgs
parents:
diff changeset
   295
        // not begin yet.
hgs
parents:
diff changeset
   296
        return ETrue;
hgs
parents:
diff changeset
   297
        }
hgs
parents:
diff changeset
   298
    else
hgs
parents:
diff changeset
   299
        {
hgs
parents:
diff changeset
   300
        // rewrite engine time to simulate different timer
hgs
parents:
diff changeset
   301
    	if ( aEvent->EventType() == ESvgEngineEventTimer )
hgs
parents:
diff changeset
   302
    		{
hgs
parents:
diff changeset
   303
        	((MSvgTimerEvent*)aEvent)->SetTime( (TInt32)(lEngineCurrentTime
hgs
parents:
diff changeset
   304
        		- iAbsoluteBeginTime ));
hgs
parents:
diff changeset
   305
    		}
hgs
parents:
diff changeset
   306
        }
hgs
parents:
diff changeset
   307
hgs
parents:
diff changeset
   308
    // Basically forward received events to all its children as if they receive
hgs
parents:
diff changeset
   309
    // event from DocumentImpl.
hgs
parents:
diff changeset
   310
    if ( iAnimationEventHandler->ProcessEventL( aEvent ))
hgs
parents:
diff changeset
   311
        {
hgs
parents:
diff changeset
   312
        if (iInitSortList)
hgs
parents:
diff changeset
   313
            {
hgs
parents:
diff changeset
   314
            iAnimationEventHandler->SortEventList();
hgs
parents:
diff changeset
   315
            iInitSortList = EFalse;
hgs
parents:
diff changeset
   316
            }
hgs
parents:
diff changeset
   317
        iAnimationEventHandler->DoAnimProcL(aEvent);
hgs
parents:
diff changeset
   318
        engine->RedrawL();
hgs
parents:
diff changeset
   319
        }
hgs
parents:
diff changeset
   320
    else
hgs
parents:
diff changeset
   321
        {
hgs
parents:
diff changeset
   322
        // this is to keep the dom in its final state.
hgs
parents:
diff changeset
   323
        if(aEvent->EventType() == ESvgEngineEventTimer)
hgs
parents:
diff changeset
   324
            {
hgs
parents:
diff changeset
   325
            iAnimationEventHandler->DoAnimProcL(aEvent);
hgs
parents:
diff changeset
   326
            }
hgs
parents:
diff changeset
   327
        }
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    // Process key event separately.
hgs
parents:
diff changeset
   330
	if (aEvent->EventType() == ESvgEngineEventKeyPress)
hgs
parents:
diff changeset
   331
		{
hgs
parents:
diff changeset
   332
		}
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
    // return true to be redrawn
hgs
parents:
diff changeset
   335
    return ETrue;
hgs
parents:
diff changeset
   336
    }
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   340
// RecursionVariable: Getter function that could be called by Contenthandler or
hgs
parents:
diff changeset
   341
// decoder to determine if the element has been cloned.
hgs
parents:
diff changeset
   342
// elements
hgs
parents:
diff changeset
   343
//
hgs
parents:
diff changeset
   344
// Return: TBool ETrue if the element is cloned already
hgs
parents:
diff changeset
   345
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   346
//
hgs
parents:
diff changeset
   347
TBool CSvgAnimationElementImpl::RecursionVariable()
hgs
parents:
diff changeset
   348
	{
hgs
parents:
diff changeset
   349
	return iUseInRecursion;
hgs
parents:
diff changeset
   350
	}
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   354
// SetRefElemById: Called by Contenthandler or decoder to set referenced
hgs
parents:
diff changeset
   355
// elements
hgs
parents:
diff changeset
   356
//
hgs
parents:
diff changeset
   357
// Return: none
hgs
parents:
diff changeset
   358
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   359
//
hgs
parents:
diff changeset
   360
TInt  CSvgAnimationElementImpl::SetRefElemById(const TDesC& aName)
hgs
parents:
diff changeset
   361
	{
hgs
parents:
diff changeset
   362
	 iReferencedElement = ( CSvgElementImpl * )
hgs
parents:
diff changeset
   363
                     ((CSvgDocumentImpl*)iOwnerDocument)->GetElementById( aName );
hgs
parents:
diff changeset
   364
     if( iReferencedElement == NULL )
hgs
parents:
diff changeset
   365
     	{
hgs
parents:
diff changeset
   366
     	return KErrNotFound;
hgs
parents:
diff changeset
   367
     	}
hgs
parents:
diff changeset
   368
     else
hgs
parents:
diff changeset
   369
     	{
hgs
parents:
diff changeset
   370
         return KErrNone;
hgs
parents:
diff changeset
   371
    	}
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
	}
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   377
// SetReferenceElementL: Called by Contenthandler or decoder to clone referenced
hgs
parents:
diff changeset
   378
// element which has been determined in SetRefElemById(...).
hgs
parents:
diff changeset
   379
//
hgs
parents:
diff changeset
   380
// Return: none
hgs
parents:
diff changeset
   381
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   382
//
hgs
parents:
diff changeset
   383
void CSvgAnimationElementImpl::SetReferenceElementL()
hgs
parents:
diff changeset
   384
    {
hgs
parents:
diff changeset
   385
    _LIT( KPreserveAspectRatio, "preserveAspectRatio" );
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
	if(!RecursionVariable())
hgs
parents:
diff changeset
   388
		{
hgs
parents:
diff changeset
   389
		if( iReferencedElement != NULL )
hgs
parents:
diff changeset
   390
			{
hgs
parents:
diff changeset
   391
			// Setting iUseInRecursion to True so that the Call to CloneL
hgs
parents:
diff changeset
   392
			// is not called to this instance of use in this recursion
hgs
parents:
diff changeset
   393
			SetRecursionVariable(ETrue);
hgs
parents:
diff changeset
   394
hgs
parents:
diff changeset
   395
     		CSvgElementImpl* theElement = (CSvgElementImpl *)iReferencedElement->CloneL((MXmlElement*)this);
hgs
parents:
diff changeset
   396
     		CleanupStack::PushL(theElement);
hgs
parents:
diff changeset
   397
			this->CXmlElementImpl::AppendChildL(theElement);
hgs
parents:
diff changeset
   398
			CleanupStack::Pop();
hgs
parents:
diff changeset
   399
			if(!RecursionVariable())
hgs
parents:
diff changeset
   400
				{
hgs
parents:
diff changeset
   401
				// The Recursion variable is set to false only when the Cloning
hgs
parents:
diff changeset
   402
				// goes into loop.
hgs
parents:
diff changeset
   403
				// Using this information and then Setting the Recursion variable
hgs
parents:
diff changeset
   404
				// back to True to use the information to set error code in
hgs
parents:
diff changeset
   405
				// StartElementL in Content Handler
hgs
parents:
diff changeset
   406
				//
hgs
parents:
diff changeset
   407
				SetRecursionVariable(ETrue);
hgs
parents:
diff changeset
   408
				}
hgs
parents:
diff changeset
   409
			else // Normal CloneL loop exit
hgs
parents:
diff changeset
   410
				{
hgs
parents:
diff changeset
   411
				// Setting iUseInRecursion back to False
hgs
parents:
diff changeset
   412
				SetRecursionVariable(EFalse);
hgs
parents:
diff changeset
   413
				}
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
                CSvgDocumentImpl* doc = ( CSvgDocumentImpl* ) OwnerDocument();
hgs
parents:
diff changeset
   416
                CSvgSvgElementImpl* lSvgRoot = (CSvgSvgElementImpl*) doc->RootElement();
hgs
parents:
diff changeset
   417
                if (iPreservRatio != NULL)
hgs
parents:
diff changeset
   418
                	{
hgs
parents:
diff changeset
   419
                	lSvgRoot->SetAttributeL( KPreserveAspectRatio, iPreservRatio->Des() );
hgs
parents:
diff changeset
   420
                	}
hgs
parents:
diff changeset
   421
                lSvgRoot->SetWidth( iX );
hgs
parents:
diff changeset
   422
                lSvgRoot->SetHeight( iY );
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
			}
hgs
parents:
diff changeset
   425
    	}
hgs
parents:
diff changeset
   426
    }
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   431
// ResetEventListener: Reset event listeners for it's children
hgs
parents:
diff changeset
   432
//
hgs
parents:
diff changeset
   433
// Returns: none
hgs
parents:
diff changeset
   434
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   435
//
hgs
parents:
diff changeset
   436
void CSvgAnimationElementImpl::ResetEventListener()
hgs
parents:
diff changeset
   437
    {
hgs
parents:
diff changeset
   438
    FindAllAnimationElements( (CSvgElementImpl* )this, iMyAnimationElementList );
hgs
parents:
diff changeset
   439
hgs
parents:
diff changeset
   440
    // Remove event listening for every animation elements that are child of
hgs
parents:
diff changeset
   441
    // this Animation element. This is to implement a separated time container
hgs
parents:
diff changeset
   442
    //
hgs
parents:
diff changeset
   443
    // Instead, register event linstening to the event handler of this element.
hgs
parents:
diff changeset
   444
    //
hgs
parents:
diff changeset
   445
    TInt myAnimationEleListCnt = iMyAnimationElementList->Count();
hgs
parents:
diff changeset
   446
	for (int i=0; i<myAnimationEleListCnt; i++)
hgs
parents:
diff changeset
   447
    	{
hgs
parents:
diff changeset
   448
		CSvgElementImpl* lCurElem =
hgs
parents:
diff changeset
   449
		    (CSvgElementImpl*)iMyAnimationElementList->operator[](i);
hgs
parents:
diff changeset
   450
		// Removing...
hgs
parents:
diff changeset
   451
        ((CSvgDocumentImpl*)iOwnerDocument)->RemoveFromEventReceiverList(lCurElem);
hgs
parents:
diff changeset
   452
hgs
parents:
diff changeset
   453
        // Adding...
hgs
parents:
diff changeset
   454
        TUint8 eventMask = iAnimationEventHandler->EventMask(lCurElem);
hgs
parents:
diff changeset
   455
        TRAPD(err, iAnimationEventHandler->AddToEventReceiverListL( lCurElem, eventMask ));
hgs
parents:
diff changeset
   456
        if (err != KErrNone)
hgs
parents:
diff changeset
   457
            {
hgs
parents:
diff changeset
   458
            #ifdef _DEBUG
hgs
parents:
diff changeset
   459
            _LIT(msg, "CSvgAnimationElementImpl::ResetEventListener():Can't add myself to event receiverList");
hgs
parents:
diff changeset
   460
            RDebug::Print(msg);
hgs
parents:
diff changeset
   461
            #endif //_DEBUG
hgs
parents:
diff changeset
   462
            }
hgs
parents:
diff changeset
   463
        }
hgs
parents:
diff changeset
   464
    }
hgs
parents:
diff changeset
   465
hgs
parents:
diff changeset
   466
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   469
// RemoveEventListener: Remove event listeners for it's children
hgs
parents:
diff changeset
   470
//
hgs
parents:
diff changeset
   471
// Returns: none
hgs
parents:
diff changeset
   472
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   473
//
hgs
parents:
diff changeset
   474
void CSvgAnimationElementImpl::RemoveEventListener()
hgs
parents:
diff changeset
   475
    {
hgs
parents:
diff changeset
   476
    FindAllAnimationElements( (CSvgElementImpl* )this, iMyAnimationElementList );
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
    // Remove event listening for every animation elements that are child of
hgs
parents:
diff changeset
   479
    // this Animation element. This is to implement a separated time container
hgs
parents:
diff changeset
   480
    //
hgs
parents:
diff changeset
   481
    // Instead, register event linstening to the event handler of this element.
hgs
parents:
diff changeset
   482
    //
hgs
parents:
diff changeset
   483
	for (int i=0; i<iMyAnimationElementList->Count(); i++)
hgs
parents:
diff changeset
   484
    	{
hgs
parents:
diff changeset
   485
		CSvgElementImpl* lCurElem =
hgs
parents:
diff changeset
   486
		    (CSvgElementImpl*)iMyAnimationElementList->operator[](i);
hgs
parents:
diff changeset
   487
		// Removing...
hgs
parents:
diff changeset
   488
        iAnimationEventHandler->RemoveFromEventReceiverList( lCurElem );
hgs
parents:
diff changeset
   489
        }
hgs
parents:
diff changeset
   490
    }
hgs
parents:
diff changeset
   491
hgs
parents:
diff changeset
   492
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
hgs
parents:
diff changeset
   495
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   496
// CSvgAnimationElementImpl: Find all animation elements and save it to aList
hgs
parents:
diff changeset
   497
//
hgs
parents:
diff changeset
   498
// Returns: none
hgs
parents:
diff changeset
   499
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   500
//
hgs
parents:
diff changeset
   501
void CSvgAnimationElementImpl::FindAllAnimationElements(
hgs
parents:
diff changeset
   502
                               CSvgElementImpl* aElement,
hgs
parents:
diff changeset
   503
                               RPointerArray<CSvgElementImpl>* aList )
hgs
parents:
diff changeset
   504
    {
hgs
parents:
diff changeset
   505
    CSvgElementImpl* child = (CSvgElementImpl*)aElement->FirstChild();
hgs
parents:
diff changeset
   506
    while ( child != NULL )
hgs
parents:
diff changeset
   507
    	{
hgs
parents:
diff changeset
   508
        if ( IsAnimationElement(child) )
hgs
parents:
diff changeset
   509
        	{
hgs
parents:
diff changeset
   510
            aList->Append( child );
hgs
parents:
diff changeset
   511
        	}
hgs
parents:
diff changeset
   512
        FindAllAnimationElements( child, aList );
hgs
parents:
diff changeset
   513
        child = (CSvgElementImpl*)child->NextSibling();
hgs
parents:
diff changeset
   514
    	}
hgs
parents:
diff changeset
   515
    }
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   520
// IsAnimationElement: A utility function that check if the element
hgs
parents:
diff changeset
   521
// is an animation element.
hgs
parents:
diff changeset
   522
//
hgs
parents:
diff changeset
   523
// Returns: TBool ETrue if the element is a animation element.
hgs
parents:
diff changeset
   524
//                EFalse if the element is not an animation element.
hgs
parents:
diff changeset
   525
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   526
//
hgs
parents:
diff changeset
   527
TBool CSvgAnimationElementImpl::IsAnimationElement(CSvgElementImpl* aElement)
hgs
parents:
diff changeset
   528
    {
hgs
parents:
diff changeset
   529
hgs
parents:
diff changeset
   530
	TInt id = aElement->ElemID();
hgs
parents:
diff changeset
   531
hgs
parents:
diff changeset
   532
    return (( id == KSvgAnimateElement ) ||
hgs
parents:
diff changeset
   533
	        ( id == KSvgAnimateMotionElement ) ||
hgs
parents:
diff changeset
   534
	        ( id == KSvgAnimateTransformElement ) ||
hgs
parents:
diff changeset
   535
	        ( id == KSvgSetElement ) ||
hgs
parents:
diff changeset
   536
	        ( id == KSvgAnimateColorElement ));
hgs
parents:
diff changeset
   537
    }
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   541
// ResetAnimationL: Actions to reset the animation
hgs
parents:
diff changeset
   542
//
hgs
parents:
diff changeset
   543
// Returns: none
hgs
parents:
diff changeset
   544
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   545
//
hgs
parents:
diff changeset
   546
void CSvgAnimationElementImpl::ResetAnimationL()
hgs
parents:
diff changeset
   547
    {
hgs
parents:
diff changeset
   548
    }
hgs
parents:
diff changeset
   549
hgs
parents:
diff changeset
   550
hgs
parents:
diff changeset
   551
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   552
// AnimProcL: Actions to reset the animation
hgs
parents:
diff changeset
   553
//
hgs
parents:
diff changeset
   554
// Returns: none
hgs
parents:
diff changeset
   555
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   556
//
hgs
parents:
diff changeset
   557
TBool CSvgAnimationElementImpl::AnimProcL( MSvgTimerEvent* aEvent )
hgs
parents:
diff changeset
   558
    {
hgs
parents:
diff changeset
   559
	if (aEvent->EventType() == ESvgEngineEventKeyPress)
hgs
parents:
diff changeset
   560
		{
hgs
parents:
diff changeset
   561
		}
hgs
parents:
diff changeset
   562
hgs
parents:
diff changeset
   563
    return EFalse;
hgs
parents:
diff changeset
   564
    }
hgs
parents:
diff changeset
   565
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
hgs
parents:
diff changeset
   568
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   569
// CloneL: Perform a deep clone of this object
hgs
parents:
diff changeset
   570
//
hgs
parents:
diff changeset
   571
// Returns: MXmlElement pointer to the newly created element.
hgs
parents:
diff changeset
   572
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   573
//
hgs
parents:
diff changeset
   574
MXmlElement* CSvgAnimationElementImpl::CloneL(MXmlElement* aParentElement)
hgs
parents:
diff changeset
   575
    {
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
	if(RecursionVariable())
hgs
parents:
diff changeset
   578
		{
hgs
parents:
diff changeset
   579
		SetRecursionVariable(EFalse);
hgs
parents:
diff changeset
   580
		return NULL;
hgs
parents:
diff changeset
   581
		}
hgs
parents:
diff changeset
   582
hgs
parents:
diff changeset
   583
	CSvgAnimationElementImpl* newElement = CSvgAnimationElementImpl::NewL( this->ElemID(),
hgs
parents:
diff changeset
   584
	        ((CSvgDocumentImpl*)iOwnerDocument) );
hgs
parents:
diff changeset
   585
	CleanupStack::PushL(newElement);
hgs
parents:
diff changeset
   586
	newElement->iParentNode = aParentElement;
hgs
parents:
diff changeset
   587
hgs
parents:
diff changeset
   588
    // copy everything over
hgs
parents:
diff changeset
   589
    this->CopyL(newElement);
hgs
parents:
diff changeset
   590
    CleanupStack::Pop();
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
    return newElement;
hgs
parents:
diff changeset
   593
    }
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   597
// CopyL: Perform a deep copy of this object
hgs
parents:
diff changeset
   598
//
hgs
parents:
diff changeset
   599
// Returns: none
hgs
parents:
diff changeset
   600
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   601
//
hgs
parents:
diff changeset
   602
void CSvgAnimationElementImpl::CopyL( CSvgAnimationElementImpl* aDestElement )
hgs
parents:
diff changeset
   603
    {
hgs
parents:
diff changeset
   604
    if(aDestElement)
hgs
parents:
diff changeset
   605
	   	{
hgs
parents:
diff changeset
   606
	    aDestElement->iX = this->iX;
hgs
parents:
diff changeset
   607
	    aDestElement->iY = this->iY;
hgs
parents:
diff changeset
   608
	    aDestElement->iHeight = this->iHeight;
hgs
parents:
diff changeset
   609
	    aDestElement->iWidth = this->iWidth;
hgs
parents:
diff changeset
   610
		aDestElement->iReferencedElement = this->iReferencedElement;
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
		aDestElement->SetRecursionVariable(this->RecursionVariable());
hgs
parents:
diff changeset
   613
	    aDestElement->iOwnerDocument = this->iOwnerDocument;
hgs
parents:
diff changeset
   614
		// copy stuff from superclass
hgs
parents:
diff changeset
   615
	    this->CSvgElementImpl::CopyL(aDestElement);
hgs
parents:
diff changeset
   616
	    }
hgs
parents:
diff changeset
   617
    }
hgs
parents:
diff changeset
   618
hgs
parents:
diff changeset
   619
hgs
parents:
diff changeset
   620
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   621
// Two-phased constructor.
hgs
parents:
diff changeset
   622
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   623
//
hgs
parents:
diff changeset
   624
CSvgAnimationElementImpl* CSvgAnimationElementImpl::NewL( const TUint8 aElemID,
hgs
parents:
diff changeset
   625
                                                      CSvgDocumentImpl* aDoc)
hgs
parents:
diff changeset
   626
    {
hgs
parents:
diff changeset
   627
    CSvgAnimationElementImpl* self = new (ELeave)CSvgAnimationElementImpl(aDoc);
hgs
parents:
diff changeset
   628
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   629
    self->ConstructL( aElemID );
hgs
parents:
diff changeset
   630
    CleanupStack::Pop();
hgs
parents:
diff changeset
   631
hgs
parents:
diff changeset
   632
    return self;
hgs
parents:
diff changeset
   633
    }
hgs
parents:
diff changeset
   634
hgs
parents:
diff changeset
   635
hgs
parents:
diff changeset
   636
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   637
// Two-phased constructor.
hgs
parents:
diff changeset
   638
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   639
//
hgs
parents:
diff changeset
   640
CSvgAnimationElementImpl* CSvgAnimationElementImpl::NewLC( const TUint8 aElemID,
hgs
parents:
diff changeset
   641
                                                       CSvgDocumentImpl* aDoc)
hgs
parents:
diff changeset
   642
    {
hgs
parents:
diff changeset
   643
    CSvgAnimationElementImpl* self = new (ELeave) CSvgAnimationElementImpl(aDoc);
hgs
parents:
diff changeset
   644
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   645
    self->ConstructL( aElemID );
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
    return self;
hgs
parents:
diff changeset
   648
    }
hgs
parents:
diff changeset
   649
hgs
parents:
diff changeset
   650
hgs
parents:
diff changeset
   651
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   652
// C++ default constructor
hgs
parents:
diff changeset
   653
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   654
//
hgs
parents:
diff changeset
   655
CSvgAnimationElementImpl::CSvgAnimationElementImpl( CSvgDocumentImpl* aDoc )
hgs
parents:
diff changeset
   656
	 : CSvgAnimationBase( aDoc )
hgs
parents:
diff changeset
   657
	{
hgs
parents:
diff changeset
   658
	iInitSortList = ETrue; //True indicates that the soring has not been done.
hgs
parents:
diff changeset
   659
    }
hgs
parents:
diff changeset
   660
hgs
parents:
diff changeset
   661
hgs
parents:
diff changeset
   662
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   663
// Symbian default constructor that can leave.
hgs
parents:
diff changeset
   664
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   665
//
hgs
parents:
diff changeset
   666
void CSvgAnimationElementImpl::ConstructL(  const TUint8 aElemID )
hgs
parents:
diff changeset
   667
    {
hgs
parents:
diff changeset
   668
    CSvgAnimationBase::ConstructL( aElemID );
hgs
parents:
diff changeset
   669
hgs
parents:
diff changeset
   670
	iSvgStyleProperties = new(ELeave) RPointerArray<CCssValue>(KCSS_MAX_ATTR);
hgs
parents:
diff changeset
   671
	User::LeaveIfError( iSvgStyleProperties->Append( NULL ) );
hgs
parents:
diff changeset
   672
	iSvgStyleProperties->Remove( 0 );
hgs
parents:
diff changeset
   673
hgs
parents:
diff changeset
   674
    iMyAnimationElementList = new (ELeave)RPointerArray<CSvgElementImpl> (1);
hgs
parents:
diff changeset
   675
	iMyAnimationElementList->Reset();
hgs
parents:
diff changeset
   676
hgs
parents:
diff changeset
   677
    iSvgTransformable = CSvgTransformableImpl::NewL();
hgs
parents:
diff changeset
   678
hgs
parents:
diff changeset
   679
	#ifdef SVG_FLOAT_BUILD
hgs
parents:
diff changeset
   680
    iX = ( 0 );
hgs
parents:
diff changeset
   681
    iY = ( 0 );
hgs
parents:
diff changeset
   682
	#else
hgs
parents:
diff changeset
   683
    iX.operator = ( 0 );
hgs
parents:
diff changeset
   684
    iY.operator = ( 0 );
hgs
parents:
diff changeset
   685
	#endif
hgs
parents:
diff changeset
   686
hgs
parents:
diff changeset
   687
	iUseInRecursion = EFalse;
hgs
parents:
diff changeset
   688
hgs
parents:
diff changeset
   689
    iAnimationEventHandler = CSvgEventHandler::NewL();
hgs
parents:
diff changeset
   690
hgs
parents:
diff changeset
   691
//    ((CSvgDocumentImpl*)
hgs
parents:
diff changeset
   692
//    	iOwnerDocument)->AddToEventReceiverListL(this, KSvgEventMaskTimer |
hgs
parents:
diff changeset
   693
//    	    KSvgEventMaskInternal | KSvgEventMaskExternalUI);
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
// Destructor
hgs
parents:
diff changeset
   699
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   700
//
hgs
parents:
diff changeset
   701
CSvgAnimationElementImpl::~CSvgAnimationElementImpl()
hgs
parents:
diff changeset
   702
    {
hgs
parents:
diff changeset
   703
hgs
parents:
diff changeset
   704
    // unregister event listening for all childs.
hgs
parents:
diff changeset
   705
    RemoveEventListener();
hgs
parents:
diff changeset
   706
hgs
parents:
diff changeset
   707
    if( iAnimationEventHandler )
hgs
parents:
diff changeset
   708
        {
hgs
parents:
diff changeset
   709
        delete iAnimationEventHandler;
hgs
parents:
diff changeset
   710
        iAnimationEventHandler = NULL ;
hgs
parents:
diff changeset
   711
        }
hgs
parents:
diff changeset
   712
hgs
parents:
diff changeset
   713
hgs
parents:
diff changeset
   714
	if ( iSvgStyleProperties )
hgs
parents:
diff changeset
   715
		{
hgs
parents:
diff changeset
   716
		iSvgStyleProperties->Close();
hgs
parents:
diff changeset
   717
		delete iSvgStyleProperties;
hgs
parents:
diff changeset
   718
		iSvgStyleProperties = NULL;
hgs
parents:
diff changeset
   719
		}
hgs
parents:
diff changeset
   720
hgs
parents:
diff changeset
   721
    if ( iMyAnimationElementList )
hgs
parents:
diff changeset
   722
        {
hgs
parents:
diff changeset
   723
		iMyAnimationElementList->Reset();
hgs
parents:
diff changeset
   724
        iMyAnimationElementList->Close();
hgs
parents:
diff changeset
   725
        delete iMyAnimationElementList;
hgs
parents:
diff changeset
   726
        }
hgs
parents:
diff changeset
   727
hgs
parents:
diff changeset
   728
    if ( iPreservRatio )
hgs
parents:
diff changeset
   729
        {
hgs
parents:
diff changeset
   730
        delete iPreservRatio;
hgs
parents:
diff changeset
   731
        }
hgs
parents:
diff changeset
   732
hgs
parents:
diff changeset
   733
    }
hgs
parents:
diff changeset
   734
hgs
parents:
diff changeset
   735
void CSvgAnimationElementImpl::Print( TBool aIsEncodeOn )
hgs
parents:
diff changeset
   736
{
hgs
parents:
diff changeset
   737
	if (!aIsEncodeOn)
hgs
parents:
diff changeset
   738
	{
hgs
parents:
diff changeset
   739
		#ifdef _DEBUG
hgs
parents:
diff changeset
   740
		RDebug::Printf("<animation x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" xlink:href=\"hmm\" preserveAspectRatio=\"hmm\" />",
hgs
parents:
diff changeset
   741
	 	(int)iX, (int)iY, (int)iWidth, (int)iHeight/*, Href(), PreservRatio()*/);
hgs
parents:
diff changeset
   742
		#endif
hgs
parents:
diff changeset
   743
	}
hgs
parents:
diff changeset
   744
}
hgs
parents:
diff changeset
   745
//  End of File