emailuis/uicomponents/inc/fstextureloader.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fstextureloader.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,320 @@
+/*
+* Copyright (c) 2007-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: This file defines class CFsTextureLoader.
+*
+*/
+
+
+#ifndef __FSTEXTURELOADER_H__
+#define __FSTEXTURELOADER_H__
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+//<cmail> removed __FS_ALFRED_SUPPORT flag 
+//#include <fsconfig.h>
+//</cmail> removed __FS_ALFRED_SUPPORT flag 
+//<cmail> SF
+#include <alf/alftexturemanager.h>
+//</cmail>
+#include "fstextureobserver.h"
+#include "fstextureloaderobserver.h"
+
+// FORWARD DECLARATIONS
+class CFsTexture;
+class CImageDecoder;
+class RFs;
+class TFrameInfo;
+
+// CLASS DECLARATION
+
+/**
+*  CFsTextureLoader
+*  Loader
+*/
+class CFsTextureLoader
+    : public CBase,
+
+      public MAlfTextureLoadingCompletedObserver,
+
+      public MFsTextureLoaderObserver
+    {
+    public:
+        // Flags
+        enum
+            {
+            EFlagNoneDefined,
+            EFlagLoadSyncronously = 1 << 0,
+            EFlagSetStatic = 1 << 1
+            };
+    public:
+        // Internal view structure
+        struct TView
+            {
+            TView& operator= ( const TView& aView );
+            TInt iStart;
+            TInt iLength;
+            };
+    public: // Constructor, destructor
+        /**
+         * 2-phased constructor
+         * @param aManager Texture manager reference
+         * @param aObserver Observer reference
+         * @return Instance of loader
+         */
+
+        static CFsTextureLoader* NewL( CAlfTextureManager& aManager,
+                                       MFsTextureObserver& aObserver 
+                                     );
+
+
+        /**
+         * C++ Destructor
+         */
+        ~CFsTextureLoader();
+        
+    public: // New methods
+        /**
+         * Search texture
+         * @param aImageFileName File criteria
+         * @param aIndex Index, 0 by default
+         * @return null, or first found texture from beginning to index
+         */
+        CFsTexture* SearchByImageName( const TDesC& aImageFileName, TInt* aIndex = NULL );
+
+        /**
+         * Search texture
+         * @param aPos Position criteria
+         * @param aIndex Index, 0 by default
+         * @return null, or first found texture from beginning to index
+         */
+        CFsTexture* SearchByPos( const TInt& aPos, TInt* aIndex = NULL );
+
+        /**
+         * Search texture
+         * @param aId
+         */
+        CFsTexture* SearchById( TInt aId );
+
+        /**
+         * Create texture
+         * @param aImageFileName File
+         * @param aFlag Hitchock flags
+         * @param aId Texture unique id, 0 for automation 
+         * @param aLoaderFlags Texture loader flags
+         * @return Texture reference
+         */
+
+        CFsTexture& LoadTextureL( const TDesC& aImageFileName,
+                                  TSize aTextureMaxSize = TSize( 0, 0 ),
+                                  TAlfTextureFlags aFlags = EAlfTextureFlagDefault,
+                                  TInt aId = 0,
+                                  const TInt& aLoaderFlags = 0
+                                ); 
+
+
+        /**
+         * Create texture from bitmaps
+         * @param aBitmap Bitmap
+         * @param aBitmapMask Mask
+         * @param aFlag Hitchock flags
+         * @param aId Texture unique id, 0 for automation 
+         * @param aLoaderFlags Texture loader flags
+         * @return Texture reference
+         */
+
+        CFsTexture& AppendBitmapL( CFbsBitmap* aBitmap,
+                                   CFbsBitmap* aBitmapMask,
+                                   TAlfTextureFlags aFlags = EAlfTextureFlagDefault,
+                                   TInt aId = 0,
+                                   const TInt& aLoaderFlags = 0
+                                 );
+
+        
+        /**
+         * Set view
+         * @param aStart Beginning of view area
+         * @param aLength View area length
+         */
+        void SetViewL( const TInt& aStart, const TInt& aLength );
+
+        /**
+         * Set view
+         * @param aView View structure
+         */
+        void SetViewL( const TView& aView );
+
+        /**
+         * Return current view area
+         * @return View structure
+         */
+        TView View() const;
+
+        /**
+         * Unload texture
+         * @param aTexture Texture reference
+         */
+        void Unload( CFsTexture& aTexture );
+
+        /**
+         * Texture count
+         * @return Number of textures
+         */
+        TInt TextureCount() const;
+
+        /**
+         * Get texture by index
+         * @param aIndex Texture index
+         * @return null, or address of texture
+         */
+        CFsTexture* TextureAtIndex( const TInt& aIndex );
+
+        /**
+         * Read bitmap properties
+         * @param aImageFileName Filename
+         * @param aFrameInfo Bitmap properties as return value
+         */
+        static void GetFrameInfoL( const TDesC& aImageFileName, 
+                                   TFrameInfo& aFrameInfo 
+                                 );
+        
+        /**
+         * Set default timeout for unloading the textures
+         * @param aTimeOut Timeout in microseconds, 10 sec. by default
+         */
+        void SetDefaultTimeOut( const TTimeIntervalMicroSeconds32& aTimeOut );
+
+    private: // New methods
+
+        /**
+         * Load texture
+         * @param aTexture Address of texture
+         */
+        void LoadL( CFsTexture* aTexture = NULL );
+
+        /**
+         * Unload texture
+         */
+        void UnloadL();
+
+        /**
+         * Return texture id
+         * @return Unique id
+         */
+        TInt GetId();
+    private: // Constructors
+        /**
+         * C++ constructor
+         * @param aManager Texture manager reference
+         * @param aObserver Observer reference
+         */
+
+        CFsTextureLoader( CAlfTextureManager& aManager,
+                          MFsTextureObserver& aObserver
+                        );
+
+
+        /**
+         * 2nd phase constructor
+         */
+        void ConstructL();
+        
+    private: // MHuiTextureLoadingCompletedObserver / MAlfTextureLoadingCompletedObserver
+
+        /**
+         * Called to notify the observer that loading of a texture has
+         * been completed.
+         * @param aTexture Reference to the texture that has been loaded.
+         * @param aTextureId Id of the texture in the texture manager. Can be used
+         * to identify the loaded texture, provided that an id was assigned to the
+         * texture.
+         * @param aErrorCode KErrNone if the load was successful, otherwise one of
+         * the system-wide error codes indicating reason why the texture loading
+         * failed.
+         * @note One should not commence loading of a new texture in this callback method.
+         */
+        void TextureLoadingCompleted( CAlfTexture& aTexture,
+                                      TInt aTextureId,
+                                      TInt aErrorCode
+                                    );
+
+
+    private: // MFsTextureLoaderObserver 
+        /**
+         * TimerExpiredL
+         * @param aTexture Texture reference
+         */
+        virtual void TimerExpiredL( CFsTexture& aTexture );
+
+        /**
+         * Loader timeout
+         * @param aTimeOut Timeout in microseconds as return value
+         */
+        virtual void DefaultTimeOut( TTimeIntervalMicroSeconds32& aTimeOut );
+
+        /**
+         * Texture position updated
+         * @param aTexture Texture reference
+         */
+        virtual void PosUpdated( CFsTexture& aTexture );
+
+        /**
+         * Texture destroyed
+         * @param aTexture Texture reference
+         */
+        virtual void Deleted( CFsTexture& aTexture );
+        
+        /**
+         * Flags updated
+         * @param aTexture Texture reference
+         */
+        virtual void FlagsUpdated( CFsTexture& aTexture );
+
+        /**
+         * Size updated
+         * @param aTexture Texture reference
+         */
+        virtual void SizeUpdated( CFsTexture& aTexture );
+
+    private: // data
+        /** Texture manager reference */
+
+        CAlfTextureManager& iManager;
+
+        
+        /**  File system reference */
+        RFs& iFs;
+
+        /** Owns: */
+        CArrayPtr<CFsTexture>* iTextures;
+
+        /**  View context */
+        TView iView;
+
+        /**  Scheduler */
+        CActiveSchedulerWait iWait;
+        
+        /** Observer reference */
+        MFsTextureObserver& iObserver;
+        
+        /** Id counter */
+        TInt iId;
+        
+        /** Default timeout */
+        TTimeIntervalMicroSeconds32 iDefaultTimeOut;        
+    };
+
+#endif // __FSTEXTURELOADER_H__
+
+// End of File
\ No newline at end of file