Revert incorrect RCL_3 drop: RCL_3 PDK_3.0.2 PDK_3.0.3 PDK_3.0.4
authorPat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:20:46 +0100
branchRCL_3
changeset 39 1902ade171ab
parent 38 db5c883ad1c5
Revert incorrect RCL_3 drop: Revision: 201026 Kit: 201035
group/bld.inf
package_definition.xml
package_map.xml
svgt_plat/svgt_api/group/bld.inf
svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h
svgt_plat/svgt_api/inc/SvgJavaInterfaceImpl.h
svgt_plat/svgt_api/inc/SvgListener.h
svgt_plat/svgt_api/inc/svgtbitmap.h
svgt_plat/svgt_api/inc/svgtbitmap.inl
svgtopt/SVG/SVGEngine/BWINSCW/SVGENGINE-OpenVGU.def
svgtopt/SVG/SVGEngine/eabi/SVGENGINE-OpenVGU.def
svgtopt/SVG/SVGEngine/group/SVGEngine.mmp
svgtopt/SVG/SVGEngine/inc/SVGContentHandler.h
svgtopt/SVG/SVGEngine/inc/SVGEngineImpl.h
svgtopt/SVG/SVGEngine/src/SVGContentHandler.cpp
svgtopt/SVG/SVGEngine/src/SVGEngineImpl.cpp
svgtopt/SVG/SVGEngine/src/SVGEngineInterfaceImpl.cpp
svgtopt/SVG/SVGEngine/src/Svgdecoder.cpp
svgtopt/SVG/SVGImpl/src/SVGAnimationBase.cpp
svgtopt/SVG/SVGImpl/src/SVGAnimationElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGDocumentImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGFontFaceElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGImageElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGSetElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGTextElementImpl.cpp
svgtopt/SVG/SVGImpl/src/SVGTokenizer.cpp
svgtopt/SVGEngineJI/BWINSCW/SVGEngineJIU.def
svgtopt/SVGEngineJI/eabi/SVGEngineJIU.def
svgtopt/SVGEngineJI/src/SvgJavaInterfaceImpl.cpp
svgtopt/SVGTPlugin/BWINSCW/NPSVGTPLUGINU.DEF
svgtopt/SVGTPlugin/eabi/npSvgtPluginU.DEF
svgtopt/SVGTPlugin/group/SVGTPluginS60.pkg
svgtopt/SVGTPlugin/group/SVGTPluginS60Ecom.mmp
svgtopt/SVGTPlugin/group/bld.inf
svgtopt/SVGTPlugin/inc/MRepositoryVolumeObserver.h
svgtopt/SVGTPlugin/inc/RepositoryVolumeListener.h
svgtopt/SVGTPlugin/inc/SvgtPlugin.hrh
svgtopt/SVGTPlugin/inc/Svgtplugin.h
svgtopt/SVGTPlugin/inc/VolumeKeyListener.h
svgtopt/SVGTPlugin/loc/npSVGTPlugin.loc
svgtopt/SVGTPlugin/resource/s60/101F86DF.rss
svgtopt/SVGTPlugin/resource/s90/npSvgtplugin.rss
svgtopt/SVGTPlugin/src/RepositoryVolumeListener.cpp
svgtopt/SVGTPlugin/src/SvgtPluginControl.cpp
svgtopt/SVGTPlugin/src/Svgtplugin.cpp
svgtopt/SVGTPlugin/src/Svgtplugindllapi.cpp
svgtopt/SVGTPlugin/src/Svgtpluginmain.cpp
svgtopt/SVGTPlugin/src/VolumeKeyListener.cpp
svgtopt/VGRenderer/PseudoVG/inc/PseodoVGRendererImpl.h
svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp
svgtopt/VGRenderer/PseudoVG/src/PseudoVGSurfaceImpl.cpp
svgtopt/VGRenderer/SWVG/eabi/SWVG.def
svgtopt/VGRenderer/SWVG/group/SWVG.mmp
svgtopt/VGRenderer/SWVG/inc/swopenvgtargetsurfaceimpl.h
svgtopt/VGRenderer/SWVG/src/SWOpenVGRendererImpl.cpp
svgtopt/VGRenderer/SWVG/src/swopenvgtargetsurfaceimpl.cpp
svgtopt/VGRenderer/inc/MVGSurfaceImpl.h
svgtopt/VGRenderer/inc/VGSurface.h
svgtopt/gfx2d/inc/Gfx2dGcInterface.h
svgtopt/gfx2d/inc/Gfx2dGcOpenVG.h
svgtopt/gfx2d/src/GfxGc/Gfx2dGcOpenVG.cpp
svgtopt/nvgdecoder/src/TLVIconCreator.cpp
svgtopt/nvgdecoder/src/TLVRenderer.cpp
svgtopt/nvgdecoder/src/nvg.cpp
--- a/group/bld.inf	Tue Aug 31 16:06:58 2010 +0300
+++ b/group/bld.inf	Wed Sep 01 12:20:46 2010 +0100
@@ -24,6 +24,7 @@
 */
 
 #include "../svgtopt/group/bld.inf"
+#include "../svgtopt/SVGTPlugin/group/bld.inf"
 
 PRJ_PLATFORMS
 DEFAULT 
--- a/package_definition.xml	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
- <package id="svgt" name="SVG Tiny" levels="util ui">
-  <collection id="svgt_plat" name="SVG Tiny Platform Interfaces" level="ui">
-   <component id="svgt_api" name="SVGT API" introduced="9.2" class="api" filter="s60">
-    <meta rel="Api" href="svgt_plat/svgt_api/svgt_api.metaxml"/>
-    <unit bldFile="svgt_plat/svgt_api/group"/>
-   </component>
-   <component id="nvg_api" name="NVG API" introduced="9.2" class="api" filter="s60">
-    <meta rel="Api" href="svgt_plat/nvg_api/nvg_api.metaxml"/>
-    <unit bldFile="svgt_plat/nvg_api/group"/>
-   </component>
-  </collection>
-  <collection id="svgtopt" name="SVG-T Engine" level="util">
-   <component id="svgtopt_build" filter="s60" name="SVG Engine" introduced="9.2">
-    <!-- component is at collection level. Needs to be moved down a directory -->
-    <unit bldFile="svgtopt/group"/>
-   </component>
-  </collection>
- </package>
-</SystemDefinition>
--- a/package_map.xml	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-<PackageMap root="sf" layer="mw"/>
--- a/svgt_plat/svgt_api/group/bld.inf	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgt_plat/svgt_api/group/bld.inf	Wed Sep 01 12:20:46 2010 +0100
@@ -33,7 +33,3 @@
 ../inc/SVGAnimationListener.h     MW_LAYER_PLATFORM_EXPORT_PATH(SVGAnimationListener.h)
 ../inc/SVGRequestObserver.h     MW_LAYER_PLATFORM_EXPORT_PATH(SVGRequestObserver.h)
 ../inc/SVGRendererId.h		MW_LAYER_PLATFORM_EXPORT_PATH(SVGRendererId.h)
-
-../inc/svgtbitmap.h     MW_LAYER_PLATFORM_EXPORT_PATH(svgtbitmap.h)
-../inc/svgtbitmap.inl   MW_LAYER_PLATFORM_EXPORT_PATH(svgtbitmap.inl)
-
--- a/svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgt_plat/svgt_api/inc/SVGEngineInterfaceImpl.h	Wed Sep 01 12:20:46 2010 +0100
@@ -105,9 +105,6 @@
 class       CSvgTextElementImpl;
 
 class 		CSvgBitmapFontProvider;
