svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h
changeset 46 88edb906c587
child 12 2087eeae8b7f
child 26 796196dd6e68
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h	Wed Nov 03 18:56:10 2010 +0200
@@ -0,0 +1,2173 @@
+/*
+* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  SVG Engine header file
+ *
+*/
+
+
+#ifndef SVGENGINEINTERFACEIMPL_H
+#define SVGENGINEINTERFACEIMPL_H
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#endif
+
+//does this need to be in a #define
+#include <e32cons.h>
+#include <w32std.h>
+#include <badesca.h>
+#include "SVGRendererId.h"
+#include "SVGListener.h"
+
+const TInt KSvgEngineUidValue=0x040039CE;
+const TUid KSvgEngineUid={KSvgEngineUidValue};
+
+typedef TUint           TRenderingQuality;
+const TRenderingQuality KLowNoAA                = 0;
+const TRenderingQuality KHighNoAA               = 1;
+const TRenderingQuality KLowAA                  = 2;
+const TRenderingQuality KHighAA                 = 3;
+
+const TInt KInvalidEnumAttribute = -10000;
+const TReal32 KInvalidFloatAttribute = -10000;
+#define KSVGColorNone  2
+#define KSVGCurrentColor 3
+#define KSVGColorInherit 4
+#define KSVGAttributeInherit    5
+#define __TLV_ // Needed by orbit.
+
+enum TSvgErrorCode
+{
+    ESvgNoError = 0,
+    ESvgFileNotFound,
+    ESvgDocumentNotValid,
+    ESvgDocumentNotAvailable,
+    ESvgNoMemory,
+    ESvgDiskFull,
+    ESvgUnknown,
+    ESvgMissingRequiredAttribute,
+    ESvgInvalidAttributeValue,
+    ESvgbFileNotValid,
+    ESvgDRMFailure,
+    ESvgThumbNailRestriction
+};
+
+enum TSvgPreserveAspectAlignType
+    {
+    ESvgPreserveAspectRatio_None,
+    ESvgPreserveAspectRatio_Unknown,
+    ESvgPreserveAspectRatio_XmaxYmax,
+    ESvgPreserveAspectRatio_XmaxYmid,
+    ESvgPreserveAspectRatio_XmaxYmin,
+    ESvgPreserveAspectRatio_XmidYmax,
+    ESvgPreserveAspectRatio_XmidYmid,	//default
+    ESvgPreserveAspectRatio_XmidYmin,
+    ESvgPreserveAspectRatio_XminYmax,
+    ESvgPreserveAspectRatio_XminYmid,
+    ESvgPreserveAspectRatio_XminYmin
+    };
+
+enum TSvgMeetOrSliceType
+    {
+    ESvgMeetOrSlice_Meet,
+    ESvgMeetOrSlice_Slice,
+    ESvgMeetOrSlice_Unknown
+    };	
+
+class       MSvgHyperlinkListener;
+class       MSvgTextAreaListener;
+class       MSvgTextListener;
+class       MSvgAnimationListener;
+class     MSvgListener;
+class       CGfxGeneralPath;
+class       CFbsBitmap;
+class       CSvgEngineImpl;
+//class     CSvgGcStack;
+class       CSvgElementImpl;
+class       MSvgEventReceiver;
+class       MSvgRequestObserver;
+class       CSvgTimer;
+class       MXmlElement;
+class       CSvgDocumentImpl;
+class       CXmlElementImpl;
+class       CSvgErrorImpl;
+class       CSvgTextElementImpl;
+
+class 		CSvgBitmapFontProvider;
+class MRect
+    {
+    public:
+
+        /**
+         * Get the four points for a rectangle
+         *
+         * @since 1.0
+         * @return : void
+         */
+        virtual void         GetPoints(TPoint& aPoint1, TPoint& aPoint2, TPoint& aPoint3, TPoint& aPoint4) const = 0;
+
+        virtual TBool        Intersects( const MRect& aRect ) = 0;
+
+        virtual void         Center( TPoint& aCenter ) = 0;
+
+    };
+
+
+class MSvgError
+    {
+    public:
+
+        /**
+         * Determine wether an error is indicated by this object.
+         *
+         * @since 1.0
+         * @return : ETrue, if ErrorCode() != ESvgNoError
+         */
+        virtual TBool         HasError() = 0;
+
+        /**
+         * Determine wether an error is only a warning.
+         * This should be a state when the svg may be display, despite
+         * a conflict.
+         *
+         * @since 1.0
+         * @return ETrue if HasError() is only a warning.
+         */
+        virtual TBool         IsWarning() = 0;
+
+        /**
+         * Get the error code contained by this object.
+         *
+         * @since 1.0
+         * @return : the TSvgErrorCode value
+         */
+        virtual TSvgErrorCode ErrorCode() = 0;
+
+        /**
+         * Get the error description string for this object.
+         *
+         * @since 1.0
+         * @return : error description string.
+         */
+        virtual TDesC&        Description() = 0;
+
+        /**
+         * Get the system error code contained by this object.  For example,
+         * If ErrorCode() is ESvgDRMFailure, SystemErrorCode() will contain
+         * the error-code returned by the system for a drm-failure.
+         *
+         * @since 1.0
+         * @return : the TSvgErrorCode value
+         */
+        virtual TInt SystemErrorCode() = 0;
+    };
+
+/**
+ * This class implements the interface for a SVGT Engine, providing methods
+ * to load svg contents and manipulate the output, such as zooming, panning
+ * and rotating the display.
+ */
+class CSvgEngineInterfaceImpl : public CBase
+    {
+    public:
+
+        IMPORT_C MSvgError* CSvgEngineInterfaceImpl::SaveSvgDom(TInt aHandle, const TDesC& aFileName, TInt aEngine = NULL);
+
+        /**
+         * Two phase construction
+         */
+        // April 27th : Add thrid new parameter for specifying the Text height
+        IMPORT_C static CSvgEngineInterfaceImpl* NewL( CFbsBitmap* aFrameBuffer,
+                                                  MSvgRequestObserver* aReqObserver,  TFontSpec& aFontSpec  );
+        IMPORT_C static CSvgEngineInterfaceImpl* NewL( CFbsBitmap* aFrameBuffer,
+                                                  MSvgRequestObserver* aReqObserver,  TFontSpec& aFontSpec ,SVGRendererId aRendererType );
+
+        /**
+         * Create a new Svg Engine interface.
+         *
+         * @since 1.0
+         * @param : aFrameBuffer -- bitmap to draw resulting svg image.
+         * @param : aReqObserver -- interface for callbacks to retrieve info
+         *                          only client can provide, such as opening files.
+         * @param : aFontSpec -- Font spec to use for text drawing.
+         * @return : none
+         */
+        IMPORT_C static CSvgEngineInterfaceImpl* NewLC( CFbsBitmap* aFrameBuffer,
+                                                   MSvgRequestObserver* aReqObserver,  TFontSpec& aFontSpec  );
+        // NGA:: overloading NewLC to include a renderer selector parameter
+        IMPORT_C static CSvgEngineInterfaceImpl* NewLC( CFbsBitmap* aFrameBuffer,
+                                                   MSvgRequestObserver* aReqObserver,  TFontSpec& aFontSpec ,SVGRendererId aRendererType );
+
+       /**
+         * Added for getting the NVG-TLV from S60SVGTEngine in QT S60 baseport.
+         * @since 1.0
+         * @return : Pointer to the tlv data
+         */
+                
+        IMPORT_C const TPtrC8 TLVEncodedData() const;
+       
+        /**
+         * Svg Engine interface Destructor.
+         *
+         * @since 1.0
+         * @param : None
+         * @return : none
+         */
+        IMPORT_C                            ~CSvgEngineInterfaceImpl();
+
+        /**
+         * Load a svg document from a file.  An error is return if one is encountered.
+         * Some errors may be more like warnings, which may allow the svg content
+         * to display nevertheless.
+         *
+         * @since 1.0
+         * @param aFileName -- Name of svg file
+         * @return : Error code if any
+         */
+        IMPORT_C MSvgError*                  Load( const TDesC& aFileName );
+
+        /**
+         * Load a svg document from a byte array.  An error is return if one is encountered.
+         * Some errors may be more like warnings, which may allow the svg content
+         * to display nevertheless.
+         *
+         * @since 1.0
+         * @param  aByteData -- Byte array of svg document.
+         * @return : Error code if any
+         */
+        IMPORT_C MSvgError*                  Load( const TDesC8& aByteData );
+
+        /**
+         * Load a svg document from from the RFile Handle passed.  An error is return if one is encountered.
+         * Some errors may be more like warnings, which may allow the svg content
+         * to display nevertheless.
+         *
+         * @since 1.0
+         * @param  aFileHandle -- RFile handle of svg document.
+         * @return : Error code if any
+        **/
+        IMPORT_C MSvgError*                  Load( RFile& aFileHandle );
+
+        /**
+         * Destroy the currently "loaded" svg document.  Prepared documents,
+         * must be destroy through DeleteDom, or the engine will destroy them
+         * in its destructor function.
+         *
+         * @since 1.0
+         * @param : none
+         * @return : none
+         */
+        IMPORT_C void                       Destroy();
+
+
+        /**
+         * Request the SVG Engine to begin an animation.
+         *
+         * @since 1.0
+         * @param : aEngine -- NULL to start internal svg-engine
+         * @param : aIsMainThread -- EFalse to start engine asynchronously,
+         * defaulted to EFalse.
+         * @return : none
+         */
+        IMPORT_C void                       Start( CSvgEngineImpl* aEngine = NULL,
+                                                   TBool aIsMainThread = ETrue );
+
+        /**
+         * Request the SVG Engine to begin an animation. 
+         * This method returns an error code.
+         * @since 1.0
+         * @param : MSvgError*& -- Pointer to Error object ,
+         * @param : aEngine -- NULL to start internal svg-engine,
+         * @return : none
+         */
+         
+         IMPORT_C void                        Start( MSvgError*& aError,
+                                                    CSvgEngineImpl* aEngine = NULL
+                                                   );
+        /**
+         * Request the SVG Engine to stop an animation.
+         *
+         * @since 1.0
+         * @param : none
+         * @return : none
+         */
+        IMPORT_C void                       Stop( CSvgEngineImpl* aEngine = NULL );
+
+        /**
+         * Request the SVG Engine to pause an animation.
+         *
+         * @since Series 60 3.0
+         * @param : none
+         * @return : none
+         */
+        IMPORT_C void                       Pause( CSvgEngineImpl* aEngine = NULL );
+
+        /**
+         * Request the SVG Engine to resume an animation.
+         *
+         * @since 1.0
+         * @param : none
+         * @return : none
+         */
+        IMPORT_C void                       Resume( CSvgEngineImpl* aEngine = NULL );
+
+        /**
+         * Get the animation duration of a svg content, in milliseconds,
+         * for non-indefinite animations.
+         *
+         * @since 1.0
+         * @param
+         * @return the animation duration.
+         */
+        IMPORT_C TUint32                    Duration( TInt aEngine = NULL );
+
+        /**
+         * Reset the view to the default values.  Redraw() must be called to
+         * update the output image.
+         *
+         * @since 1.0
+         * @param
+         * @return the animation duration.
+         */
+        IMPORT_C void                       OriginalView( TInt aEngine = NULL );
+
+
+        /**
+         * Request the SVG Engine to zoom-in on the content given the zoom factor.
+         * The value range is greater than zero.  The current zoom factor is
+         * multiplied with the given value to yield the final result.  Redraw()
+         * must be called to update the output image.
+         *
+         * @since 1.0
+         * @param : aScaleFactor -- A value greater than zero.
+         * @return
+         */
+        IMPORT_C void                       Zoom( TReal32 aScaleFactor, TInt aEngine = NULL ) __SOFTFP;
+
+        /**
+         * Shift the center of the content in both x and y coordinates.  The
+         * values are in user-coordinate values and may be negative.  Redraw()
+         * must be called to update the output image.
+         *
+         * @since 1.0
+         * @param : aX -- Number of pixels to pan left (negative) or right.
+         * @param : aY -- Number of pixels to pan up (negative) or down.
+         * @return
+         */
+        IMPORT_C void                       Pan( TInt aX, TInt aY, TInt aEngine = NULL );
+
+       /**
+         * Shift the center of the content in both x and y coordinates.  The
+         * values are in user-coordinate values and may be negative.
+         *
+         * @since 1.0
+         * @param : aX -- Number of pixels to pan left (negative) or right.
+         * @param : aY -- Number of pixels to pan up (negative) or down.
+         * @return TBool
+         */
+        IMPORT_C TBool                      IsPanPossible( TInt aX, TInt aY, TInt aEngine = NULL );
+
+       /**
+         *  Checks the panning possibility in four directions. A efficient
+	 *  API for clients which want to show 4 way panning indicators.
+	 *  It is efficient for these clients to get the all four direction
+	 *  information at one go. Saves rendering time significantly per
+	 *  frame.
+	 *
+         * @since 1.0
+         * @param : left: would contain result of whether panning of one pixel
+	 * 	possible to left.
+         * @param : right: would contain result of whether panning of one pixel
+	 * 	possible to right.
+         * @param : up: would contain result of whether panning of one pixel
+	 * 	possible to up.
+         * @param : down: would contain result of whether panning of one pixel
+	 * 	possible to down.
+         * @param : 
+         * @return 
+         */
+        IMPORT_C void                      IsPanPossibleFourWay
+    ( TBool& left, TBool& right, TBool& up, TBool& down, TInt aEngine = NULL);
+
+        /**
+         * Rotate the content about the given point by the given angle.
+         * The point is in user-coordinates.  Redraw() must be called to
+         * update the output image.
+         *
+         * @since 1.0
+         * @param : aAngle -- Number of gradients to rotate.
+         * @param : aX -- X center of rotation
+         * @param : aY -- Y center of rotation.
+         * @return
+         */
+        IMPORT_C void                       Rotate( TReal32 aAngle,
+                                                    TInt aX,
+                                                    TInt aY,
+                                                    TInt aEngine = NULL ) __SOFTFP;
+
+        /**
+         * Notify the SVG Engine that a "mouse down" event.  The engine will
+         * initiate mouse-related events, such as links, if appropriate.
+         *
+         * @since 1.0
+         * @param : aX -- x coordinate of mouse event.
+         * @param : aY -- y coordinate of mouse event.
+         * @return
+         */
+        IMPORT_C TInt                       MouseDown( TInt aX, TInt aY, TInt aEngine = NULL );
+
+        /**
+         * Notify the SVG Engine that a "mouse up" event.  The engine will
+         * initiate mouse-related events, such as links, if appropriate.
+         *
+         * @since 1.0
+         * @param : aX -- x coordinate of mouse event.
+         * @param : aY -- y coordinate of mouse event.
+         * @return
+         */
+        IMPORT_C void                       MouseUp( TInt aX, TInt aY, TInt aEngine = NULL );
+
+        /**
+         * Notify the SVG Engine that a "mouse move" event.  The engine will
+         * initiate mouse-related events, such as links, if appropriate.
+         *
+         * @since 1.0
+         * @param : aX -- x coordinate of mouse event.
+         * @param : aY -- y coordinate of mouse event.
+         * @return
+         */
+        IMPORT_C void                       MouseMove( TInt aX, TInt aY, TInt aEngine = NULL );
+
+        /**
+         * Notify the SVG Engine that a "key press" event.  The engine will
+         * initiate key-related events if appropriate.
+         * @since 1.0
+         * @param : aKeyCode -- key code of key event.
+         * @return
+         */
+
+        IMPORT_C void                       KeyPress( const TKeyEvent& aKeyEvent, TInt aEngine = NULL );
+
+        /**
+         * Retrieve the rendering quality setting.  See TRenderingQuality
+         * for possible values.
+         *
+         * @since 1.0
+         * @param
+         * @return
+         */
+        IMPORT_C TRenderingQuality          GetRenderQuality( );
+
+        /**
+         * Set the rendering quality.  Low-level graphics is always set
+         * to high -- no effect from this call.  Redraw() must be called to
+         * update the output image.
+         *
+         * @since 1.0
+         * @param : aQualityLevel -- rendering quality
+         * @return
+         */
+        IMPORT_C void                       SetRenderQuality( TRenderingQuality aQualityLevel, TInt aEngine = NULL );
+
+        /**
+         * Retrieve the reference to the svg document object.
+         *
+         * @since 1.0
+         * @param none
+         * @return current document that was Loaded or Prepare/UseDom.
+         */
+
+         //DEPRECATED API...
+        IMPORT_C CSvgDocumentImpl*          SvgDocument();
+
+        /**
+         * Set the minimum delay between each frame, in milliseconds.
+         * Frames per Second = 1000 / aFrameDelay
+         *
+         * The default/minimum value is 67 milliseconds (15 fps).
+         *
+         * @since 1.0
+         * @param : aFrameDelay -- animation frame duration.
+         * @return none
+         */
+        IMPORT_C void                       SetAnimFrameDuration( TUint aAFDur, TInt aEngine = NULL );
+
+        /**
+         * Request for updating the off-screen image buffer with the
+         * svg content.
+         *
+         * @since 1.0
+         * @param aIsMainThread -- indicate whether this redraw request
+         * is called in the main thread (executed immediately).
+         * Otherwise, this request is to be executed asynchronously.
+         * 'Main thread' used here means the thread which instantiated
+         * this CSvgEngineInterfaceImpl object.
+         * @return none
+         */
+        IMPORT_C void                       Redraw( TBool aIsMainThread = ETrue, TInt aEngine = NULL );
+
+        /**
+         * Switch the debugging mode on/off.
+         *
+         * @since 1.0
+         * @param none
+         * @return none
+         */
+        IMPORT_C void                       SwitchDebugInfo( TInt aEngine = NULL );
+
+        /**
+         * This is the integer version of ContentDimensions.
+         * 1) Return the size of the <svg> width/height if given in non-percentage.
+         *
+         * 2) If <svg> width/height are given as percentages:
+         *    A) If viewbox attribute is specified, return the viewbox width/height times the <svg> width/height percentages.
+         *    B) Else return the content bounding-box size times times the <svg> width/height percentages.
+         *
+         * @since 1.0
+         * @param none
+         * @return TSize
+         */
+        IMPORT_C TSize                      ContentDimensions( TInt aEngine = NULL );
+
+        /**
+         * This is the floating-point version of ContentDimensions.
+         * 1) Return the size of the <svg> width/height if given in non-percentage.
+         *
+         * 2) If <svg> width/height are given as percentages:
+         *    A) If viewbox attribute is specified, return the viewbox width/height times the <svg> width/height percentages.
+         *    B) Else return the content bounding-box size times times the <svg> width/height percentages.
+         *
+         * @since 1.0
+         * @param none
+         * @return
+         */
+        IMPORT_C void                       ContentDimensions( TReal32& aWidth, TReal32& aHeight, TInt aEngine = NULL ) __SOFTFP;
+
+        /**
+         * Retrieve the content size in user-coordinates if specified as
+         * percentage.
+         *
+         * @since 3.1
+         * @param none
+         * @return TSize
+         */
+        IMPORT_C TSize                      ContentDimensionsInPercentage( TInt aEngine = NULL );
+
+
+        /**
+         * Set focus coordinates to the next focusable object.
+         *
+         * @since 1.0
+         * @param none
+         * @return rectangle area having the focus on an object.
+         */
+        IMPORT_C TRect FocusNext();
+
+        /**
+         * Set focus coordinates to the previous focusable object.
+         *
+         * @since 1.0
+         * @param none
+         * @return rectangle area having the focus on the previous object.
+         */
+        IMPORT_C TRect FocusPrevious();
+
+        /**
+         * Activate currently focussed object.
+         *
+         * @since 1.0
+         * @param none
+         * @return none
+         */
+        IMPORT_C void ActivateObjectInFocus();
+
+        /**
+         * Get the current animation frame time, in milliseconds.
+         *
+         * @since 1.0
+         * @param none
+         * @return current frame time.
+         */
+        IMPORT_C TInt32 MediaTime( TInt aEngine = NULL );
+
+        /**
+         * Set the current animation frame time, in millseconds.
+         *
+         * @since 1.0
+         * @param aTime -- time to forward/rewind to.
+         * @return none
+         */
+        IMPORT_C void SetMediaTime( TInt32 aTime, TInt aEngine = NULL );
+        /**
+         * Returns the Size of Viewport
+         *
+         * @since 1.0
+         * @param none
+         * @return viewport size
+         */
+        IMPORT_C TSize Size( TInt aEngine = NULL );
+
+         /**
+         * Returns the Position of Viewport
+         *
+         * @since 1.0
+         * @param none
+         * @return
+         */
+        IMPORT_C TPoint Position( TInt aEngine = NULL ) ;
+
+        /**
+         * Reset the focus list
+         * This happens in the event of new additions to EventReceiver list and/or
+         * sorting of this list
+         *
+         * @since 1.0
+         * @param aIndex - index of object to reset focus.
+         * @return
+         */
+        void ResetFocusIndex(TInt32 aIndex);
+
+        /**
+         * Generate mask bitmap from the current frame
+         *
+         * @since 1.0
+         * @param aMask - bitmap to hold masking info.
+         * @return none
+         */
+        IMPORT_C void GenerateMask( CFbsBitmap* aMask, TInt aEngine = NULL );
+
+        /**
+         * Set the color for clearing background.
+         *
+         * @since 1.0
+         * @param aRGBA8888Color - 32-bit color value
+         * @return none
+         */
+        IMPORT_C void SetBackgroundColor( TUint32 aRGBA8888Color, CSvgEngineImpl* aEngine = NULL );
+
+        /**
+         * Returns SVG Engine State
+         *
+         * @since 1.0
+         * @param none
+         * @return 0 == SVG Running and 1 == SVG Paused
+         */
+
+        IMPORT_C TInt CurrentState( TInt aEngine = NULL );
+
+        /**
+         * Returns SVG Engine Pan Position
+         *
+         * @since 1.0
+         * @param
+         * @return TPoint
+         */
+        IMPORT_C TPoint PanPosition( TInt aEngine = NULL );
+
+        /**
+         * This method is a special case Constructor method used for polymorphic
+         * DLL loading, which enforces this method to be public.
+         *
+         * @since 1.0
+         * @return
+         */
+        IMPORT_C           CSvgEngineInterfaceImpl();
+
+        /**
+         * Replay the Current Animation.
+         *
+         * @since 1.0
+         * @param :
+         * @return : MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* Replay( TInt aEngine = NULL );
+
+         /**Added for DOM Caching API changes*/
+
+        /**
+         * Parses and Prepares DOM for given SVG or SVGB file.
+         * Provides a Handle to the created DOM.  A prepared DOM may be
+         * delete with DeleteDom or when the engine is deleted.
+         *
+         * @param aFileName: the name of the file  to be parsed
+         * @param aHandle:  Handle to the created DOM.
+         * @return: MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* PrepareDom(const TDesC& aFileName, TInt& aHandle, TInt aEngine = NULL);
+
+        /**
+         * Parses and Prepares DOM for both svg and svg binary data.
+         * Provides a Handle to the created DOM.  A prepared DOM may be
+         * delete with DeleteDom or when the engine is deleted.
+         *
+         * @param aByteData: Svg/SvgBinary data.
+         * @param aHandle:  Handle to the created DOM.
+         * @return: MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* PrepareDom(const TDesC8& aByteData, TInt& aHandle, TInt aEngine = NULL);
+
+        /**
+         * Parses and Prepares DOM for given SVG or SVGB file.
+         * Provides a Handle to the created DOM.  A prepared DOM may be
+         * delete with DeleteDom or when the engine is deleted.
+         *
+         * @param : aFileHandle -- File handle
+         * @param : aHandle -- Handle to a DOM.
+         * @return: MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* PrepareDom( RFile& aFileHandle, TInt& aHandle, TInt aEngine = NULL );
+         
+        /**
+         * Defines view box for SVG content associated with
+         * handle if not set.
+         */
+
+
+         IMPORT_C void ChooseViewBoxIfNotSet(TInt aDomHandle);
+        /**
+         * Renders the DOM tree associated with the Handle (UseDom).
+         *
+         * @param : aHandle -- Handle to a DOM.
+         * @param : aBitmap -- Bitmap to draw DOM content.
+         *@param : aMaskBuffer - Buffer for mask (alpha values) of framebuffer result (optional).
+         * @return: MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* RenderDom(TInt aHandle, CFbsBitmap* aBitmap, CFbsBitmap* aMaskBuffer = NULL);
+
+        /**
+         * Deletes the DOM tree associated with the Handle.
+         *
+         * @param : aHandle -- Handle to a DOM.
+         * @return: MSvgError* Error object specifying  the error occured during operation
+         */
+         IMPORT_C MSvgError* DeleteDom( TInt aHandle );
+
+        /**
+         * Enable/Disable DRM.
+         *
+         * @param : aEnable -- Flag to enable/distable DRM.
+         * @return: none
+         */
+         IMPORT_C void SetDRMMode(TBool aEnable, TInt aEngine = NULL);
+
+        /**
+         * initialization of the engine according to a particular cached DOM tree.
+         *
+         *
+         *@param  : aHandle -- Handle to DOM Tree.
+         *@param : aRenderBuffer - Buffer for drawing the DOM Tree.
+         *@param : aMaskBuffer - Buffer for mask (alpha values) of framebuffer result (optional).
+         *@param : aEngine - SvgEngine handle to manager DOM (optional).
+         *@return MSvgError* Error object specifying the error occured.
+         */
+         IMPORT_C MSvgError* UseDom(TInt aHandle, CFbsBitmap* aRenderBuffer, CFbsBitmap* aMaskBuffer = NULL, TInt aEngine = NULL);
+
+         IMPORT_C MSvgError* UseDom(TInt aHandle,CFbsBitmap* aRenderBuffer, CFbsBitmap* aMaskBuffer,TSize aRenderBufferSize,TDisplayMode aRenderDisplayMode,TDisplayMode aMaskDisplayMode,TInt aEngine = NULL);   
+        /**
+         * Set the SVG dimensions to the root buffer size.
+         *
+         *@param aWidth - width to set root size.
+         *@param aHeight - height to set root size.
+         *@return  none
+         */
+          IMPORT_C void SetSvgDimensionToFrameBuffer(TUint aWidth, TUint aHeight, TInt aEngine = NULL);
+
+        /**
+         * Return the scaled bounding box for the whole svg document.
+         *
+         *@param none
+         *@return the scaled bounding box info.
+         */
+          IMPORT_C TRect GetSvgBoundingBox( TInt aEngine = NULL );
+
+        /**
+         * Check for interactive/non-interactive content.
+         *
+         *@param aDocument - Document Pointer
+         *@return wether document has interactive elements.
+         */
+         IMPORT_C TBool IsContentInteractive( CSvgDocumentImpl* aDocument, TInt aEngine = NULL );
+
+        /**
+         * Update the path information with the given element
+         *
+         *@param   hPath - path handle
+         *@param   hElement - element handle
+         *@return  none
+         */
+         IMPORT_C void UpdatePath(TInt hPath, CSvgElementImpl* hElement);
+
+        /**
+         * Returns the size (number of external elements) in the given document
+         *
+         *@param   aDocument - Document Pointer
+         *@return  number of external elements
+         */
+         IMPORT_C TInt GetExternalListSize(CSvgDocumentImpl* aDocument);
+
+        /**
+         * Given an index number and a document handle returns an external resource uri associated
+         * with an element
+         *@param   aDocument - Document Pointer index - index in external list
+         *@return  URI
+         */
+         IMPORT_C void GetExternalListItemL(
+										CSvgDocumentImpl* aDocument, TInt aIndex, TPtrC16& aUri);
+
+        /**
+         * Given a document handle and a url this call attaches
+         * the given data (ldata) to every element that references that url
+         *
+         *@param   aDocument - Document Pointer
+         *@param   lUrl- uri string that is an external resource to be retrieved
+         *@param   ldata - byte array containing the data that that external resource recieved
+         *@return  none
+         *         NULL if image-decoding is not initiated.
+         */
+         IMPORT_C CSvgElementImpl* AddExternalData( CSvgDocumentImpl* aDocument,
+                                                    const TDesC& aUri,
+                                                    const TDesC8& aData,
+                                                    TBool aMakeCopy = EFalse,
+                                                    TInt aSize = 0,
+                                                    TInt aEngine = NULL );
+
+         /**
+         * Create an instance of a CSvgEngineImpl.
+         *
+         *@param  : None
+         *@return Pointer to CSvgEngineImpl object if creation is succesful, otherwise
+         *        the function leaves.
+         */
+         IMPORT_C CSvgEngineImpl* SvgEngineNewL();
+
+        /**
+         * Intialize the given SVG Engine.
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@return None
+         */
+         IMPORT_C void StartEngine( CSvgEngineImpl* aEngine );
+         IMPORT_C void RenderFrame( CSvgEngineImpl* aEngine, TUint aCurrentTime );
+
+         IMPORT_C void ViewportInit( CSvgDocumentImpl* aDocumentHandle );
+
+        /**
+         * Set the GDI context for the given SVG Engine.
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@param  : aFrameBuffer -- Bitmap to become gdi context.
+         *@return None
+         */
+         IMPORT_C void SetGdiContextL( CSvgEngineImpl* aEngine, CFbsBitmap* aFrameBuffer );
+
+         /**
+         * Associate the given document with the given engine.
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@param  : aDocument -- SVG Document
+         *@return None
+         */
+         IMPORT_C void SetDocument( CSvgEngineImpl* aEngine, CSvgDocumentImpl* aDocument );
+         void SvgElementAssignDocument( CSvgElementImpl* aElement, CSvgDocumentImpl* aDoc );
+
+         /**
+         * Create an empty instance of a SVG document.
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@param  : aDocument -- SVG Document
+         *@return Svg Document if successful, otherwise the function leaves.
+         */
+         IMPORT_C CSvgDocumentImpl* SvgDocumentNewL();
+
+         /**
+         * Fill a SVG document by parsing the given byte array.
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@param  : aDocument -- SVG Document
+         *@return None if successful, otherwise the function leaves.
+         */
+         IMPORT_C void FillDocumentL( CSvgDocumentImpl* aDocument, const TDesC16& aByteData );
+
+         /**
+         * Destroy the given SVG document
+         *
+         *@param  : aDocument -- SVG document.
+         *@return None .
+         */
+         IMPORT_C void DestroyDocument( CSvgDocumentImpl* aDocument );
+
+         /**
+         * Destroy the given SVG engine
+         *
+         *@param  : aEngine -- SVG Engine.
+         *@return None .
+         */
+         IMPORT_C void DestroyEngine( CSvgEngineImpl* aEngine );
+
+         /**
+         * Return the root element of the given document.
+         *
+         *@param  : aDocument -- SVG document.
+         *@return root element .
+         */
+         IMPORT_C CXmlElementImpl* GetRootElement( CSvgDocumentImpl* aDocument );
+
+         /**
+         * Set a default SvgSvg root element of the given document.
+         *
+         *@param  : aDocument -- SVG document.
+         *@return void.
+         */
+         IMPORT_C void InitRootElement( CSvgDocumentImpl* aDocument );
+
+         /**
+         * Return the root element of the given document.
+         *
+         *@param  : aDocument -- SVG document.
+         *@param  : aId -- id string to search for element.
+         *@return element with given id .
+         */
+         IMPORT_C CXmlElementImpl* GetElementById( CSvgDocumentImpl* aDocument, const TDesC& aId );
+
+         /**
+         * Return the number of ids in a given document
+         *
+         *@param  : aDocument -- SVG document.
+         *@return number of ids found.
+         */
+         IMPORT_C TInt GetNumberOfIds( CSvgDocumentImpl* aDocument );
+
+         /**
+         * Return the id at from the document at index
+         *
+         *@param  : aDocument -- SVG document.
+         *@param  : index -- which id to return
+         *@param  : myId -- id string to return by reference.
+         *@return none
+         */
+         IMPORT_C TDesC* GetId( CSvgDocumentImpl* aDocument, TInt index );
+
+         /**
+         * Return parent element of the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@return element with given child.
+         */
+         IMPORT_C CXmlElementImpl* GetParentElement( CXmlElementImpl* aElement );
+
+         /**
+         * Set parent element for the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@param  : aParentElement -- SVG parent element.
+         *@return void
+         */
+         IMPORT_C void SetParentElement( CXmlElementImpl* aElement, CXmlElementImpl* aParentElement );
+
+		 /**
+         * Set the first child for the given element.
+         *
+         *@param  : aFirstChildElement -- SVG element.
+         *@param  : aParentElement -- SVG parent element.
+         *@return void
+         */
+         IMPORT_C void SetFirstChildElement( CXmlElementImpl* aFirstChildElement, CXmlElementImpl* aParentElement );
+
+
+         /**
+         * Create an element of the given type.
+         *
+         *@param  : aDocument -- SVG element document.
+         *@param  : aElementType -- SVG element type.
+         *@return element.
+         */
+         IMPORT_C CXmlElementImpl* CreateElementL( CSvgDocumentImpl* aDocument, TInt aElementType );
+
+         /**
+         * Create an element of the given type.
+         *
+         *@param  : aDocument -- SVG element document.
+         *@param  : aElementType -- SVG element type.
+         *@return element.
+         */
+         IMPORT_C void DestroyElement( CXmlElementImpl* aElement );
+
+         /**
+         * Append the given child element to the given parent element.
+         *
+         *@param  : aParentElement -- SVG parent element.
+         *@param  : aChildElement -- SVG child element.
+         *@return None.
+         */
+         IMPORT_C void AppendChild( CXmlElementImpl* aParentElement, CXmlElementImpl* aChildElement, TBool aIsJSR226Element = EFalse);
+
+         /**
+         * Remove the given child element from the given parent element.
+         *
+         *@param  : aParentElement -- SVG parent element.
+         *@param  : aChildElement -- SVG child element.
+         *@return None.
+         */
+         IMPORT_C void RemoveChild( CXmlElementImpl* aParentElement, CXmlElementImpl* aChildElement);
+
+         /**
+         * Get the first child element in the given parent.
+         *
+         *@param  : aParentElement -- SVG parent element.
+         *@return The first child element.
+         */
+         IMPORT_C CXmlElementImpl* GetFirstChild( CXmlElementImpl* aParentElement );
+
+         /**
+         * Get the next sibling element of the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@return The next sibling element.
+         */
+         IMPORT_C CXmlElementImpl* GetNextSibling( CXmlElementImpl* aElement );
+
+         /**
+         * Set the next sibling element for the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@param  : aSibling -- SVG sibling element.
+         *@return None
+         */
+         IMPORT_C void SetNextSibling( CXmlElementImpl* aElement, CXmlElementImpl* aSibling );
+
+         /**
+         * Get the document that is associated with the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@return svg document.
+         */
+         IMPORT_C CSvgDocumentImpl* GetOwnerDocument( CXmlElementImpl* aElement );
+
+         /**
+         * Get the element type, such as rect, circle, etc. for the given element.
+         *
+         *@param  : aElement -- SVG element.
+         *@return element type
+         */
+         IMPORT_C TInt GetElementType( CXmlElementImpl* aElement );
+
+         /**
+         * Set the given request-observer for the given svg engine.
+         *
+         *@param  : aElement -- SVG element.
+         *@return element type
+         */
+         IMPORT_C void SetRequestObserver( CSvgEngineImpl* aEngine, MSvgRequestObserver* aObserver );
+
+         /**
+         * Get the Bounding Box for an element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aX -- X coordinate for the top left.
+         *@param  : aY -- Y coordinate for the top left.
+         *@param  : aWidth -- Width of the bounding rectangle.
+         *@param  : aHeight -- Height for the bounding rectangle.
+         *@return None.
+         */
+         IMPORT_C void GetElementBoundingbox(CSvgElementImpl* aElementHandle,TReal32& aX ,TReal32& aY,TReal32& aWidth,TReal32& aHeight) __SOFTFP;
+
+				/**
+         * Get the unscaled Bounding Box for an element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aX -- X coordinate for the top left.
+         *@param  : aY -- Y coordinate for the top left.
+         *@param  : aWidth -- Width of the bounding rectangle.
+         *@param  : aHeight -- Height for the bounding rectangle.
+         *@return None.
+         */
+
+				IMPORT_C void GetElementUnScaledBoundingBox( CSvgElementImpl* aElementHandle,TReal32& aX ,TReal32& aY,TReal32& aWidth,TReal32& aHeight) __SOFTFP;
+
+        /**
+         * Get the Bounding Box for an element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aPoint1 --  coordinate for the top left.
+         *@param  : aPoint2 --  coordinate for the top right.
+         *@param  : aPoint3 --  coordinate for the bottom left.
+         *@param  : aPoint4 --  coordinate for the bottom right.
+         *@return None.
+         */
+         IMPORT_C void GetFourPointElementBoundingBox(CSvgTextElementImpl* aElementHandle,TPoint& aPoint1 ,TPoint& aPoint2,TPoint& aPoint3,TPoint& aPoint4);
+
+         /**
+         * Get the Float attribute for the element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@return  The float attribute value.
+         */
+         IMPORT_C TReal32 GetElementFloatAttribute( CSvgElementImpl* aElementHandle, const TInt aAttributeId) __SOFTFP;
+
+         /**
+         * Set the Float attribute for the element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@param  : aValue  the value to for the float attribute to be set.
+         *@return  None.
+         */
+         IMPORT_C void SetElementFloatAttribute( CSvgElementImpl* aElementHandle, const TInt aAttributeId, TReal32 aValue) __SOFTFP;
+
+         /**
+         * Set the Descriptor attribute for the element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@param  : aAttributeValue  the value to for the Desc attribute to be set.
+         *@return  None.
+         */
+         IMPORT_C void SetElementDesAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId, const TDesC& aAttributeValue);
+
+         /**
+         * Get the Desc attribute for the element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@param  : aValue . reference to the attribute value.
+         *@return : None.
+         */
+         IMPORT_C TInt GetElementDesAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId,TPtrC16& aValue);
+
+         /**
+         * Set the Color attribute for the element.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@param  : aColorValue  The Integer value corresponding to the color.
+         *@return  None.
+         */
+         IMPORT_C void SetElementColorAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId,TInt32 aColorValue);
+
+         /**
+         * Get the CoLor attribute for the element. // this basically means the fill and stroke.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@return : Integer containing the RGB value for the color.
+         */
+         IMPORT_C TInt32 GetElementColorAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId);
+
+         /**
+         * Get the Enum attribute for the element. // this basically means the fill and stroke.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@param : Integer containing the enum value for the attribute.
+         */
+         IMPORT_C void SetEnumAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId,TInt32 lValue);
+
+	     /**
+         * Set the preserve aspect ratio setting for the current document
+         *
+         *@param  : aDocumentHandle
+         *@param  : TPreserveAspectRatio a preserve aspect ratio setting
+         */
+		 IMPORT_C void SetPreserveAspectRatio( CSvgDocumentImpl* aDocument, TSvgPreserveAspectAlignType aPreserveAspectSetting, TSvgMeetOrSliceType aSmilFitSetting, TBool aFrameBufferOverridesViewport = EFalse );
+		
+         /**
+         * Set the Enum attribute for the element. // this basically means the fill and stroke.
+         *
+         *@param  : aElementHandle -- SVG element.
+         *@param  : aAttribute Id the attribute Id corresponding to the attribute.
+         *@return : Integer containing the enum value for the attribute.
+         */
+         IMPORT_C  TInt GetEnumAttribute(CSvgElementImpl* aElementHandle,const TInt aAttributeId,TInt32& lValue);
+         /**
+         * Get the rect values.
+         *
+         *@param  : aElementHandle, aX, aY, aWidth, aHeight
+         *@return  TBool a viewbox existed
+         */
+          IMPORT_C TBool GetRectAttribute( CXmlElementImpl* aElementHandle,
+                                          float* aX, float* aY, float* aWidth, float* aHeight );
+
+        /**
+         * Set the rect values.
+         *
+         *@param  : aElementHandle, aX, aY, aWidth, aHeight
+         *@return  none
+         */
+          IMPORT_C void SetRectAttribute( CXmlElementImpl* aElementHandle,
+                                          float aX, float aY, float aWidth, float aHeight );
+
+        /**
+         * Get the matrix values.
+         *
+         *@param  : aElementHandle, aAVal, aBVal, aCVal, aDVal, aEVal, aFVal
+         *@return  none
+         */
+          IMPORT_C void GetMatrixAttribute( CXmlElementImpl* aElementHandle, float* aAVal,
+                                                           float* aBVal, float* aCVal, float* aDVal,
+                                                           float* aEVal, float* aFVal );
+                                                           
+                                                           /**
+         * Get the matrix values for a given matrix type.
+         *
+         *@param  : aElementHandle, aAVal, aBVal, aCVal, aDVal, aEVal, aFVal
+         *@return  none
+         */
+          IMPORT_C void GetMatrixAttribute( CXmlElementImpl* aElementHandle, TInt aAttributeType,
+          												   float* aAVal, float* aBVal, 
+          												   float* aCVal, float* aDVal,
+                                                           float* aEVal, float* aFVal );
+
+        /**
+         * Set the matrix values.
+         *
+         *@param  : aElementHandle, aAVal, aBVal, aCVal, aDVal, aEVal, aFVal
+         *@return  none
+         */
+          IMPORT_C void SetMatrixAttribute( CXmlElementImpl* aElementHandle, float aAVal,
+                                                           float aBVal, float aCVal, float aDVal,
+                                                           float aEVal, float aFVal );
+
+        /**
+         * Get the Viewport Width .
+         *
+         *@param  : aDocumentHandle
+         *@return  TInt  integer containing the width of the viewport. viewport means
+         * svg element.
+         */
+        IMPORT_C TInt GetViewportWidth( CSvgDocumentImpl* aDocumentHandle );
+
+        /**
+         * Get the Viewport Height.
+         *
+         *@param  : aDocumentHandle
+         *@return  TInt  integer containing the Height of the viewport. Viewport means
+         * svg Element.
+         */
+        IMPORT_C TInt GetViewportHeight( CSvgDocumentImpl* aDocumentHandle );
+
+        /**
+         * Set the Viewport Width.
+         *
+         *@param  : aDocumentHandle
+         *@param  TInt  integer containing the Width of the viewport. Viewport means
+         * svg Element.
+         *@return  none
+         */
+        IMPORT_C void SetViewportWidth( CSvgDocumentImpl* aDocumentHandle, TInt aWidth );
+
+        /**
+         * Set the Viewport Height.
+         *
+         *@param  : aDocumentHandle
+         *@param  TInt  integer containing the Height of the viewport. Viewport means
+         * svg Element.
+         *@return  none
+         */
+        IMPORT_C void SetViewportHeight( CSvgDocumentImpl* aDocumentHandle, TInt aHeight );
+
+        /**
+         * Get the Viewport Units. This means the units in which the width and height of
+         * <svg> element are specified.
+         *
+         *@param  : aDocumentHandle
+         *@return  TInt  integer containing the units.
+         */
+        IMPORT_C TInt GetViewportUnits( CSvgDocumentImpl* aDocumentHandle );
+
+        /**
+         * Set the end time for an animation element.
+         *
+         *@param  : aElementHandle
+         *@param  : aOffsetTime
+         *@return  none.
+         */
+        IMPORT_C void SvgEndElementAt(CXmlElementImpl* aElementHandle , TUint32 aOffsetTime, CSvgDocumentImpl* aDocumentHandle = NULL);
+
+        /**
+         * Set the Begin time for an animation element.
+         *
+         *@param  : aElementHandle
+         *@param  : aOffsetTime
+         *@return  none.
+         */
+        IMPORT_C void SvgBeginElementAt(CXmlElementImpl* aElementHandle , TUint32 aOffsetTime, CSvgDocumentImpl* aDocumentHandle = NULL);
+        /**
+         * Sets the Media time for a Document.
+         *
+         *@param  : aDocumentHandle
+         *@param  : aTimeInMilliSeconds. This represents the time in milliseconds.
+         *@return  none.
+         */
+        IMPORT_C void SvgSetMediaTime(CSvgDocumentImpl* aDocumentHandle ,TUint32 aTimeInMilliSeconds);
+
+        /**
+         * Gets the Media time for a Document.
+         *
+         *@param  : aDocumentHandle
+         *@return  TReal32 . Media time in seconds.
+         */
+        IMPORT_C TReal32 SvgGetMediaTime(CSvgDocumentImpl* aDocumentHandle ) __SOFTFP;
+
+        /**
+         * checks whether the document has any animation elements present.
+         *
+         *@param  : aDocumentHandle
+         *@return  TBool . ETrue if animation present otherwise EFalse.
+         */
+        IMPORT_C TBool SvgHasAnimation(CSvgDocumentImpl* aDocumentHandle );
+
+
+         /**
+         * Return true if element is removeable (no id or children with ids)
+         *
+         *@param  : aElement -- SVG element.
+         *@return true if removeable false if not removeable
+         */
+         IMPORT_C TBool IsRemoveable( CSvgElementImpl* hElement, TBool aCheckSibling = EFalse );
+
+         /**
+         * Return true if element is removeable (no id or children with ids)
+         *
+         *@param  : aElement -- SVG element.
+         *@return true if removeable false if not removeable
+         */
+         IMPORT_C TBool IsElementActive( CSvgElementImpl* hElement );
+
+        /**
+         * returns the pointer to the focussed element.
+         *
+         *@param  : None.
+         *@return : CXmlElementImpl* pointer to the focussed element at present.
+         */
+        IMPORT_C CXmlElementImpl* GetFocusedElement(CSvgDocumentImpl* aDocument);
+
+        /**
+         * Sets the focus on a specific element.
+         *
+         *@param  : aElement.
+         *@return : None.
+         */
+        IMPORT_C  void SetFocusElement(CXmlElementImpl* aElement, CSvgDocumentImpl* aDocument);
+
+        /**
+         * checks whether a given element is present in DOM.
+         *
+         *@param  : aDocument. this is pointer to the document which is to be searched for the presence
+         * of the element.
+         *@param  : aElement. This represents the pointer to the element.
+         *@return : TBool. True if element is present otherwise false.
+         */
+        IMPORT_C    TBool SVGElementInDom(CSvgDocumentImpl* aDocument,  CXmlElementImpl* aElement);
+
+        /**
+         * This API will start the animation if the focussed object is an animation element.
+         *
+         *@param  : aDocument. This is a pointer to the document. ?? this may not be needed.
+         *@return : None.
+         */
+        IMPORT_C    void SvgActivateAnimation(CSvgDocumentImpl* aDocument);
+
+       /**
+        * SVGElement_GetUsedElement :- This API will return a pointer to the original
+        * element which was cloned to use it. i.e.the cloned element is made a chld of the <use>
+        * element.
+        * @param : aElement :- this is handle to the cloned element. this is child of the
+        *        : <use> element.
+        * @return : CXmlElementImpl* this is the pointer to the actual element, which is
+        *           cloned.
+        */
+        IMPORT_C    CXmlElementImpl* SVGElementGetUsedElement(CXmlElementImpl* aElement);
+
+        /**
+         * This API will add the given element to the event receiver list.
+         *
+         *@param  : aElement. This is pointer to the element which is to be added.
+         *@param  : aEventMask. This is the event mask.
+         *@return : None.
+         */
+        IMPORT_C    void AddToEventReceiverList(CXmlElementImpl* aElement, const TUint8 aEventMask);
+
+        /**
+         * This API will remove the given element to the event receiver list.
+         *
+         *@param  : aElement. This is pointer to the element which is to be removed.
+         *@param  : aEventMask. This is the event mask.
+         *@return : None.
+         */
+        IMPORT_C    void RemoveFromEventReceiverList(CXmlElementImpl* aElement);
+
+        /**
+         * DispatchMouseEventsAt This will send mouse events to the Engine at this points.
+         *
+         *@param  : aDocumentHandle. which document should get the engine.
+         *@param  : aMouseX. X coordinate for the mouseEvents
+         *@param  : aMouseY. Y coordinate for the mouseEvents
+         *@return : int.
+         */
+        IMPORT_C    TInt DispatchMouseEventsAt(CSvgDocumentImpl* aDocumentHandle, TInt aMouseX, TInt aMouseY, MSvgMouseListener* aListener);
+
+        /**
+         * SvgCreatePath his will create a new empty path.
+         *
+         *@param  : None.
+         *@return : None.
+         */
+        IMPORT_C    CGfxGeneralPath* SvgCreatePath();
+
+        /**
+         * SvgDestroyPath this will delete a path given a pointer to it.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@return : None.
+         */
+        IMPORT_C    void SvgDestroyPath(CGfxGeneralPath* aPathHandle);
+
+        /**
+         * GetSegmentCount Returns the number of segments in a PATH.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@return : integer representing the number of segments.
+         */
+        IMPORT_C    TInt GetSegmentCount(CGfxGeneralPath* aPathHandle);
+
+        /**
+         * GetSegmentType Returns the segment type for a specific segment in a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aSegmentIndex , Segment index for the specific segments.
+         *@return : integer representing the type of segments.
+         */
+        IMPORT_C    TInt GetSegmentType(CGfxGeneralPath* aPathHandle, TInt aSegmentIndex);
+
+        /**
+         * GetSegmentParameter Returns the segment parameter  for a specific segment in a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aSegmentIndex , Segment index for the specific segments.
+         *@param  : aSegmentParameterIndex. This gives the segment parameter index.
+         *@return : TReal32 representing the  segment parameter.
+         */
+        IMPORT_C    TReal32 GetSegmentParameter(CGfxGeneralPath* aPathHandle,TInt aSegmentIndex,TInt aSegmentParameterIndex) __SOFTFP;
+
+        /**
+         * ADDMoveTo Adds a moveTo segment to a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aX , x coordinate for the MoveTo command.
+         *@param  : aY. Y coordinate for the MoveTo command.
+         *@return : None.
+         */
+        IMPORT_C    void ADDMoveTo(CGfxGeneralPath* aPathHandle, TReal32 aX,TReal32 aY) __SOFTFP;
+
+        /**
+         * ADDLineTo Adds a LineTo segment to a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aX , x coordinate for the LineTo command.
+         *@param  : aY. Y coordinate for the LineTo command.
+         *@return : None.
+         */
+        IMPORT_C    void ADDLineTo(CGfxGeneralPath* aPathHandle,TReal32 aX,TReal32 aY) __SOFTFP;
+
+        /**
+         * ADDQuadTo Adds a QuadTo segment to a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aX1 , X coordinate for the first control point.
+         *@param  : aY1 , Y coordinate for the first control point.
+         *@param  : aX2 , X coordinate for the end point.
+         *@param  : aY2 , Y coordinate for the end point.
+         *@return : None.
+         */
+        IMPORT_C    void ADDQuadTo(CGfxGeneralPath* aPathHandle,TReal32 aX1,TReal32 aY1,TReal32 aX2,TReal32 aY2) __SOFTFP;
+
+        /**
+         * ADDCurveTo Adds a curveTo segment to a path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@param  : aX1 , X coordinate for the first  control point.
+         *@param  : aY1 , Y coordinate for the first  control point.
+         *@param  : aX2 , X coordinate for the second control point.
+         *@param  : aY2 , Y coordinate for the second control point.
+         *@param  : aX3 , X coordinate for the end            point.
+         *@param  : aY3 , Y coordinate for the end            point.
+         *@return : None.
+         */
+        IMPORT_C    void ADDCurveTo(CGfxGeneralPath* aPathHandle,TReal32 aX1,TReal32 aY1,TReal32 aX2,TReal32 aY2, TReal32 aX3, TReal32 aY3) __SOFTFP;
+
+        /**
+         * ADDCloseTo Closes a given path element.
+         *
+         *@param  : aPathHandle. Path element pointer.
+         *@return : None.
+         */
+
+        IMPORT_C    void ADDCloseTo(CGfxGeneralPath* aPathHandle);
+
+        /**
+         * GetPathAttribute gets a pointer to the path attribuite for a given element.
+         *
+         *@param  : aElementHandle. Svg element pointer.
+         *@param  : aAttributeId. This gives you the attributeId for the element to get.
+         *@return : CGfxGeneralPath* this gives you the path attribute pointer fetched.
+         */
+        IMPORT_C    CGfxGeneralPath* GetPathAttribute(CXmlElementImpl* aElementHandle, TInt aAttributeId);
+
+        /**
+         * SetPathAttribute sets the path attribute for a given element.
+         *
+         *@param  : aElementHandle. Svg element pointer.
+         *@param  : aAttributeId. This gives you the attributeId for the element to get.
+         *@param  : PathHandle this gives you the path attribute pointer fetched.
+         *@return : NONE.
+         */
+        IMPORT_C    void SetPathAttribute(CSvgElementImpl* aElementHandle, TInt lSvgAttrId, CGfxGeneralPath* aPathHandle);
+
+        /**
+         * Change the frame Buffer dynamically
+         *
+         *
+         *
+         *@aRenderBuffer :- Buffer for drawing the DOM Tree.
+         */
+         IMPORT_C void SetFrameBuffer(CFbsBitmap* aRenderBuffer, TInt aEngine = NULL);
+
+         IMPORT_C void ClearFrameBuffer(CFbsBitmap* aFrameBuffer, TUint32 aClearingColor, TInt aEngine = NULL);
+
+        /**
+         * Search for all occurrences of a string in the current svg document,
+         * in the cdata of the <text> elements.  The bounding-boxes are transformed,
+         * accounted for zooming/panning.
+         *
+         *
+         *@param  : aSearchString -- String to search
+         *@param  : aBoundingBoxes -- Array to contain the bounding boxes of texts found.
+         *          The bounding boxes are already transformed so that they're related
+         *          to the frame buffer origin.
+         *@param  : aTexts -- Array to contain cdata of the <text> elements containing
+         *                    the search-string.
+         *@param  : aCaseSensitive -- Flag to indicate whether to search with case-sensitivity
+         *                            or not, defaults to ETrue.
+         *@return ETrue if at least one occurrence is found, EFalse otherwise.
+         */
+         IMPORT_C TBool SearchForText( const TDesC& aSearchString,
+                                       RPointerArray<MRect>& aBoundingBoxes,
+                                       RArray<TPtrC>& aTexts,
+                                       RArray<TInt>& aElementIds,
+                                       TBool aCaseSensitive = ETrue,
+                                       TInt aEngine = NULL );
+
+        /**
+         * Add a HyperlinkListener to the SVG Engine..
+         *
+         *@param  : aListener -- HyperlinkListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C void AddHyperlinkListener( MSvgHyperlinkListener* aListener, TInt aEngine = NULL );
+
+        /**
+         * Add a TextAreaListener to the SVG Engine..
+         *
+         *@param  : aListener -- TextAreaListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C TBool AddTextAreaListener( MSvgTextAreaListener* aListener, TInt aEngine = NULL );
+
+        /**
+         * Remove a TextAreaListener from the SVG Engine..
+         *
+         *@param  : aListener -- TextAreaListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C TBool RemoveTextAreaListener( MSvgTextAreaListener* aListener, TInt aEngine = NULL );
+
+        /**
+         * Add a TextListener to the SVG Engine..
+         *
+         *@param  : aListener -- TextListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C TBool AddTextListener( MSvgTextListener* aListener, TInt aEngine = NULL );
+
+        /**
+         * Remove a TextListener from the SVG Engine..
+         *
+         *@param  : aListener -- TextListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C TBool RemoveTextListener( MSvgTextListener* aListener, TInt aEngine = NULL );
+
+
+        /**
+         * Add a text string to a text area
+         *
+         *@param  : aTextAreaElementId, aString
+         *@return ETrue EFalse
+         */
+        IMPORT_C TBool SetTextForTextAreaElement( TInt aTextAreaElementId, TDesC& aXmlString );
+
+        /**
+         * Get the entire text string from the specified text area
+         *
+         *@param  : aTextAreaElementId, is text area editable, aString
+         *@return is text area editable
+         */
+        IMPORT_C TBool GetTextForTextAreaElement( TInt aTextAreaElementId, TBool& editable, TDes& aXmlString );
+
+         /**
+         * Add a text string to a text element
+         *
+         *@param  : aTextElementId, aString
+         *@return ETrue EFalse
+         */
+        IMPORT_C TBool SetTextForTextElement( TInt aTextElementId, TDesC& aXmlString );
+
+        /**
+         * Get the entire text string from the specified text element
+         *
+         *@param  : aTextElementId, is text editable, aString
+         *@return is text editable
+         */
+        IMPORT_C TBool GetTextForTextElement( TInt aTextElementId, TBool& editable, TDes& aXmlString );
+
+         /**
+         * Remove a HyperlinkListener from the SVG Engine..
+         *
+         *@param  : aListener -- HyperlinkListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C void RemoveHyperlinkListener( MSvgHyperlinkListener* aListener, TInt aEngine = NULL );
+
+        /**
+         * Add a HyperlinkListener to the SVG Engine..
+         *
+         *@param  : aListener -- HyperlinkListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C void AddAnimationListener( MSvgAnimationListener* aListener, TInt aEngine = NULL );
+
+         /**
+         * Remove a HyperlinkListener from the SVG Engine..
+         *
+         *@param  : aListener -- HyperlinkListener to receive callbacks.
+         *@return None
+         */
+        IMPORT_C void RemoveAnimationListener( MSvgAnimationListener* aListener, TInt aEngine = NULL );
+
+         /**
+         * Return whether an element is visible on the frame buffer.
+         *
+         *@param  : aElementHandle -- an SVG element identifier.
+         *@return ETrue if element is visible, EFalse otherwise.
+         */
+        IMPORT_C TBool IsElementVisible( TInt aElementHandle, TInt aEngine = NULL );
+
+         /**
+         * Set the engine to load SVG contents as thumbnails:
+         *     a) Only DRM protected contents are affected by this API.
+         *     b) In thumbnail mode, DRM rights in not consumed.
+         *     c) In thumbnail mode, the svg contents are drawn only
+         *        to frame-buffers of 64x64 or smaller.
+         *
+         *@param  : aThumbNailMode -- Flag to turn on/off thumbnial mode.
+         *@return : none
+         */
+        IMPORT_C void SetThumbNailMode( TBool aThumbNailMode, TInt aEngine = NULL );
+        
+        /**
+        * Set the engine to enable/disable consuming DRM rights
+        * 
+        *@param : aEnable -- Flag to turn off/on consuming rights
+        *@return: none
+        */
+        IMPORT_C void SetDRMRights(TBool aEnable);
+
+        /**
+         * Adds a text element to display the frames per second if isShowOn = true
+         *
+         *@param  : isShowOn specified whether or not to display fps
+         *@return : frames per second in the engine
+         */
+        IMPORT_C TReal FramesPerSecond(TBool isShowOn = EFalse, TInt aEngine = NULL) __SOFTFP;
+
+        /**
+         * Used for testing purpose.
+         *
+         *@param  : aCustomOption specified whether or not to use OpenVG implementation
+         *@return : none
+         */
+        EXPORT_C void CustomOption(TBool aCustomOption = EFalse, TInt aEngine = NULL);
+
+        // return an array with all of the elements of a certain type
+        // passing in a -1 for element id will return all elements
+        IMPORT_C void FindAllElements( CSvgElementImpl* aStartElement, TInt aElementId,
+                              RPointerArray<CSvgElementImpl>& aList, TInt aEngine = NULL );
+
+
+        /**
+         * Create an svg element that can be added to the a document
+         * to draw the given rectangle.
+         *
+         *@param  : aRect - rectangle to request element.
+         *@return : element represent rectangle.
+         */
+        IMPORT_C CSvgElementImpl* DrawBox(TRect aRect, TInt aEngine = NULL);
+
+        /**
+         *  Return the default size of the given document handle, defined
+         *  by the union of the bounding boxes of the elements.  This function
+         *  is independent of frame-buffer or any other document.
+         *
+         * @since 1.0
+         * @param aDomHandle - Handle to svg document (thru PrepareDom)
+         * @return Size of svg content
+         */
+         IMPORT_C TSize GetUnscaledContentSize( TInt aDomHandle );
+
+        /**
+        * Generate frames, defined by the given
+        * duration, delay per seconds, etc.  The calling client will be
+        * responsible for managing the bitmaps created by this method that
+        * are appended to the given bitmap arrays.  The starting frame can
+        * be specified with the starting time parameter.
+        *
+        * Note: Embedded images/svg files will not be rendered, due
+        * to asynchronous image decoder.
+        *
+        * Redundant frames removal is implemented, defaulted to EFalse.
+        *
+        * aDomHandle             -- Handle to the svg dom.
+        * aDimensionOfBitmaps    -- Size of bitmaps to generate (same for mask)
+        * aStartTime             -- Start time of first frame (in milliseconds)
+        * aDuration              -- Total time of animation (in milliseconds)
+        * aMillisecondsPerFrame  -- Request delay time between each frame.
+        * aColorDepth            -- Color display mode for main bitmaps
+        * aMaskType              -- Color display mode for mask bitmaps
+        * aBitmapFrames          -- Array to hold animation bitmaps
+        * aMaskFrames            -- Array to hold mask bitmaps
+        * aDelayIntervals        -- Delay interval between each frame (in milliseconds)
+        * aRemoveRedundantFrames -- If ETrue, remove consecutive frames that are the same
+        *                           and set the correct delay.
+        * Return Non-NULL Pointer to a svg error (MSvgError*)
+        */
+       IMPORT_C MSvgError* RenderFrames( TInt aDomHandle,
+                                         const TSize& aDimensionOfBitmaps,
+                                         TUint aStartTime,
+                                         TUint aDuration,
+                                         TUint aMillisecondsPerFrame,
+                                         TDisplayMode aColorDepth,
+                                         TDisplayMode aMaskType,
+                                         RPointerArray<CFbsBitmap>& aBitmapFrames,
+                                         RPointerArray<CFbsBitmap>& aMaskFrames,
+                                         RArray<TUint>& aDelayIntervals,
+                                         TBool aRemoveRedundantFrames = EFalse );
+
+       /**
+         * Used when creating an element from the java interface
+         * initializes all of the style properties attribute array to
+         * null for a newly created element so that attributes can be added
+         * to that element
+         *
+         *@param  : aElementHandle -- an SVG element identifier.
+         *@return
+         */
+       IMPORT_C void InitSvgStylePropertiesWithNullL( CSvgElementImpl* aElement );
+
+       /**
+         * Add a specific event listener to the engine
+         *
+         *@param  : aListener, a listener type
+         *@return : none
+         */
+       IMPORT_C void AddListener( const MSvgListener* aListener, TSvgListenerType aType, TInt aEngine = NULL );
+
+       /**
+         * Remove a specific event listener from the engine
+         *
+         *@param  : aListener, a listener type
+         *@return : none
+         */
+       IMPORT_C void RemoveListener( const MSvgListener* aListener, TSvgListenerType aType, TInt aEngine = NULL );
+
+        /**
+         * Request the given engine (or internal engine) to
+         * initialize from information in the svg-document attached
+         * to it (if any).  This is used to setup the display information
+         * from the <svg> tag.  Usually called from MSvgLoadingListener
+         * method when <svg> reached.  If aEngine is NULL, then
+         * the internal engine is used.
+         *
+         * @since 1.0
+         * @param : aEngine -- svg engine to request initialization.
+         * A NULL value, by default, indicates to use the internal
+         * engine for initialization.
+         * @param : aIsMainThread -- indicates whether this call is
+         * made in the "main thread" or not, default to ETrue.
+         * @return : none
+         */
+        IMPORT_C void InitializeEngine( CSvgEngineImpl* aEngine = NULL,
+                                        TBool aIsMainThread = ETrue );
+
+        /**
+         * Set the timeout duration for fetching external data
+         * (Fetchimage calls).  A value of zero,
+         * indicates no timeout (by default).  This is designed mainly
+         * for SVGT Plugin.
+         * @param : aTimeoutSeconds --
+         */
+        IMPORT_C void SetDataRetrievalTimeOut( TUint aTimeoutSeconds, TInt aEngine = NULL );
+
+        /**
+         * Request canceling of parsing of the current document being
+         * parsed (through Load API).  This API allows a different thread
+         * other than the loading thread to cancel a Load call.
+         * @since 1.0
+         */
+        IMPORT_C void CancelLoad( TInt aEngine = NULL );
+
+        /**
+         * Query wether a document is currently bieng parsed through
+         * the Load API.  EFalse is returned when a document has completed
+         * parsing or CancelLoad has completed successfully.
+         * @since 1.0
+         */
+        IMPORT_C TBool IsLoading( TInt aEngine = NULL );
+
+        /**
+         * In _DEBUG mode all elements in the documents DOM will be printed out
+         * this method may be used in the future to regenerate the DOM tree
+         * could also be used as an encoder
+         *
+         *@param  : aDocument
+         *@return : none
+         */
+        IMPORT_C void PrintAllElements( CSvgDocumentImpl* aDocument );
+
+        /**
+         * In _DEBUG mode print all of the values that are in the styles
+         * for the element
+         *
+         *@param  : aElement
+         *@return : none
+         */
+        IMPORT_C void PrintElementsStyles( CSvgElementImpl* aElement );
+
+        /**
+         * Set to indicate whether the contents should be rendered
+         * or wait for all images in a content to be decoded, defaults
+         * to waiting for all images.
+         *
+         *@param  : aBool -- indicates waiting for all images to finish
+         *                   decoding before drawing any content.
+         *@return : none
+         */
+        IMPORT_C void WaitForImages( TBool aBool = ETrue, TInt aEngine = NULL );
+
+        /**
+         * This API provides a delayed (asynchronous) assignment of image
+         * data to <image> elements.  This is used when the clients
+         * returns a non-KErrNone value for FetchImage callback, so that
+         * FetchImage does not block the parsing thread.
+         *
+         *@param   aUri- uri string that is passed by FetchImage,
+         *               the URI of the image files.
+         *@param   aData - byte array containing the image data to
+         *                 be decoded.  This object will be managed (deleted)
+         *                 by svg-engine.
+         *@return  none
+         */
+         IMPORT_C void AssignImageData( const TDesC& aUri, HBufC8* aData );
+
+        /**
+         * This API provides API for client to set RWindow so that svgengine
+         * is aware of the window that client is using. This will benefit
+         * video rendering.
+         *
+         *@param   aWindow- RWindowBase that retrieve from CCoeControl to derived
+         * classes.
+         *@return  none
+         */
+        IMPORT_C void SetClientWindow( RWindow* aWindow );
+
+		/**
+         * Method to output the currently loaded SVG content in standard SVG XML form
+         * or output a binary encoded version to a file
+         *@param   aIsEncodeOn tell whether or not to output binary or standard SVG file.
+         *@return  none
+         */
+		IMPORT_C void SaveSvg( TBool aIsEncodeOn, const TDesC& aFileName, TInt aEngine );
+
+        /**
+         * This method sets the volume with user input as a percentage 
+         * value (unsigned between 0 and 100 ) 
+         *
+         * @since S60 3.1
+         * @param aPercentage percentage value of volume
+         * @return none
+         */
+         IMPORT_C void SetAudioVolume( TInt aPercentage , TInt aEngine = NULL);
+
+        /**
+         * This method mutes the volume of the SVG content
+         *
+         * @since S60 3.1
+         * @return none
+         */
+         IMPORT_C void MuteAudioVolume( TInt aEngine = NULL );
+         
+         	/**
+         * This API provides client the functionality to trigger focus-in 
+         * event for a particular element
+         * 
+         *
+         *@param   aDocumentHandle- Pointer to the document of type SvgDocumentImpl
+         *		   aElement- Pointer to the element for which focus needs to be set 
+         * 		   
+         *@return  none
+	   */
+		IMPORT_C void DispatchFocusInEvent(CSvgDocumentImpl* aDocumentHandle,CSvgElementImpl *aElement);
+		
+		/**
+         * This API provides client the functionality to trigger focus-in 
+         * event for a particular element
+         * 
+         *
+         *@param   aDocumentHandle- Pointer to the document of type SvgDocumentImpl
+         *		   aElement- Pointer to the element for which focus needs to be set 
+         * 		   
+         *@return  none
+         */
+		IMPORT_C void DispatchFocusOutEvent(CSvgDocumentImpl* aDocumentHandle,CSvgElementImpl *aElement);
+		IMPORT_C void ResetContext(TInt aEngine = NULL );
+
+		
+    protected:
+        /**
+         * This method is a special case "ConstructL" method used for polymorphic
+         * DLL loading, which enforces this method to be public.
+         *
+         * @since 1.0
+         * @param : aFrameBuffer -- Bitmap to draw svg content.
+         * @param : aReqObserver -- Request observer called by svg engine.
+         * @return
+         */
+        IMPORT_C void                       ConstructL( CFbsBitmap* aFrameBuffer,
+                                                        MSvgRequestObserver* aReqObserver, TFontSpec& aFontSpec  );
+        //NGA :: ConstructL overload is added to include renderertype selector
+        IMPORT_C void                       ConstructL( CFbsBitmap* aFrameBuffer,
+                                                        MSvgRequestObserver* aReqObserver, TFontSpec& aFontSpec ,SVGRendererId aRendererType );
+        /**
+         * This method is a special case "ConstructL" method used for polymorphic
+         * DLL loading, which enforces this method to be public.
+         *
+         * @since 1.0
+         *
+         * @return
+         */
+        IMPORT_C void                       ConstructL();
+        IMPORT_C void 						ConstructL(TFontSpec& aFontSpec);
+
+    private:
+
+        /**
+         * Adds a text element to display the frames per second if isShowOn = true
+         *
+         *@param  : isShowOn specified whether or not to display fps
+         *@return : frames per second in the engine
+         */
+        TReal FramesPerSecondL( TInt aEngine = NULL );
+
+
+        /**
+         * Get the current focus object's bounding box.
+         *
+         * @since 1.0
+         * @param ETrue - Get the next object
+         * @param EFalse - Get the previous object
+         * @return
+         */
+        TRect GetFocusBbox(TBool aNextObject, TInt aEngine = NULL );
+
+         /**
+         * Checks whether the Handle is associated with a DOM
+         *
+         * @param : aHandle -- Handle to a DOM.
+         * @return: TBool boolean
+         */
+         TBool IsDomCached(TInt aHandle);
+
+        /**
+         * Request the SVG Engine to resume an animation after certain amount of time
+         *
+         * @since 1.0
+         * @param : none
+         * @return : none
+         */
+        void                       Resume(TInt32 aTime, TInt aEngine = NULL);
+
+        /**
+         * Utility function to clean-up after loading a file -- mainly,
+         * removing the prepared dom from Dom-list, since it's loaded and
+         * more prepared.
+         *
+         * @since 1.0
+         * @param : aDocumentHandle -- document info to handle clean up
+         * @return : none
+         */
+        void PostLoadProcessing( TInt aDocumentHandle );
+
+        //
+        /**
+         * ImageLoadingObserver interface method.
+         * Called from Image loading class to notify image loading
+         * completion.
+         *
+         * @since 1.0
+         * @param : aErrorStatus -- error status, if any
+         * @return : none
+         */
+        void ImageLoadingCompleted( TInt aErrorStatus );
+
+        /******* DOM FUNCTIONALITY / ELEMENT TRAVERSAL INTERFACE *****/
+        /**
+         *  Returns the first child element node of this element. null if this element has no child elements
+         *
+         * @since 1.2
+         * @param aParentElement - a handle to a parent element
+         * @return a handle to the first child of the parent element
+         */
+        CSvgElementImpl* FirstElementChild(CSvgElementImpl* aParentElement);
+
+        /**
+         *  last child element node of this element. null if this element has no child elements
+         *
+         * @since 1.2
+         * @param aParentElement - a handle to a parent element
+         * @return a handle to the first child of the parent element
+         */
+        //
+        CSvgElementImpl* LastElementChild(CSvgElementImpl* aParentElement);
+
+        /**
+         *  Returns the next sibling element node of this element. null if this element has no element sibling nodes that come after this one in the document tree
+         *
+         * @since 1.2
+         * @param aSiblingElement - a handle to a sibling element
+         * @return a handle to the sibling before the sibling passed in
+         */
+        CSvgElementImpl* PreviousElementSibling(CSvgElementImpl* aSiblingElement);
+
+        /**
+         *  previous sibling element node of this element. null if this element has no element sibling nodes that come before this one in the document tree.
+         *
+         * @since 1.2
+         * @param aParentElement - a handle to a sibling element
+         * @return a handle to the next sibling of the parameter element
+         */
+        CSvgElementImpl* NextElementSibling(CSvgElementImpl* aSiblingElement);
+
+        /**
+         * Return whether the two given bitmaps are the same.
+         *
+         * @since 1.0
+         * @param : aBitmapA -- Bitmap A
+         * @param : aBitmapB -- Bitmap B
+         * @return : ETrue both bitmaps are the same.
+         */
+        TBool AreBitmapsTheSame( CFbsBitmap& aBitmapA, CFbsBitmap& aBitmapB );
+
+        /**
+         * Create a new CFbsBitmap object with the specific size and color mode.
+         *
+         * @since 1.0
+         * @param : aSize -- size of bitmap to create
+         * @param : aColorMode : Color mode to create bitmap
+         * @param : aError : Error object to hold error info, if an error occurs
+         * @return : Non-Null CFbsBitmap object if no error was encounter
+         */
+        CFbsBitmap* CreateBitmapL( TSize aSize, TDisplayMode aColorMode,
+                                  CSvgErrorImpl& aError );
+
+
+        /**
+         * This mathod restores some style properties back to the
+         * original value of the animatied elements' iSvgStyleProperties.
+         *
+         * @since S60 3.0
+         * @return none
+         */
+        void RestoreAnimStyleProperties( TInt aEngine = NULL );
+
+        CSvgEngineImpl* ChooseEngine( TInt aEngine );
+
+		//Utility method to write out the current SVG engine framebuffer to a file 	
+		void ConvertBitmapToFileL(CFbsBitmap* aBitmap, const TDesC& aText);
+	
+    protected:
+        // Current SvgEngine instance
+        CSvgEngineImpl*                     iSvgEngine;
+		// Current iSvgDocument through Load( ) method
+		CSvgDocumentImpl*					iSvgLoadedDocument;
+
+        // Flag to indicate if a content is present, to perform or
+        // ignore operations.
+        TBool                               iFileIsLoaded;
+
+
+        // Error object to pass back to clients, maintained by this object.
+        CSvgErrorImpl*                      iSvgError;
+
+        // List of prepared DOMs (created by PrepareDom).
+        // Deleted by destructor or calling DeleteDom.
+        RPointerArray<CSvgDocumentImpl>     iSvgDocumentPointers;
+		RPointerArray<CSvgEngineImpl>		iSvgEnginePointers;
+
+        // Keeping track of rotation applied.
+        TReal32                             iTotalRotation;
+
+    public:
+
+        IMPORT_C void                        Start(MSvgError*& aError, const TDesC8* aHeaderData ,
+                                                   CSvgEngineImpl* aEngine = NULL );
+
+        IMPORT_C void                       Start( const TDesC8* aHeaderData, CSvgEngineImpl* aEngine = NULL,
+                                                   TBool aIsMainThread = ETrue);
+    private:
+        // DRM related
+        TBool                               iDrmEnabled;
+
+        // Thumbnail mode
+        TBool                               iIsThumbNailMode;
+        
+        // DRM Rights consumption
+        TBool         iDrmRightsConsumptionEnabled;
+
+        // MSvgLoadingListener list
+        RPointerArray<MSvgLoadingListener>  iSvgLoadingListeners;
+
+        // Keep track of elements currently having mouse pointer inside
+        // to report mouse-exit when it is moved.
+        RPointerArray<CSvgElementImpl>      iSvgMouseEnteredElements;
+
+        // Flag to indicate Load or PrepareDom call.
+        TBool                               iIsLoadingRequest;
+
+		TBool                               iMouseDownFlag;
+		
+			//Stores Font Type information
+		CSvgBitmapFontProvider *iSvgBitmapFontProvider;
+    };
+
+#endif      // SVGENGINEINTERFACEIMPL_H