epoc32/include/panorama/panorama.h
branchSymbian3
changeset 4 837f303aceeb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/panorama/panorama.h	Wed Mar 31 12:33:34 2010 +0100
@@ -0,0 +1,174 @@
+// Copyright (c) 2008-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:
+//
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#ifndef PANORAMA_H
+#define PANORAMA_H
+
+#include <icl/imagecodecdata.h>
+
+const TInt KPanoramaDefaultOverlap = 63; //Default overlap value in percent.
+const TInt KPanoramaDefaultDirectionTrigger = 10; //Default direction value in percent.
+const TInt KPanLensIndex = 2; //Focal length and principal point index value
+const TInt KPanLensDist = 5; //Distortion index value
+
+//fwd ref
+class CImagePanoramaImpl;
+class CVFTrackerImpl;
+class CPanoramaTransformImpl;
+class CImageFrame;
+
+/**
+Defines the direction
+*/
+enum TDirection
+	{
+	EPanoramaDirectionUnknown = 0,
+	EPanoramaDirectionRight,
+	EPanoramaDirectionLeft,
+	EPanoramaDirectionUp,
+	EPanoramaDirectionDown
+	};
+	
+/**
+This class provides the lens parameters that describe the internal camera characteristics.
+*/
+class TPanoramaLens
+	{
+public:
+	IMPORT_C TPanoramaLens();
+	IMPORT_C TPanoramaLens(TReal32* aFocalLength, TReal32* aPrincipalPoint, TReal32 aSkew, TReal32* aDist, TUint32 aWidth, TUint32 aHeight);
+	
+public:
+	TReal32 iFocalLength[KPanLensIndex]; //Focal length coordinates
+	TReal32 iPrincipalPoint[KPanLensIndex]; //Principal point coordinates
+	TReal32 iSkew; //Skew coefficient. @remark 0.0f means no skew
+	TReal32 iDist[KPanLensDist];// Distortion coefficients. If there are fewer parameter values available, fill the last values with zeros
+	TUint32 iWidth; // Image width when the camera was calibrated
+	TUint32 iHeight; // Image height when the camera was calibrated
+
+private:	
+	// Future proof
+	TAny* iPad1;
+	TAny* iPad2;
+	TAny* iPad3;
+	TAny* iPad4;
+	};
+
+/**
+This class provides help functions for handling the result of the viewfinder tracking.
+It contains getters and setters.
+*/
+class CPanoramaTransform : public CBase
+	{
+public:
+	IMPORT_C static CPanoramaTransform* NewL();
+	
+	IMPORT_C void GetTranslation(TPoint& aDxDy, TSize& aDims) const;
+	IMPORT_C void SetTranslationL(const TPoint& aDxDy, const TSize& aDims);
+	IMPORT_C void GetDirection(TDirection& aDirection);
+	IMPORT_C void GetDirection(TDirection& aDirection, TInt& aMinimumDelta);
+	IMPORT_C void SetDirection(TDirection& aDirection);
+	IMPORT_C void SetDirection(TDirection& aDirection, TInt aMinDelta);
+	
+	IMPORT_C ~CPanoramaTransform();
+	
+private:
+	CPanoramaTransform();
+	void ConstructL();
+	
+private:
+	CPanoramaTransformImpl* iPanTransImpl;
+	};
+
+/**
+This class provides functions to register the image that has got from viewfinder
+and checks the appropriate time to capture that image.
+*/
+class CVFTracker : public CBase
+	{
+public:
+	IMPORT_C static CVFTracker* NewL();
+	
+	IMPORT_C void RegisterImageL(const CFbsBitmap& aBitmap, CPanoramaTransform& aPanTrans);
+	IMPORT_C void RegisterImageL(const CImageFrame& aImageFrame, CPanoramaTransform& aPanTrans);
+	IMPORT_C TBool IsTimeToCapture(TDirection& aDirection) const;
+	IMPORT_C TBool IsTimeToCapture(TDirection& aDirection, TInt aOverlap) const;
+	IMPORT_C void Reset();
+	IMPORT_C void InitializeL(const TSize& aSize);		
+
+	IMPORT_C TAny* Extension(TUid aExtension);
+	
+	IMPORT_C ~CVFTracker();
+
+private:
+	CVFTracker();
+	void ConstructL();
+
+private:
+	CVFTrackerImpl* iVFTrackImpl;
+	};
+	
+/**
+This class provides functions to get basic stitching. Input can be a file,
+descriptor, bitmap, imageframe.
+*/
+class CImagePanorama : public CBase
+	{
+public:
+	IMPORT_C static CImagePanorama* NewL();
+	
+	IMPORT_C void AddFileL(const TDesC& aFilename, CPanoramaTransform& aPanTrans);
+	IMPORT_C void AddBufferL(const TDesC8& aData, CPanoramaTransform& aPanTrans);
+	IMPORT_C void AddImageL(const CFbsBitmap& aBitmap, CPanoramaTransform& aPanTrans);
+	IMPORT_C void AddImageL(const CImageFrame& aImageFrame, CPanoramaTransform& aPanTrans);
+
+	IMPORT_C void CurrentImageSizeL(TSize& aSize);
+	
+	IMPORT_C void RenderL(const TDesC& aFilename); 
+	IMPORT_C void RenderL(const TDesC& aFilename, const TSize& aSize, const TBool aMaintainAspectRatio, const TUid& aImageTypeUid); 
+
+	IMPORT_C void RenderL(RFile& aFile); 
+	IMPORT_C void RenderL(RFile& aFile, const TSize& aSize, const TBool aMaintainAspectRatio, const TUid& aImageTypeUid);
+	
+	IMPORT_C void RenderL(HBufC8*& aDestData);
+	IMPORT_C void RenderL(HBufC8*& aDestData, TUint32 aMaxBufferSize, const TSize& aSize, const TBool aMaintainAspectRatio, const TUid& aImageTypeUid);
+	
+	IMPORT_C void RenderL(const CFbsBitmap& aBitmap);
+	IMPORT_C void RenderL(const CFbsBitmap& aBitmap, const TBool aMaintainAspectRatio);
+	
+	IMPORT_C void RenderL(const CImageFrame& aImageFrame);
+	IMPORT_C void RenderL(const CImageFrame& aImageFrame, const TBool aMaintainAspectRatio);
+	
+	IMPORT_C void InitializeL(const TSize & aSize, const TPanoramaLens& aPanoramaLens, const TDirection& aDirection);
+	
+	IMPORT_C TAny* Extension(TUid aExtension);
+	
+	IMPORT_C ~CImagePanorama();
+	
+private:
+	CImagePanorama();
+	void ConstructL();
+
+private:
+	CImagePanoramaImpl* iImgPanImpl;
+	};
+	
+#endif //PANORAMA_H