-
-class       CSvgtBitmap;
-
 class MRect
     {
     public:
@@ -650,8 +647,6 @@
          */
         IMPORT_C void GenerateMask( CFbsBitmap* aMask, TInt aEngine = NULL );
 
-        IMPORT_C void GenerateMask( CSvgtBitmap* aMask, TInt aEngine = NULL );
-
         /**
          * Set the color for clearing background.
          *
@@ -876,7 +871,6 @@
          */
          IMPORT_C void SetGdiContextL( CSvgEngineImpl* aEngine, CFbsBitmap* aFrameBuffer );
 
-         IMPORT_C void SetGdiContextL( CSvgEngineImpl* aEngine, CSvgtBitmap* aFrameBuffer );
          /**
          * Associate the given document with the given engine.
          *
--- a/svgt_plat/svgt_api/inc/SvgJavaInterfaceImpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgt_plat/svgt_api/inc/SvgJavaInterfaceImpl.h	Wed Sep 01 12:20:46 2010 +0100
@@ -33,8 +33,6 @@
 typedef int SvgPathHandle;
 typedef short SvgAttrType;
 
-typedef unsigned int SvgtBitmapHandle;
-
 class CSvgEngineImpl;
 class CSvgDocumentImpl;
 class CFbsBitmap;
@@ -1490,12 +1488,7 @@
 		SvgEngineHandle aEngineHandle, SvgDocumentHandle aDocumentHandle, 
 		TInt aSurfaceHandle, TInt aSurfaceMaskHandle = NULL, TReal32 aCurrentTime = 0.0f ) __SOFTFP;
 
-    IMPORT_C void SvgEngineRenderDocument( 
-        SvgEngineHandle aEngineHandle, SvgDocumentHandle aDocumentHandle, 
-        SvgtBitmapHandle aSurfaceHandle, SvgtBitmapHandle aSurfaceMaskHandle = NULL, 
-        TReal32 aCurrentTime = 0.0f ) __SOFTFP;
-
-    IMPORT_C void SvgEngineRenderDocumentL( 
+	IMPORT_C void SvgEngineRenderDocumentL( 
 		SvgEngineHandle aEngineHandle, SvgDocumentHandle aDocumentHandle, 
 		TInt aSurfaceHandle, const TPoint& aAnchor, const TRect& aRenderArea, TReal32 aCurrentTime, TReal32 aAlpha ) __SOFTFP;
 		
--- a/svgt_plat/svgt_api/inc/SvgListener.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgt_plat/svgt_api/inc/SvgListener.h	Wed Sep 01 12:20:46 2010 +0100
@@ -23,7 +23,7 @@
 #include <e32base.h>
 #endif
 
-#include "xml/mxmlattributes.h"
+#include "MXMLAttributes.h"
 
 class CSvgElementImpl;
 
--- a/svgt_plat/svgt_api/inc/svgtbitmap.h	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * 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:  SVGTbitmap header file
- *
-*/
-
-#ifndef SVGTBITMAP_H_
-#define SVGTBITMAP_H_
-
-#include <e32base.h>
-#include <displaymode.h>
-
-class CSvgtBitmap : public CBase
-    {
-public: // constructors 
-    inline CSvgtBitmap( TInt8* aBitmapBuffer, TSize aBitmapSize,
-                            TDisplayMode aDisplayMode, TInt aStride);
-
-public: //class methods
-    /*
-     * returns target image buffer
-     */
-    inline TInt8* BitmapBuffer() const;
-    
-    /*
-     * returns target image size in pixels
-     */
-    inline TSize SizeInPixels() const;
-    
-    /*
-     * returns target image display mode
-     */
-    inline TDisplayMode DisplayMode() const;
-    
-    /*
-     * returns target image bytes per scanline
-     */
-    inline TInt Stride() const;
-    
-private:    
-    TInt8* iBitmapBuffer;
-    TSize iBitmapSize;
-    TDisplayMode iDisplayMode;
-    TInt iStride;
-    };
-
-#include <svgtbitmap.inl>
-
-#endif /* SVGTBITMAP_H_ */
--- a/svgt_plat/svgt_api/inc/svgtbitmap.inl	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* 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:  SVGTbitmap header file
- *
-*/
-
-inline CSvgtBitmap::CSvgtBitmap( TInt8* aBitmapBuffer, TSize aBitmapSize,
-                        TDisplayMode aDisplayMode, TInt aStride):iBitmapBuffer(aBitmapBuffer),
-                                iBitmapSize(aBitmapSize),
-                                iDisplayMode(aDisplayMode),
-                                iStride(aStride)
-    {
-    }
-
-inline TInt8* CSvgtBitmap::BitmapBuffer() const
-    {
-    return iBitmapBuffer;
-    }
-        
-inline TSize CSvgtBitmap::SizeInPixels() const
-    {
-    return iBitmapSize;
-    }
-        
-inline TDisplayMode CSvgtBitmap::DisplayMode() const
-    {
-    return iDisplayMode;
-    }
-    
-inline TInt CSvgtBitmap::Stride() const
-    {
-    return iStride;
-    }
--- a/svgtopt/SVG/SVGEngine/BWINSCW/SVGENGINE-OpenVGU.def	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/BWINSCW/SVGENGINE-OpenVGU.def	Wed Sep 01 12:20:46 2010 +0100
@@ -191,6 +191,4 @@
 	?ResetContext@CSvgEngineInterfaceImpl@@QAEXH@Z @ 190 NONAME ; void CSvgEngineInterfaceImpl::ResetContext(int)
 	?ConstructL@CSvgEngineInterfaceImpl@@IAEXAAVTFontSpec@@@Z @ 191 NONAME ; void CSvgEngineInterfaceImpl::ConstructL(class TFontSpec &)
 	?TLVEncodedData@CSvgEngineInterfaceImpl@@QBE?BVTPtrC8@@XZ @ 192 NONAME ; class TPtrC8 const CSvgEngineInterfaceImpl::TLVEncodedData(void) const
-	?GenerateMask@CSvgEngineInterfaceImpl@@QAEXPAVCSvgtBitmap@@H@Z @ 193 NONAME ; void CSvgEngineInterfaceImpl::GenerateMask(class CSvgtBitmap *, int)
-	?SetGdiContextL@CSvgEngineInterfaceImpl@@QAEXPAVCSvgEngineImpl@@PAVCSvgtBitmap@@@Z @ 194 NONAME ; void CSvgEngineInterfaceImpl::SetGdiContextL(class CSvgEngineImpl *, class CSvgtBitmap *)
 
--- a/svgtopt/SVG/SVGEngine/eabi/SVGENGINE-OpenVGU.def	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/eabi/SVGENGINE-OpenVGU.def	Wed Sep 01 12:20:46 2010 +0100
@@ -388,6 +388,4 @@
 	_ZN23CSvgEngineInterfaceImpl5StartERP9MSvgErrorPK6TDesC8P14CSvgEngineImpl @ 387 NONAME
 	_ZN23CSvgEngineInterfaceImpl6UseDomEiP10CFbsBitmapS1_5TSize12TDisplayModeS3_i @ 388 NONAME
 	_ZNK23CSvgEngineInterfaceImpl14TLVEncodedDataEv @ 389 NONAME
-	_ZN23CSvgEngineInterfaceImpl12GenerateMaskEP11CSvgtBitmapi @ 390 NONAME
-	_ZN23CSvgEngineInterfaceImpl14SetGdiContextLEP14CSvgEngineImplP11CSvgtBitmap @ 391 NONAME
 
--- a/svgtopt/SVG/SVGEngine/group/SVGEngine.mmp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/group/SVGEngine.mmp	Wed Sep 01 12:20:46 2010 +0100
@@ -19,12 +19,7 @@
 #include <platform_paths.hrh>
 
 ALWAYS_BUILD_AS_ARM
-/* Srini: Raptor automatically adds --cpu 5te when building for rvct4.0
-                           and adds --cpu 5t when building with rvct 2.2.
-                           basically the option is redundant. please don't add the option.
-
-  */     
-OPTION_REPLACE ARMCC -O3 -Otime
+OPTION_REPLACE ARMCC --cpu 5T -O3 -Otime
 TARGET SVGEngine.dll
 TARGETTYPE dll
 
@@ -62,7 +57,6 @@
 SOURCE Svgdecoder.cpp
 SOURCE SVGFourPointRect.cpp
 
-
 SOURCEPATH ../../SVGImpl/src
 
 SOURCE SVGElementImpl.cpp
--- a/svgtopt/SVG/SVGEngine/inc/SVGContentHandler.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/inc/SVGContentHandler.h	Wed Sep 01 12:20:46 2010 +0100
@@ -28,8 +28,8 @@
 #include "SVGAttributeVerifier.h"
 #include "SVGErrorImpl.h"
 
-#include "xml/mxmlattributes.h"
-#include "xml/mxmlcontenthandler.h"
+#include "mxmlattributes.h"
+#include "mxmlcontenthandler.h"
 
 #include "SVGSchemaData.h"
 #include "SVGDocumentImpl.h"
--- a/svgtopt/SVG/SVGEngine/inc/SVGEngineImpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/inc/SVGEngineImpl.h	Wed Sep 01 12:20:46 2010 +0100
@@ -68,7 +68,6 @@
 class   CSvgTimer;
 // temporary for debugging
 
-class CSvgtBitmap;
 //This includes the main rendering loop.
 
 /**
@@ -328,8 +327,6 @@
          */
         void GenerateMask( CFbsBitmap* aMask );
 
-        void GenerateMask(CSvgtBitmap* aMask);
-        
         /**
          * Set background color
          *
@@ -368,9 +365,6 @@
          void SetGdiContextL(CFbsBitmap* aCurrentBitmap, CFbsBitmap* aMask = NULL);
 
          void SetGdiContextL(CFbsBitmap* aCurrentBitmap, CFbsBitmap* aMask,TSize aCurrentBitmapSize,TDisplayMode aRenderDspMode,TDisplayMode aMaskDspMode);
-         
-         void SetGdiContextL(CSvgtBitmap* aCurrentBitmap, CSvgtBitmap* aMask  = NULL);
-
         /**
          * Start the Engine so that the first frame is drawn when the call is finished.
          *
@@ -617,10 +611,6 @@
          TBool IsSVGEnginePaused();
 
          void SetBitmapHeader(const TDesC* aHeaderData);
-         
-         void EnableTargetRendering(TBool aTargetRendering );
-         TBool IsTargetRenderingEnabled() const;
-         
     public: // Functions from base classes
         // From CSvgElementImpl
         /**
@@ -926,7 +916,7 @@
 
         CFbsBitmap*             iFrameBuffer;
         CFbsBitmap*             iMask;
-        
+
         TSize                   iFrameBufferSize;  //NGA
         TDisplayMode            iRenderDspMode;
         TDisplayMode            iMaskDspMode;
@@ -941,10 +931,6 @@
         TPtrC                   iLinkShow;
         TBool                   iShowDebugInfo;
 
-        //M2G: target bitmap buffer and mask buffer
-        CSvgtBitmap* iTargetBitmapBuffer;
-        CSvgtBitmap* iTargetMaskBuffer;
-        
         TGfxRectangle2D         iClipRect;
         TSvgEngineState     iSvgEngineState;
         TAnimStatus iAnimationState;
@@ -974,7 +960,6 @@
 
         //Stores Font Type information as passed by CSvgEngineInterfaceImpl
         CSvgBitmapFontProvider *iSvgBitmapFontProvider;
-        TBool iIsTargetRenderingEnabled;
     public:
         TBool                       iCustomOption;
 				TBool												iFrameBufferOverridesViewport;
--- a/svgtopt/SVG/SVGEngine/src/SVGContentHandler.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/src/SVGContentHandler.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -26,7 +26,7 @@
 
 #include "SVGUseElementImpl.h"
 #include "SVGAnimationElementImpl.h"
-#include <xml/rxmlreader.h>
+#include "rxmlreader.h"
 
 #include "SVGPaintCssValueImpl.h"
 #include "SVGPathElementImpl.h"
@@ -1434,14 +1434,9 @@
         CleanupStack::PopAndDestroy( 1 ); // tBufC2
         }
 
-        TBool rVal = iCurrentElement->SetTransform(KTransform,tPf);
-        CleanupStack::PopAndDestroy( 2 ); // tBufC & TFinal
-                
-        if (!rVal)
-        {
-            return EFalse;
-        }
-
+        iCurrentElement->SetTransform(KTransform,tPf);
+
+    CleanupStack::PopAndDestroy( 2 ); // tBufC & TFinal
     return ETrue;
     }
 
--- a/svgtopt/SVG/SVGEngine/src/SVGEngineImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/src/SVGEngineImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -59,7 +59,6 @@
 #include "SVGTimeContainer.h"
 #include "SVGMediaAnimationElementImpl.h"
 
-#include <svgtbitmap.h>
 // Constants
 // length of </text>
 const TInt KClosingTextTagLength = 7;
@@ -749,24 +748,9 @@
 
         // Get the redering result onto CFbsBitmap.
         if(iFrameBufferSize.iWidth > 0)
-            {
-            if(iIsTargetRenderingEnabled) 
-                { // M2G
-                iGfxContext->UpdateFramebufferL( iTargetBitmapBuffer, iTargetMaskBuffer,iFrameBufferSize,
-                        iTargetBitmapBuffer->DisplayMode(),iTargetMaskBuffer->DisplayMode());
-                }
-            else 
-                iGfxContext->UpdateFramebufferL( iFrameBuffer, iMask,iFrameBufferSize,iRenderDspMode,
-                        iMaskDspMode );
-            }
+            iGfxContext->UpdateFramebufferL( iFrameBuffer, iMask,iFrameBufferSize,iRenderDspMode,iMaskDspMode );    
         else
-            {
-            if(iIsTargetRenderingEnabled)  //M2G
-                iGfxContext->UpdateFramebufferL( iTargetBitmapBuffer, iTargetMaskBuffer );
-            else
-                iGfxContext->UpdateFramebufferL( iFrameBuffer, iMask );
-
-            }
+         iGfxContext->UpdateFramebufferL( iFrameBuffer, iMask );
 
         if ( !iIgnoreUpdateScreen && iRequestObserver != NULL )
             {
@@ -1275,13 +1259,6 @@
         }
     }
 
-void CSvgEngineImpl::GenerateMask(CSvgtBitmap* aMask)
-    {
-    if ( iGfxContext )
-        {
-        iGfxContext->GenerateMask( aMask );
-        }
-    }
 //
 // ---------------------------------------------------------------------------
 // set background color
@@ -1395,38 +1372,7 @@
         iGfxContext->ChangeBufferSizeL( TSize( 0,0 ) );
         }
     }
-//----------------------------------------------------------------------------------------------
-//M2G: SetGdiContextL() is overloaded to accept CSvgtBitmap to enable rendering on target buffer.
-//-----------------------------------------------------------------------------------------------
-void CSvgEngineImpl::SetGdiContextL(CSvgtBitmap* aCurrentBitmap, CSvgtBitmap* aMask)
-    {
-
-    // Handle for both Non-NULL and NULL parameter
-    iTargetBitmapBuffer = aCurrentBitmap;
-    iTargetMaskBuffer = aMask;
-
-    if ( aCurrentBitmap )
-        {
-        if ( !iGfxContext )
-            {
-                iGfxContext = CGfx2dGcOpenVG::NewL( iTargetBitmapBuffer->SizeInPixels(), iBitmapFontSpec, iSvgBitmapFontProvider, EFalse );
-                
-                // The API is called Only in case of JSR226. Incase if the midlet developer
-                // has changed the RedenderQuality of the midlet.ByDefualt the value of 
-                // iRenderQuality is 2 i.e. VG_RENDERING_QUALITY_BETTER.
-                iGfxContext->SetAntialiasingMode( iRenderQuality );
-            }
-        else
-            {
-            iGfxContext->ChangeBufferSizeL( iTargetBitmapBuffer->SizeInPixels() );
-            }
-        }
-    else if ( iGfxContext )
-        {
-        iGfxContext->ChangeBufferSizeL( TSize( 0,0 ) );
-        }
-        
-    }
+
 // ---------------------------------------------------------------------------
 // void CSvgEngineImpl::StartEngine(CSvgErrorImpl* aError)
 // ---------------------------------------------------------------------------
@@ -1514,24 +1460,12 @@
 // ---------------------------------------------------------------------------
 void CSvgEngineImpl::RenderFrame( TUint aCurrentTime )
     {
-    if(iIsTargetRenderingEnabled) //M2G: If target rendering is enabled
+    if ( !iFrameBuffer || !iSvgDocument ||
+         iFrameBuffer->SizeInPixels().iWidth == 0 || iFrameBuffer->SizeInPixels().iHeight == 0 )
         {
-        if ( !iTargetBitmapBuffer || !iSvgDocument ||
-              iTargetBitmapBuffer->SizeInPixels().iWidth == 0 || 
-              iTargetBitmapBuffer->SizeInPixels().iHeight == 0 )
-            {
-            return;
-            }
+        return;
         }
-    else
-        {
-        if (!iFrameBuffer || !iSvgDocument
-            || iFrameBuffer->SizeInPixels().iWidth == 0
-            || iFrameBuffer->SizeInPixels().iHeight == 0)
-            {
-            return;
-            }
-        }
+
     if ( aCurrentTime == 0 )
         {
         SeekEngine( 0 );
@@ -3219,21 +3153,6 @@
         ((CGfx2dGcOpenVG *)iGfxContext)->SetBitmapHeader(aHeaderData);
         }
     }
-//---------------------------------------------------------------
-// M2G: Enable rendering on target buffer.
-//----------------------------------------------------------------
-void CSvgEngineImpl::EnableTargetRendering(TBool aTargetRendering )
-    {
-    iIsTargetRenderingEnabled = aTargetRendering; 
-    }
-
-//---------------------------------------------------------------
-// M2G: TBool CSvgEngineImpl::IsTargetRenderingEnabled() const 
-//----------------------------------------------------------------
-TBool CSvgEngineImpl::IsTargetRenderingEnabled() const 
-    {
-    return iIsTargetRenderingEnabled; 
-    }
 //NGA
 // ---------------------------------------------------------------------------
 // SetGdiContext File
--- a/svgtopt/SVG/SVGEngine/src/SVGEngineInterfaceImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/src/SVGEngineInterfaceImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -1055,36 +1055,67 @@
     TInt aX,aY;
     // Check in Left direction
     aX = 1; aY = 0;
-    //Coverity fixes
-    if ( bound.iX >= zero )
+    if ( xmax <= clipWidth && aX < 0 )
+        aX = 0;
+    if ( bound.iX >= zero && aX > 0 )
         aX = 0;
- 
+    if ( ymax <= clipHeight && aY < 0 )
+        aY = 0;
+    if ( bound.iY >= zero && aY > 0 )
+        aY = 0;
     // Do panning
-    left = ((aY)||(aX));
+    if ( ( aY == 0 ) && ( aX == 0 ) )
+	    left = EFalse;
+    else
+	    left = ETrue;
 
     // Check in Right direction
     aX = -1; aY = 0;
-    if ( xmax <= clipWidth )
+    if ( xmax <= clipWidth && aX < 0 )
+        aX = 0;
+    if ( bound.iX >= zero && aX > 0 )
         aX = 0;
-    
+    if ( ymax <= clipHeight && aY < 0 )
+        aY = 0;
+    if ( bound.iY >= zero && aY > 0 )
+        aY = 0;
     // Do panning
-    right = ((aY)||(aX));
+    if ( ( aY == 0 ) && ( aX == 0 ) )
+	    right = EFalse;
+    else
+	    right = ETrue;
 
     // Check in Up direction
     aX = 0; aY = 1;
-    if ( bound.iY >= zero )
+    if ( xmax <= clipWidth && aX < 0 )
+        aX = 0;
+    if ( bound.iX >= zero && aX > 0 )
+        aX = 0;
+    if ( ymax <= clipHeight && aY < 0 )
         aY = 0;
-    
+    if ( bound.iY >= zero && aY > 0 )
+        aY = 0;
     // Do panning
-    up = ((aY)||(aX));
+    if ( ( aY == 0 ) && ( aX == 0 ) )
+	    up = EFalse;
+    else
+	    up = ETrue;
 
     // Check in down direction
     aX = 0; aY = -1;
-    if ( ymax <= clipHeight )
+    if ( xmax <= clipWidth && aX < 0 )
+        aX = 0;
+    if ( bound.iX >= zero && aX > 0 )
+        aX = 0;
+    if ( ymax <= clipHeight && aY < 0 )
         aY = 0;
-    
+    if ( bound.iY >= zero && aY > 0 )
+        aY = 0;
     // Do panning
-    down = ((aY)||(aX));
+    if ( ( aY == 0 ) && ( aX == 0 ) )
+	    down = EFalse;
+    else
+	    down = ETrue;
 
     }
 // --------------------------------------------------------------------------
@@ -1188,11 +1219,19 @@
             {
                 bbSize.iWidth  = ((TReal32)bbSize.iWidth)  * percentWidth / 100.0;    
             }
+            else
+            {
+                bbSize.iWidth = bbSize.iWidth;
+            }
         
             if( svgElement->iHeightInPercentage )
             {
                 bbSize.iHeight = ((TReal32)bbSize.iHeight) * percentHeight / 100.0;    
             }
+            else
+            {
+                bbSize.iHeight = bbSize.iHeight;
+            }
         return bbSize;
         }
     }
@@ -1499,13 +1538,6 @@
         }
     }
 
-EXPORT_C void CSvgEngineInterfaceImpl::GenerateMask(CSvgtBitmap* aMask, TInt aEngine )
-    {
-        if ( ChooseEngine( aEngine ) )
-        {
-            iSvgEngine->GenerateMask(aMask);
-        }
-    }
 
 // --------------------------------------------------------------------------
 // EXPORT_C void CSvgEngineInterfaceImpl::SetBackgroundColor(TUint32 aRGBA8888Color, CSvgEngineImpl* aEngine)
@@ -2472,19 +2504,6 @@
         aEngine->SetGdiContextL( aFrameBuffer );
         }
 }
-
-// --------------------------------------------------------------------------
-//  M2G: Overloaded SetGdiContextL() for CSvgtBitmap to enable rendering on target buffer.
-// ---------------------------------------------------------------------------
-EXPORT_C void CSvgEngineInterfaceImpl::SetGdiContextL( CSvgEngineImpl* aEngine, CSvgtBitmap* aFrameBuffer )
-    {
-    if( aEngine )
-        {
-        aEngine->EnableTargetRendering(ETrue);
-        aEngine->SetGdiContextL( aFrameBuffer );
-        }
-    }
-
 // --------------------------------------------------------------------------
 // EXPORT_C void CSvgEngineInterfaceImpl::SetDocument( CSvgEngineImpl* aEngine, CSvgDocumentImpl* aDocument )
 // ---------------------------------------------------------------------------
@@ -3083,9 +3102,10 @@
     TSvgFourPointRect fourPointRect;
 
 	//updates CTM from root
+	aTextElementHandle->UpdateCTM();
+
     if (aTextElementHandle)
     {
-        aTextElementHandle->UpdateCTM();
         aTextElementHandle->GetFourPointBBox(fourPointRect);
     }
 
--- a/svgtopt/SVG/SVGEngine/src/Svgdecoder.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGEngine/src/Svgdecoder.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -2511,20 +2511,30 @@
 // ---------------------------------------------------------------------------
 TBool CSvgDecoder::DecodeIdAndXmlAttributeL(const TUint16 aName)
 	{
-    TBool rVal = EFalse;
+
 	if (aName== KAtrId)
 		{
-		rVal = iCurrentElement->SetIdandXmlbaseL( _L("id"), DecodeTDesCLC());
-		CleanupStack::PopAndDestroy( 1 );
+		iCurrentElement->SetIdandXmlbaseL( _L("id"), DecodeTDesCLC());
+		 CleanupStack::PopAndDestroy( 1 );
+		return ETrue;
 		}
-	else if (aName== KAtrXmlBase)
+
+	if (aName== KAtrXmlBase)
 		{
-		rVal = iCurrentElement->SetIdandXmlbaseL( _L("xml:base"), DecodeTDesCLC());
-		CleanupStack::PopAndDestroy( 1 );
+		iCurrentElement->SetIdandXmlbaseL( _L("xml:base"), DecodeTDesCLC());
+		 CleanupStack::PopAndDestroy( 1 );
+		return ETrue;
 		}
-	return rVal;
+
+	else
+		{
+		return EFalse;
+		}
 	}
 
+
+
+
 // --------------------------------------------------------------------------
 // TBool CSvgDecoder::DecodeUriRefAttributeL(const TUint16 aName)
 // ---------------------------------------------------------------------------
--- a/svgtopt/SVG/SVGImpl/src/SVGAnimationBase.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGAnimationBase.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -679,13 +679,11 @@
 				        iAnimTime->SaveBeginTime();
             }
 
-            if ( ( ((CSvgDocumentImpl*)iOwnerDocument)->Engine() && ((CSvgDocumentImpl*)iOwnerDocument)->Engine()->CurrentTIme() >= iAnimTime->BeginTime() )
-             || ( ((CSvgDocumentImpl*)iOwnerDocument)->iTimeForJSR226 >= iAnimTime->BeginTime() ) )
+            if ( ( ((CSvgDocumentImpl*)iOwnerDocument)->Engine() && iAnimTime && ((CSvgDocumentImpl*)iOwnerDocument)->Engine()->CurrentTIme() >= iAnimTime->BeginTime() )
+             || ( iAnimTime && ((CSvgDocumentImpl*)iOwnerDocument)->iTimeForJSR226 >= iAnimTime->BeginTime() ) )
 				{
-                if (iTargetElement)
-                    iTargetElement->SetIsAnimating( ETrue );
-                
-                SetIsAnimating( ETrue );
+        	iTargetElement->SetIsAnimating( ETrue );
+        	SetIsAnimating( ETrue );
 				}
 
         }
--- a/svgtopt/SVG/SVGImpl/src/SVGAnimationElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGAnimationElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -473,9 +473,6 @@
 //
 void CSvgAnimationElementImpl::RemoveEventListener()
     {
-    if ( !iMyAnimationElementList )
-         return;
-    
     FindAllAnimationElements( (CSvgElementImpl* )this, iMyAnimationElementList );
 
     // Remove event listening for every animation elements that are child of
--- a/svgtopt/SVG/SVGImpl/src/SVGDocumentImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGDocumentImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -77,7 +77,7 @@
 #include "SVGTimeContainer.h"
 #include <ezgzip.h>
 
-//#include <caf/caf.h>
+#include <caf/caf.h>
 #include <bautils.h>
 
 // ==========================================================================
@@ -374,7 +374,11 @@
             // ellipse
             return ( MXmlElement * ) CSvgEllipseElementImpl::NewL( (TUint8) position, this );
 
-       case KSvgForeignObjectElement:
+        case KSvgDefsElement:
+			// defs
+        	return ( MXmlElement * ) CSvgDefsElementImpl::NewL((TUint8) position, this);
+
+		case KSvgForeignObjectElement:
 			// foreignObject
     		return ( MXmlElement * ) CSvgForeignObjectElementImpl::NewL((TUint8) position, this);
 
--- a/svgtopt/SVG/SVGImpl/src/SVGElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -101,6 +101,8 @@
 			   CSvgElementImpl* lParentElement = (CSvgElementImpl*)aElement->ParentNode ();
 			   while(lParentElement && (lParentElement->iSvgStyleProperties != NULL))
 			   {
+			   		if(!lParentElement)
+			   			return EFalse;
 			      if (aElement->iSvgStyleProperties->operator[](aAttrIndex) ==
 			          lParentElement->iSvgStyleProperties->operator[](aAttrIndex))
 			      {
@@ -671,8 +673,7 @@
                 {
                 ((CSvgFontFaceElementImpl *)this)->SetFontFamilyL(aValue);
                 }
-				break;
-				
+
         case KCSS_ATTR_STROKE_LINECAP:
         case KCSS_ATTR_STROKE_LINEJOIN:
         case KCSS_ATTR_FILLRULE:
@@ -2312,7 +2313,7 @@
             //tParentValue  = (CIntCssValueImpl *)(lParentElement->iSvgStyleProperties->operator[](aNameId));
             //(*iSvgStyleProperties)[aNameId]= tParentValue;
 						if(tParentValue)
-								 tValue->SetValueL(tParentValue->Value());
+						 		 tValue->SetValueL(tParentValue->Value());
             }
             else
             {
--- a/svgtopt/SVG/SVGImpl/src/SVGFontFaceElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGFontFaceElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -117,31 +117,28 @@
     {
     //AJD this whole thing needs to be replaced with some sort of external resource registry area....
     //for images, fonts, other svg files
-    CSvgDocumentImpl * ownerDoc = (CSvgDocumentImpl*)iOwnerDocument;
-    if ( ownerDoc )
+    if ( ((CSvgDocumentImpl*)iOwnerDocument)->Engine() && ((CSvgDocumentImpl*)iOwnerDocument)->Engine()->iFontHashMap)
+	{
+    TRAPD(err, ((CSvgDocumentImpl*)iOwnerDocument)->Engine()->iFontHashMap->RemoveReferenceFromFontL(iFontFamily->Des()));
+    if (err)
         {
-        if ( ownerDoc->Engine() && ownerDoc->Engine()->iFontHashMap)
-            {
-            TRAPD(err, ownerDoc->Engine()->iFontHashMap->RemoveReferenceFromFontL(iFontFamily->Des()));
-            if (err)
-                {
-                #ifdef _DEBUG
-                RDebug::Printf("CSvgFontFaceElementImpl::~CSvgFontFaceElementImpl: Error trapped=%d", err);
-                #endif
-                }
-            }
-        
-        if ( ownerDoc->iFontHashMap)
-            {
-            TRAPD(err, ownerDoc->iFontHashMap->RemoveReferenceFromFontL(iFontFamily->Des()));
-            if (err)
-                {
-                #ifdef _DEBUG
-                RDebug::Printf("CSvgFontFaceElementImpl::~CSvgFontFaceElementImpl: Error trapped=%d", err);
-                #endif
-                }
-            }
+        #ifdef _DEBUG
+        RDebug::Printf("CSvgFontFaceElementImpl::~CSvgFontFaceElementImpl: Error trapped=%d", err);
+        #endif
         }
+	}
+
+	if ( (CSvgDocumentImpl*)iOwnerDocument && ((CSvgDocumentImpl*)iOwnerDocument)->iFontHashMap)
+	{
+	TRAPD(err, ((CSvgDocumentImpl*)iOwnerDocument)->iFontHashMap->RemoveReferenceFromFontL(iFontFamily->Des()));
+    if (err)
+        {
+        #ifdef _DEBUG
+        RDebug::Printf("CSvgFontFaceElementImpl::~CSvgFontFaceElementImpl: Error trapped=%d", err);
+        #endif
+        }
+	}
+
     if ( iFontFamily )
         {
         delete iFontFamily;
--- a/svgtopt/SVG/SVGImpl/src/SVGImageElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGImageElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -29,7 +29,7 @@
 
 #include <imcvcodc.h>
 
-//#include <caf/caf.h>
+#include <caf/caf.h>
 
 const TInt  KErrNoAttributeSet  = -1;
 #define KSVGWAITFORIMAGEDOWNLOAD 1
--- a/svgtopt/SVG/SVGImpl/src/SVGSetElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGSetElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -151,9 +151,16 @@
         case KSvgTypeTransform:
             break;
         case KSvgTypeColor:
+            iEndInt = iToInt;
+            iTargetElement->SetAttributeIntL( iAttrId, iToInt );
+            break;
         case KSvgTypeTextAnchor:
         case KSvgTypeInteger:
+            iEndInt = iToInt;
+            iTargetElement->SetAttributeIntL( iAttrId, iToInt );
         case KSvgTypeVisibility:
+            iEndInt = iToInt;
+            iTargetElement->SetAttributeIntL( iAttrId, iToInt );
         case KSvgTypeDisplay:
             iEndInt = iToInt;
             iTargetElement->SetAttributeIntL( iAttrId, iToInt );
--- a/svgtopt/SVG/SVGImpl/src/SVGTextElementImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGTextElementImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -2885,7 +2885,12 @@
     		//SetFontFamilyL(_L("NokiaSansWide"));
     		if(!aReturn)
     		    {
-	            delete lNewFontDoc;
+    		      if(lNewFontDoc)
+    		        {
+    		            delete lNewFontDoc;
+                        lNewFontDoc = NULL;  
+    		        }
+    		      
     		    }
     		return ETrue;
     	}
@@ -2899,6 +2904,7 @@
     }
 
     delete lNewFontDoc;
+    lNewFontDoc = NULL;
     return EFalse;
 }
 
--- a/svgtopt/SVG/SVGImpl/src/SVGTokenizer.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVG/SVGImpl/src/SVGTokenizer.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -305,12 +305,11 @@
         TLex lex( decimalString );
         // Specify the decimal seperator, instead of using
         // locale specific seperator.
-        if(lex.Val( aValue, '.' )== KErrNone)
-            {
-            tokenizer.SkipWhiteSpace();
-            aRemainder.Set( tokenizer.Remainder() );
-            return ETrue;
-            }
-         }
+        lex.Val( aValue, '.' );
+        
+        tokenizer.SkipWhiteSpace();
+        aRemainder.Set( tokenizer.Remainder() );
+        return ETrue;
+        }
     return EFalse;
     }
--- a/svgtopt/SVGEngineJI/BWINSCW/SVGEngineJIU.def	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVGEngineJI/BWINSCW/SVGEngineJIU.def	Wed Sep 01 12:20:46 2010 +0100
@@ -87,5 +87,4 @@
 	?SvgRenderingSurfaceGetHeight@CSvgJavaInterfaceImpl@@QAEHH@Z @ 86 NONAME ; int CSvgJavaInterfaceImpl::SvgRenderingSurfaceGetHeight(int)
 	?SvgRenderingSurfaceGetWidth@CSvgJavaInterfaceImpl@@QAEHH@Z @ 87 NONAME ; int CSvgJavaInterfaceImpl::SvgRenderingSurfaceGetWidth(int)
 	?NewL@CSvgJavaInterfaceImpl@@SAPAV1@AAVTFontSpec@@@Z @ 88 NONAME ; class CSvgJavaInterfaceImpl * CSvgJavaInterfaceImpl::NewL(class TFontSpec &)
-	?SvgEngineRenderDocument@CSvgJavaInterfaceImpl@@QAEXHHIIM@Z @ 89 NONAME ; void CSvgJavaInterfaceImpl::SvgEngineRenderDocument(int, int, unsigned int, unsigned int, float)
 
--- a/svgtopt/SVGEngineJI/eabi/SVGEngineJIU.def	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVGEngineJI/eabi/SVGEngineJIU.def	Wed Sep 01 12:20:46 2010 +0100
@@ -94,5 +94,4 @@
 	_ZTV10CJavaError @ 93 NONAME ; #<VT>#
 	_ZTV21CSvgJavaInterfaceImpl @ 94 NONAME ; #<VT>#
 	_ZN21CSvgJavaInterfaceImpl4NewLER9TFontSpec @ 95 NONAME
-	_ZN21CSvgJavaInterfaceImpl23SvgEngineRenderDocumentEiijjf @ 96 NONAME
 
--- a/svgtopt/SVGEngineJI/src/SvgJavaInterfaceImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/SVGEngineJI/src/SvgJavaInterfaceImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -241,34 +241,6 @@
 	*/
 }
 
-/*
- * M2G: SvgEngineRenderDocument() overloaded to pass the CSvgtBitmap object to SvgEngine
- */
-EXPORT_C void CSvgJavaInterfaceImpl::SvgEngineRenderDocument( 
-    SvgEngineHandle aEngineHandle, SvgDocumentHandle aDocumentHandle, 
-    SvgtBitmapHandle aSurfaceHandle, SvgtBitmapHandle aSurfaceMaskHandle, 
-    TReal32 aCurrentTime ) 
-    {
-    CSvgEngineInterfaceImpl::iFileIsLoaded = ETrue;
-
-    SetDocument( (CSvgEngineImpl*)aEngineHandle, (CSvgDocumentImpl*)aDocumentHandle );
-
-    // GfxContext creation
-    TRAPD(error, SetGdiContextL( (CSvgEngineImpl*)aEngineHandle, (CSvgtBitmap*)aSurfaceHandle ) );
-    if ( error != KErrNone )
-       {
-       // ignore trap error
-       }
-
-    //this udpates things like Viewport with whatever preserveAspectRatio and widths are set
-    //InitializeEngine((CSvgEngineImpl*)aEngineHandle);
-
-    if ( ((CSvgtBitmap*)aSurfaceMaskHandle) != NULL)
-    GenerateMask((CSvgtBitmap*)aSurfaceMaskHandle);
-
-    RenderFrame( (CSvgEngineImpl*)aEngineHandle, (TUint)(aCurrentTime * 1000) );
-    }
-
 /**
  *
  */
