skins/AknSkins/srvinc/aknssrvwallpaperscaling.h
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/skins/AknSkins/srvinc/aknssrvwallpaperscaling.h	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2006-2007 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:  Image decoding and scaling utility class.
+*
+*/
+
+
+#ifndef AKNSSRVWALLPAPERSCALING_H
+#define AKNSSRVWALLPAPERSCALING_H
+
+#include <imageconversion.h>
+#include <bitmaptransforms.h>
+#include <SVGRequestObserver.h>
+
+class CSvgEngineInterfaceImpl;
+class MSvgError;
+
+/*
+* SVG Image decoder.
+*/
+NONSHARABLE_CLASS(CAknsSrvSVGImageDecoder) : public CBase, public MSvgRequestObserver
+    {
+    public:
+        static CAknsSrvSVGImageDecoder* NewL();
+        ~CAknsSrvSVGImageDecoder();
+        void DecodeImageL( const TDesC& aFilename,
+            const TSize& aTargetSize,
+            CFbsBitmap*& aBitmap,
+            CFbsBitmap*& aMask );
+        void LeaveIfErrorL( MSvgError* aError );
+    protected:
+        CAknsSrvSVGImageDecoder();
+        void ConstructL();
+    private:
+        void UpdateScreen();
+        TBool ScriptCall( const TDesC& aScript,CSvgElementImpl* aCallerElement );
+        TInt FetchImage( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
+        void GetSmilFitValue( TDes& aSmilValue );
+        void UpdatePresentation( const TInt32&  aNoOfAnimation );
+        TInt FetchFont( const TDesC& aUri, RFs& aSession, RFile& aFileHandle );
+    private:
+        CFbsBitmap* iBitmap;
+        CFbsBitmap* iMask;
+        CFbsBitmap* iDummyBitmap;
+        CSvgEngineInterfaceImpl* iSvgEngine;
+    };
+
+/*
+* Non-SVG Image decoder.
+*/
+NONSHARABLE_CLASS(CAknsSrvImageConverter) : public CActive
+    {
+    public:
+        static CAknsSrvImageConverter* NewL();
+        ~CAknsSrvImageConverter();
+
+        static void DecodeImageL(
+            RFs& aRFs,
+            const TDesC& aFilename,
+            const TSize& aTargetSize,
+            CFbsBitmap*& aBitmap,
+            CFbsBitmap*& aMask,
+            const TSize& aMaxSize );
+
+        void ScaleAndCropImageL(
+            CFbsBitmap*& aBitmap,
+            const TSize& aTargetSize );
+        void DoCancel();
+        void RunL();
+
+    protected:
+        CAknsSrvImageConverter();
+        void ConstructL();
+    private:
+        void BeginWait();
+        void EndWait();
+
+    private:
+        CBitmapScaler* iBitmapScaler;
+        TInt iConversionError;
+        CActiveSchedulerWait iWait;
+        TBool iWaitActive;
+    };
+
+#endif
+