svgtopt/SVG/SVGImpl/inc/SVGElementImpl.h
changeset 0 d46562c3d99d
equal deleted inserted replaced
-1:000000000000 0:d46562c3d99d
       
     1 /*
       
     2 * Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  SVG Implementation header file
       
    15  *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef _INC_CSVGELEMENTIMPL_
       
    20 #define _INC_CSVGELEMENTIMPL_
       
    21 
       
    22 
       
    23 
       
    24 #include "GfxAffineTransform.h"
       
    25 #include "SVGColor.h"
       
    26 
       
    27 #include "SVGTransformableImpl.h"
       
    28 #include "SVGTestsImpl.h"
       
    29 #include "SVGLangSpaceImpl.h"
       
    30 #include "SVGUriReferenceImpl.h"
       
    31 #include "SVGEventReceiver.h"
       
    32 #include "SVGEvent.h"
       
    33 
       
    34 #define SVG_FONTS_INCLUDE // Macro to include SVG FONTS Functionality
       
    35 
       
    36 class   CGfx2dGc;
       
    37 class   CSvgTransformListImpl;
       
    38 class   MSvgTransformList;
       
    39 
       
    40 #include "SVGXmlElementImpl.h"
       
    41 #include "SVGTransformable.h"
       
    42 #include "SVGTests.h"
       
    43 #include "SVGLangSpace.h"
       
    44 #include "SVGXmlElementOpt.h"
       
    45 #include "SVGUriReference.h"
       
    46 
       
    47 #include "GfxFloatFixPt.h"
       
    48 #include "GfxAffineTransform.h"
       
    49 #include "SVGSchemaData.h"
       
    50 
       
    51 class CCssValue;
       
    52 
       
    53 
       
    54 const float KGradiansPerDegree = 3.1415926f / 180.0f;
       
    55 
       
    56 /**
       
    57  * Class description goes here.
       
    58  *
       
    59  *  @lib SVGEngine.lib
       
    60  *  @since 1.0
       
    61  */
       
    62 
       
    63 
       
    64 
       
    65 class CSvgElementImpl : public CXmlElementImpl,
       
    66                         public MSvgTransformable,
       
    67                         public MSvgTests,
       
    68                         public MXmlElementOpt,
       
    69                         public MSvgLangSpace,
       
    70                         public MSvgUriReference,
       
    71                         public MSvgEventReceiver
       
    72 
       
    73     {
       
    74     public:
       
    75 
       
    76 
       
    77         virtual TBool  DoAnimProcL(MSvgEvent* aEvent);
       
    78         void PointToParent(const TInt aAttrId);
       
    79         TBool                       IsInherited(const TInt aAttrId);
       
    80 
       
    81         TBool                       HasAnimation();
       
    82 
       
    83        TInt32 AnimateTransformMatrixIndexL();
       
    84 
       
    85         /**
       
    86          * Need method description
       
    87          *
       
    88          * @since 1.0
       
    89          * @param
       
    90          * @return
       
    91          */
       
    92         virtual TBool               DrawL( CGfx2dGc* agc,
       
    93                                            CSvgElementImpl* aElement );
       
    94 		/**
       
    95          * Need method description
       
    96          *
       
    97          * @since 1.0
       
    98          * @param
       
    99          * @return
       
   100          */
       
   101 		virtual	TBool StyleInParent(CSvgElementImpl* aElement, TInt aAttrIndex);
       
   102 
       
   103         /**
       
   104          * Need method description
       
   105          *
       
   106          * @since 1.0
       
   107          * @param
       
   108          * @return
       
   109          */
       
   110         virtual void                DrawShapeL( CGfx2dGc* aGc,
       
   111                                                 MGfxShape& aShape,
       
   112                                                 CSvgElementImpl* aElement );
       
   113 
       
   114 
       
   115         /**
       
   116          * Need method description
       
   117          *
       
   118          * @since 1.0
       
   119          * @param
       
   120          * @return
       
   121          */
       
   122         virtual void                DrawShapeL( CGfx2dGc* aGc,
       
   123                                                 CSvgElementImpl* aElement );
       
   124         /**
       
   125          * Need method description
       
   126          *
       
   127          * @since 1.0
       
   128          * @param
       
   129          * @return
       
   130          */
       
   131         void                        PropagateToChildren(CCssValue* aOldvalue,CCssValue* aNewValue, const TInt aNameId);
       
   132 
       
   133         /**
       
   134          * Need method description
       
   135          *
       
   136          * @since 1.0
       
   137          * @param
       
   138          * @return
       
   139          */
       
   140         const TDesC*        Id();
       
   141 
       
   142 
       
   143         virtual CGfxGeneralPath* GetPathAttribute(TInt aAttributeId);
       
   144         virtual void SetPathAttribute(TInt aSvgAttrId, CGfxGeneralPath* aPathHandle);
       
   145 
       
   146         /**
       
   147          * Need method description
       
   148          *
       
   149          * @since 1.0
       
   150          * @param
       
   151          * @return
       
   152          */
       
   153         virtual TInt                SetIdandXmlbaseL( const TDesC& aPropertyName,
       
   154                                                      const TDesC& aValue );
       
   155 
       
   156 
       
   157         // need to move to CXmlElementImpl
       
   158 
       
   159         /**
       
   160          * Need method description
       
   161          *
       
   162          * @since 1.0
       
   163          * @param
       
   164          * @return
       
   165          */
       
   166         virtual MXmlElement*        AppendChildL( MXmlElement* aElement, TBool aIsJSR226Element = EFalse );
       
   167 
       
   168         /**
       
   169          * Need method description
       
   170          *
       
   171          * @since 1.0
       
   172          * @param
       
   173          * @return
       
   174          */
       
   175             virtual TInt                SetAttributeL(  const TDesC&  aName ,
       
   176                                                         const TDesC&  aValue  );
       
   177 
       
   178 
       
   179         /**
       
   180          * Need method description
       
   181          *
       
   182          * @since 1.0
       
   183          * @param
       
   184          * @return
       
   185          */
       
   186 
       
   187         virtual TInt                RemoveAttribute( const TInt aAttrId );
       
   188 
       
   189 
       
   190 
       
   191         // From MXmlElementOpt API
       
   192 
       
   193         /**
       
   194          * Need method description
       
   195          *
       
   196          * @since 1.0
       
   197          * @param
       
   198          * @return
       
   199          */
       
   200         virtual TInt                GetAttributeIntL( const TInt aNameId,
       
   201                                                      TInt32& aValue );
       
   202 
       
   203         /**
       
   204          * Need method description
       
   205          *
       
   206          * @since 1.0
       
   207          * @param
       
   208          * @return
       
   209          */
       
   210         virtual TInt                SetAttributeIntL( const TInt aNameId,
       
   211                                                       const TInt32 aValue );
       
   212 
       
   213 
       
   214         /**
       
   215          * Need method description
       
   216          *
       
   217          * @since 1.0
       
   218          * @param
       
   219          * @return
       
   220          */
       
   221         virtual TInt                GetAttributeFloat( const TInt aNameId,
       
   222                                                        TFloatFixPt& aValue );
       
   223 
       
   224         /**
       
   225          * Need method description
       
   226          *
       
   227          * @since 1.0
       
   228          * @param
       
   229          * @return
       
   230          */
       
   231         virtual TInt                SetAttributeFloatL( const TInt aNameId,
       
   232                                                         const TFloatFixPt aValue );
       
   233 
       
   234 
       
   235         /**
       
   236          * Need method description
       
   237          *
       
   238          * @since 1.0
       
   239          * @param
       
   240          * @return
       
   241          */
       
   242         virtual TInt                GetAttributePath( const TInt aNameId,
       
   243                                                       CGfxGeneralPath*& aValue );
       
   244 
       
   245         /**
       
   246          * Need method description
       
   247          *
       
   248          * @since 1.0
       
   249          * @param
       
   250          * @return
       
   251          */
       
   252         virtual TInt                SetAttributePathL( const TInt aNameId,
       
   253                                                        CGfxGeneralPath* aValue );
       
   254 
       
   255         //used in decoder to avoid local copying.
       
   256          virtual TInt                SetAttributePathRef( const TInt aNameId,
       
   257                                                        CGfxGeneralPath*& aValue );
       
   258 
       
   259 
       
   260         /**
       
   261          * Need method description
       
   262          *
       
   263          * @since 1.0
       
   264          * @param
       
   265          * @return
       
   266          */
       
   267         virtual TInt                GetAttributeDes( const TInt aNameId,
       
   268                                                      TPtrC16& aValue );
       
   269 
       
   270         /**
       
   271          * Need method description
       
   272          *
       
   273          * @since 1.0
       
   274          * @param
       
   275          * @return
       
   276          */
       
   277         virtual TInt                SetAttributeDesL( const TInt aNameId,
       
   278                                                       const TDesC& aValue );
       
   279 
       
   280 
       
   281         /**
       
   282          * Need method description
       
   283          *
       
   284          * @since 1.0
       
   285          * @param
       
   286          * @return
       
   287          */
       
   288 
       
   289         void                        GetSvgStylePropertiesArray( RPointerArray<CCssValue>*& aSvgStyleProperties);
       
   290 
       
   291         // From MSvgLocatable/MSvgTransformable
       
   292 
       
   293          /**
       
   294          * Need method description
       
   295          *
       
   296          * @since 1.0
       
   297          * @param
       
   298          * @return
       
   299          */
       
   300          TBool                IsTransformable();
       
   301 
       
   302 
       
   303         /**
       
   304          * Need method description
       
   305          *
       
   306          * @since 1.0
       
   307          * @param
       
   308          * @return
       
   309          */
       
   310         virtual void                GetTransform( MSvgTransformList*& aTransformList );
       
   311 
       
   312 
       
   313         /**
       
   314          * Need method description
       
   315          *
       
   316          * @since 1.0
       
   317          * @param
       
   318          * @return
       
   319          */
       
   320         virtual void                SetTransform( MSvgTransformList*& aTransformList );
       
   321 
       
   322         virtual void                SetTransformList(TGfxAffineTransform& aTr);
       
   323 
       
   324 
       
   325         /**
       
   326          * Need method description
       
   327          *
       
   328          * @since 1.0
       
   329          * @param
       
   330          * @return
       
   331          */
       
   332         virtual                     const TGfxAffineTransform& GetCTM();
       
   333 
       
   334 
       
   335         /**
       
   336          * Need method description
       
   337          *
       
   338          * @since 1.0
       
   339          * @param
       
   340          * @return
       
   341          */
       
   342         virtual void                SetCTM( TGfxAffineTransform& aTr );
       
   343 
       
   344 
       
   345         /**
       
   346          * Need method description
       
   347          *
       
   348          * @since 1.0
       
   349          * @param
       
   350          * @return
       
   351          */
       
   352         virtual void                GetBBox( TGfxRectangle2D& /*aBbox*/ );
       
   353 
       
   354         /**
       
   355          * Need method description
       
   356          *
       
   357          * @since 1.0
       
   358          * @param
       
   359          * @return
       
   360          */
       
   361         virtual void                GetUnscaledBBox( TGfxRectangle2D& /*aBbox*/ );
       
   362 
       
   363         // From MSvgStylable
       
   364 
       
   365 
       
   366         /**
       
   367          * Need method description
       
   368          *
       
   369          * @since 1.0
       
   370          * @param
       
   371          * @return
       
   372          */
       
   373 
       
   374         void                                SetPresentationAttribute( const TInt8 aPropertyId,
       
   375                                                 CCssValue*& aCssValue );
       
   376 
       
   377         /**
       
   378          * Need method description
       
   379          *
       
   380          * @since 1.0
       
   381          * @param
       
   382          * @return
       
   383          */
       
   384          TBool                      SetPropertyL( const TInt& aAttrId,
       
   385                                     const TDesC& aValue);
       
   386         /**
       
   387          * This method sets a property value that takes a float
       
   388          *
       
   389          * @since 1.0
       
   390          * @param const TInt& (attribute ID), TReal32 (float value)
       
   391          * @return TBool
       
   392          */
       
   393          TBool                        SetPropertyFloatL( const TInt& aAttrId,
       
   394                                                 TReal32 aValue);
       
   395         // From MSvgTests
       
   396 
       
   397 
       
   398         /**
       
   399          * Need method description
       
   400          *
       
   401          * @since 1.0
       
   402          * @param
       
   403          * @return
       
   404          */
       
   405         virtual void                GetRequiredFeatures( const CDesCArrayFlat*& aRequiredFeatures );
       
   406 
       
   407 
       
   408         /**
       
   409          * Need method description
       
   410          *
       
   411          * @since 1.0
       
   412          * @param
       
   413          * @return
       
   414          */
       
   415         virtual void                GetRequiredExtensions( const CDesCArrayFlat*& aRequiredExtensions );
       
   416 
       
   417 
       
   418         /**
       
   419          * Need method description
       
   420          *
       
   421          * @since 1.0
       
   422          * @param
       
   423          * @return
       
   424          */
       
   425         virtual TBool                GetSystemLanguage( const CDesCArrayFlat*& aSystemLanguage );
       
   426 
       
   427 
       
   428         /**
       
   429          * Need method description
       
   430          *
       
   431          * @since 1.0
       
   432          * @param
       
   433          * @return
       
   434          */
       
   435         virtual TBool               HasExtension( const TDesC& aExtension );
       
   436 
       
   437 
       
   438         /**
       
   439          * Need method description
       
   440          *
       
   441          * @since 1.0
       
   442          * @param
       
   443          * @return
       
   444          */
       
   445         virtual TBool               HasFeature( const TDesC& aFeature );
       
   446 
       
   447         virtual TBool               HasAnyTests();
       
   448 
       
   449         // From MSvgLangSpace.h
       
   450 
       
   451         /**
       
   452          * Need method description
       
   453          *
       
   454          * @since 1.0
       
   455          * @param
       
   456          * @return
       
   457          */
       
   458         virtual const TDesC&        XMLLang();
       
   459 
       
   460 
       
   461         /**
       
   462          * Need method description
       
   463          *
       
   464          * @since 1.0
       
   465          * @param
       
   466          * @return
       
   467          */
       
   468         virtual TInt                SetXMLLangL( const TDesC& aXMLLang );
       
   469 
       
   470 
       
   471         /**
       
   472          * Need method description
       
   473          *
       
   474          * @since 1.0
       
   475          * @param
       
   476          * @return
       
   477          */
       
   478         virtual const TDesC&        XMLSpace();
       
   479 
       
   480 
       
   481         /**
       
   482          * Need method description
       
   483          *
       
   484          * @since 1.0
       
   485          * @param
       
   486          * @return
       
   487          */
       
   488         virtual TInt                SetXMLSpaceL( const TDesC& aXMLSpace );
       
   489 
       
   490         // TKC: Shouldn't this be a wrapper to CSVGTransformableImpl
       
   491 
       
   492 
       
   493         /**
       
   494          * Need method description
       
   495          *
       
   496          * @since 1.0
       
   497          * @param
       
   498          * @return
       
   499          */
       
   500         virtual TBool               SetTransform( const TDesC& aAttributeName,
       
   501                                                   const TDesC& aValue );
       
   502 
       
   503         // TKC Wrapper to CSvgTestsImpl
       
   504 
       
   505         /**
       
   506          * Need method description
       
   507          *
       
   508          * @since 1.0
       
   509          * @param
       
   510          * @return
       
   511          */
       
   512         virtual TBool               SetTestAttributeL( const TDesC& aPropertyName,
       
   513                                                        const TDesC& aValue );
       
   514 
       
   515         // SSB Wrapper to CSvgLangSpace
       
   516 
       
   517         /**
       
   518          * Need method description
       
   519          *
       
   520          * @since 1.0
       
   521          * @param
       
   522          * @return
       
   523          */
       
   524         virtual TBool               SetLangSpaceAttributeL( const TDesC& aPropertyName,
       
   525                                                             const TDesC& aValue );
       
   526 
       
   527         // SSB Wrapper to CSvgUriReferenceImpl
       
   528 
       
   529         /**
       
   530          * Need method description
       
   531          *
       
   532          * @since 1.0
       
   533          * @param
       
   534          * @return
       
   535          */
       
   536         virtual TBool               SetXlinkAttributeL( const TDesC& aPropertyName,
       
   537                                                         const TDesC& aValue );
       
   538         // From MSvgLangSpace.h
       
   539 
       
   540         /**
       
   541          * Need method description
       
   542          *
       
   543          * @since 1.0
       
   544          * @param
       
   545          * @return
       
   546          */
       
   547         virtual const TDesC&        Href();
       
   548         
       
   549         virtual TDesC*				HrefPointer();
       
   550         
       
   551         /**
       
   552          * Need method description
       
   553          *
       
   554          * @since 1.0
       
   555          * @param
       
   556          * @return
       
   557          */
       
   558         virtual const TDesC&        XlinkShow();
       
   559 
       
   560 
       
   561         /**
       
   562          * Need method description
       
   563          *
       
   564          * @since 1.0
       
   565          * @param
       
   566          * @return
       
   567          */
       
   568         virtual                     ~CSvgElementImpl();
       
   569 
       
   570         // From MSvgEventReceiver
       
   571 
       
   572         /**
       
   573          * Need method description
       
   574          *
       
   575          * @since 1.0
       
   576          * @param
       
   577          * @return
       
   578          */
       
   579                
       
   580         virtual TBool               ReceiveEventL( MSvgEvent* aEvent);
       
   581      
       
   582         /**
       
   583          * Receives events and generates suitable internal events
       
   584          * for engine based on aSubEventMask
       
   585          * 
       
   586          * @since v3.2
       
   587          * @param aEvent - The event of type TSvgEngineEventType
       
   588          * @param aSubEventMask - contains the list of interactive events 
       
   589          *                        that the element can respond to.
       
   590          * @return ETrue if the aEvent is of type TSvgEngineEventType and
       
   591          *               event processing needs redraw else EFalse.    
       
   592          */                        
       
   593           
       
   594         virtual TBool               ReceiveEventL( MSvgEvent* aEvent, const TUint16 aSubEventMask );
       
   595      
       
   596         /**
       
   597          * Need method description
       
   598          *
       
   599          * @since 1.0
       
   600          * @param
       
   601          * @return
       
   602          */
       
   603         virtual void                ResetReferenceElementL();
       
   604 
       
   605         // Internal methods
       
   606 
       
   607         /**
       
   608          * Need method description
       
   609          *
       
   610          * @since 1.0
       
   611          * @param
       
   612          * @return
       
   613          */
       
   614         virtual TSvgColor*           CurrentColor();
       
   615 
       
   616 
       
   617         /**
       
   618          * Need method description
       
   619          *
       
   620          * @since 1.0
       
   621          * @param
       
   622          * @return
       
   623          */
       
   624         virtual void                SetGCL( CGfx2dGc* aGc);
       
   625 
       
   626 
       
   627         /**
       
   628          * Need method description
       
   629          *
       
   630          * @since 1.0
       
   631          * @param
       
   632          * @return
       
   633          */
       
   634         virtual TInt32              AnimateMotionMatrixIndexL();
       
   635 
       
   636 
       
   637         /**
       
   638          * Need method description
       
   639          *
       
   640          * @since 1.0
       
   641          * @param
       
   642          * @return
       
   643          */
       
   644 
       
   645 
       
   646         void                        FindProperty( const TInt8 aPropertyId,
       
   647                                         CCssValue*& aCssValue,
       
   648                                         CSvgElementImpl* aElement );
       
   649 
       
   650         void                        FindProperty( const TInt8 aPropertyId,
       
   651                                         CCssValue*& aCssValue);
       
   652         void                        CreateSvgTestL(const TUint16 aAttrName);
       
   653 
       
   654         /**
       
   655          * Need method description
       
   656          *
       
   657          * @since 1.0
       
   658          * @param
       
   659          * @return
       
   660          */
       
   661         void                        CloneSvgStylePropertiesL( CSvgElementImpl* aNewChild,
       
   662                                         CSvgElementImpl* aParentElement);
       
   663 
       
   664         TInt                       SetUriRefDesL( const TUint16 aNameId,
       
   665                                         const TDesC& aValue );
       
   666 
       
   667         /**
       
   668          * Return wether an svg element is displayable, such as <rect>, <circle>, or
       
   669          * an abstract element, such as <g>, <animate>.
       
   670          *
       
   671          * @since 1.0
       
   672          * @param None
       
   673          * @return ETrue is element is viewable.
       
   674          */
       
   675         virtual TBool               IsViewable() { return EFalse; }
       
   676 
       
   677         TBool IsVisible();
       
   678 
       
   679 		TFloatFixPt GetCurrentScale( );
       
   680 
       
   681        virtual void UpdateCTM();
       
   682         
       
   683         
       
   684     protected:
       
   685         // Internal methods
       
   686 
       
   687 
       
   688         /**
       
   689          * Need method description
       
   690          *
       
   691          * @since 1.0
       
   692          * @param
       
   693          * @return
       
   694          */
       
   695         virtual void                InitializeL(  TUint8 aElemID );
       
   696 
       
   697 
       
   698 
       
   699         /**
       
   700          * Need method description
       
   701          *
       
   702          * @since 1.0
       
   703          * @param
       
   704          * @return
       
   705          */
       
   706                                     CSvgElementImpl();
       
   707 
       
   708 
       
   709 
       
   710         /**
       
   711          * Need method description
       
   712          *
       
   713          * @since 1.0
       
   714          * @param
       
   715          * @return
       
   716          */
       
   717         virtual TBool               IsDrawable();
       
   718 
       
   719 
       
   720         /**
       
   721          * Need method description
       
   722          *
       
   723          * @since 1.0
       
   724          * @param
       
   725          * @return
       
   726          */
       
   727 
       
   728 
       
   729         TInt                        InitSvgStyleProperties();
       
   730 
       
   731 
       
   732     public:
       
   733 
       
   734 		void 					InitAllSvgStyleProperties(CSvgElementImpl* aElement);
       
   735 		void 					InitSvgJSRStyleProperties(CSvgElementImpl* aParentElement);
       
   736         void					PrintStyleProperties();
       
   737         virtual void			Print( TBool aIsEncodeOn ) = 0;
       
   738 
       
   739         TBool						GetDefaultAttributeL( const TInt aNameId, CCssValue*& aValue );
       
   740 
       
   741             // functions for encoding
       
   742 
       
   743         virtual void                    SetRequiredFeatures(  CDesCArrayFlat*& aRequiredFeatures );
       
   744 
       
   745 
       
   746         /**
       
   747          * Need method description
       
   748          *
       
   749          * @since 1.0
       
   750          * @param
       
   751          * @return
       
   752          */
       
   753         virtual void                    SetRequiredExtensions(  CDesCArrayFlat*& aRequiredExtensions );
       
   754 
       
   755 
       
   756         /**
       
   757          * Need method description
       
   758          *
       
   759          * @since 1.0
       
   760          * @param
       
   761          * @return
       
   762          */
       
   763         virtual void                    SetSystemLanguage(  CDesCArrayFlat*& aSystemLanguage );
       
   764 
       
   765         /**
       
   766          * Initialize all style property values with NULL.
       
   767          *
       
   768          * @since 1.0
       
   769          * @return none
       
   770          */
       
   771         void InitSvgStylePropertiesWithNullL();
       
   772 
       
   773         virtual void                DeactivateAnimation();
       
   774 
       
   775         MXmlElement*                CloneL(MXmlElement* aParentElement);
       
   776 
       
   777         void                        ResetReferenceAttrSet();
       
   778 
       
   779         void                        Reset(MSvgEvent* aEvent);
       
   780 
       
   781         virtual void                ReInitializeAnimation();
       
   782 
       
   783         void                        SetIsAnimating( TBool aBool );
       
   784         TBool                       IsAnimating();
       
   785 
       
   786         void                        SetTurnOff( TBool aBool );
       
   787         TBool                       WasTurnedOff();
       
   788 
       
   789         void                        SetOverwriteTransforms( TBool aBool );
       
   790         TBool                       IsOverwriteTransforms();
       
   791 
       
   792         void                        SetAllAttributesAdded( TBool aBool );
       
   793         TBool                       AreAllAttributesAdded();
       
   794 
       
   795         void                        SetMouseDown( TBool aBool );
       
   796         TBool                       IsMouseDown();
       
   797 
       
   798         void                        SetMouseIn( TBool aBool );
       
   799         TBool                       IsMouseIn();
       
   800 
       
   801 		TBool						IsAnimatedElement( );
       
   802 		
       
   803 	    /**
       
   804 		 * Check whether the internal event can be generated
       
   805 		 *
       
   806 		 * @since v3.2
       
   807 		 * @param aSubEventMask - The bit field that contains the list of events
       
   808 		 *                        registered for the element 
       
   809 		 * @param aEvent - The internal event to be generated
       
   810 		 * @return ETrue if the element is registered for the aEvent otherwise EFalse.
       
   811 		 */                                                
       
   812 		TBool                     CanGenerateInternalEvent(TUint16 aSubEventmask, TSvgEvent aEvent);
       
   813 		
       
   814 		TBool                     IsSVGEnginePaused();
       
   815     protected:
       
   816         void                        CopyL( CSvgElementImpl* aDestElement );
       
   817 
       
   818     public:
       
   819 
       
   820         // Additive
       
   821         RArray<TUint32>*            iAnimateAttrSet;
       
   822 
       
   823         TInt                        iAnimateTransformMatrixIndex;
       
   824 
       
   825         TInt                        iHasAnimationBase;
       
   826 
       
   827     protected:
       
   828         // Internal variables
       
   829 
       
   830         HBufC*                      iId;
       
   831 
       
   832         RPointerArray<CCssValue>*   iSvgStyleProperties;
       
   833         CSvgTransformableImpl*      iSvgTransformable;
       
   834 
       
   835         CSvgTestsImpl*              iSvgTests;
       
   836 
       
   837         CSvgLangSpaceImpl*          iSvgLangSpace;
       
   838 
       
   839         CSvgUriReferenceImpl*       iSvgUriReferenceImpl;
       
   840 
       
   841     private:
       
   842         // Enumeration for boolean bits:  boolean variables use bitfield to reduce memory usage
       
   843         enum TElementBooleanBits
       
   844         {
       
   845             KAnimatingBit           = 0x00000001,
       
   846             KWasTurnedOffBit        = 0x00000002,
       
   847             KOverwriteTransformsBit = 0x00000004,
       
   848             KAllAttributesAddedBit  = 0x00000008,
       
   849             KMouseDownBit           = 0x00000010,
       
   850             KMouseInBit             = 0x00000020
       
   851 
       
   852         };
       
   853 
       
   854         // variable to track TBool members with bitwise operations
       
   855         TUint32                     iBooleanFlags;
       
   856 
       
   857     public:
       
   858         TInt16                      iAnimateMotionMatrixIndex;
       
   859 
       
   860         TUint16                     iReqAttrFlag;
       
   861 
       
   862 
       
   863 
       
   864 
       
   865 
       
   866 
       
   867     };
       
   868 
       
   869 #endif /* _INC_CSVGELEMENTIMPL_ */