@@ -1355,13 +1327,13 @@
                 {
                 if(lSvgAttrId == KCSS_ATTR_FONTSIZE)
                     {
-                   // if(lValue != KErrNotFound)
-                    //    {
+                    if(lValue != KErrNotFound)
+                        {
                         // font is internally considered to be a float.
                         TReal32 lValue = GetElementFloatAttribute((CSvgElementImpl*)aElementHandle,lSvgAttrId);
                         return short (lValue) ;
-                    //    }
-                    //return KInvalidEnumAttribute;
+                        }
+                    return KInvalidEnumAttribute;
                     }
                 TInt lResult = GetEnumAttribute((CSvgElementImpl*)aElementHandle, lSvgAttrId , lValue);
                 if(lResult == KErrNotFound)
@@ -2681,43 +2653,37 @@
 */
 TInt CSvgJavaInterfaceImpl::SvgStringtoEnumerationMappingSVGtoJSR(const TInt aAttributeId , TPtrC16 aValue)
 {
-    TInt attribVal = KErrNotFound;
-    
     switch(aAttributeId)
     {
     case KCSS_ATTR_FILLRULE:
             {
             if(aValue == _L("evenodd"))
-                attribVal = FILL_RULE_EVENODD;
-            else if(aValue == _L("nonzero"))
-                attribVal = FILL_RULE_NONZERO;
+            return FILL_RULE_EVENODD;
+            if(aValue == _L("nonzero"))
+            return FILL_RULE_NONZERO;
             }
-            break;
     case KCSS_ATTR_STROKE_LINECAP:
             {
             if(aValue == _L("butt"))
-                attribVal = STROKE_LINECAP_BUTT;
-            else if(aValue == _L("round"))
-                attribVal = STROKE_LINECAP_ROUND;
-            else if(aValue == _L("square"))
-                attribVal = STROKE_LINECAP_SQUARE;
+            return STROKE_LINECAP_BUTT;
+            if(aValue == _L("round"))
+            return STROKE_LINECAP_ROUND;
+            if(aValue == _L("square"))
+            return STROKE_LINECAP_SQUARE;
             }
-            break;
-    case KCSS_ATTR_STROKE_LINEJOIN:
+
+        case KCSS_ATTR_STROKE_LINEJOIN:
+
             {
             if(aValue == _L("miter"))
-                attribVal = STROKE_LINEJOIN_MITER;
-            else if(aValue == _L("round"))
-                attribVal = STROKE_LINEJOIN_ROUND;
-            else if(aValue == _L("bevel"))
-                attribVal = STROKE_LINEJOIN_BEVEL;
+            return STROKE_LINEJOIN_MITER;
+            if(aValue == _L("round"))
+            return STROKE_LINEJOIN_ROUND;
+            if(aValue == _L("bevel"))
+            return STROKE_LINEJOIN_BEVEL;
             }
-            break;
-    default: 
-        attribVal = KErrNotFound;
-    
+        default: return KErrNotFound;
     }
-    return attribVal;
 }
 /**
 * This maps the Enumeration from SVG to JSR.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/BWINSCW/NPSVGTPLUGINU.DEF	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,5 @@
+EXPORTS
+	?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z @ 1 NONAME ; struct TImplementationProxy const * ImplementationGroupProxy(int &)
+	?InitializeFuncs@@YAFPAU_NPPluginFuncs@@@Z @ 2 NONAME ; short InitializeFuncs(struct _NPPluginFuncs *)
+	?NPP_Shutdown@@YAXXZ @ 3 NONAME ; void NPP_Shutdown(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/eabi/npSvgtPluginU.DEF	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,11 @@
+EXPORTS
+	_Z24ImplementationGroupProxyRi @ 1 NONAME
+	_Z12NPP_Shutdownv @ 2 NONAME
+	_Z15InitializeFuncsP14_NPPluginFuncs @ 3 NONAME
+	_ZTI11CSvgtPlugin @ 4 NONAME ; #<TI>#
+	_ZTI18CSvgtPluginControl @ 5 NONAME ; #<TI>#
+	_ZTI19CSvgtPluginEcomMain @ 6 NONAME ; #<TI>#
+	_ZTV11CSvgtPlugin @ 7 NONAME ; #<VT>#
+	_ZTV18CSvgtPluginControl @ 8 NONAME ; #<VT>#
+	_ZTV19CSvgtPluginEcomMain @ 9 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/group/SVGTPluginS60.pkg	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,48 @@
+;
+; Copyright (c) 2009 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:
+;
+;
+; Installation file for MFP application
+;
+;Languages
+&EN
+;
+; UID is the app's UID
+;
+#{"SVGTPlugin"},(0x101F86DF),1,0,0,TYPE=SISOPTION
+;
+;Supports Series 60 v 1.1
+;This line indicates that this installation is for the Series 60 platform v0.9
+;This line must appear _exactly_ as shown below in the sis file
+;If this line is missing or incorrect, the sis file will not be able
+;to be installed on Series 60 v0.9 platforms
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+;
+; Two files to install
+;
+"\epoc32\release\thumb\urel\npSvgtPlugin.dll" -"!:\apps\plugin\npSvgtPlugin.dll"
+
+"\Epoc32\release\thumb\urel\gfx2d.dll" -"!:\system\libs\gfx2d.dll"
+
+"\Epoc32\release\thumb\urel\svgengine.dll" -"!:\system\libs\svgengine.dll"
+
+"\Epoc32\release\thumb\urel\SVGRECOG.MDL" -"!:\system\recogs\SVGRECOG.MDL"
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/group/SVGTPluginS60Ecom.mmp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,75 @@
+/*
+* 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:  This is the .mmp for building Ecom style SVGT Plugin for
+ *		  the Series60 Platform.
+ *
+*/
+
+ 
+#include <platform_paths.hrh>
+
+TARGET npsvgtplugin.dll
+
+TARGETTYPE      PLUGIN
+
+UID             0x10009D8D 0x101F86DF
+
+CAPABILITY 	CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+// Defined for audio support
+
+//deffile generation
+#if defined( ARMCC )
+deffile ../eabi/npSvgtPlugin.DEF
+#else
+deffile ../BWINSCW/NPSVGTPLUGIN.DEF
+#endif
+
+SOURCEPATH 	../src
+SOURCE Svgtpluginmain.cpp
+SOURCE Svgtplugin.cpp
+SOURCE Svgtplugindllapi.cpp
+SOURCE SvgtPluginControl.cpp
+
+SOURCE VolumeKeyListener.cpp
+SOURCE RepositoryVolumeListener.cpp
+
+USERINCLUDE 	../inc
+
+// This is a SYSTEMINCLUDE macro containing the middleware
+// layer specific include directories
+APP_LAYER_SYSTEMINCLUDE
+
+SYSTEMINCLUDE 	/epoc32/include/libc
+SYSTEMINCLUDE   /epoc32/include/ecom
+SYSTEMINCLUDE   /epoc32/include/http 
+
+SOURCEPATH      ../resource/s60
+
+START RESOURCE  101F86DF.rss
+TARGET npsvgtplugin.rsc
+END
+
+LIBRARY euser.lib efsrv.lib cone.lib
+LIBRARY eikcore.lib fbscli.lib gdi.lib
+LIBRARY svgengine.lib
+LIBRARY HWRMLightClient.lib
+//LIBRARY pluginadapterutil.lib
+LIBRARY ecom.lib
+
+LIBRARY centralrepository.lib
+LIBRARY remconcoreapi.lib
+LIBRARY remconinterfacebase.lib
+LIBRARY FeatMgr.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/group/bld.inf	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2002 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:  This is a build file that builds SVGTPlugin alone
+*
+*/
+
+
+//Platforms listed are not built by SVGTPlugin
+PRJ_PLATFORMS
+DEFAULT 
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+#ifdef __SERIES60_NATIVE_BROWSER
+SVGTPluginS60Ecom.mmp
+#endif // __SERIES60_NATIVE_BROWSER
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/inc/MRepositoryVolumeObserver.h	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2006 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:  Definition of the interface MRepositoryVolumeObserver used to
+*                observer events from CRepositoryVolumeListener
+*
+*/
+
+
+//
+// JRT 22_09_04
+// Version 1.0 release.
+
+#ifndef REPOSITORYVOLUMEOBSERVER_H
+#define REPOSITORYVOLUMEOBSERVER_H
+
+class MRepositoryVolumeObserver
+{
+    public:
+        virtual void VolumeChanged(TInt aNewValue) = 0;
+};
+
+#endif  //REPOSITORYVOLUMEOBSERVER_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/inc/RepositoryVolumeListener.h	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2006 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:  AO that completes on a change in the volume property.  Used for 
+*                the new Central Repository Server.  Used in EKA2 builds only
+*
+*/
+
+
+//
+#ifndef REPOSITORYVOLUMELISTENER_H
+#define REPOSITORYVOLUMELISTENER_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <e32property.h>
+
+//
+// for emulator max volume = 65535
+#define WINS_DEFAULT_VOLUME 43690
+
+//
+// For HW max volume = 9
+#define HW_DEFAULT_VOLUME 6
+
+#include <centralrepository.h>
+
+class MRepositoryVolumeObserver;
+
+NONSHARABLE_CLASS( CRepositoryVolumeListener ) : public CActive
+	{
+public:
+	enum TPropertyWatchState
+    	{
+    	EConnected = 1,
+    	EUnableToConnect
+    	};
+	
+	static CRepositoryVolumeListener* NewL(MRepositoryVolumeObserver* aObserver);
+    virtual ~CRepositoryVolumeListener();
+    TInt GetCurrentVolume();
+                                   
+private:
+	CRepositoryVolumeListener();
+	void ConstructL(MRepositoryVolumeObserver* aObserver);
+	TInt GetDefaultVolume();
+
+    //From CActive	
+    void RunL();	
+    void DoCancel();	
+	
+
+	CRepository* iCenRepos;
+
+    TPropertyWatchState iState;
+	
+    MRepositoryVolumeObserver* iObserver;
+	};
+
+#endif  //REPOSITORYVOLUMELISTENER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/inc/SvgtPlugin.hrh	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,39 @@
+/*
+* 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:  SVGT Plugin Implementation source file
+ *
+*/
+
+#ifndef SVGTPLUGIN_HRH
+#define SVGTPLUGIN_HRH
+
+enum TSVGTPluginCommandIds
+    {
+		ESVGTPluginPause = 1,
+		ESVGTPluginResume,
+		ESVGTPluginReset,
+		ESVGTPluginReplay,
+		ESVGTPluginZoomSubMenu,
+		ESVGTPluginRotateSubMenu,
+		ESVGTPluginZoomIn,
+		ESVGTPluginZoomOut,
+		ESVGTPluginRotate90,
+		ESVGTPluginRotate180,
+		ESVGTPluginRotate270
+    };
+
+
+
+
+#endif      // SVGTPLUGIN_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/inc/Svgtplugin.h	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,333 @@
+/*
+* 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:  SVGT Plugin Implementation header file
+ *
+*/
+
+
+#ifndef __SVGTPLUGIN_H
+#define __SVGTPLUGIN_H
+
+#include <e32std.h>
+#include <coecntrl.h>
+#include <coemain.h>
+#include <fbs.h>
+#include <barsread.h>
+
+#include <hwrmlight.h>
+//SVGT Engine interface
+#include <SVGRequestObserver.h>
+#include <SVGEngineInterfaceImpl.h>
+#include <SVGHyperlinkListener.h>
+#include "SVGListener.h"
+
+#include <npupp.h>
+#include <pluginadapterinterface.h>
+
+#include <cecombrowserplugininterface.h>
+
+#include "MRepositoryVolumeObserver.h"
+
+class   CSvgtPlugin;
+class   CSvgEngineInterfaceImpl;
+class   CFbsBitmap;
+
+class   CVolumeKeyListener;
+class   CRepositoryVolumeListener;
+/******************************************
+This class is specific to ECom Style Plugin.
+This is used for passing plugin specific initialization information to and from
+browser.
+*******************************************/
+
+IMPORT_C NPError InitializeFuncs(NPPluginFuncs* aPpf);
+
+const TInt KSvgtPluginImplementationValue = 0x101F8823; //implementation id Svgt Ecom Plugin
+
+class CSvgtPluginEcomMain :  public CEcomBrowserPluginInterface
+	{
+    public: // Functions from base classes
+        static CSvgtPluginEcomMain* NewL(TAny* aInitParam);
+        ~CSvgtPluginEcomMain();
+        NPNetscapeFuncs* Funcs() {return iNpf;}
+    private:
+        CSvgtPluginEcomMain(NPNetscapeFuncs* aNpf);
+        void ConstructL(NPPluginFuncs* aPluginFuncs);
+        NPNetscapeFuncs* iNpf;
+	};
+
+/****************************************
+Class CSvgtPluginControl
+Class to Handle UI related actions
+****************************************/
+
+class CSvgtPluginControl : public CCoeControl, public MCoeControlObserver,
+                           public MPluginNotifier, public MHWRMLightObserver
+
+    {
+public:
+    ~CSvgtPluginControl();
+    void ConstructL(CSvgtPlugin *aPlugin, const CCoeControl *aParentControl);
+    TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+    void FocusChanged(TDrawNow aDrawNow);
+private: // new - possible notifications
+#ifndef ER5
+    TCoeInputCapabilities InputCapabilities() const;
+#endif
+    void ApplicationFocusChanged(TBool aInFocus);
+    void SystemNotification();
+    void Draw(const TRect& aRect) const;
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+    void SizeChanged();
+    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
+private: // in MPluginNottify in S60
+    TInt NotifyL(TNotificationType aCallType, void* aParam);
+public: //From MEikMenuObserver
+
+
+public:
+    void LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus);
+	CHWRMLight* iLightObserver; 
+    void AsFile(const TDesC& fname,NPStream* stream);
+    TBool IsAsFileCalled();
+    TDesC& GetFilename();
+
+private:
+    void UpdatePointer(TInt aShiftX =0 , TInt aShiftY=0);
+
+public:
+	TSize iContentDimension;
+private:
+    CSvgtPlugin *iPlugin;
+    TInt iPointerDx, iPointerDy;// increment decrement
+    TInt iPointerX, iPointerY;//actual Pointer position with respect to Document.
+    TBool iAsFileCalled;
+    TBuf<256> iFilename;
+    TBool iShowCursor;
+	TInt iXPosAtMouseDown;
+    TInt iYPosAtMouseDown;
+	TKeyEvent iPreviousScanCode; //Introduced to differentiate long keypress and short key press
+
+    };
+
+
+/*******************************************************
+Class CSvgtPlugin
+********************************************************/
+
+class CSvgtPlugin : public CBase,
+                    public MSvgRequestObserver,
+                    public MSvgHyperlinkListener,
+                    public MSvgViewPortListener
+                    ,
+                    public MRepositoryVolumeObserver
+    {
+	struct ImageInfo
+		{
+		TBuf<256>						iImageRefUri;
+		TBool							iImagePendingOps;
+		};
+		
+public:
+    static CSvgtPlugin* NewL(NPP anInstance);
+    ~CSvgtPlugin();
+    void ConstructL(NPP anInstance);
+    void PrepareToExitL();
+    CSvgtPluginControl* Control();
+    void GetSizeOfRenderBuffer(TSize& aSize);
+    NPP Instance();
+    void SetWindowL(const NPWindow  *aWindow,const TRect& aRect);
+    /**
+     * ResizeWindow This function set width & height to the browser
+     * and tell brower to resize.
+     *
+     * @since S60 3.1
+     * @param TInt width that needed to be used.
+     * @param TInt height that needed to be used.
+     * @return void
+     */
+    void ResizeWindow(TInt width, TInt height);
+
+    /**
+     * AdjustDimention
+     *
+     * @since S60 3.1
+     * @return ETrue if dimention needs to be changed. EFalse if dimention
+     * remains the same.
+     */
+     TBool AdjustDimention( TBool aWidthInPercentage, 
+             TBool aHeightInPercentage );
+
+    /**
+     * This function retrieves attributes from HTML that is
+     * passed in by browser engine.
+     *
+     * @since S60 3.1
+     * @param NPMIMEType
+     * @param NPP
+     * @param uint16
+     * @param DesC16Array* attribute names
+     * @param CDesC16Array* attribute values
+     * @param NPSavedData*
+     * @return NPError
+     */
+     NPError SvgPluginNew(NPMIMEType pluginType, NPP instance, uint16 mode,
+        CDesC16Array* argn, CDesC16Array* argv, NPSavedData* saved);
+
+public: // implements MSvgRequestObserver
+
+        void    UpdateScreen();
+
+        TBool   ScriptCall( const TDesC& aScript,
+                                    CSvgElementImpl* aCallerElement );
+
+        TInt FetchImage( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
+		
+		TInt FetchFont( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
+		
+        void    GetSmilFitValue(TDes& aSmilValue);
+
+        void    UpdatePresentation(const TInt32&  aNoOfAnimation);
+        // MHyperlinkListener interface methods
+        TBool   LinkEntered( const TDesC& aUri );
+        TBool   LinkExited( const TDesC& aUri );
+        TBool   LinkActivated( const TDesC& aUri );
+        TBool   LinkActivatedWithShow(const TDesC& aUri,const TDesC& aShow);
+        //MSvgViewPortListener method
+        void GetViewPort(TInt getWidth, TInt getHeight,TBool isWidthInPer, TBool isHeightInPer, TInt &setWidth, TInt &setHeight);
+
+        //  From MRepositoryVolumeObserver
+        void VolumeChanged(TInt aNewValue);
+        
+		TBool   LoadSvgFile( const TDesC& aFilename );
+		
+private:
+
+        void FetchImageL(const TDesC&  aUri);       
+public:
+    CFbsBitmap *                iRenderBuffer;
+	TSize						iControlSize;
+ 	TBool          				iSetWindowCalled;
+ 	TBool                       iStartCalled;
+    CSvgEngineInterfaceImpl *    iSvgModule;
+    TInt iRenderWidth;
+    TInt iRenderHeight;
+    TInt iObjectWidth;
+    TInt iObjectHeight;
+    NPWindow iCurrentWindow;
+
+    TBool   iTotalNumerOfAnimation, iStaticContent;
+	
+	/*Image Rendering*/
+	RPointerArray<HBufC>	        iImageUrlInfoList;
+
+    TInt                iViewPortWidth;
+    TInt                iViewPortHeight;
+private:
+
+    CVolumeKeyListener* iKeyListener;
+    CRepositoryVolumeListener* iRepositoryListener;
+    
+    MPluginAdapter*             iPluginAdapter;
+
+    //Control of UI for SVGT Engine
+    CCoeControl             *   iParentControl;
+    CSvgtPluginControl      *   iControl;
+    NPP                         iInstance;
+    TBool                       iIsRenderBufferDefined;
+    TInt                        iResourceFileIndex;
+    TBool						iExpectedDefaultSize;
+    TBool						iAdjusted;
+    // Flag indicates whether object height is specified 
+    // as percentage value
+    TBool                       iObjHeightInPercentage;
+    // Flag indicates whether object width is specified 
+    // as percentage value    
+    TBool                       iObjWidthInPercentage;
+    
+    //While parsing are object width height are specified or not
+    TBool   iObjectWidthSpecified;
+    TBool   iObjectHeightSpecified;
+    };
+
+
+/*********************************************************************************
+
+    Plugin API methods
+
+*/
+
+/**
+  * Create a plugin.
+  */
+NPError SvgtPluginNewp(NPMIMEType pluginType, NPP instance, uint16 mode, CDesCArray* argn, CDesCArray* argv, NPSavedData* saved);
+
+/**
+  * Destroy a plugin.
+  */
+NPError SvgtPluginDestroy(NPP instance, NPSavedData** save);
+
+/**
+  * This is the parent window of a plugin.
+  */
+NPError SvgtPluginSetWindow(NPP instance, NPWindow* window);
+
+/**
+  * A new data stream has been created for sending data to the plugin.
+  */
+NPError SvgtPluginNewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
+
+/**
+  * A data stream has been terminated.
+  */
+NPError SvgtPluginDestroyStream(NPP instance, NPStream* stream, NPReason reason);
+
+/**
+  * A data stream has been fully saved to a file.
+  */
+void SvgtPluginAsFile(NPP instance, NPStream* stream, const TDesC& fname);
+
+/**
+  * Return the maximum number of bytes this plugin can accept from the stream.
+  */
+int32 SvgtPluginWriteReady(NPP instance, NPStream* stream);
+
+/**
+  * Receive more data - return number of bytes processed.
+  */
+int32 SvgtPluginWrite(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
+
+/**
+  * Generic hook to set values/attributes within the plugin.
+  */
+NPError SvgtPluginSetValue(NPP instance, NPNVariable variable, void *ret_value);
+
+/**
+  * Generic hook to get values/attributes from the plugin.
+  */
+NPError SvgtPluginGetValue(NPP instance, NPNVariable variable, void* *ret_value);
+
+/**
+  * Event
+  */
+int16 SvgtPluginEvent(NPP instance, void* event);
+
+
+void SvgtPluginURLNotify(NPP instance, const TDesC& url, NPReason reason, void* notifyData);
+
+void SvgtPluginPrint(NPP instance, NPPrint* platformPrint);
+
+#endif // __PLGPLUGIN_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/inc/VolumeKeyListener.h	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2006 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:  It completes on a change in the volume property.  Used for 
+*                the new Central Repository Server.  Used in EKA2 builds only
+*
+*/
+
+
+#ifndef VOLUMEKEYLISTENER_H
+#define VOLUMEKEYLISTENER_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <e32property.h>
+
+#include <centralrepository.h>
+#include<remconcoreapitargetobserver.h>    //for MRemConCoreApiTargetObserver
+#include<remconinterfaceselector.h>     //for CRemConInterfaceSelector
+#include<remconcoreapitarget.h>         //for CRemConCoreApiTarget
+
+//
+// for emulator max volume = 65535
+#define WINS_DEFAULT_VOLUME 43690
+
+//
+// For HW max volume = 9
+#define HW_DEFAULT_VOLUME 6
+
+class MRepositoryVolumeObserver;
+
+// DATA TYPES
+// Used for volume up/down events
+enum TVolumeControlCommands
+    {
+    EVolumeControlCmdVolumeUpByOne,
+    EVolumeControlCmdVolumeDownByOne
+    };
+
+NONSHARABLE_CLASS( CVolumeKeyListener ) : public CBase, 
+                                  public MRemConCoreApiTargetObserver
+    {
+public:
+    
+    static CVolumeKeyListener* NewL( MRepositoryVolumeObserver* aObserver );
+    virtual ~CVolumeKeyListener();
+    TInt GetCurrentVolume();
+    /**
+     * Function to add an observer
+     */
+    void SetObserver( MRepositoryVolumeObserver* aObserver ); 
+    
+private:
+    CVolumeKeyListener( MRepositoryVolumeObserver* aObserver );
+    void ConstructL();
+
+    //From MRemConCoreApiTargetObserver (remconcoreapitargetobserver.h)
+    void MrccatoCommand( TRemConCoreApiOperationId aOperationId, 
+                         TRemConCoreApiButtonAction aButtonAct );
+    
+    /**
+      * Handle repeat event
+      */
+    void HandleRepeatEvent();
+
+    /**
+    * Send play command to app UI or view.
+    * @since 3.1
+    */
+    void FilterAndSendCommand(TInt aCommandId);
+   /**
+    * Callback for timer
+    */
+    static TInt TimerCallback(TAny* aPtr);
+
+private:
+    CRemConCoreApiTarget* iInterfaceSelector;
+    CRemConInterfaceSelector* iSelector;
+    CRepository* iCenRepos;
+    CPeriodic* iTimer;                                   // owned
+    TInt iCommandId;
+    // Stores the observers.
+    MRepositoryVolumeObserver* iObserver;
+    };
+
+#endif  //VOLUMEKEYLISTENER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/loc/npSVGTPlugin.loc	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,145 @@
+/*
+* 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:
+*
+*/
+
+
+// r: GSM/CDMA
+// v: 
+// i: LOCALISATION_TARGET = S90
+
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Pause" is used to pause 
+//d: current svg animation
+#define SVGT_ME_MEN001_PAUSE "Pause"
+
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Resume" is used to resume playing of  
+//d: paused svg animation
+#define SVGT_ME_MEN001_RESUME "Resume"
+
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Reset" is used to reset current  
+//d: svg animation
+#define SVGT_ME_MEN001_RESET "Reset"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Replay" is used to play the  
+//d: current svg animation from the start.
+#define SVGT_ME_MEN001_REPLAY "Replay"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Zoom" is used to pop out a 
+//d: cascade menu for "Zoom In" and "Zoom Out" options
+#define SVGT_ME_MEN001_ZOOM "Zoom"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuHdr
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Rotate" is used to pop out a 
+//d: cascade menu for "Rotate by 90°", "Rotate by 180°" and "Rotate by 270°" options
+#define SVGT_ME_MEN001_ROTATE "Rotate"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuCmd
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "In" is used to Zoom In to the 
+//d: current svg content
+#define SVGT_ME_MEN001_ZOOM_IN "In"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuCmd
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "Out" is used to Zoom Out of the 
+//d: current svg content
+#define SVGT_ME_MEN001_ZOOM_OUT "Out"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuCmd
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "90°" is used to display current
+//d: svg content by rotating it by 90 degrees
+#define SVGT_ME_MEN001_ROTATE_90 "90°"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuCmd
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "180°" is used to display current
+//d: svg content by rotating it by 180 degrees
+#define SVGT_ME_MEN001_ROTATE_180 "180°"
+
+//b: n/a
+//e: n/a
+//f: n/a
+//s: SVG-MEN001
+//w: S90MenuCmd
+//d: This is the menu command in the Svg Browser plugin. The Menu appears  
+//d: when the user taps and holds the stylus for predefined time on the 
+//d: svg display area in the browser window. "270°" is used to display current
+//d: svg content by rotating it by 270 degrees
+#define SVGT_ME_MEN001_ROTATE_270 "270°"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/resource/s60/101F86DF.rss	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,61 @@
+/*
+* 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:   Registry file for Ecom style SVGT Plugin.
+*
+*/
+
+
+
+
+
+#include "registryinfo.rh"
+
+//  RESOURCE DEFINITIONS 
+// -----------------------------------------------------------------------------
+//   
+// Registry info
+// The UIDs for the filters implemented in this DLL
+//
+// -----------------------------------------------------------------------------
+//
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x101F86DF; // should match the name of the file. 
+	                      // 3-d Uid of associeted plugin dll (declared in the dll mmp file)
+	                      
+	interfaces=
+		{
+		INTERFACE_INFO
+			{
+			interface_uid =  0x101F8810; // identifies plugin type (used by ECom)
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = 0x101F8823;  // specify specific implementation (must
+					                                  // match an implementation entry in the dll
+					version_no = 1;
+					display_name = "npsvgtplugin.dll;SVGT Plugin";// file name; plugin's name
+					default_data = "image/svg+xml;svg,svgb,svgz,dcf;SVG Content";
+									// suppored mime types  
+									// mime Extensions
+									// and mime descriptions
+					opaque_data = "Scalable Vector Graphics Tiny Model Plugin"; // plugin's description
+					}
+				};
+			}
+		};
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/resource/s90/npSvgtplugin.rss	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* 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:  This file contains all the resources for the SVGT Plugin.
+*
+*/
+
+
+//  RESOURCE IDENTIFIER
+NAME    SVGT 
+
+//  INCLUDES
+#include <eikon.rh>
+#include "SvgtPlugin.hrh"
+#include <npSvgtPlugin.loc>
+
+RESOURCE RSS_SIGNATURE { }
+
+RESOURCE TBUF { buf=""; }
+
+RESOURCE EIK_APP_INFO
+{
+}
+
+RESOURCE MNBUT r_svgtplugin_menu_button
+{
+   popout = r_svgtplugin_menu_pane;
+}
+
+RESOURCE MENU_PANE r_svgtplugin_menu_pane
+    {
+    items=
+        {
+        MENU_ITEM { command=ESVGTPluginPause; txt=SVGT_ME_MEN001_PAUSE; },
+        MENU_ITEM { command=ESVGTPluginResume; txt=SVGT_ME_MEN001_RESUME; },
+	  MENU_ITEM { command=ESVGTPluginReset; txt=SVGT_ME_MEN001_RESET; },
+	  MENU_ITEM { command=ESVGTPluginReplay; txt=SVGT_ME_MEN001_REPLAY; },
+        MENU_ITEM { command=ESVGTPluginZoomSubMenu; txt=SVGT_ME_MEN001_ZOOM; cascade=r_svgtplugin_zoom_cascaded_menu; },
+        MENU_ITEM { command=ESVGTPluginRotateSubMenu; txt=SVGT_ME_MEN001_ROTATE; cascade=r_svgtplugin_rotate_cascaded_menu;}
+        };
+    }
+
+RESOURCE MENU_PANE r_svgtplugin_zoom_cascaded_menu
+    {
+    items =
+        {
+        MENU_ITEM { command = ESVGTPluginZoomIn; txt = SVGT_ME_MEN001_ZOOM_IN; },
+        MENU_ITEM { command = ESVGTPluginZoomOut;  txt = SVGT_ME_MEN001_ZOOM_OUT; }
+        };
+    }
+
+RESOURCE MENU_PANE r_svgtplugin_rotate_cascaded_menu
+    {
+    items =
+        {
+        MENU_ITEM { command = ESVGTPluginRotate90;  txt = SVGT_ME_MEN001_ROTATE_90;},
+        MENU_ITEM { command = ESVGTPluginRotate180; txt = SVGT_ME_MEN001_ROTATE_180; },
+        MENU_ITEM { command = ESVGTPluginRotate270;  txt = SVGT_ME_MEN001_ROTATE_270; }
+        };
+    }
+ 
+     
+// End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/RepositoryVolumeListener.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,150 @@
+/*
+* Copyright (c) 2006 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:  AO that completes on a change in the volume property.  Used for 
+*                the new Central Repository Server.  Used in EKA2 builds only
+*
+*/
+
+
+//#include <SharedDataClient.h>
+
+
+#include "RepositoryVolumeListener.h"
+//#include <SharedDataKeys.h> //include this file when KSDUidMediaVolumeControl and KMediaVolume will be needed
+//#include "epocdebug.h"
+#include <browseruisdkcrkeys.h>
+#include "MRepositoryVolumeObserver.h"
+
+CRepositoryVolumeListener* CRepositoryVolumeListener::NewL(MRepositoryVolumeObserver* aObserver)
+    {
+    CRepositoryVolumeListener* self = new(ELeave) CRepositoryVolumeListener;
+    CleanupStack::PushL(self);
+    self->ConstructL(aObserver);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CRepositoryVolumeListener::CRepositoryVolumeListener() : CActive(CActive::EPriorityStandard)
+    {
+    iState = EUnableToConnect;
+    CActiveScheduler::Add(this) ; // add to active scheduler
+    }
+
+void CRepositoryVolumeListener::ConstructL(MRepositoryVolumeObserver* aObserver)
+    {
+    //
+    // Open a connection to the Central Repository...
+    iCenRepos = CRepository::NewL(KCRUidBrowser);
+
+    if ( iCenRepos->NotifyRequest(KBrowserMediaVolumeControl, iStatus) == KErrNone )
+        {
+        iState = EConnected;	
+        SetActive();
+        }
+    else
+        {
+        iState = EUnableToConnect;
+        }
+
+    iObserver = aObserver;
+    }
+
+CRepositoryVolumeListener::~CRepositoryVolumeListener()
+    {
+	Cancel();
+	delete iCenRepos;  // close the client session
+    }
+
+//
+// Get the current volume
+TInt CRepositoryVolumeListener::GetCurrentVolume()
+    {
+    TInt currentVolume = 0;
+
+    if ( iState == EUnableToConnect )
+        {
+    	//
+    	// Connection to CenRepos not available so return the default volume
+    	currentVolume = GetDefaultVolume();
+        }
+    else
+        {
+    	//
+    	// Get the current volume
+    	if ( iCenRepos->Get(KBrowserMediaVolumeControl, currentVolume) != KErrNone )
+            {
+            // Error retrieving value... return default value
+            //PLAYEROUTPUT("*ERROR* CRepositoryVolumeListener::GetCurrentVolume() - Unable to retreive volume value");
+            currentVolume = GetDefaultVolume();
+            }
+        }
+    
+    return currentVolume;
+    }
+
+//
+// Return the default volume in this case 2/3 of the max support by the system
+TInt CRepositoryVolumeListener::GetDefaultVolume()
+    {
+    TInt defaultVol = 0;
+
+    #if defined(__WINS__)
+        defaultVol = WINS_DEFAULT_VOLUME;
+    #else
+        defaultVol = HW_DEFAULT_VOLUME;
+    #endif
+
+    return defaultVol;
+    }
+
+void CRepositoryVolumeListener::DoCancel()
+    {
+    iCenRepos->NotifyCancel(KBrowserMediaVolumeControl);
+    }
+
+//
+// Activated when the watched value updates.
+void CRepositoryVolumeListener::RunL()
+    {
+    TInt currentVolume = 0;
+
+    if (EUnableToConnect == iState)
+        {
+        return;
+        }
+
+    //
+    // Get the current volume
+    if ( iCenRepos->Get(KBrowserMediaVolumeControl, currentVolume) == KErrNone )
+        {
+        //
+        // Inform the observer
+        iObserver->VolumeChanged(currentVolume);
+        if ( iCenRepos->NotifyRequest(KBrowserMediaVolumeControl, iStatus) == KErrNone )
+            {
+            SetActive();
+            }
+        else
+            {
+            iState = EUnableToConnect;
+            }
+        }
+    else
+        {
+        //
+        // error
+        iState = EUnableToConnect;		
+        }
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/SvgtPluginControl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,589 @@
+/*
+* 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:  SVGT Plugin Implementation source file
+ *
+*/
+
+#include <featmgr.h>
+#include <eikenv.h>
+#include <w32std.h>
+#include <e32base.h>
+#include <barsread.h>
+#include <SVGEngineInterfaceImpl.h>
+//#include <Svgengineinterface.h>
+#include <f32file.h>
+
+#include "Svgtplugin.h"
+
+#define SVGT_PLUGIN_DEVICE_KEY_0 48
+#define SVGT_PLUGIN_DEVICE_KEY_1 49
+#define SVGT_PLUGIN_DEVICE_KEY_2 50
+#define SVGT_PLUGIN_DEVICE_KEY_3 51
+#define SVGT_PLUGIN_DEVICE_KEY_4 52
+#define SVGT_PLUGIN_DEVICE_KEY_5 53
+#define SVGT_PLUGIN_DEVICE_KEY_6 54
+#define SVGT_PLUGIN_DEVICE_KEY_7 55
+#define SVGT_PLUGIN_DEVICE_KEY_8 56
+#define SVGT_PLUGIN_DEVICE_KEY_9 57
+#define SVGT_PLUGIN_DEVICE_KEY_ASTERIX 42
+
+
+void CSvgtPluginControl::ConstructL(CSvgtPlugin* aPlugin, const CCoeControl* aParentControl)
+    {
+    iAsFileCalled = EFalse;
+    iShowCursor = EFalse;
+    iPointerX = 5;
+    iPointerY = 5;
+    iPlugin=aPlugin;
+    this->CreateWindowL(aParentControl);
+    ActivateL();
+    EnableDragEvents();
+    iLightObserver = CHWRMLight::NewL(this);
+    }
+
+CSvgtPluginControl::~CSvgtPluginControl()
+    {
+	delete iLightObserver;
+    }
+
+void CSvgtPluginControl::Draw(const TRect& aRect) const
+    {
+    CWindowGc &gc = SystemGc();
+    if (iPlugin && iPlugin->iRenderBuffer !=NULL)
+        {
+        
+        // Fix for the iframe scrolling.
+    	TRect lCliprect;
+    	
+    	lCliprect.iTl.iY = iPlugin->iCurrentWindow.clipRect.top;
+    	lCliprect.iTl.iX = iPlugin->iCurrentWindow.clipRect.left;
+    	lCliprect.iBr.iY = iPlugin->iCurrentWindow.clipRect.bottom;
+    	lCliprect.iBr.iX = iPlugin->iCurrentWindow.clipRect.right;
+		
+		TSize lWindowSize(iPlugin->iCurrentWindow.width,iPlugin->iCurrentWindow.height);
+		
+		if(lWindowSize!=(lCliprect.Size()))
+			{
+			// Get the Abs(x,y) of the window and render with the size of the cliprect 
+			TPoint lpt(Abs(iPlugin->iCurrentWindow.x),Abs(iPlugin->iCurrentWindow.y ));
+			TRect lrect(lpt,lCliprect.Size());
+			gc.BitBlt( aRect.iTl,  (iPlugin->iRenderBuffer), lrect );
+			}
+        else
+        	{
+        	gc.BitBlt( aRect.iTl,  (iPlugin->iRenderBuffer), aRect );
+        	}
+        
+
+		if ( iShowCursor )
+			{
+	        TInt lX = iPointerX + aRect.iTl.iX;
+	        TInt lY = iPointerY + aRect.iTl.iY;
+	        TRect   csrh    ( lX - 2,
+	                          lY - 5,
+	                          lX + 2,
+	                          lY + 5 );
+	        TRect   csrv    ( lX - 5,
+	                          lY - 2,
+	                          lX + 5,
+	                          lY + 2 );
+	        gc.SetPenSize( TSize( 1, 1 ) );
+	        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+	        gc.SetBrushColor( TRgb( 0, 0, 0 ) );
+	        gc.SetPenColor( TRgb( 0, 0, 0 ) );
+	        gc.DrawRect( csrh );
+	        gc.DrawRect( csrv );
+	        csrh.Shrink( 1, 1 );
+	        csrv.Shrink( 1, 1 );
+	        gc.SetBrushColor( TRgb( 255, 225, 225 ) );
+	        gc.SetPenColor( TRgb( 255, 225, 225 ) );
+	        gc.DrawRect( csrh );
+	        gc.DrawRect( csrv );
+			}
+        }
+    }
+
+TInt CSvgtPluginControl::CountComponentControls() const
+    {
+    return 0;
+    }
+
+CCoeControl* CSvgtPluginControl::ComponentControl(TInt /*aIndex*/) const
+    {
+    return NULL;
+    }
+
+void CSvgtPluginControl::SizeChanged()
+    {
+    }
+
+#ifndef ER5
+TCoeInputCapabilities CSvgtPluginControl::InputCapabilities() const
+    {
+    return TCoeInputCapabilities(TCoeInputCapabilities::ENavigation);
+    }
+#endif
+
+void CSvgtPluginControl::HandleControlEventL(CCoeControl* /*aControl*/, TCoeEvent /*aEventType*/)
+    {
+    }
+
+void CSvgtPluginControl::FocusChanged(TDrawNow /*aDrawNow*/)
+    {
+    }
+
+TKeyResponse CSvgtPluginControl::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
+    {
+    TKeyResponse    retVal  = EKeyWasNotConsumed;
+    if( iPlugin->iSvgModule && iPlugin->iSvgModule->SvgDocument() )
+        {
+        if ( aType == EEventKeyUp )
+            {
+              iPointerDx = 0;
+              iPointerDy = 0;
+            if ( aKeyEvent.iScanCode == EStdKeyDevice3 ) // Center button of rocker key
+               	{
+               	iPlugin->iSvgModule->MouseUp( iPointerX, iPointerY );
+                retVal = EKeyWasConsumed;
+               	} 
+			if(iPreviousScanCode.iScanCode == SVGT_PLUGIN_DEVICE_KEY_0)
+				{
+				   if(!iPreviousScanCode.iRepeats) /*Short Key Press of 'Zero' Do Zoom Out*/
+					{
+					iPlugin->iSvgModule->Zoom(0.5f);
+                    iPlugin->iSvgModule->Redraw();
+					}
+				   else /*Long Key Press of 'Zero' Reset to Original View*/
+					{
+                    iPlugin->iSvgModule->OriginalView();
+                    iPlugin->iSvgModule->Redraw();
+					}
+					retVal = EKeyWasConsumed;
+
+				}
+			iPreviousScanCode.iRepeats	= 0;
+			iPreviousScanCode.iCode		= 0;
+			iPreviousScanCode.iScanCode	= 0;
+            }
+        else if ( aType == EEventKey )
+            {
+            retVal = EKeyWasConsumed;
+            // aKeyEvent.iScanCode does not recognize EStdKeyNkpAsterisk
+                switch ( aKeyEvent.iScanCode )
+                    {
+                case EStdKeyLeftArrow:
+                    iPointerDx -= 5;
+                    iPointerDy = 0;
+                    break;
+                case EStdKeyRightArrow:
+                    iPointerDx += 5;
+                    iPointerDy = 0;
+                    break;
+                case EStdKeyUpArrow:
+                    iPointerDx = 0;
+                    iPointerDy -= 5;
+                    break;
+                case EStdKeyDownArrow:
+                    iPointerDx = 0;
+                    iPointerDy += 5;
+                    break;
+                case EStdKeyDevice3:
+                    // Center button of rocker key
+                    iPlugin->iSvgModule->MouseDown( iPointerX, iPointerY );
+                    break;
+		       case EStdKeyHash: // Pause/Resume
+                    if(iPlugin->iSvgModule->CurrentState() == 0)
+                        iPlugin->iSvgModule->Stop();
+                    else if(iPlugin->iSvgModule->CurrentState() == 1)
+                        iPlugin->iSvgModule->Resume();
+                    break;
+
+                case SVGT_PLUGIN_DEVICE_KEY_5: //Zoom In
+                    iPlugin->iSvgModule->Zoom(2.0f);
+                    iPlugin->iSvgModule->Redraw();
+                    break;
+
+                case SVGT_PLUGIN_DEVICE_KEY_1: //Rotate ClockWise  90
+                    iPlugin->iSvgModule->Rotate( (float) (3.1415926/2), iContentDimension.iWidth/2, iContentDimension.iHeight/2);
+                    iPlugin->iSvgModule->Redraw();
+                    break;
+
+                case SVGT_PLUGIN_DEVICE_KEY_3: //Rotate Counter ClockWise  90
+                    iPlugin->iSvgModule->Rotate( (float) (-3.1415926/2), iContentDimension.iWidth/2, iContentDimension.iHeight/2);
+                    iPlugin->iSvgModule->Redraw();
+                    break;
+                case SVGT_PLUGIN_DEVICE_KEY_7: //Rotate ClockWise 45
+                    iPlugin->iSvgModule->Rotate( (float) (3.1415926/4), iContentDimension.iWidth/2, iContentDimension.iHeight/2);
+                    iPlugin->iSvgModule->Redraw();
+                    break;
+                case SVGT_PLUGIN_DEVICE_KEY_9: //Rotate Counter ClockWise  45
+                    iPlugin->iSvgModule->Rotate( (float) (-3.1415926/4), iContentDimension.iWidth/2, iContentDimension.iHeight/2);
+                    iPlugin->iSvgModule->Redraw();
+                    break;
+				case SVGT_PLUGIN_DEVICE_KEY_0:
+					iPreviousScanCode = aKeyEvent;
+					break;
+                default:
+                retVal = EKeyWasNotConsumed;
+                    }
+                }
+         
+         else if ( aType == EEventKeyDown)
+         	{
+            // Send the mousedown event for triggering any animation
+            // Since the EEventKey is not recieved when MSK is pressed,
+            // the mousedown doesn't occur on engine. Hence EEventKey 
+            // handled here
+            if ( aKeyEvent.iScanCode == EStdKeyDevice3 ) // Center button of rocker key
+            	{
+            	iPlugin->iSvgModule->MouseDown( iPointerX, iPointerY );
+            	retVal=EKeyWasConsumed;
+            	}
+           	}
+
+        if ( (iPointerDx != 0) || (iPointerDy != 0) )
+           {
+            UpdatePointer(iPointerDx,iPointerDy);
+           }
+        }
+    return retVal;
+    }
+
+
+void CSvgtPluginControl::AsFile(const TDesC& fname,NPStream* stream)
+    {
+    // -----------------------------------
+	// Check for image was requested
+    // -----------------------------------
+    if( iPlugin && iFilename.Length() > 0 )
+	{
+		TInt lFileSize = 0;
+        RFile lSvgFile;
+        CEikonEnv* iEikEnv = CEikonEnv::Static(); 
+        
+        // Attempt to open the file in read mode
+        User::LeaveIfError( lSvgFile.Open(iEikEnv->FsSession(),fname,EFileRead ) );
+        
+        // Save on cleanup stack
+        CleanupClosePushL( lSvgFile );
+        
+        // Get the size of the data to create read buffer
+        User::LeaveIfError( lSvgFile.Size(lFileSize) );
+        
+        // Create buffer that will contain the file data
+        HBufC8* lFileData = HBufC8::NewLC(lFileSize);
+        TPtr8 lFileDataPtr(lFileData->Des());
+        
+        // Read from the file
+        User::LeaveIfError( lSvgFile.Read(lFileDataPtr) );
+        
+        TInt index = reinterpret_cast<TInt>((stream->notifyData));       
+        
+        iPlugin->iSvgModule->AssignImageData(*(iPlugin->iImageUrlInfoList[index]), lFileData );
+		iPlugin->iSvgModule->Redraw();
+		
+		// The ownership of lFileData is with the respective Image Element.
+		CleanupStack::Pop(1);
+		CleanupStack::PopAndDestroy(&lSvgFile); // lSvgFile.Close()
+				
+		return;
+	}
+		
+	// Svg file
+    iFilename.Zero();
+    iFilename.Copy(fname);
+
+	if ( ( iPlugin && iPlugin->iSvgModule ) )
+        {
+        iPlugin->iSvgModule->Stop();
+        iPlugin->LoadSvgFile( iFilename );
+        // After loading the content, the width & height will be visible to plugin.
+        // It is time to adjust the size if needed.
+	    TBool widthInPercentage = EFalse;
+	    TBool heightInPercentage = EFalse;
+	    iContentDimension = iPlugin->iSvgModule->ContentDimensionsInPercentage();
+	    
+	    if(iContentDimension.iWidth == -1)
+	    {
+	        widthInPercentage = EFalse;
+	        if(iPlugin->iSvgModule->SvgDocument())
+	        {
+	            iContentDimension.iWidth = iPlugin->iSvgModule->GetViewportWidth(iPlugin->iSvgModule->SvgDocument());    
+	        }
+	        else
+	        {
+	            return;
+	        }
+	    }
+	    else
+	    {
+	        widthInPercentage = ETrue;
+	    }
+	    
+	    if(iContentDimension.iHeight == -1)
+	    {
+	        heightInPercentage = EFalse;
+            if(iPlugin->iSvgModule->SvgDocument())
+            {
+                iContentDimension.iHeight = iPlugin->iSvgModule->GetViewportHeight(iPlugin->iSvgModule->SvgDocument());    
+            }
+            else
+            {
+                return;
+            }
+	        
+	    }
+	    else
+	    {
+	        heightInPercentage = ETrue;
+	    }
+	    if(iPlugin->AdjustDimention(widthInPercentage, heightInPercentage))
+            {
+            // dimention change is needed so return and notify Browser.
+	        iAsFileCalled = ETrue;
+            return;
+            }
+
+	       	iPlugin->iSvgModule->Start();
+        }        
+        iAsFileCalled = ETrue;
+    }
+
+
+TBool CSvgtPluginControl::IsAsFileCalled()
+    {
+    return iAsFileCalled;
+    }
+
+TDesC& CSvgtPluginControl::GetFilename()
+    {
+    return iFilename;
+    }
+
+
+void CSvgtPluginControl::LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus)
+{
+     //TInt lState = iPlugin->iSvgModule->CurrentState();
+	if((aTarget == CHWRMLight::EPrimaryDisplay) || (aTarget == CHWRMLight::EPrimaryDisplayAndKeyboard))
+	{
+		if(aStatus == CHWRMLight::ELightOff)
+		{
+
+			if (iPlugin && iPlugin->iSvgModule)
+			{
+		    #ifdef _DEBUG
+		    RDebug::Printf("Backlight Off");
+            #endif //_DEBUG
+
+		    iPlugin->iSvgModule->Pause();
+		    }
+
+		}
+		else if(aStatus == CHWRMLight::ELightOn)
+		{
+
+			if (iPlugin && iPlugin->iSvgModule)
+		    {
+		    #ifdef _DEBUG
+		    RDebug::Printf("Backlight On");
+	        #endif //_DEBUG
+
+	        iPlugin->iSvgModule->Resume();
+			}
+	    }
+	}
+
+}
+/**
+* MOperaPluginNotifier methods
+* - Handle notifications browser
+*/
+TInt CSvgtPluginControl::NotifyL(TNotificationType aCallType, void* aParam)
+    {
+    if ( (iPlugin == NULL ) ||  ( iPlugin->iSvgModule == NULL ) )
+		{
+		return KErrNone;
+		}
+
+    if(aCallType == EApplicationFocusChanged)
+        {
+        TInt lState = iPlugin->iSvgModule->CurrentState();
+        TBool lInFocus =  (TBool) aParam;
+
+		if ( lInFocus )
+	    	{
+            // iShowCursor = ETrue;
+            if ( lState == 1 )
+            	{
+		        iPlugin->iSvgModule->Resume();
+            	}
+			DrawNow();
+	    	}
+	    else if ( !lInFocus )
+	    	{
+            //ShowCursor = EFalse;
+            if ( lState == 0 )
+            	{
+		        iPlugin->iSvgModule->Pause();
+            	}
+			DrawNow();
+	    	}
+        }
+    else if(aCallType == EPluginActivated)
+        {
+        iShowCursor = ETrue;
+        DrawNow();
+        }
+    else if(aCallType == EPluginDeactivated)
+        {
+        iShowCursor = EFalse;
+        DrawNow();
+        }
+    else if(aCallType == EPluginInvisible )
+        {
+        }
+    return KErrNone;
+    }
+
+
+void CSvgtPluginControl::ApplicationFocusChanged(TBool /*aInFocus*/)
+    {
+    }
+
+void CSvgtPluginControl::SystemNotification()
+    {
+    }
+
+void CSvgtPluginControl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+    {
+    
+    
+    if ( iPlugin->iSvgModule && iPlugin->iSvgModule->SvgDocument() )
+        {
+        iPointerDx = 0;
+        iPointerDy = 0;
+        
+        if(aPointerEvent.iType == TPointerEvent::EButton1Down)
+            {
+            if(aPointerEvent.iPosition.iX <=iPlugin->iRenderWidth && aPointerEvent.iPosition.iY <=iPlugin->iRenderHeight)
+                {
+                iPointerX = aPointerEvent.iPosition.iX;
+                iPointerY = aPointerEvent.iPosition.iY;
+
+				iXPosAtMouseDown = iPointerX;
+				iYPosAtMouseDown = iPointerY;
+				
+                iPlugin->iSvgModule->MouseDown( iPointerX, iPointerY );
+                UpdatePointer();
+                }
+            }
+        else if(aPointerEvent.iType == TPointerEvent::EButton1Up)
+            {
+            iPlugin->iSvgModule->MouseUp( iPointerX, iPointerY );
+            DrawDeferred();
+            }
+         else if (aPointerEvent.iType == TPointerEvent::EDrag)
+            {
+            if((iPointerX != aPointerEvent.iPosition.iX || iPointerY != aPointerEvent.iPosition.iY) && 
+            (aPointerEvent.iPosition.iX <=iPlugin->iRenderWidth && aPointerEvent.iPosition.iY <=iPlugin->iRenderHeight))
+                {
+                iPointerX = aPointerEvent.iPosition.iX;
+                iPointerY = aPointerEvent.iPosition.iY;
+
+                iPlugin->iSvgModule->MouseMove( iPointerX, iPointerY );
+                
+                UpdatePointer((iXPosAtMouseDown-iPointerX),(iYPosAtMouseDown-iPointerY));
+                }
+            }
+        }
+    }
+
+void CSvgtPluginControl::UpdatePointer(
+#ifdef __PEN_SUPPORT
+        TInt aShiftX , TInt aShiftY
+#else
+        TInt , TInt
+#endif        
+    )
+    {
+    #ifdef __PEN_SUPPORT
+     if(FeatureManager::FeatureSupported(KFeatureIdPenSupport))
+         {
+    if(aShiftX != 0 || aShiftY != 0 )
+    {
+    	iPlugin->iSvgModule->Pan(-aShiftX,-aShiftY);  
+    	iPlugin->iSvgModule->Redraw();  
+    	iXPosAtMouseDown = iPointerX;
+		iYPosAtMouseDown = iPointerY;	
+    	iPlugin->iSvgModule->MouseMove( iPointerX, iPointerY );
+    	User::After(10);
+        DrawNow();
+    }
+         }
+    #else//_PEN_SUPPORT
+     {
+     if (iPlugin->iRenderBuffer !=NULL)
+        {
+        // Due to the iframe scrolling the pointer will run out 
+        // of the iframe window when tried to pan inside the plugin. 
+        // So the control rect for the pointer is now the cliprect.
+        
+	//	TRect lControlRect(TSize(iPlugin->iViewPortWidth, iPlugin->iViewPortHeight));
+		TRect lControlRect;
+    	
+    	lControlRect.iTl.iY = iPlugin->iCurrentWindow.clipRect.top;
+    	lControlRect.iTl.iX = iPlugin->iCurrentWindow.clipRect.left;
+    	lControlRect.iBr.iY = iPlugin->iCurrentWindow.clipRect.bottom;
+    	lControlRect.iBr.iX = iPlugin->iCurrentWindow.clipRect.right;
+	
+        //X value
+        iPointerX += iPointerDx;
+        if ( iPointerX < 5 )
+            {
+            iPointerX = 5;
+            iPlugin->iSvgModule->Pan( 30, 0 );
+            //iPlugin->iSvgModule->Pan( -30, 0 );
+            iPlugin->iSvgModule->Redraw();
+            }
+      else if ( lControlRect.Width() - 5 < iPointerX )
+            {
+            iPointerX = lControlRect.Width() - 5;
+            iPlugin->iSvgModule->Pan( -30, 0 );
+            //iPlugin->iSvgModule->Pan( 30, 0 );
+            iPlugin->iSvgModule->Redraw();
+            }
+        //Y value
+        iPointerY += iPointerDy;
+        if ( iPointerY < 5 )
+            {
+            iPointerY = 5;
+            iPlugin->iSvgModule->Pan( 0, 30 );
+            //iPlugin->iSvgModule->Pan( 0, -30 );
+            iPlugin->iSvgModule->Redraw();
+            }
+      else if ( lControlRect.Height() - 5 < iPointerY )
+            {
+            iPointerY = lControlRect.Height() - 5;
+            iPlugin->iSvgModule->Pan( 0,-30 );
+            //iPlugin->iSvgModule->Pan( 0,30 );
+            iPlugin->iSvgModule->Redraw();
+            }
+        iPlugin->iSvgModule->MouseMove( iPointerX, iPointerY );
+        DrawNow();
+        }
+     }
+    #endif //_PEN_SUPPORT
+        
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/Svgtplugin.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,740 @@
+/*
+* 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:  SVGT Plugin Implementation source file
+ *
+*/
+
+
+
+#include <e32std.h>
+#include <eikenv.h>
+#include <barsread.h>
+#include <fbs.h>
+#include <gdi.h>
+#include <f32file.h>
+
+#include <featmgr.h>
+
+#include <eikappui.h>
+
+#include <SVGEngineInterfaceImpl.h>
+
+#include "Svgtplugin.h"
+
+#include "VolumeKeyListener.h"
+#include "RepositoryVolumeListener.h"
+
+_LIT(KWidth, "width");
+_LIT(KHeight, "height");
+
+CSvgtPlugin* CSvgtPlugin::NewL(NPP anInstance)
+	{
+    CSvgtPlugin *self = new (ELeave) CSvgtPlugin;
+	CleanupStack::PushL( self );
+	self->ConstructL(anInstance);
+
+	CleanupStack::Pop();
+	return self;
+	}
+
+
+CSvgtPlugin::~CSvgtPlugin()
+	{
+	if ( iControl )
+		{
+    	delete iControl;
+    	iControl=NULL;
+    	}
+
+	if ( iSvgModule )
+		{
+		iSvgModule->Stop();
+		delete iSvgModule;
+		iSvgModule = NULL;
+		}
+
+	if ( iRenderBuffer )
+		{
+		delete iRenderBuffer;
+		iRenderBuffer = NULL;
+		}
+	
+ 	iImageUrlInfoList.ResetAndDestroy();        
+	iImageUrlInfoList.Close();
+
+	if(iKeyListener)
+	    {
+	    delete iKeyListener;
+	    iKeyListener = NULL;
+	    }
+
+	if(iRepositoryListener)
+	    {
+	    delete iRepositoryListener;
+	    iRepositoryListener = NULL;
+	    }
+	}
+
+void CSvgtPlugin::PrepareToExitL()
+	{
+	if (iPluginAdapter)
+		iPluginAdapter->PluginFinishedL();
+	}
+
+void CSvgtPlugin::ConstructL(NPP anInstance)
+	{
+  	iInstance=anInstance;
+  	iRenderBuffer = new ( ELeave ) CFbsBitmap();
+	
+	iObjectWidth = 0;
+	iObjectHeight = 0;
+	// By default obj height is not in percentage
+	iObjHeightInPercentage = EFalse; 
+	// By default obj width is not in percentage
+	iObjWidthInPercentage = EFalse; 
+	iExpectedDefaultSize = EFalse;
+	
+	//While parsing are object width height are specified or not
+	iObjectWidthSpecified = EFalse;
+	iObjectHeightSpecified = EFalse;
+	TFontSpec lFontSpec;
+	iSvgModule = CSvgEngineInterfaceImpl::NewL( iRenderBuffer, this, lFontSpec );
+
+  	// Clear background white
+	iSvgModule->SetBackgroundColor(0xffffffff);
+    iSvgModule->AddHyperlinkListener( this );
+    iAdjusted = EFalse;
+
+    if (FeatureManager::FeatureSupported(KFeatureIdSideVolumeKeys))
+        {
+        User::InfoPrint(_L("Volume Key supported"));
+        iKeyListener = CVolumeKeyListener::NewL(this);
+   	    }
+   	else
+   	    {
+   	    User::InfoPrint(_L("Key not supported"));
+   	    iRepositoryListener = CRepositoryVolumeListener::NewL(this);
+   	    }
+	}
+
+void CSvgtPlugin::SetWindowL(const NPWindow *aWindow,const TRect& aRect)
+    {
+    iCurrentWindow.x = aWindow->x;
+    iCurrentWindow.y = aWindow->y;
+    iCurrentWindow.window = aWindow->window;
+    iCurrentWindow.clipRect = aWindow->clipRect;
+    iCurrentWindow.type = aWindow->type;
+    iCurrentWindow.width = aWindow->width;
+    iCurrentWindow.height = aWindow->height;
+
+    iPluginAdapter = static_cast<MPluginAdapter*>(aWindow->window);
+    iParentControl = iPluginAdapter->GetParentControl();
+    if (iControl == NULL)
+        {
+        iControl = new (ELeave) CSvgtPluginControl;
+        iControl->ConstructL(this,iParentControl);
+        iPluginAdapter->PluginConstructedL(iControl);
+        iPluginAdapter->SetPluginNotifier(iControl);
+        }
+
+	if ( !iControl || !iSvgModule || aRect.Width() <= 0 || aRect.Height() <= 0 )
+    	{
+		  return;
+		  }
+	iSetWindowCalled = ETrue;
+	
+	    iControl->SetRect(aRect);
+	
+	if ( iRenderWidth != aRect.Width() ||
+	     iRenderHeight != aRect.Height() )
+		{
+		iRenderWidth = aRect.Width();
+		iRenderHeight = aRect.Height();
+		
+		// Browser initially sends width/height as zero 
+		// if width/height are not specified
+		// Later if svg is available to us we call resize after adjustDimention
+		// But if we dont do adjustDimention quick enough
+		// Browser sends default width/Height as 300x150
+		
+		// To Ensure that we are setting the object width/height and 
+		// browser is not setting default width/height ahead of us doing resize
+		
+		// In adjustDimention if width/height are specified at the browser level
+		// iAdjusted is set to false, the second condition is to ensure that
+		// if the browser does a resize at a later point it should be allowed
+		if(iAdjusted || (iObjectWidthSpecified && iObjectHeightSpecified))
+		    {
+		    iObjectWidth  = iRenderWidth;
+            iObjectHeight = iRenderHeight;
+		    }
+		iSvgModule->Pause(); //fix for CGSR-7CN7T7
+		
+		User::LeaveIfError( iRenderBuffer->Create(
+							TSize( iRenderWidth, iRenderHeight ), EColor64K ) );
+		iSvgModule->SetFrameBuffer( iRenderBuffer );
+		iSvgModule->Resume(); // fix for CGSR-7CN7T7
+		}
+
+
+		if ( iExpectedDefaultSize )
+			{
+			iExpectedDefaultSize = EFalse;
+            AdjustDimention(ETrue,ETrue);
+			}
+
+    	if(iControlSize != aRect.Size())
+    		{
+            iRenderWidth = aRect.Width();
+            iRenderHeight = aRect.Height();
+	    	CFbsBitmap * lTempRenderBuffer = new (ELeave) CFbsBitmap();
+            CleanupStack::PushL(lTempRenderBuffer);
+            User::LeaveIfError( lTempRenderBuffer->Create( TSize(iRenderWidth,iRenderHeight), EColor64K ));
+			iSvgModule->SetFrameBuffer(lTempRenderBuffer);
+
+			delete	iRenderBuffer;
+			iRenderBuffer = lTempRenderBuffer;
+			CleanupStack::Pop(lTempRenderBuffer);
+			lTempRenderBuffer = NULL;
+			iControlSize = aRect.Size();
+			iControl->iContentDimension = iSvgModule->ContentDimensions();
+			}
+        // For autoloading feature.
+            if ( iControl->IsAsFileCalled() && iControl->GetFilename().Length() > 0 &&
+                 !iStartCalled )
+            {
+
+                    TBool widthInPercentage;
+                    TBool heightInPercentage;
+                    
+	                iControl->iContentDimension = iSvgModule->ContentDimensionsInPercentage();
+	                if(iControl->iContentDimension.iWidth == -1 )
+	                {
+	                    widthInPercentage = EFalse;
+	                    if(iSvgModule->SvgDocument())
+	                    {
+	                        iControl->iContentDimension.iWidth = iSvgModule->GetViewportWidth(iSvgModule->SvgDocument());    
+	                    }
+	                    else
+	                    {
+	                        return;
+	                    }
+	                    
+	                }
+	                else 
+                    {
+	                    widthInPercentage = ETrue;
+                    }
+                    
+                    if(iControl->iContentDimension.iHeight == -1)
+                    {
+                        heightInPercentage = EFalse;
+                        if(iSvgModule->SvgDocument())
+	                    {
+	                        iControl->iContentDimension.iHeight = iSvgModule->GetViewportHeight(iSvgModule->SvgDocument());
+	                    }
+	                    else
+	                    {
+	                        return;
+	                    }
+                    }
+                    else
+                    {
+                        heightInPercentage = ETrue;
+                    }
+                    // After loading the content, the width & height will be visible to plugin.
+                    // It is time to adjust the size if needed.
+                    if ( AdjustDimention(widthInPercentage,heightInPercentage) )
+                        {
+                        // dimention change is needed so return and notify Browser.
+                        return;
+                        }
+                    iSvgModule->Start();
+                    		iStartCalled = ETrue;
+            } 
+           
+	}
+
+
+CSvgtPluginControl* CSvgtPlugin::Control()
+    {
+    return iControl;
+    }
+
+NPP CSvgtPlugin::Instance()
+    {
+    return iInstance;
+    }
+
+void  CSvgtPlugin::GetSizeOfRenderBuffer(TSize& aSize)
+	{
+	if ( iRenderBuffer )
+		{
+		aSize = iRenderBuffer->SizeInPixels();
+		}
+	else
+		{
+		aSize = TSize ( 0, 0 );
+		}
+	}
+
+
+
+/**********************************************************************/
+//					implements MSvgRequestObserver
+/**********************************************************************/
+
+void CSvgtPlugin::UpdateScreen()
+	{
+	iControl->DrawNow();
+	}
+
+
+TBool CSvgtPlugin::ScriptCall( const TDesC& /*aScript*/,
+                                  CSvgElementImpl* /*aCallerElement*/ )
+	{
+    return EFalse;
+	}
+
+TBool CSvgtPlugin::LinkEntered( const TDesC& /* aUri */ )
+{
+    // update mouse pointer here
+    return ETrue;
+}
+
+TBool CSvgtPlugin::LinkExited( const TDesC& /* aUri */ )
+{
+    // update mouse pointer here
+    return ETrue;
+}
+TBool CSvgtPlugin::LinkActivated( const TDesC& aUrl )
+	{
+	CSvgtPluginEcomMain* lSvgtPluginEcomMain = (CSvgtPluginEcomMain*) Dll :: Tls ();
+	NPNetscapeFuncs* lNetscapeFuncs = lSvgtPluginEcomMain->Funcs();
+	if(lNetscapeFuncs)
+		{
+        TPtrC lTarget('\0',0);
+        lTarget.Set(_L("_parent"));
+        lNetscapeFuncs->geturl(iInstance,aUrl,&lTarget);
+   		}
+	return ETrue;
+	}
+
+void CSvgtPlugin::VolumeChanged(TInt aNewValue)
+    {
+   	RDebug::Print(_L("Volume level: %d"), aNewValue);    
+    aNewValue *= 10; //to make the volume in percentage
+    iSvgModule->SetAudioVolume( aNewValue );
+    }
+    
+TInt CSvgtPlugin::FetchImage(const TDesC&  aUri,  RFs& /*aSession*/, RFile& /*aFileHandle*/ )
+{
+    TRAPD(err,FetchImageL(aUri));
+    
+    return err;
+    
+}
+    
+void CSvgtPlugin::FetchImageL(const TDesC&  aUri)    
+    {
+        TInt    lCount     = iImageUrlInfoList.Count();
+        HBufC*  lListItem  = NULL;
+        HBufC*  lUrl       = NULL;
+                  
+        //checks whether the request is already made for same Uri.        
+        for(TInt i = 0; i < lCount; i++)
+        {
+            lListItem = HBufC::NewLC(iImageUrlInfoList[i]->Length());
+            lUrl      = aUri.AllocLC();
+                 
+            *lListItem = *iImageUrlInfoList[i];
+            
+            // Convert the List Item to Lower case
+            TPtr lListItemPtr = lListItem->Des();
+            lListItemPtr.LowerCase();
+            
+            // Convert the Url to Lower case
+            TPtr lUrlPtr = lUrl->Des();
+            lUrlPtr.LowerCase();
+            
+            if( lListItemPtr.Compare(lUrlPtr) == 0 )       	
+            {
+                CleanupStack::PopAndDestroy(2);
+                
+                lListItem = NULL;
+                lUrl      = NULL;
+               	// Same Url is already requested in the past, no need to continue.
+              	User::Leave(KErrAlreadyExists); // Indicates the download is pending
+            }
+            
+            CleanupStack::PopAndDestroy(2);
+            
+            lListItem = NULL;
+            lUrl      = NULL;
+        }
+        
+         
+        // --------------------------------------
+		// Request file from browser
+		// --------------------------------------
+		CSvgtPluginEcomMain* lSvgtPluginEcomMain = (CSvgtPluginEcomMain*) Dll :: Tls ();
+		NPNetscapeFuncs* lNetscapeFuncs = lSvgtPluginEcomMain->Funcs();
+		if(lNetscapeFuncs)
+		{
+			TPtrC lTarget('\0',0);
+			
+			lUrl = aUri.AllocL();
+			
+			// Current count is used as a context data.
+			void* contextptr = (void*)(lCount);   
+			NPError error = lNetscapeFuncs->geturlnotify(iInstance,aUri,NULL,contextptr);		
+			    
+			// Add the Url and RequestID to the List
+			iImageUrlInfoList.Append(lUrl);
+			    
+			if ( error != 0 )
+    		{
+                #ifdef _DEBUG
+                		lNetscapeFuncs->status(iInstance,_L("Image failed"));
+                #endif
+                
+                User::LeaveIfError(error);
+    		}
+			#ifdef _DEBUG
+            lNetscapeFuncs->status(iInstance,_L("Downloading Image"));
+            #endif
+		}
+	
+        
+        
+        User::Leave(KRequestPending); // Indicate the download is pending
+    }
+
+TInt CSvgtPlugin::FetchFont( const TDesC& /* aUri */,  RFs& /* aSession */, RFile&  /* aFileHandle */)
+    {
+	// Fix for ANAE-775B7E. There is a limitaiton. For rendering text with 
+	// external font synchronous fetching of the file is needed. But the 
+	// external font file is fetched asynchronously by browser when we say 
+	// geturlnotify(). There is no API to pass the font data after fetching
+	// asynchronously. Hence the code here is removed by returning an error.
+	return KErrNotFound;
+    }
+
+
+TBool CSvgtPlugin::LinkActivatedWithShow(const TDesC& aUri,const TDesC& /*aShow*/)
+	{
+	CSvgtPluginEcomMain* lSvgtPluginEcomMain = (CSvgtPluginEcomMain*) Dll :: Tls ();
+	NPNetscapeFuncs* lNetscapeFuncs = lSvgtPluginEcomMain->Funcs();
+	if(lNetscapeFuncs)
+		{
+        TPtrC lTarget('\0',0);
+        lTarget.Set(_L("_parent"));
+		lNetscapeFuncs->geturl(iInstance,aUri,&lTarget);
+		}
+	return ETrue;
+	}
+
+void CSvgtPlugin::GetSmilFitValue(TDes16 &aSmilValue)
+    {
+    aSmilValue.Copy(_L("meet"));
+    }
+
+void CSvgtPlugin::UpdatePresentation(const TInt32&  aNoOfAnimation)
+	{
+ 	if (iTotalNumerOfAnimation < 0)
+  		{
+ 		if (aNoOfAnimation != 0)
+			{
+			iStaticContent = EFalse;
+			iTotalNumerOfAnimation = aNoOfAnimation;
+			}
+		else
+			{
+			iStaticContent = ETrue;
+			}
+		}
+ 	else
+		{
+		iTotalNumerOfAnimation--;
+		}
+	}
+
+void CSvgtPlugin::GetViewPort(TInt /*getWidth*/, TInt /*getHeight*/, TBool /*isWidthInPer*/, TBool /*isHeightInPer*/, TInt &setWidth, TInt &setHeight)
+{
+   
+    setWidth = iRenderWidth;    
+    setHeight = iRenderHeight;    
+    
+    iViewPortWidth = setWidth;
+    iViewPortHeight = setHeight;
+}
+// ---------------------------------------------------------------------------
+// This function extracts attributes from the list that is passed from Browser.
+// Use to check if width & height are defined in XHTML tag
+// ---------------------------------------------------------------------------
+//
+NPError CSvgtPlugin::SvgPluginNew(NPMIMEType /*pluginType*/, NPP instance,
+    uint16 /*mode*/, CDesC16Array* argn, CDesC16Array* argv, NPSavedData* )
+    {
+    if (instance->pdata != this)
+        {
+        return NPERR_INVALID_INSTANCE_ERROR;
+        }
+
+    for (TInt i = 0; i < argn->Count(); i++)
+        {
+        TPtrC16 namePtr((*argn)[i]);
+        TPtrC16 valPtr((*argv)[i]);
+
+        if (KWidth().FindF(namePtr) == 0)
+            {
+            TLex lString( valPtr );
+            lString.SkipSpace();
+            TInt result = lString.Val(iRenderWidth);
+            // Check if object width was specified as
+            // percentage value.
+            if ( valPtr.Locate( '%' ) != KErrNotFound )
+                {
+                // Do not store the value, browser takes
+                // care of computing the width
+            	iObjWidthInPercentage = ETrue; 
+                }
+            if (( result != KErrNone) || (iRenderWidth < 0))
+                {
+                iObjectWidth = 0;
+                }
+            else
+            	{
+	            iObjectWidth = iRenderWidth;
+            	}
+            iObjectWidthSpecified = ETrue;
+            }
+        else if (KHeight().FindF(namePtr) == 0)
+            {
+            TLex lString( valPtr );
+            lString.SkipSpace();
+            TInt result = lString.Val(iRenderHeight);
+            // Check if object height was specified as a
+            // percentage value.
+            if ( valPtr.Locate( '%' ) != KErrNotFound )
+                {
+                // Do not store the value, browser takes
+                // care of computing the height                
+            	iObjHeightInPercentage = ETrue; 
+                }
+            if (( result != KErrNone) || ( iRenderHeight < 0 ))
+                {
+                iObjectHeight = 0;
+                }
+            else
+           		{
+	            iObjectHeight = iRenderHeight;
+           		}
+           	iObjectHeightSpecified = ETrue ;
+            }
+        }
+
+    return NPERR_NO_ERROR;
+    }
+
+
+// ---------------------------------------------------------------------------
+// ResizeWindow() This function is to notify that a new set of dimention value
+// should be taken into consideration. The new w&h is determined from
+// AdjustDimention().
+//
+// ---------------------------------------------------------------------------
+//
+void CSvgtPlugin::ResizeWindow(TInt aWidth, TInt aHeight)
+    {
+    NPPVariable variable;
+	CSvgtPluginEcomMain* lSvgtPluginEcomMain = (CSvgtPluginEcomMain*) Dll::Tls();
+	NPNetscapeFuncs* lNetscapeFuncs = lSvgtPluginEcomMain->Funcs();
+	NPWindow newWindow;
+    variable = NPPVpluginWindowSize;
+    newWindow.x = iCurrentWindow.x;
+    newWindow.y = iCurrentWindow.y;
+    newWindow.window = iCurrentWindow.window;
+    newWindow.clipRect = iCurrentWindow.clipRect;
+    newWindow.type = iCurrentWindow.type;
+    newWindow.width = aWidth;
+    newWindow.height = aHeight;
+    TInt err = lNetscapeFuncs->setvalue(iInstance, variable, (void*)&newWindow);
+    }
+
+
+// ---------------------------------------------------------------------------
+// AdjustDimention() This function does the logic to check if width & height
+// is needed to be adjusted
+// ---------------------------------------------------------------------------
+//
+TBool CSvgtPlugin::AdjustDimention( TBool aWidthInPercentage, TBool aHeightInPercentage)
+    {
+    iSvgModule->AddListener( static_cast < MSvgViewPortListener*>(this), ESvgViewPortListener );
+    if ( iAdjusted )
+    	return EFalse;
+    
+    // we set the width height in all cases except when width/height has been
+    // explicitly specified in the browser hence its set here for all cases
+    iAdjusted = ETrue;
+   // html provides absolute width, no height
+   // svg provides absolute width and absolute height
+   if (
+   ( iObjectWidthSpecified && !iObjWidthInPercentage && !iObjectHeightSpecified ) 
+   && ( !aWidthInPercentage && !aHeightInPercentage)
+   )
+        {
+        // only iObjectWidth is valid
+        // Adjust missing object value as per aspect ratio of 
+        // svg's viewport
+        if(iControl->iContentDimension.iWidth)
+        {
+            TReal newHeight = (TInt)((TReal32)iObjectWidth *
+            ( (TReal32)iControl->iContentDimension.iHeight /
+                (TReal32)iControl->iContentDimension.iWidth));
+            
+            ResizeWindow(iObjectWidth, newHeight);
+        
+        }
+        return ETrue;
+        }
+    
+   // html provides no width and absolute height
+   // svg provides absolute width and absolute height
+   else if (
+    ( !iObjectWidthSpecified && iObjectHeightSpecified && !iObjHeightInPercentage ) 
+    && ( !aWidthInPercentage && !aHeightInPercentage)
+    )
+        {
+        // only iObjectHeight is valid
+        // Adjust missing object value as per aspect ratio of 
+        // svg's viewport
+        if(iControl->iContentDimension.iHeight)
+        {
+            TInt newWidth = (TInt)((TReal32)iObjectHeight *
+            ( (TReal32)iControl->iContentDimension.iWidth /
+                (TReal32)iControl->iContentDimension.iHeight));
+            ResizeWindow(newWidth, iObjectHeight);
+            
+        }
+        return ETrue;
+        }
+   // html provides no width and no height
+   // svg provides absolute width and absolute height
+   else if(
+    (!iObjectWidthSpecified && !iObjectHeightSpecified)
+     && ( !aWidthInPercentage && !aHeightInPercentage)
+     )
+        {
+        ResizeWindow(iControl->iContentDimension.iWidth, iControl->iContentDimension.iHeight);
+        return ETrue;
+        }
+   // html provides width and height be it percentages or absolute values
+   else if(iObjectWidthSpecified && iObjectHeightSpecified)
+        {
+        iAdjusted = EFalse;
+        return EFalse;
+        }
+    else
+        {
+        TReal newWidth = 0.0f;
+        TReal newHeight = 0.0f;
+        CEikonEnv* lEnv = STATIC_CAST( CEikonEnv*, iControl->ControlEnv() );
+        
+        TRect lClientRect = TRect( TPoint( 0,0 ), lEnv->EikAppUi()->ClientRect().Size());
+       
+       // if the browser has specified a valid absolute value width
+        if ( !iObjWidthInPercentage && iObjectWidthSpecified)
+            {
+            newWidth = iObjectWidth; 
+            }
+        // if the browser has specified a valid percentage value width
+        else if (iObjWidthInPercentage && iObjectWidthSpecified )
+            {
+            // Compute the new dimension by scaling clientRect dimension
+            newWidth = lClientRect.Width() * iObjectWidth / 100;
+            }
+        // if the browser has specified a valid absolute value height
+        if ( !iObjHeightInPercentage && iObjectHeightSpecified)
+            {
+            newHeight = iObjectHeight;
+            }
+        // if the browser has specified a valid percentage value Height
+        else if(iObjHeightInPercentage && iObjectHeightSpecified)
+            {
+            // Compute the new dimension by scaling clientRect dimension
+            newHeight = lClientRect.Height() * iObjectHeight / 100;
+            }
+            
+        // if the browser has not specified the width
+        if(!iObjectWidthSpecified)
+            {
+            if(aWidthInPercentage)
+                {
+                newWidth = lClientRect.Width() * iControl->iContentDimension.iWidth / 100;
+                }
+            else
+                {
+                newWidth = iControl->iContentDimension.iWidth;
+                }
+            }
+        // if the browser has not specified the height
+        if(!iObjectHeightSpecified)
+            {
+            if(aHeightInPercentage)
+                {
+                newHeight = lClientRect.Height() * iControl->iContentDimension.iHeight / 100;
+                }
+            else
+                {
+                newHeight = iControl->iContentDimension.iHeight;
+                }
+            }
+        ResizeWindow(newWidth, newHeight);
+        return ETrue;   
+        }
+    }
+
+TBool CSvgtPlugin::LoadSvgFile( const TDesC& aFilename )
+	{
+	if ( !iSvgModule )
+		{
+		return EFalse;
+		}
+	MSvgError* error = iSvgModule->Load( aFilename );
+	if ( !error )
+		{
+		return EFalse;
+		}
+	
+	// Loading error
+    if ( error->HasError() && !error->IsWarning() )
+        {
+    	return EFalse;
+        }
+    TInt currentVolume;
+    if (FeatureManager::FeatureSupported(KFeatureIdSideVolumeKeys))
+        {
+        currentVolume = iKeyListener->GetCurrentVolume();
+   	    }
+   	else
+   	    {
+        currentVolume = iRepositoryListener->GetCurrentVolume();
+   	    }
+   	    
+   	VolumeChanged(currentVolume );
+    iTotalNumerOfAnimation = -1;
+    return ETrue;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/Svgtplugindllapi.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,186 @@
+/*
+* 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:  SVGT Plugin Implementation source file
+ *
+*/
+
+
+/*
+************************************************************************************
+* Contents:           Example plugin implementation
+*                     Implementation of the API used by Opera to control the plugin
+************************************************************************************
+*/
+
+
+#include "Svgtplugin.h"
+
+/**
+  * Create a new instance of a SVG plugin.
+**/
+
+NPError SvgtPluginNewp(NPMIMEType pluginType, NPP instance, uint16 mode,
+    CDesCArray* argn, CDesCArray* argv, NPSavedData* saved)
+	{
+	CSvgtPlugin* lSvgtPlugin = NULL;
+    TRAPD(err,lSvgtPlugin = CSvgtPlugin::NewL(instance));
+
+	if (err == KErrNoMemory)
+        return NPERR_OUT_OF_MEMORY_ERROR;
+    if (err != KErrNone)
+        return NPERR_MODULE_LOAD_FAILED_ERROR;
+
+    instance->pdata = (void *) lSvgtPlugin;
+    NPError nerr = lSvgtPlugin->SvgPluginNew(pluginType, instance,
+        mode, argn, argv, saved);
+    return nerr;
+	}
+
+/**
+  * Destroy a plugin.
+**/
+NPError SvgtPluginDestroy(NPP instance, NPSavedData** /*save*/)
+	{
+	CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *)instance->pdata;
+	if ( lSvgtPlugin )
+		{
+		TRAPD(err,lSvgtPlugin->PrepareToExitL());
+        if (err != KErrNone)
+            {
+            #ifdef _DEBUG
+            RDebug::Printf("SvgtPluginDestroy Error when printing Warning.");
+            #endif //_DEBUG
+            }
+		/**Ignoring the error*/
+		delete lSvgtPlugin;
+		lSvgtPlugin = NULL;
+		}
+	return NPERR_NO_ERROR;
+	}
+
+/**
+  * This is the parent window of a plugin.
+  */
+NPError SvgtPluginSetWindow(NPP instance, NPWindow *window)
+	{
+    CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *) instance->pdata;
+	TUint lWidth = window->width;
+	TUint lHeight = window->height;
+	
+	TRAPD(err,lSvgtPlugin->SetWindowL(window,TRect(TSize(lWidth,lHeight))));
+
+    if (err == KErrNoMemory)
+        return NPERR_OUT_OF_MEMORY_ERROR;
+    if (err != KErrNone)
+        return NPERR_GENERIC_ERROR;
+    return NPERR_NO_ERROR;
+	}
+
+/**
+  * A new data stream has been created for sending data to the plugin.
+  * @param stream - A pointer to plugin specific data can be placed in stream->pdata
+  *
+  */
+
+NPError SvgtPluginNewStream(NPP /*instance*/, NPMIMEType /*type*/, NPStream* /*stream*/, NPBool /*seekable*/, uint16* stype)
+	{
+	*stype = NP_ASFILEONLY;
+	return NPERR_NO_ERROR;
+	}
+
+/**
+  * A data stream has been terminated.
+  */
+NPError SvgtPluginDestroyStream(NPP /*instance*/, NPStream* /*stream*/, NPReason /*reason*/)
+	{
+    return NPERR_NO_ERROR;
+	}
+
+/**
+  * A data stream has been fully saved to a file.
+  */
+void SvgtPluginAsFile(NPP instance, NPStream* stream, const TDesC& fname)
+	{
+	CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin*)instance->pdata;
+	
+	if (lSvgtPlugin && lSvgtPlugin->Control())
+	  {	
+		lSvgtPlugin->Control()->AsFile(fname, stream );
+	  }
+	}
+
+/**
+  * Return the maximum number of bytes this plugin can accept from the stream.
+  */
+int32 SvgtPluginWriteReady(NPP /*instance*/, NPStream* /*stream*/)
+	{
+	return 65536;
+	}
+
+/**
+  * Receive more data
+  * @param buffer - contains the data.
+  * @param len    - the number of bytes in buffer.
+  * @param offset - the number of bytes already sent/processed.
+  * @return TInt number of bytes processed.
+  */
+int32 SvgtPluginWrite(NPP /*instance*/, NPStream* /*stream*/, int32 /*offset*/, int32 len, void* /*buffer*/)
+	{
+	return len;
+	}
+
+/**
+  * Event
+  */
+int16 SvgtPluginEvent(NPP /*instance*/, void* /*event*/)
+	{
+    return 0;
+	}
+
+
+/**
+  * Generic hook to set values/attributes within the plugin.
+  */
+NPError SvgtPluginSetValue(NPP /*instance*/, NPNVariable /*variable*/, void* /*ret_value*/)
+	{
+    return NPERR_NO_ERROR;
+	}
+
+/**
+  * Generic hook to get values/attributes from the plugin.
+  */
+NPError SvgtPluginGetValue(NPP instance, NPNVariable variable, void*
+*ret_value)
+	{
+    CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *)instance->pdata;
+    if(lSvgtPlugin)
+        {
+        // A response of false when enum passed is NPPVpluginInteractiveBool
+        // must be interpreted as "Plugin is interactive"
+        // Since operations such as panning, zooming can be performed
+        // on all svg contents plugin can be considered always interactive
+        if(variable==NPPVpluginInteractiveBool)
+    	    {
+    	    *(TBool*) ret_value=EFalse;
+    	    }
+        }
+    return NPERR_NO_ERROR;
+	}
+void SvgtPluginURLNotify(NPP /*instance*/, const TDesC& /*url*/, NPReason /*reason*/, void* /*notifyData*/)
+	{
+	}
+
+void SvgtPluginPrint(NPP /*instance*/, NPPrint* /*platformPrint*/)
+	{
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/Svgtpluginmain.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,105 @@
+/*
+* 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:  SVGT Plugin Implementation source file
+ *
+*/
+
+
+#include "Svgtplugin.h"
+
+
+#include <implementationproxy.h>
+#include <cecombrowserplugininterface.h>
+/***************************************************/
+/**********ECOM STYLE SVGT PLUGIN ENTRY POINTS******/
+/***************************************************/
+CSvgtPluginEcomMain* CSvgtPluginEcomMain::NewL(TAny* aInitParam)
+{
+    TFuncs* funcs = REINTERPRET_CAST( TFuncs*, aInitParam);
+    CSvgtPluginEcomMain* self = new(ELeave)CSvgtPluginEcomMain(funcs->iNetscapeFuncs);
+    CleanupStack::PushL(self);
+    self->ConstructL(funcs->iPluginFuncs);
+    CleanupStack::Pop();
+
+	Dll :: SetTls ( (void*) self );
+
+    return self;
+}
+
+void CSvgtPluginEcomMain::ConstructL(NPPluginFuncs* aPluginFuncs)
+{
+	InitializeFuncs(aPluginFuncs);
+}
+
+CSvgtPluginEcomMain::CSvgtPluginEcomMain(NPNetscapeFuncs* aNpf) : CEcomBrowserPluginInterface(),iNpf(aNpf)
+{
+}
+
+CSvgtPluginEcomMain::~CSvgtPluginEcomMain()
+{
+
+}
+const TImplementationProxy KImplementationTable[] =
+    {
+        {{KSvgtPluginImplementationValue}, (TProxyNewLPtr) CSvgtPluginEcomMain::NewL}
+    };
+
+// -----------------------------------------------------------------------------
+// ImplementationGroupProxy
+// Returns the filters implemented in this DLL
+// Returns: The filters implemented in this DLL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+{
+    aTableCount = sizeof(KImplementationTable) / sizeof(TImplementationProxy);
+    return KImplementationTable;
+}
+
+
+
+/**
+  * The E32Dll() entry point function.
+**/
+
+
+EXPORT_C NPError InitializeFuncs(NPPluginFuncs* aPpf)
+{
+    aPpf->size					= sizeof(NPPluginFuncs);
+	aPpf->version				= 1;
+    aPpf->newp          = NewNPP_NewProc(SvgtPluginNewp);
+    aPpf->destroy       = NewNPP_DestroyProc(SvgtPluginDestroy);
+    aPpf->setwindow     = NewNPP_SetWindowProc(SvgtPluginSetWindow);
+    aPpf->newstream     = NewNPP_NewStreamProc(SvgtPluginNewStream);
+    aPpf->destroystream = NewNPP_DestroyStreamProc(SvgtPluginDestroyStream);
+    aPpf->asfile        = NewNPP_StreamAsFileProc(SvgtPluginAsFile);
+    aPpf->writeready    = NewNPP_WriteReadyProc(SvgtPluginWriteReady);
+    aPpf->write         = NewNPP_WriteProc(SvgtPluginWrite);
+    aPpf->print         = NewNPP_PrintProc(SvgtPluginPrint);
+    aPpf->event         = NewNPP_HandleEventProc(SvgtPluginEvent);
+    aPpf->urlnotify     = NewNPP_URLNotifyProc(SvgtPluginURLNotify);
+    aPpf->javaClass     = NULL;
+    aPpf->getvalue				= NewNPP_GetValueProc(SvgtPluginGetValue);
+    aPpf->setvalue				= NewNPP_SetValueProc(SvgtPluginSetValue);
+
+    return NPERR_NO_ERROR;
+}
+
+EXPORT_C void NPP_Shutdown(void)
+{
+	CSvgtPluginEcomMain* npm = (CSvgtPluginEcomMain*) Dll :: Tls ();
+    delete npm;
+	Dll :: SetTls ( NULL );
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svgtopt/SVGTPlugin/src/VolumeKeyListener.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -0,0 +1,289 @@
+/*
+* Copyright (c) 2006 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:  It completes on a change in the volume property.  Used for 
+*                the new Central Repository Server.  Used in EKA2 builds only
+*
+*/
+
+
+#include <eikapp.h>
+#include <aknconsts.h>
+#include <browseruisdkcrkeys.h>
+
+#include "VolumeKeyListener.h" 
+#include "MRepositoryVolumeObserver.h"
+
+// CONSTANTS
+const TInt KFirstTimerExpiryInterval = 1; // Expire immediately
+const TInt KTimerExpiryInterval = KAknStandardKeyboardRepeatRate;
+
+const TInt KMinVolume = 0;  // Minimum volume level(Mute)
+const TInt KMaxVolume = 10; // Maximum volume level
+
+// ----------------------------------------------------
+// CVolumeKeyListener::NewL
+// Description: static constructor.
+// Output: none
+// Return: CVolumeKeyListener object
+// ----------------------------------------------------
+CVolumeKeyListener* CVolumeKeyListener::NewL( MRepositoryVolumeObserver* aObserver )
+    {
+    CVolumeKeyListener* self = new(ELeave) CVolumeKeyListener(
+                                                                aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ----------------------------------------------------
+// CVolumeKeyListener::CVolumeKeyListener
+// Description: constructor.
+// Output: none
+// Return: none
+// ----------------------------------------------------
+CVolumeKeyListener::CVolumeKeyListener( MRepositoryVolumeObserver* aObserver ):
+                                                iInterfaceSelector(NULL),
+                                                iSelector(NULL),
+                                                iCenRepos(NULL),
+                                                iObserver(aObserver)
+    {
+    }   
+
+// ----------------------------------------------------
+// CVolumeKeyListener::ConstructL
+// Description: second phase constructor.
+// Input:  aObserver: link to the calling object
+// Output: none
+// Return: none
+// ----------------------------------------------------
+void CVolumeKeyListener::ConstructL()
+    {
+    //
+    // Open a connection to receive Volume Key events.
+    iSelector = CRemConInterfaceSelector::NewL();
+    iInterfaceSelector = CRemConCoreApiTarget::NewL(*iSelector,*this);
+    TRAP_IGNORE(iSelector->OpenTargetL());
+    // Timer for implementing repeat
+    iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
+
+    //
+    // Open a connection to the Central Repository...
+    iCenRepos = CRepository::NewL(KCRUidBrowser);
+    //    iObservers=new(ELeave)CArrayFixSeg<MVolumePropertyWatchObserver*>
+    //                (KVolumeObserversArrayGranularity);
+    }
+
+// ----------------------------------------------------
+// CVolumeKeyListener::~CVolumeKeyListener
+// Description: destructor.
+// Input:  none
+// Output: none
+// ----------------------------------------------------
+CVolumeKeyListener::~CVolumeKeyListener()
+    {
+    if(iSelector)
+        {
+        delete iSelector;
+        iInterfaceSelector=NULL;
+        iSelector=NULL; //iSelector has been deleted by "delete iInterfaceSelector"
+        }
+
+    if(iTimer)
+        {
+        iTimer->Cancel();
+        delete iTimer;
+        }
+
+    if(iCenRepos)
+        {
+        delete iCenRepos;
+        }
+    }
+
+// ----------------------------------------------------
+// CVolumeKeyListener::SetObserver
+// Description: Used to set an observer 
+// Input:  aObserver: Point to observer
+// Output: none
+// Return: none
+// ----------------------------------------------------
+void CVolumeKeyListener::SetObserver( MRepositoryVolumeObserver* aObserver)
+    {
+    iObserver = aObserver;
+    }
+
+// ----------------------------------------------------
+// CVolumeKeyListener::GetCurrentVolume
+// Description: gets the current volume level from the 
+//   central directory.
+// Input:  none
+// Output: none
+// Return: volume level
+// ----------------------------------------------------
+TInt CVolumeKeyListener::GetCurrentVolume()
+    {
+    TInt currentVolume = 0;
+    //
+    // Get the current volume
+    if(iCenRepos)
+        iCenRepos->Get(KBrowserMediaVolumeControl, currentVolume);
+
+/*
+    #if defined(__WINSCW__) //offset required on the emulator
+        currentVolume += WINS_DEFAULT_VOLUME;
+    #endif
+*/
+    return currentVolume;
+    }
+
+// ----------------------------------------------------
+// CVolumeKeyListener::MrccatoCommand
+// Description: A Volume key command has been received
+//        (from MRemConCoreApiTargetObserver)
+// Input:aOperationId The operation ID of the command
+//         aButtonAct The button action associated with the command.
+// Output: none
+// Return: none
+// ----------------------------------------------------
+void CVolumeKeyListener::MrccatoCommand(TRemConCoreApiOperationId aOperationId, 
+                             TRemConCoreApiButtonAction aButtonAct )
+    {
+
+    switch(aOperationId)
+        {
+        case ERemConCoreApiVolumeUp:
+            {
+            switch (aButtonAct)
+                {
+                case ERemConCoreApiButtonPress:
+                    {
+                     //Start Timer
+                     if (!iTimer->IsActive())
+                        {
+                        iCommandId = EVolumeControlCmdVolumeUpByOne;
+                        iTimer->Start(KFirstTimerExpiryInterval,
+                                      KTimerExpiryInterval, 
+                                      TCallBack(TimerCallback, this));
+                        }
+                    break;
+                    }
+                case ERemConCoreApiButtonRelease:
+                    {
+                    iTimer->Cancel();
+                    break;
+                    }
+                case ERemConCoreApiButtonClick:
+                    {
+                    FilterAndSendCommand(EVolumeControlCmdVolumeUpByOne);
+                    break;
+                    }
+                default:
+                    {
+                    break;
+                    }
+                }
+            break;
+            }
+        case ERemConCoreApiVolumeDown:
+            {
+            switch (aButtonAct)
+                {
+                case ERemConCoreApiButtonPress:
+                    {
+                    //Start Timer
+                    iCommandId = EVolumeControlCmdVolumeDownByOne;
+                    if (!iTimer->IsActive())
+                        {
+                        iTimer->Start(KFirstTimerExpiryInterval,
+                                      KTimerExpiryInterval, 
+                                      TCallBack(TimerCallback, this));
+                        }
+                     break;
+                    }
+                case ERemConCoreApiButtonRelease:
+                    {
+                    iTimer->Cancel();
+                    break;
+                    }
+                case ERemConCoreApiButtonClick:
+                    {
+                    FilterAndSendCommand(EVolumeControlCmdVolumeDownByOne);
+                    break;
+                    }
+                default:
+                    {
+                    break;
+                    }
+                }
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }        
+    }        
+        
+// -----------------------------------------------------------------------
+// CVolumeKeyListener::HandleRepeatEvent
+// -----------------------------------------------------------------------
+//
+void CVolumeKeyListener::HandleRepeatEvent()
+    {
+    FilterAndSendCommand(iCommandId);
+    }
+
+// -----------------------------------------------------------------------
+// CVolumeKeyListener::TimerCallback
+// -----------------------------------------------------------------------
+//
+TInt CVolumeKeyListener::TimerCallback(TAny* aPtr)
+    {
+    static_cast<CVolumeKeyListener*>(aPtr)->HandleRepeatEvent();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------
+// CVolumeKeyListener::FilterAndSendCommand
+// -----------------------------------------------------------------------
+//
+void CVolumeKeyListener::FilterAndSendCommand(TInt aCommandId)
+    {
+    TInt currentVolume = 0;
+
+    iCenRepos->Get(KBrowserMediaVolumeControl,currentVolume);
+    switch(aCommandId)
+        {
+        case EVolumeControlCmdVolumeUpByOne:
+            currentVolume=(currentVolume< KMaxVolume)? ++currentVolume : KMaxVolume;
+            break;
+        case EVolumeControlCmdVolumeDownByOne:
+            currentVolume=(currentVolume> KMinVolume)? --currentVolume : KMinVolume;
+            break;  
+        default:
+            break;      
+        }
+         
+    iCenRepos->Set(KBrowserMediaVolumeControl,currentVolume);
+    
+#if defined(__WINS__) //offset required on the emulator
+        currentVolume += WINS_DEFAULT_VOLUME;
+#endif   
+    
+    if(iObserver)
+        iObserver->VolumeChanged(currentVolume);
+    }
+
+// End of File
--- a/svgtopt/VGRenderer/PseudoVG/inc/PseodoVGRendererImpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/PseudoVG/inc/PseodoVGRendererImpl.h	Wed Sep 01 12:20:46 2010 +0100
@@ -169,7 +169,7 @@
     static const TUint  ENCODEDDATAGRANULARITY;
     TInt                iCommonHeaderLength;
     const TUint8* iCommonHeader;
-    
+    VGErrorCode iVgErrorCode;
     //Command specific logging methods
 #ifdef VGRENDERER_LOG
     RFileLogger iLog;//logs    
--- a/svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -39,6 +39,7 @@
     iHandle             = 1;
     iCommonHeaderLength = 0;
     iCommonHeader = 0;
+    iVgErrorCode = VG_NO_ERROR;
     }
 
 CPseodoVGRendererImpl::~CPseodoVGRendererImpl()
@@ -232,6 +233,9 @@
 
 TUint CPseodoVGRendererImpl::vgCreatePaint()
     {
+    if(iVgErrorCode != VG_NO_ERROR)
+        return VG_INVALID_HANDLE;
+    
     iHandle++;
     EncodeInt8(EvgCreatePaint);
     EncodeInt32(iHandle);
@@ -244,6 +248,10 @@
 TUint CPseodoVGRendererImpl::vgCreatePath(TInt pathFormat, TInt datatype, TReal32 scale, TReal32 bias,
         TInt segmentCapacityHint, TInt coordCapacityHint, TInt capabilities)
     {
+    if(iVgErrorCode != VG_NO_ERROR)
+        return VG_INVALID_HANDLE;
+    
+        
     iHandle++;
     EncodeInt8(EvgCreatePath);
     EncodeInt32(pathFormat);
@@ -383,7 +391,7 @@
     EncodeInt16(capabilities);
 
 #ifdef VGRENDERER_LOG
-    LogvgDrawPath(paintModes,0);   
+    LogvgDrawPath(path,0);   
 #endif
 
     }
@@ -460,6 +468,9 @@
 
 TUint CPseodoVGRendererImpl::vgCreateImage(TInt format, TInt width, TInt height, TInt allowedQuality)
     {
+    if(iVgErrorCode != VG_NO_ERROR)
+        return VG_INVALID_HANDLE;
+    
     iHandle++;
     EncodeInt8(EvgCreateImage);
     EncodeInt32(format);
@@ -467,6 +478,9 @@
     EncodeInt32(height);
     EncodeInt8(allowedQuality);
     EncodeInt32(iHandle);
+#ifdef VGRENDERER_LOG
+    iLog.WriteFormat(_L("vgcreateimage"));
+#endif
     return iHandle;
     }
 
@@ -479,6 +493,9 @@
     {
     EncodeInt8(EvgDrawImage);
     EncodeInt32(image);
+#ifdef VGRENDERER_LOG
+    iLog.WriteFormat(_L("vgdrawimage"));
+#endif
     }
 
 void CPseodoVGRendererImpl::vgClearImage(TUint image, TInt x, TInt y, TInt width, TInt height)
@@ -489,6 +506,9 @@
     EncodeInt32(y);
     EncodeInt32(width);
     EncodeInt32(height);
+#ifdef VGRENDERER_LOG
+    iLog.WriteFormat(_L("vgclearimage"));
+#endif    
     }
 
 void CPseodoVGRendererImpl::vgImageSubData(TUint image, const void * data, TInt dataStride,
@@ -623,6 +643,9 @@
 
         EncodeData(dstData, dataLength);
         delete [] dstData;
+#ifdef VGRENDERER_LOG
+        iLog.WriteFormat(_L("vgimagesubdata"));
+#endif        
         }
     else
         {
@@ -648,6 +671,9 @@
     {
     EncodeInt8(EvgDestroyImage);
     EncodeInt32(aHandle);
+#ifdef VGRENDERER_LOG
+    iLog.WriteFormat(_L("vgdestroyimage"));
+#endif    
     }
 
 void CPseodoVGRendererImpl::vgDestroyPaint(TUint /*aHandle*/)
@@ -667,8 +693,7 @@
 
 TInt CPseodoVGRendererImpl::vgGetError()
     {
-    //TODO
-    return 0;
+   return iVgErrorCode;
     }
 
 MVGSurfaceImpl* CPseodoVGRendererImpl::CreateVGSurfaceL(TInt /*aOption*/)
@@ -708,10 +733,13 @@
 
 TInt CPseodoVGRendererImpl::EncodeData(const TAny *aData, TUint aLength)
     {
-    TInt result = KErrNone;
-    TPtr8 lPtr( iEncodedData->Des() );
-    TInt encodedDataLength      = lPtr.Length() + aLength;
-    TInt encodedDataMaxLength   = lPtr.MaxLength();
+
+    if(iVgErrorCode==VG_NO_ERROR)
+        {
+        TInt result = KErrNone;
+        TPtr8 lPtr( iEncodedData->Des() );
+        TInt encodedDataLength      = lPtr.Length() + aLength;
+        TInt encodedDataMaxLength   = lPtr.MaxLength();
 
     if (encodedDataLength >= encodedDataMaxLength)
         {
@@ -726,7 +754,12 @@
         lPtr.Append((TUint8*)(aData), aLength);
         }
 
-    return result;
+        return result;
+        }
+    else
+        {
+        return iVgErrorCode;
+        }
     }
 
 TInt CPseodoVGRendererImpl::ExpandEncodedData(TUint aNewLength)
@@ -740,6 +773,7 @@
     if (tmpBuf == 0)
         {
         result = KErrNoMemory;
+        iVgErrorCode = VG_OUT_OF_MEMORY_ERROR;
         }
 
     else
@@ -757,6 +791,17 @@
 
 void CPseodoVGRendererImpl::EmptyEncodedData()
     {
+    iVgErrorCode = VG_NO_ERROR;
+    if(iEncodedData->Length() > CPseodoVGRendererImpl::ENCODEDDATALENGTH)
+        {
+        delete iEncodedData;    
+        iEncodedData = HBufC8::New(CPseodoVGRendererImpl::ENCODEDDATALENGTH);
+        if(!iEncodedData)
+            {
+            iVgErrorCode = VG_OUT_OF_MEMORY_ERROR;
+            return;
+            }
+        }
     TPtr8 lPtr( iEncodedData->Des() );
     lPtr.Zero();
     WriteHeader();
--- a/svgtopt/VGRenderer/PseudoVG/src/PseudoVGSurfaceImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/PseudoVG/src/PseudoVGSurfaceImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -50,8 +50,8 @@
 TInt CPseudoVGSurfaceImpl::InitializeSurface(TSize aSize, TInt /*aColorSpace*/)
     {
     iSize = aSize;
-    iPseodoVGRendererImpl->EmptyEncodedData();
-    return KErrNone;
+    return iPseodoVGRendererImpl->vgGetError();
+    
     }
 
 void CPseudoVGSurfaceImpl::SetConfiguration(TInt aOption, const TAny* aValue)
@@ -69,8 +69,9 @@
 
 TInt CPseudoVGSurfaceImpl::ResizeSurface(TSize aSize)
     {
-    iSize = aSize;
-    return KErrNone;
+    iSize = aSize;    
+    iPseodoVGRendererImpl->EmptyEncodedData();
+    return iPseodoVGRendererImpl->vgGetError();
     }
 
 TInt CPseudoVGSurfaceImpl::CopyBitmap(TInt aDisplayMode, TInt aMaskMode,CFbsBitmap *aBitmap, CFbsBitmap *aMask, TSize /*aSize*/)
--- a/svgtopt/VGRenderer/SWVG/eabi/SWVG.def	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/SWVG/eabi/SWVG.def	Wed Sep 01 12:20:46 2010 +0100
@@ -6,6 +6,4 @@
 	_ZTV15COpenVGRenderer @ 5 NONAME ; #<VT>#
 	_ZTV16CSWVGSurfaceImpl @ 6 NONAME ; #<VT>#
 	_ZTV21CSWOpenVGRendererImpl @ 7 NONAME ; #<VT>#
-	_ZTI22CSWVGTargetSurfaceImpl @ 8 NONAME
-	_ZTV22CSWVGTargetSurfaceImpl @ 9 NONAME
 
--- a/svgtopt/VGRenderer/SWVG/group/SWVG.mmp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/SWVG/group/SWVG.mmp	Wed Sep 01 12:20:46 2010 +0100
@@ -32,7 +32,7 @@
 SOURCE  SWVGSurfaceImpl.cpp 
 
 SOURCEPATH ../../OpenVGRenderer/src
-SOURCE ../../SWVG/src/swopenvgtargetsurfaceimpl.cpp OpenVGRenderer.cpp
+SOURCE OpenVGRenderer.cpp
 
 
 //By default, the build tools look for the WINSCW def file in a BWINS directory
--- a/svgtopt/VGRenderer/SWVG/inc/swopenvgtargetsurfaceimpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * 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:  CSWVGTargetSurfaceImpl header file
- *
-*/
-
-#ifndef SWOPENVGTARGETSURFACEIMPL_H_
-#define SWOPENVGTARGETSURFACEIMPL_H_
-
-#include "SWVG.h"
-#include "MVGSurfaceImpl.h"
-
-#include <displaymode.h>
-
-class CSvgtBitmap;
-
-class CSWVGTargetSurfaceImpl : public CBase, public MVGSurfaceImpl
-{
-public:
-    static CSWVGTargetSurfaceImpl* NewL();
-    static CSWVGTargetSurfaceImpl* NewLC();
-    
-    virtual ~CSWVGTargetSurfaceImpl();
-
-    virtual TInt InitializeSurface(TSize aSize, TInt aColorSpace);
-    
-    virtual TInt CreateSurface(TInt /*aDisplayMode*/, RWindow */*aSurface*/, CFbsBitmap */*aBitmap*/);
-    virtual TInt CreateSurface(TInt aDisplayMode, RWindow *aSurface, CSvgtBitmap *aBitmap);
-    
-    virtual TInt ResizeSurface(TSize aSize);
-    
-    virtual void SetConfiguration(TInt aOption, const TAny* aValue);
-    
-    virtual TInt CopyBitmap(TInt /*aDisplayMode*/, TInt /*aMaskMode*/, CFbsBitmap */*aBitmap*/, CFbsBitmap */*aMask*/, TSize /*aSize*/ = TSize(0,0));
-    virtual TInt CopyBitmap(TInt aDisplayMode,TInt aMaskMode,CSvgtBitmap *aBitmap, CSvgtBitmap *aMask, TSize aSize = TSize(0,0));
-
-    virtual TInt PrepareToBindClientBuffer();
-    virtual TInt BindClientBuffer(TInt buffer);
-      
-    virtual TInt UnBindClientBuffer();
-
-    virtual void TerminateSurface();
-    
-    TInt MapSymbianDisplayModeToOpenVG( TDisplayMode aMode) const;
-    TInt MapOpenVGErrorToSymbianError( TInt aError ) const;
-
-private:
-    CSWVGTargetSurfaceImpl();
-    void ConstructL();
-    TSize   iSize;
-};
-
-#endif /* SWOPENVGTARGETSURFACEIMPL_H_ */
--- a/svgtopt/VGRenderer/SWVG/src/SWOpenVGRendererImpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/SWVG/src/SWOpenVGRendererImpl.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -17,7 +17,6 @@
 
 #include "SWOpenVGRendererImpl.h"
 #include "SWVGSurfaceImpl.h"
-#include "swopenvgtargetsurfaceimpl.h"
 
 #include <VG/vgu.h>
 
@@ -78,10 +77,7 @@
     {
     }
 
-MVGSurfaceImpl* CSWOpenVGRendererImpl::CreateVGSurfaceL(TInt aOption)
+MVGSurfaceImpl* CSWOpenVGRendererImpl::CreateVGSurfaceL(TInt /*aOption*/)
     {
-    if(aOption)
-        return CSWVGSurfaceImpl::NewL();
-    else
-        return CSWVGTargetSurfaceImpl::NewL(); //M2G: Enable rendering on target buffer.
+    return CSWVGSurfaceImpl::NewL();
     }
--- a/svgtopt/VGRenderer/SWVG/src/swopenvgtargetsurfaceimpl.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
- * 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:  CSWVGTargetSurfaceImpl source file
- *
-*/
-
-#include "swopenvgtargetSurfaceImpl.h"
-    
-#include <platform/vg/vgcontext.h>
-
-#include <svgtbitmap.h>
-
-CSWVGTargetSurfaceImpl::CSWVGTargetSurfaceImpl()
-    {
-    }
-
-CSWVGTargetSurfaceImpl::~CSWVGTargetSurfaceImpl()
-    {
-    }
-
-CSWVGTargetSurfaceImpl* CSWVGTargetSurfaceImpl::NewL()
-    {
-    CSWVGTargetSurfaceImpl* self = CSWVGTargetSurfaceImpl::NewLC();
-    CleanupStack::Pop();
-    return self;
-    }
-
-CSWVGTargetSurfaceImpl* CSWVGTargetSurfaceImpl::NewLC()
-    {
-    CSWVGTargetSurfaceImpl* self = new (ELeave) CSWVGTargetSurfaceImpl();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-inline void CSWVGTargetSurfaceImpl::ConstructL()
-    {
-    }
-
-TInt CSWVGTargetSurfaceImpl::InitializeSurface(TSize aSize, TInt aColorSpace)
-    {
-    iSize = aSize;
-    TInt vgError = ::VGIInitialize(aSize.iWidth,aSize.iHeight, (VGIColorSpace)aColorSpace);
-    return MapOpenVGErrorToSymbianError(vgError);
-    }
-
-void CSWVGTargetSurfaceImpl::SetConfiguration(TInt /*aOption*/, const TAny* /*aValue*/)
-    {    
-    }
-
-TInt CSWVGTargetSurfaceImpl::CreateSurface(TInt /*aDisplayMode*/, RWindow */*aSurface*/, CFbsBitmap */*aBitmap*/)
-    { 
-    return KErrNotSupported;
-    }
-
-TInt CSWVGTargetSurfaceImpl::CreateSurface(TInt /*aDisplayMode*/, RWindow */*aSurface*/, CSvgtBitmap */*aBitmap*/)
-    {
-    return KErrNone;
-    }
-
-TInt CSWVGTargetSurfaceImpl::ResizeSurface(TSize aSize)
-    {
-    iSize = aSize;
-    TInt vgError = ::VGIResize(aSize.iWidth,aSize.iHeight);
-    return MapOpenVGErrorToSymbianError(vgError);
-    }
-
-TInt CSWVGTargetSurfaceImpl::CopyBitmap(TInt /*aDisplayMode*/, TInt /*aMaskMode*/, CFbsBitmap */*aBitmap*/, CFbsBitmap */*aMask*/, TSize /*aSize*/)
-    {
-    return KErrNotSupported;
-    }
-TInt CSWVGTargetSurfaceImpl::CopyBitmap(TInt /*aDisplayMode*/,TInt /*aMaskMode*/,CSvgtBitmap *aBitmap, CSvgtBitmap *aMask, TSize /*aSize*/)
-    {
-    VGIColorBufferFormat format = 
-            (VGIColorBufferFormat)MapSymbianDisplayModeToOpenVG( (TDisplayMode)aBitmap->DisplayMode() );
-    
-    TInt vgError = KErrNone;
-    if(aMask) 
-        {
-        vgError = ::VGICopyToTarget(format, 
-                    aBitmap->Stride(), aBitmap->BitmapBuffer(), 
-                    aMask->Stride(), aMask->BitmapBuffer(), 
-                    VGI_SKIP_TRANSPARENT_PIXELS);
-        }
-    else
-        {
-        vgError = ::VGICopyToTarget(format, 
-                    aBitmap->Stride(), aBitmap->BitmapBuffer(), 
-                    0, NULL, 
-                    VGI_COPY_TRANSPARENT_PIXELS);
-        }
-        
-    return MapOpenVGErrorToSymbianError(vgError);
-    }
-
-TInt CSWVGTargetSurfaceImpl::PrepareToBindClientBuffer()
-    {
-    return KErrNone;
-    }
-
-TInt CSWVGTargetSurfaceImpl::BindClientBuffer(TInt buffer)
-    {
-    return MapOpenVGErrorToSymbianError(::VGIBindToImage(buffer));
-    }
-  
-TInt CSWVGTargetSurfaceImpl::UnBindClientBuffer()
-    {
-    return MapOpenVGErrorToSymbianError(::VGIUnBindImage());
-    }
-
-void CSWVGTargetSurfaceImpl::TerminateSurface()
-    {
-    ::VGITerminate();
-    }
-
-TInt CSWVGTargetSurfaceImpl::MapSymbianDisplayModeToOpenVG( TDisplayMode aMode) const
-    {
-    VGIColorBufferFormat format;
-    switch( aMode )
-    {
-    case EColor16MA:
-        format = VGI_COLOR_BUFFER_FORMAT_ARGB8888;
-        break;
-
-    case EColor16MU:
-        format = VGI_COLOR_BUFFER_FORMAT_XRGB8888;
-        break;
-
-    case EColor16MAP:
-        format = VGI_COLOR_BUFFER_FORMAT_ARGB8888_PRE;
-        break;
-        
-    case EColor16M:
-        format = VGI_COLOR_BUFFER_FORMAT_RGB888;
-        break;
-
-    case EColor64K:
-        format = VGI_COLOR_BUFFER_FORMAT_RGB565;
-        break;
-
-    case EColor4K:
-        format = VGI_COLOR_BUFFER_FORMAT_XRGB4444;
-        break;
-
-    default:
-        return KErrNotSupported;
-    }
-    return format;
-    }
-
-TInt CSWVGTargetSurfaceImpl::MapOpenVGErrorToSymbianError( TInt aError ) const
-    {
-    TInt error = KErrNone;
-    switch (aError)
-        {
-        case VGI_OK:
-            {
-            error = KErrNone;
-            break;
-            }
-        case VG_OUT_OF_MEMORY_ERROR:
-        case VGI_ERROR_OUT_OF_MEMORY:
-            {
-            error = KErrNoMemory;
-            break;
-            }
-        case VG_ILLEGAL_ARGUMENT_ERROR:
-        case VGI_ERROR_INVALID_ARGUMENTS:
-            {
-            error = KErrArgument;
-            break;
-            }
-        case VGI_ERROR_ALREADY_EXISTS:
-            {
-            error = KErrAlreadyExists;
-            break;
-            }
-        case VG_UNSUPPORTED_PATH_FORMAT_ERROR:
-        case VGI_ERROR_COLORSPACE_NOT_SUPPORTED:
-        case VG_UNSUPPORTED_IMAGE_FORMAT_ERROR:
-        case VGI_ERROR_NOT_SUPPORTED:
-            {
-            error = KErrNotSupported;
-            break;
-            }
-        case VGI_ERROR_ILLEGAL_IMAGE_HANDLE:
-            {
-            error = KErrBadHandle;
-            break;
-            }
-        case VG_IMAGE_IN_USE_ERROR:
-        case VGI_ERROR_IMAGE_IN_USE:
-            {
-            error = KErrInUse;
-            break;
-            }
-        case VGI_ERROR_ILLEGAL_OPERATION:
-            {
-            error = KErrPermissionDenied;
-            break;
-            }
-        case VG_BAD_HANDLE_ERROR:
-        case VG_PATH_CAPABILITY_ERROR:
-            {
-            error = KErrUnknown;
-            break;
-            }
-        default:
-            {
-            error = KErrUnknown;
-            }
-        }
-
-    return error;
-    }
--- a/svgtopt/VGRenderer/inc/MVGSurfaceImpl.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/inc/MVGSurfaceImpl.h	Wed Sep 01 12:20:46 2010 +0100
@@ -23,7 +23,6 @@
 
 class RWindow;
 class CFbsBitmap;
-class CSvgtBitmap;
 
 class MVGSurfaceImpl
 {
@@ -40,14 +39,12 @@
     virtual TInt InitializeSurface(TSize aSize, TInt aColorSpace) = 0;
     
     virtual TInt CreateSurface(TInt aDisplayMode, RWindow *aSurface, CFbsBitmap *aBitmap) = 0;
-    virtual TInt CreateSurface(TInt /*aDisplayMode*/, RWindow */*aSurface*/, CSvgtBitmap */*aBitmap*/){ return KErrNotSupported; }
     
     virtual TInt ResizeSurface(TSize aSize) = 0;
     
     virtual void SetConfiguration(TInt aOption, const TAny* aValue) = 0;
     
     virtual TInt CopyBitmap(TInt aDisplayMode, TInt aMaskMode, CFbsBitmap *aBitmap, CFbsBitmap *aMask, TSize aSize = TSize(0,0)) = 0;
-    virtual TInt CopyBitmap(TInt /*aDisplayMode*/, TInt /*aMaskMode*/, CSvgtBitmap* /*aBitmap*/, CSvgtBitmap */*aMask*/, TSize /*aSize*/ = TSize(0,0)) { return KErrNotSupported; }
     
     virtual TInt BindClientBuffer(TInt aBuffer) = 0;
     
--- a/svgtopt/VGRenderer/inc/VGSurface.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/VGRenderer/inc/VGSurface.h	Wed Sep 01 12:20:46 2010 +0100
@@ -27,8 +27,6 @@
 class CFbsBitmap;
 class CVGRenderer;
 
-class CSvgtBitmap;
-
 /**
  *  CVGSurface
  * 
@@ -123,11 +121,6 @@
         return iImpl->CopyBitmap(aDisplayMode,aMaskMode, aBitmap, aMask, aSize);
         }
  
-    TInt CopyBitmap(TInt aDisplayMode,TInt aMaskMode,CSvgtBitmap *aBitmap, CSvgtBitmap *aMask, TSize aSize)
-        {
-        return iImpl->CopyBitmap(aDisplayMode,aMaskMode, aBitmap, aMask, aSize);
-        }
-
     /**
      * @fn          PrepareToBindClientBuffer
      *              Prepares the renderer to bind to an image. 
--- a/svgtopt/gfx2d/inc/Gfx2dGcInterface.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/gfx2d/inc/Gfx2dGcInterface.h	Wed Sep 01 12:20:46 2010 +0100
@@ -34,7 +34,6 @@
 #include "SvgBitmapFontProvider.h"
 class MGfxShape;
 class MGfxPaint;
-class CSvgtBitmap;
 
 typedef enum
 {
@@ -348,10 +347,6 @@
          */
         virtual void UpdateFramebufferL( CFbsBitmap* aFrameBuffer, CFbsBitmap* aMask ) = 0;
         virtual void UpdateFramebufferL( CFbsBitmap* aFrameBuffer, CFbsBitmap* aMask,TSize aFrameBufferSize,TDisplayMode aFrameBufferMode,TDisplayMode aMaskDspMode ) =0;
-
-        
-        virtual void UpdateFramebufferL( CSvgtBitmap* /*aFrameBuffer*/, CSvgtBitmap* /*aMask*/ ){}
-        virtual void UpdateFramebufferL( CSvgtBitmap* /*aFrameBuffer*/, CSvgtBitmap* /*aMask*/,TSize /*aFrameBufferSize*/,TDisplayMode /*aFrameBufferMode*/,TDisplayMode /*aMaskDspMode*/ ){}
         /**
          * Blend aFrameBuffer with background buffer using the opacity value
          *
@@ -370,7 +365,6 @@
           * @return
           */
 		virtual void GenerateMask(CFbsBitmap* aMask)=0;
-        virtual void GenerateMask(CSvgtBitmap* /*aMask*/){};
 
 		  /**
          * Set the fill opacity value
--- a/svgtopt/gfx2d/inc/Gfx2dGcOpenVG.h	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/gfx2d/inc/Gfx2dGcOpenVG.h	Wed Sep 01 12:20:46 2010 +0100
@@ -26,8 +26,6 @@
 #include "VGSurface.h"
 #include <VG/openvg.h>
 
-class CSvgtBitmap;
-
 const TUint8 KMediaAnimationVisible =  2;
   
 /**
@@ -49,7 +47,7 @@
          */
          static CGfx2dGcOpenVG* NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider, TBool aIsMain = ETrue );
 
-         static CGfx2dGcOpenVG* NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider,SVGRendererId aRendererType,TBool aRenderOption = ETrue );
+         static CGfx2dGcOpenVG* NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider,SVGRendererId aRendererType,TBool aIsMain = ETrue );
          void                 GetFontScaled( TFloatFixPt aHeight, const TDesC& aTypefaceName, CFont*& aFont, TFontSpec& aFontSpec );
 
         /**
@@ -354,10 +352,7 @@
          void UpdateFramebufferL( CFbsBitmap* aBitmap, CFbsBitmap* aMask );
 
          void UpdateFramebufferL( CFbsBitmap* aBitmap, CFbsBitmap* aMask,TSize BitmapSize,TDisplayMode aBitmapDspMode,TDisplayMode aMaskDspMode );
-
-         void UpdateFramebufferL( CSvgtBitmap* aBitmap, CSvgtBitmap* aMask );
-         void UpdateFramebufferL( CSvgtBitmap* aBitmap, CSvgtBitmap* aMask,TSize BitmapSize,TDisplayMode aBitmapDspMode,TDisplayMode aMaskDspMode );
-         /**
+        /**
          * Blend aFrameBuffer with background buffer using the opacity value
          *
          * @since 1.0
@@ -375,8 +370,7 @@
           * @return
           */
 		 void GenerateMask(CFbsBitmap* aMask);
-		 void GenerateMask(CSvgtBitmap* aMask);
-		  
+
 		  /**
          * Set the fill opacity value
         *
@@ -516,12 +510,6 @@
         // Color conversion/copy to Symbian bitmap is needed as final step
         TSize                           iColorBufferSize;
 
-        TDisplayMode    iDisplayMode;
-        
-        // M2G: Variable to specify the target rendering option (rendering onto bitmap or onto target)
-        TBool iRenderOption;
-        TBool iGraphicsContextCreated;
-                
         TGfxRectangle2D                 iClip;
         MGfxPaint*                      iFillColor;
         TFloatFixPt						iFillOpacity;
@@ -547,6 +535,10 @@
         TFontSpec                       iFontSpec;
         //OpenVG stuff
 
+        TDisplayMode    iDisplayMode;
+        TBool iGraphicsContextCreated;
+        TBool iIsMainContext;
+
         VGPaint							iFillPaint;
         VGPaint							iStrokePaint;
         VGPath                          iPath;
--- a/svgtopt/gfx2d/src/GfxGc/Gfx2dGcOpenVG.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/gfx2d/src/GfxGc/Gfx2dGcOpenVG.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -48,7 +48,6 @@
 // OpenVG API Binding Symbian specific
 #include <vg/vgcontext_symbian.h>
 
-#include <svgtbitmap.h>
 // For allocating path segment type array
 // Found 130 to be max size at bootup
 const TInt KPathSegmentTypeInitialSize = 130;
@@ -62,21 +61,20 @@
 // --------------------------------------------------------------------------
 // CGfx2dGcOpenVG::CGfx2dGcOpenVG() : iScale( 1 ),
 // ---------------------------------------------------------------------------
-CGfx2dGcOpenVG::CGfx2dGcOpenVG( TBool aRenderOption ) :
-                        iRenderOption(aRenderOption),
-                        iGraphicsContextCreated( EFalse ),
+CGfx2dGcOpenVG::CGfx2dGcOpenVG( TBool /* aIsMainContext */ ) :
                         iFillOpacity( 1 ),
                         iScale( 1 ),
                         iStrokeColor( 0 ),
                         iStrokeOpacity( 1 ),
                         iBackgroundColor( 0xffffff ),
-                        iFontSize( 10 ),
-                        iFontWeight( -1 ),
-                        iFontStyle( -1 ),
-                        iFamilies( NULL ),
-                        iTextAnchor( EGfxTextAnchorNone ),
-                        iTextDecoration( EGfxTextDecorationNone ),
-                        iRenderQuality(VG_RENDERING_QUALITY_BETTER),
+                       iFontSize( 10 ),
+                       iFontWeight( -1 ),
+                       iFontStyle( -1 ),
+                       iFamilies( NULL ),
+                       iTextAnchor( EGfxTextAnchorNone ),
+                       iTextDecoration( EGfxTextDecorationNone ),
+                       iGraphicsContextCreated( EFalse ),
+                       iRenderQuality(VG_RENDERING_QUALITY_BETTER),
 		       						iCurrentRendererType(ESVGRendererSW)
                        
     {
@@ -88,9 +86,9 @@
 // --------------------------------------------------------------------------
 // CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( CFbsBitmap* aFrameBuffer, TFontSpec& aFontSpec )
 // ---------------------------------------------------------------------------
- CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider, TBool aRenderOption )
+ CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider, TBool aIsMainContext )
     {
-    CGfx2dGcOpenVG* self = new( ELeave ) CGfx2dGcOpenVG( aRenderOption );
+    CGfx2dGcOpenVG* self = new( ELeave ) CGfx2dGcOpenVG( aIsMainContext );
     CleanupStack::PushL( self );
     self->ConstructL( aBufferSize, aFontSpec, aSvgBitmapFontProvider);
     CleanupStack::Pop();
@@ -125,7 +123,7 @@
 
     iDashArray = new ( ELeave ) CArrayFixFlat<VGfloat>( 32 );
     
-    iVgRenderer  = CVGRenderer::NewL(ESVGRendererSW, iRenderOption);
+    iVgRenderer  = CVGRenderer::NewL(ESVGRendererSW, 0);
     iVgSurface   = iVgRenderer->GetCurrentSurface();
     ChangeBufferSizeL( aBufferSize );
     }
@@ -133,9 +131,9 @@
 // --------------------------------------------------------------------------
 // CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( CFbsBitmap* aFrameBuffer, TFontSpec& aFontSpec )
 // ---------------------------------------------------------------------------
- CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider,SVGRendererId aRendererType,TBool aRenderOption )
+ CGfx2dGcOpenVG* CGfx2dGcOpenVG::NewL( const TSize aBufferSize, TFontSpec& aFontSpec, CSvgBitmapFontProvider* aSvgBitmapFontProvider,SVGRendererId aRendererType,TBool aIsMainContext )
     {
-    CGfx2dGcOpenVG* self = new( ELeave ) CGfx2dGcOpenVG( aRenderOption );
+    CGfx2dGcOpenVG* self = new( ELeave ) CGfx2dGcOpenVG( aIsMainContext );
     CleanupStack::PushL( self );
     self->ConstructL( aBufferSize, aFontSpec, aSvgBitmapFontProvider,aRendererType);
     CleanupStack::Pop();
@@ -163,7 +161,7 @@
 
     iDashArray = new ( ELeave ) CArrayFixFlat<VGfloat>( 32 );
     iCurrentRendererType = aRendererType;
-    iVgRenderer = CVGRenderer::NewL(aRendererType, iRenderOption);
+    iVgRenderer = CVGRenderer::NewL(aRendererType, 0);
     iVgSurface   = iVgRenderer->GetCurrentSurface();
     
     iVgSurface->InitializeSurface( aBufferSize, VGI_COLORSPACE_SRGB );
@@ -2327,36 +2325,6 @@
     iVgRenderer->vgSeti( VG_FILTER_CHANNEL_MASK, KOriginalFilterMasks );
     }
 
- void CGfx2dGcOpenVG::GenerateMask(CSvgtBitmap* aMask)
-     {
-     if ( !aMask || aMask->SizeInPixels() != iColorBufferSize )
-         {
-         return;
-         }
-
-     const TDisplayMode KMaskDisplayMode = aMask->DisplayMode();
-
-     if ( KMaskDisplayMode != EGray256 && KMaskDisplayMode != EGray2 )
-         {
-         return;
-         }
-
-     const TInt KOriginalFilterMasks = iVgRenderer->vgGeti( VG_FILTER_CHANNEL_MASK );//
-     const TInt KStride = CFbsBitmap::ScanLineLength( iColorBufferSize.iWidth, KMaskDisplayMode );
-
-     // Change to get alpha values from OpenVG
-     iVgRenderer->vgSeti( VG_FILTER_CHANNEL_MASK, VG_ALPHA );
-
-     VGImageFormat format = ( KMaskDisplayMode == EGray256 ) ? VG_A_8 : VG_BW_1;
-
-     // Get data address of last line and move upwards (negative stride)
-     // OpenVG uses Cartesian coordinate system and Symbian uses Screen coordinate system.
-
-     iVgRenderer->vgReadPixels( aMask->BitmapBuffer(), -KStride, format, 0, 0,
-                   iColorBufferSize.iWidth, iColorBufferSize.iHeight );
-     // Set back the original filter-masks
-     iVgRenderer->vgSeti( VG_FILTER_CHANNEL_MASK, KOriginalFilterMasks );
-     }
 
 // ==========================================================================
 //  This function calls the low level function to set fill opacity value
@@ -3019,108 +2987,3 @@
     {
     return(iVgRenderer->TLVEncodedData());
     }
-
-//--------------------------------------------------------------------------------
-// M2G: UpdateFramebufferL() is overloaded to enable rendering on target buffer.
-//--------------------------------------------------------------------------------
-void CGfx2dGcOpenVG::UpdateFramebufferL( CSvgtBitmap* aBitmap, CSvgtBitmap* aMask )
-    {
-    if ( !aBitmap || aBitmap->SizeInPixels() != iColorBufferSize )
-        {
-        return;
-        }
-
-    const TDisplayMode KBitmapDisplayMode = aBitmap->DisplayMode();
-    // This check just before VGISymbianCopyToBitmap avoid putting lot
-    // many similar error checks in the code. If there is any problem 
-    // during OpenVG call we simply leave without drawing any thing.  
-         VGErrorCode vgret = (VGErrorCode)iVgRenderer->vgGetError();                    
-        
-    if(vgret != VG_NO_ERROR )
-    {
-        User::LeaveIfError(OpenVGErrorToSymbianError(vgret));
-    }
-
-    // EGray2 is not support in VGISymbianCopyToBitmap API
-    if ( KBitmapDisplayMode == EGray2 )
-        {
-        const TInt KStride = aBitmap->Stride();
-
-        iVgRenderer->vgReadPixels( aBitmap->BitmapBuffer(), -KStride, VG_BW_1, 0, 0,
-                      iColorBufferSize.iWidth, iColorBufferSize.iHeight );
-        }
-    // All other color modes
-    else
-        {
-        // No Mask -- to be generated in GenerateMask
-        TInt error=KErrNone;
-        
-        //In cases, where the mask/aMaskBitmap != NULL, the hint should be defined as VGI_SKIP_TRANSPARENT_PIXELS.
-        //In all other cases, i.e., when mask/aMaskBitmap == NULL, the definition should be VGI_COPY_TRANSPARENT_PIXELS
-        error = iVgSurface->CopyBitmap(ENone,ENone, aBitmap, aMask, iColorBufferSize);
-        
-        if ( error != KErrNone )
-            {
-            #ifdef _DEBUG
-                RDebug::Printf("VGICopyToTarget failed: error code: %d", error );
-                RDebug::Printf(" - Color mode: %d", aBitmap->DisplayMode() );
-                RDebug::Printf(" - Bitmap size: %dx%d", iColorBufferSize.iWidth, iColorBufferSize.iHeight );
-            #endif
-            User::LeaveIfError(error);
-            }
-        }
-    }
-
-//--------------------------------------------------------------------------------
-// M2G: UpdateFramebufferL() is overloaded to enable rendering on target buffer.
-//--------------------------------------------------------------------------------
-void CGfx2dGcOpenVG::UpdateFramebufferL( CSvgtBitmap* aBitmap, CSvgtBitmap* aMask,TSize /*BitmapSize*/,TDisplayMode aBitmapDspMode,TDisplayMode aMaskDspMode )
-    {
-    if ( !aBitmap)
-        {
-        return;
-        }
-
-    const TDisplayMode KBitmapDisplayMode = aBitmap->DisplayMode();
-    // This check just before VGISymbianCopyToBitmap avoid putting lot
-    // many similar error checks in the code. If there is any problem 
-    // during OpenVG call we simply leave without drawing any thing.  
-         VGErrorCode vgret = (VGErrorCode)iVgRenderer->vgGetError();                    
-                 
-    if(vgret != VG_NO_ERROR )
-    {
-        User::LeaveIfError(OpenVGErrorToSymbianError(vgret));
-    }
-
-    // EGray2 is not support in VGISymbianCopyToBitmap API
-    if ( KBitmapDisplayMode == EGray2 )
-        {
-        const TInt KStride = aBitmap->Stride();
-
-        iVgRenderer->vgReadPixels( aBitmap->BitmapBuffer(), -KStride, VG_BW_1, 0, 0,
-                      iColorBufferSize.iWidth, iColorBufferSize.iHeight );
-
-        }
-    // All other color modes
-    else
-        {
-        // No Mask -- to be generated in GenerateMask
-        TInt error=KErrNone;
-        
-        //In cases, where the mask/aMaskBitmap != NULL, the hint should be defined as VGI_SKIP_TRANSPARENT_PIXELS.
-        //In all other cases, i.e., when mask/aMaskBitmap == NULL, the definition should be VGI_COPY_TRANSPARENT_PIXELS
-        
-        error = iVgSurface->CopyBitmap(aBitmapDspMode, aMaskDspMode, aBitmap, aMask, iColorBufferSize);
-        
-        if ( error != KErrNone )
-            {
-            #ifdef _DEBUG
-                RDebug::Printf("VGICopyToTarget failed: error code: %d", error );
-                RDebug::Printf(" - Color mode: %d", aBitmap->DisplayMode() );
-                RDebug::Printf(" - Bitmap size: %dx%d", iColorBufferSize.iWidth, iColorBufferSize.iHeight );
-            #endif
-            User::LeaveIfError(error);
-            }
-        }
-    
-    }
--- a/svgtopt/nvgdecoder/src/TLVIconCreator.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/nvgdecoder/src/TLVIconCreator.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -71,45 +71,45 @@
         : 
         iNVGDataPtr((TUint8 *)&aWidth, 1)
     {
-    vgapi[EvgSeti]              = &CTLVIconCreator::DvgAddCommandL;        
-    vgapi[EvgSetf]              = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetParameteri]     = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetParameterf]     = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetParameterfv]    = &CTLVIconCreator::DvgSetParameterfvL;
-    vgapi[EvgSetColor]          = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetPaint]          = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgLoadMatrix]        = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgMultMatrix]        = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgLoadIdentity]      = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgScale]             = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgTranslate]         = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgAppendPathData]    = &CTLVIconCreator::DvgAppendPathDataL;
-    vgapi[EvgDrawPath]          = &CTLVIconCreator::DvgDrawPathL;
-    vgapi[EvgClearPath]         = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvguRect]             = &CTLVIconCreator::DvguRectL;
-    vgapi[EvguEllipse]          = &CTLVIconCreator::DvguEllipseL;
-    vgapi[EvguRoundRect]        = &CTLVIconCreator::DvguRoundRectL;
-    vgapi[EvguLine]             = &CTLVIconCreator::DvguLineL;
-    vgapi[EvgCreatePaint]       = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetiv]             = &CTLVIconCreator::DvgSetivL;                      
-    vgapi[EvgClear]             = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgSetfv]             = &CTLVIconCreator::DvgSetfvL;
-    vgapi[EvgRotate]            = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgCreatePath]        = &CTLVIconCreator::DvgCreatePathL;
-    vgapi[EvgCreateImage]       = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgGetPixels]         = &CTLVIconCreator::DvgGetPixelsL;
-    vgapi[EvgDrawImage]         = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgClearImage]        = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgImageSubData]      = &CTLVIconCreator::DvgImageSubDataL;
-    vgapi[EvgDestroyImage]      = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgDestroyPaint]      = &CTLVIconCreator::DvgDestroyPaintL;
-    vgapi[EvgDestroyPath]       = &CTLVIconCreator::DvgDestroyPathL;
+    vgapi[EvgSeti]              = &DvgAddCommandL;        
+    vgapi[EvgSetf]              = &DvgAddCommandL;
+    vgapi[EvgSetParameteri]     = &DvgAddCommandL;
+    vgapi[EvgSetParameterf]     = &DvgAddCommandL;
+    vgapi[EvgSetParameterfv]    = &DvgSetParameterfvL;
+    vgapi[EvgSetColor]          = &DvgAddCommandL;
+    vgapi[EvgSetPaint]          = &DvgAddCommandL;
+    vgapi[EvgLoadMatrix]        = &DvgAddCommandL;
+    vgapi[EvgMultMatrix]        = &DvgAddCommandL;
+    vgapi[EvgLoadIdentity]      = &DvgAddCommandL;
+    vgapi[EvgScale]             = &DvgAddCommandL;
+    vgapi[EvgTranslate]         = &DvgAddCommandL;
+    vgapi[EvgAppendPathData]    = &DvgAppendPathDataL;
+    vgapi[EvgDrawPath]          = &DvgDrawPathL;
+    vgapi[EvgClearPath]         = &DvgAddCommandL;
+    vgapi[EvguRect]             = &DvguRectL;
+    vgapi[EvguEllipse]          = &DvguEllipseL;
+    vgapi[EvguRoundRect]        = &DvguRoundRectL;
+    vgapi[EvguLine]             = &DvguLineL;
+    vgapi[EvgCreatePaint]       = &DvgAddCommandL;
+    vgapi[EvgSetiv]             = &DvgSetivL;                      
+    vgapi[EvgClear]             = &DvgAddCommandL;
+    vgapi[EvgSetfv]             = &DvgSetfvL;
+    vgapi[EvgRotate]            = &DvgAddCommandL;
+    vgapi[EvgCreatePath]        = &DvgCreatePathL;
+    vgapi[EvgCreateImage]       = &DvgAddCommandL;
+    vgapi[EvgGetPixels]         = &DvgGetPixelsL;
+    vgapi[EvgDrawImage]         = &DvgAddCommandL;
+    vgapi[EvgClearImage]        = &DvgAddCommandL;
+    vgapi[EvgImageSubData]      = &DvgImageSubDataL;
+    vgapi[EvgDestroyImage]      = &DvgAddCommandL;
+    vgapi[EvgDestroyPaint]      = &DvgDestroyPaintL;
+    vgapi[EvgDestroyPath]       = &DvgDestroyPathL;
     
