--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fstextureloader.h Wed Sep 01 12:28:57 2010 +0100
@@ -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