--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditorengine/filters/FilterJpegSource/Inc/CFilterJpegSource.h Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,108 @@
+/*
+* 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 __CFILTERJPEGSOURCE_H__
+#define __CFILTERJPEGSOURCE_H__
+
+#include <e32base.h>
+#include "MImageFilter.h"
+#include "TBitmapHandle.h"
+
+
+class MJpegLoad;
+
+class TBlockEntry
+ {
+ public:
+ inline ~TBlockEntry()
+ {
+ delete iBitmap.iData;
+ }
+ public:
+ TRect iRect;
+ TBitmapHandle iBitmap;
+ };
+
+
+
+class CFilterJpegSource
+ : public CBase
+ , public MImageFilter
+ {
+ public:
+ IMPORT_C static TInt Create();
+ virtual ~CFilterJpegSource();
+
+ private:
+ static CFilterJpegSource* NewL();
+ CFilterJpegSource();
+ void ConstructL();
+
+ 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();
+
+ void LoadRectL();
+
+ private: // Data
+
+ enum TOutputState
+ {
+ EDirect,
+ EBuffer,
+ } iOutputState;
+
+ /// decoder instance
+ MJpegLoad * iJpeg;
+ // file name
+ TFileName iFileName;
+ // macroblock size
+ TSize iBlockSize;
+ // image size in macroblocks
+ TSize iSizeInBlocks;
+ // image rectangle
+ TRect iRect;
+ // scaled visible image rectangle
+ TRect iScaledRect;
+ // image size
+ TSize iFullSize;
+
+ // destination size
+ TSize iDestSize;
+ // destination buffer
+ TUint32 * iDestBuffer;
+ // relative scale
+ TReal iRelScale;
+
+ TBlockEntry ** iBlockBuffer;
+ TInt iXAnd;
+ TInt iYAnd;
+ TUint32 iLastBlock;
+ TInt * iIndexMap;
+ TInt iOldestBlock;
+
+ };
+
+#endif