-    vgapi[EvgPrepareToBindImage]= &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgBindImage]         = &CTLVIconCreator::DvgAddCommandL;
-    vgapi[EvgUnBindImage]       = &CTLVIconCreator::DvgAddCommandL;
+    vgapi[EvgPrepareToBindImage]= &DvgAddCommandL;
+    vgapi[EvgBindImage]         = &DvgAddCommandL;
+    vgapi[EvgUnBindImage]       = &DvgAddCommandL;
         
-    vgapi[EvgFlush]             = &CTLVIconCreator::DvgAddCommandL;
+    vgapi[EvgFlush]             = &DvgAddCommandL;
     
     iTargetWidth        = aWidth;
     iTargetHeight       = aHeight;
--- a/svgtopt/nvgdecoder/src/TLVRenderer.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/nvgdecoder/src/TLVRenderer.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -51,43 +51,43 @@
 
 void CTLVRenderer::ConstructL(const TDesC8& aBuf)
     {
-    vgapi[EvgSeti]              = &CTLVRenderer::DvgSetiL;
-    vgapi[EvgSetf]              = &CTLVRenderer::DvgSetfL;
-    vgapi[EvgSetParameteri]     = &CTLVRenderer::DvgSetParameteriL;
-    vgapi[EvgSetParameterf]     = &CTLVRenderer::DvgSetParameterfL;
-    vgapi[EvgSetParameterfv]    = &CTLVRenderer::DvgSetParameterfvL;
-    vgapi[EvgSetColor]          = &CTLVRenderer::DvgSetColorL;
-    vgapi[EvgSetPaint]          = &CTLVRenderer::DvgSetPaintL;
-    vgapi[EvgLoadMatrix]        = &CTLVRenderer::DvgLoadMatrixL;
-    vgapi[EvgMultMatrix]        = &CTLVRenderer::DvgMultMatrixL;
-    vgapi[EvgLoadIdentity]      = &CTLVRenderer::DvgLoadIdentityL;
-    vgapi[EvgScale]             = &CTLVRenderer::DvgScaleL;
-    vgapi[EvgTranslate]         = &CTLVRenderer::DvgTranslateL;
-    vgapi[EvgAppendPathData]    = &CTLVRenderer::DvgAppendPathDataL;
-    vgapi[EvgDrawPath]          = &CTLVRenderer::DvgDrawPathL;
-    vgapi[EvgClearPath]         = &CTLVRenderer::DvgClearPathL;
-    vgapi[EvguRect]             = &CTLVRenderer::DvguRectL;
-    vgapi[EvguEllipse]          = &CTLVRenderer::DvguEllipseL;
-    vgapi[EvguRoundRect]        = &CTLVRenderer::DvguRoundRectL;
-    vgapi[EvguLine]             = &CTLVRenderer::DvguLineL;
-    vgapi[EvgCreatePaint]       = &CTLVRenderer::DvgCreatePaintL;
-    vgapi[EvgSetiv]             = &CTLVRenderer::DvgSetivL;
-    vgapi[EvgClear]             = &CTLVRenderer::DvgClearL;
-    vgapi[EvgSetfv]             = &CTLVRenderer::DvgSetfvL;
-    vgapi[EvgRotate]            = &CTLVRenderer::DvgRotateL;
-    vgapi[EvgCreatePath]        = &CTLVRenderer::DvgCreatePathL;
-    vgapi[EvgCreateImage]       = &CTLVRenderer::DvgCreateImageL;
-    vgapi[EvgGetPixels]         = &CTLVRenderer::DvgGetPixelsL;
-    vgapi[EvgDrawImage]         = &CTLVRenderer::DvgDrawImageL;
-    vgapi[EvgClearImage]        = &CTLVRenderer::DvgClearImageL;
-    vgapi[EvgImageSubData]      = &CTLVRenderer::DvgImageSubDataL;
-    vgapi[EvgDestroyImage]      = &CTLVRenderer::DvgDestroyImageL;
-    vgapi[EvgDestroyPaint]      = &CTLVRenderer::DvgDestroyPaintL;
-    vgapi[EvgDestroyPath]       = &CTLVRenderer::DvgDestroyPathL;
-    vgapi[EvgPrepareToBindImage]= &CTLVRenderer::DvgPrepareToBindImageL;
-    vgapi[EvgBindImage]         = &CTLVRenderer::DvgBindImageL;
-    vgapi[EvgUnBindImage]       = &CTLVRenderer::DvgUnBindImageL;
-    vgapi[EvgFlush]             = &CTLVRenderer::DvgFlushL;
+    vgapi[EvgSeti]              = &DvgSetiL;
+    vgapi[EvgSetf]              = &DvgSetfL;
+    vgapi[EvgSetParameteri]     = &DvgSetParameteriL;
+    vgapi[EvgSetParameterf]     = &DvgSetParameterfL;
+    vgapi[EvgSetParameterfv]    = &DvgSetParameterfvL;
+    vgapi[EvgSetColor]          = &DvgSetColorL;
+    vgapi[EvgSetPaint]          = &DvgSetPaintL;
+    vgapi[EvgLoadMatrix]        = &DvgLoadMatrixL;
+    vgapi[EvgMultMatrix]        = &DvgMultMatrixL;
+    vgapi[EvgLoadIdentity]      = &DvgLoadIdentityL;
+    vgapi[EvgScale]             = &DvgScaleL;
+    vgapi[EvgTranslate]         = &DvgTranslateL;
+    vgapi[EvgAppendPathData]    = &DvgAppendPathDataL;
+    vgapi[EvgDrawPath]          = &DvgDrawPathL;
+    vgapi[EvgClearPath]         = &DvgClearPathL;
+    vgapi[EvguRect]             = &DvguRectL;
+    vgapi[EvguEllipse]          = &DvguEllipseL;
+    vgapi[EvguRoundRect]        = &DvguRoundRectL;
+    vgapi[EvguLine]             = &DvguLineL;
+    vgapi[EvgCreatePaint]       = &DvgCreatePaintL;
+    vgapi[EvgSetiv]             = &DvgSetivL;
+    vgapi[EvgClear]             = &DvgClearL;
+    vgapi[EvgSetfv]             = &DvgSetfvL;
+    vgapi[EvgRotate]            = &DvgRotateL;
+    vgapi[EvgCreatePath]        = &DvgCreatePathL;
+    vgapi[EvgCreateImage]       = &DvgCreateImageL;
+    vgapi[EvgGetPixels]         = &DvgGetPixelsL;
+    vgapi[EvgDrawImage]         = &DvgDrawImageL;
+    vgapi[EvgClearImage]        = &DvgClearImageL;
+    vgapi[EvgImageSubData]      = &DvgImageSubDataL;
+    vgapi[EvgDestroyImage]      = &DvgDestroyImageL;
+    vgapi[EvgDestroyPaint]      = &DvgDestroyPaintL;
+    vgapi[EvgDestroyPath]       = &DvgDestroyPathL;
+    vgapi[EvgPrepareToBindImage]= &DvgPrepareToBindImageL;
+    vgapi[EvgBindImage]         = &DvgBindImageL;
+    vgapi[EvgUnBindImage]       = &DvgUnBindImageL;
+    vgapi[EvgFlush]             = &DvgFlushL;
 
     vgGetMatrix(iUserMatrix);
 
--- a/svgtopt/nvgdecoder/src/nvg.cpp	Tue Aug 31 16:06:58 2010 +0300
+++ b/svgtopt/nvgdecoder/src/nvg.cpp	Wed Sep 01 12:20:46 2010 +0100
@@ -181,8 +181,7 @@
       iLastPathDataType(0),
       iPreserveAspectSetting(ENvgPreserveAspectRatio_XmidYmid),
       iSmilFitSetting(ENvgMeet),
-      iVGImageBinder(0),
-      iBackgroundColor(0)
+      iVGImageBinder(0)
     {
     }
 
@@ -407,11 +406,6 @@
         iCurrentBufferSize = aSize;
         }
     
