imaging/imagingfws/BitmapTransform/src/BitmapTransformsBody.h
changeset 0 5752a19fdefe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/BitmapTransform/src/BitmapTransformsBody.h	Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,134 @@
+// Copyright (c) 2002-2009 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 is the implementation of the BitmapTransforms Library
+// 
+//
+
+#ifndef __BITMAPTRANSFORMSBODY_H__
+#define __BITMAPTRANSFORMSBODY_H__
+
+#include <e32base.h>
+#include <fbs.h>
+#include <bitdev.h>
+
+#include "BitmapTransforms.h" // required for enums
+#include "BitmapConverter.h"
+
+class CBitmapRotator;
+class CBitmapScaler;
+class MBitmapRotatorPlugin;
+class MBitmapScalerPlugin;
+
+class CBitmapRotatorBody; // declared here
+/**
+*
+* The private API for clients to call the BitmapTransforms Library bitmap rotation
+* @internalTechnology
+*            
+*/
+
+NONSHARABLE_CLASS( CBitmapRotatorBody ): public CBase
+	{
+	friend class CBitmapRotator;
+private:
+	typedef CBitmapRotator::TRotationAngle TRotationAngle;
+
+private:
+	static CBitmapRotatorBody* NewL();
+	~CBitmapRotatorBody();
+
+	void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TRotationAngle aAngle);
+	void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, TRotationAngle aAngle);
+	TInt CustomCommand(TUid aUid, TAny* aParam);
+	void Cancel();
+
+	CBitmapRotatorBody();
+	void ConstructL();
+
+private:
+	MBitmapRotatorPlugin* iPlugin;
+	TUid				  iDestructorKey;
+	};
+
+// class CBitmapScalerBody; // declared here
+/**
+*
+* Body of CBitmapScaler
+*
+* @internalTechnology
+*
+*/
+NONSHARABLE_CLASS( CBitmapScalerBody ): public CBase
+	{
+	friend class CBitmapScaler;
+private:
+	static CBitmapScalerBody* NewL();
+	~CBitmapScalerBody();
+
+	void Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TBool aMaintainAspectRatio = ETrue);
+	void Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, const TSize& aDestinationSize, TBool aMaintainAspectRatio = ETrue);
+	void Cancel();
+	TInt CustomCommand(TUid aUid, TAny* aParam);
+
+	CBitmapScalerBody();
+	void ConstructL();
+
+private:
+	MBitmapScalerPlugin* iPlugin;
+	TUid				 iDestructorKey;
+	};
+
+/**
+*
+* Body of CBitmapConverter
+* Part of the handle body idiom which separates
+* interface from implementation
+*
+* @internalTechnology
+*
+*/
+
+class CImageProcessor;
+NONSHARABLE_CLASS( CBitmapConverter::CBody ): public CActive
+	{
+	friend class CBitmapConverter;
+public:
+	static CBody* NewL();
+	~CBody();
+	void Convert(TRequestStatus* aStatus, CFbsBitmap& aDstBitmap, CFbsBitmap& aSrcBitmap);
+protected:
+	// from CActive
+	virtual void RunL();
+	virtual void DoCancel();
+private:
+	CBody();
+	void ConstructL();
+	void DoConvert();
+	void SelfComplete(TInt aError);
+	void RequestComplete(TInt aReason);
+private:
+	TRgb* iPixelBuffer;	
+	TPtr8 iPixelDes;
+	TSize iSrcSize;
+	CImageProcessor* iImageProc;
+	CFbsBitmap* iSrcBitmap;
+	TRequestStatus* iCopyStatus;
+	TPoint iPos;
+	};
+
+#include "BitmapRotationBody.inl"
+#include "BitmapScalingBody.inl"
+
+#endif  // __BITMAPTRANSFORMSBODY_H__
+