imageeditorengine/filters/FilterIclSource/Inc/CFilterIclSource.h
changeset 1 edfc90759b9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditorengine/filters/FilterIclSource/Inc/CFilterIclSource.h	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:  
+*
+*/
+
+
+#ifndef __CFILTERICLSOURCE_H__
+#define __CFILTERICLSOURCE_H__
+
+#include <e32base.h>
+#include "MImageFilter.h"
+
+class CFbsBitmap;
+class CImageDecoder;
+
+//  Loader observer
+//=============================================================================
+class TBlockEntry
+{
+public:
+	inline ~TBlockEntry()
+	{
+	    delete[] iData;
+	}
+public:
+	TRect       iRect;
+	TUint32 *   iData;
+};
+
+
+//  Loader observer
+//=============================================================================
+class MLoaderObserver
+{
+public:
+    virtual void OperationReady (const TInt aError) = 0;
+};
+
+
+//  CActive derived loader class
+//=============================================================================
+class CImageLoader : public CActive
+{
+
+public:
+    CImageLoader (MLoaderObserver * aObserver);
+    virtual ~CImageLoader();
+    void LoadBitmapL (TDesC & aFileName, CFbsBitmap * iBitmap);
+
+protected:
+    virtual void RunL();
+    virtual void DoCancel();
+
+private:
+    CFbsBitmap *        iBitmap;
+    CImageDecoder *     iDecoder;
+    MLoaderObserver *   iObserver;
+};
+
+
+//  ICL source filter
+//=============================================================================
+class CFilterIclSource
+	: public CBase
+	, public MImageFilter
+    , public MLoaderObserver
+	{
+
+public:
+
+        IMPORT_C static TInt Create();
+		virtual ~CFilterIclSource();
+
+public: // MImageFilter
+		virtual TRect Rect();
+        virtual TReal Scale();
+        virtual TSize ViewPortSize();
+	    virtual TBlock * GetBlockL ( const TRect & aRect );
+		virtual void SetParent( MImageFilter* aParent );
+		virtual void SetChild( MImageFilter* aChild );
+		virtual TInt CmdL( const TDesC16& aCmd );
+		virtual const char* Type();
+
+public: // MLoaderObserver
+        virtual void OperationReady (const TInt aError);
+
+protected:        
+
+
+private:
+		static CFilterIclSource* NewL();
+		CFilterIclSource();
+		void ConstructL();
+        void LoadRectL();
+
+private: // Data
+
+        enum TOutputState
+        {
+            EDirect,
+            EBuffer,
+        } iOutputState;
+
+        TRect           iRect;
+        TRect           iScaledRect;
+        CFbsBitmap *    iBitmap;
+        TInt            iWStep;
+        CImageLoader *  iLoader;
+
+        //  destination size
+        TSize           iDestSize;
+        //  destination buffer
+        TUint32 *       iDestBuffer;
+        //  relative scale
+        TReal           iRelScale;
+
+        TBlockEntry **  iBlockBuffer;
+        TSize			iSize;
+		TSize           iSizeInBlocks;
+		TUint32         iLastBlock;
+        TInt *          iIndexMap;
+        TInt            iOldestBlock;
+        TInt            iBlockBufferSize;
+        TFileName		iFileName;
+};
+
+
+#endif