-    if (iBackgroundColor)
-        {
-        ClearBackground();
-        }
-
     iDstBimtap = aDstBitmap;
     
     TDereferencer nvgIconData(aBuffer);
@@ -1565,14 +1559,14 @@
 
 void CNvgEngine::ClearBackground()
     {
-    TUint32 rgba = iBackgroundColor;//(iBackgroundColor << 8) | (iBackgroundColor >> 24);
+    TUint32 rgba = (iBackgroundColor << 8) | (iBackgroundColor >> 24);
     TInt32 r, g, b, a;
     r = (TInt)((rgba & 0xFF000000) >> 24);
     g = (TInt)((rgba & 0x00FF0000) >> 16);
     b = (TInt)((rgba & 0x0000FF00) >> 8);
     a = (TInt)(rgba & 0x000000FF);
     
-    //r += r >> 7; g += g >> 7; b += b >> 7; a += a >> 7;
+    r += r >> 7; g += g >> 7; b += b >> 7; a += a >> 7;
     
     const VGfloat KInverse255 =  1.0f/256.0f;
     const VGfloat clearColor[4] = { (KInverse255 * VGfloat (r)),
@@ -1580,10 +1574,10 @@
             (KInverse255 * VGfloat (b)),
             (KInverse255 * VGfloat (a)) };
     
-    //vgSeti(VG_SCISSORING, VG_FALSE);
+    vgSeti(VG_SCISSORING, VG_FALSE);
     vgSetfv(VG_CLEAR_COLOR, 4, clearColor);
     vgClear(0, 0, iCurrentBufferSize.iWidth, iCurrentBufferSize.iHeight);
-    //vgSeti(VG_SCISSORING, VG_TRUE);
+    vgSeti(VG_SCISSORING, VG_TRUE);
     }
 
 TBool CNvgEngine::IsIdentity(VGfloat array[])