diff -r 57d4cdd99204 -r edfc90759b9f imageeditorengine/filters/FilterIclSource/Inc/CFilterIclSource.h --- /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 +#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