imageeditorengine/filters/FilterJpegSource/Inc/CFilterJpegSource.h
changeset 1 edfc90759b9f
--- /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