videoeditorengine/vedengine/GenManip/src/DisplayChain.cpp
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- a/videoeditorengine/vedengine/GenManip/src/DisplayChain.cpp	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,530 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-
-//----IMAAMI----
-//*************************************************************************
-//
-//Version 1.00
-//
-//Contains:
-//	CDisplayChain 
-//		Image processing class implementing
-//		display specific image processing:
-//			- Scaling to display size with pan support
-//			- IETD - display specific color contrast enhancement
-//			- Sharpening 
-//			- Display feature compensation by simple color management
-//			- Dithering 
-//			
-//History:
-//	30.10.2003 version 1.00 created using existing IMAAMI algorithms	
-//*************************************************************************
-
-#include <fbs.h>
-#include "DisplayChain.h"
-
-
-/*
------------------------------------------------------------------------------
-
-  Constructor
-	
-  Default constructor, initializes member variables to initial values
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-*/
-CDisplayChain::CDisplayChain()
-{
-	// This function is intentionally left blank.
-}
-
-
-
-
-/*
------------------------------------------------------------------------------
-
-  NewLC
-	
-  Factory function to instantiate the class.
-  This function leaves the class pointer to the cleanup stack
-  May leave with KErrNoMemory if no memory available
-  
-  Return Values:  CDisplayChain* self:  pointer to the class instance
-
------------------------------------------------------------------------------
-*/
-CDisplayChain* CDisplayChain::NewLC()
-{
-	CDisplayChain* self = new (ELeave) CDisplayChain();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-}
-
-
-
-
-/*
------------------------------------------------------------------------------
-
-  CDCIetd
-  
-  NewL
-	
-  Factory function to instantiate the class.
-  May leave with KErrNoMemory if no memory available
-	  
-  Return Values:  CDisplayChain* self:  pointer to the class instance
-	
------------------------------------------------------------------------------
-*/
-CDisplayChain* CDisplayChain::NewL()
-{
-	CDisplayChain* self = CDisplayChain::NewLC();
-	CleanupStack::Pop();
-	return self;
-}
-
-
-
-
-
-/*
------------------------------------------------------------------------------
-
-  CDCIetd
-  
-  ConstructL
-	
-  Second phase constructor. Does nothing at the moment
-	  
-  Return Values:  none
-		
- -----------------------------------------------------------------------------
-*/
-void CDisplayChain::ConstructL()
-{
-	// Create objects for ImaamiImageChain
-	DigitalZoomPtr = CDCDigitalZoom::NewL();
-	CleanupStack::PushL(DigitalZoomPtr);
-
-	SharpeningPtr = DCSharpening::NewL();
-	CleanupStack::PushL(SharpeningPtr);
-
-	DitheringPtr = CDCDithering::NewL();
-	CleanupStack::PushL(DitheringPtr);
-
-	IetdPtr = CDCIetd::NewL();
-	CleanupStack::PushL(IetdPtr);
-
-	ColorManagementPtr = CDCColorManagement::NewL();
-	CleanupStack::PushL(ColorManagementPtr);
-
-
-	TInt i; //Index
-
-	//As default image is just opened to be processed
-	Parameters.FirstOpening = ETrue;
-
-	//Get current processing parameters from processing objects
-	DigitalZoomPtr->GetParameters(&Parameters.DZParameters);
-	IetdPtr->GetParams(&Parameters.IETDParameters);
-	SharpeningPtr->GetParameters(&Parameters.SharpeningParameters);
-	ColorManagementPtr->GetParameters(&Parameters.ColorManagementParameters);
-
-	//Here the parameters can be read for example from a text file or from the registers, etc.
-	//if (!ReadFileL())
-	{			
-		//Set default parameter values
-		//(Defined in DCInit.h)
-		//----------------------------
-		
-		//Set each processing ON/OFF
-		Parameters.DigitalZoomON = DZ;
-		Parameters.DitheringON = DITHER;
-		Parameters.ColorManagementON = ETrue; //CM;
-		Parameters.IetdON = IETD;
-		Parameters.SharpeningON = SHARP;
-		
-		//DigitalZoom
-		DigitalZoomPtr->GetParameters(&Parameters.DZParameters);
-		Parameters.DZParameters.sizeX = DZsizeX;
-		Parameters.DZParameters.sizeY = DZsizeY;
-		Parameters.DZParameters.scaleX = DZscaleX;
-		Parameters.DZParameters.scaleY = DZscaleY;
-		Parameters.DZParameters.allShiftX = DZallX;
-		Parameters.DZParameters.allShiftY = DZallY;
-		Parameters.DZParameters.newShiftX = DZnewX;
-		Parameters.DZParameters.newShiftY = DZnewY;
-		
-		//IETD
-		Parameters.IETDParameters.aStretchLimit = StretchLimit;
-		Parameters.IETDParameters.aBlackPixels = BlackPixels;
-		Parameters.IETDParameters.aWhitePixels = WhitePixels;
-		Parameters.IETDParameters.aSaturationGain = SaturationGain;
-		Parameters.IETDParameters.aBitLimit = BitLimit;
-		Parameters.IETDParameters.aWBC = WBC;
-		Parameters.IETDParameters.aDBC = DBC;
-		
-		//Sharpening
-		Parameters.SharpeningParameters.SHARP_GAIN = SharpGain;
-		Parameters.SharpeningParameters.SHARP_DZONE = SharpDZone;
-		Parameters.SharpeningParameters.SHARP_OVER = SharpOver;
-		
-		//Color Management (fill LUTs and matrix)
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.GammaR[i] = CMGammaR[i];
-		}
-		
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.GammaG[i] = CMGammaG[i];
-		}
-		
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.GammaB[i] = CMGammaB[i];
-		}
-		
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.TRCR[i] = CMTRCR[i];
-		}
-		
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.TRCG[i] = CMTRCG[i];
-		}
-		
-		for(i=0;i<256;i++)
-		{
-			Parameters.ColorManagementParameters.TRCB[i] = CMTRCB[i];
-		}
-
-		for(i=0;i<9;i++)
-		{
-			Parameters.ColorManagementParameters.Matrix[i] = CMMatrix[i];
-		}
-		
-	}
-
-	//Set the default parameters
-	IetdPtr->SetParams(&Parameters.IETDParameters);
-	SharpeningPtr->SetParameters(&Parameters.SharpeningParameters);
-	ColorManagementPtr->SetParameters(&Parameters.ColorManagementParameters);
-
-	CleanupStack::Pop(5); //Processing objects
-}
-
-
-
-
-/*
------------------------------------------------------------------------------
-
-  CDCIetd
-  
-  Destructor
-	
-  Deletes the allocated memory
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-*/
-CDisplayChain::~CDisplayChain()
-{
-	//Delete processing objects
-	delete DigitalZoomPtr;
-	delete SharpeningPtr;
-	delete DitheringPtr;
-	delete IetdPtr;
-	delete ColorManagementPtr;
-}
-
-
-
-/*
------------------------------------------------------------------------------
-
-  ProcessL
-	
-  Process image referenced by InBitmap (modify aTargetBitmap).
-  If scaling is not used aTargetBitmap is processed directly.
- 
-  May leave with KErrNoMemory if no memory available
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-*/
-void CDisplayChain::ProcessL(const CFbsBitmap* InBitmap, CFbsBitmap* aTargetBitmap)
-{
-
-	//CHECK! pan check needed only when DZ is ON
-	//Scaling
-	if (Parameters.DigitalZoomON)
-	{
-		// refine the zooming parameters based on input data
-		TSize inSize = InBitmap->SizeInPixels();
-		TSize outSize = aTargetBitmap->SizeInPixels();
-		Parameters.DZParameters.sizeX = outSize.iWidth;
-		Parameters.DZParameters.sizeY = outSize.iHeight;
-		Parameters.DZParameters.scaleX = (TReal)outSize.iWidth/(TReal)inSize.iWidth;
-		Parameters.DZParameters.scaleY = (TReal)outSize.iHeight/(TReal)inSize.iHeight;
-
-		//If the image is tried to pan over the image borders, bound to the borders
-		if (Parameters.DZParameters.allShiftX < (-InBitmap->SizeInPixels().iWidth/2 * Parameters.DZParameters.scaleX + aTargetBitmap->SizeInPixels().iWidth/2))
-		{
-			Parameters.DZParameters.allShiftX = (TInt)((-InBitmap->SizeInPixels().iWidth/2)*Parameters.DZParameters.scaleX + aTargetBitmap->SizeInPixels().iWidth/2);
-		}
-		
-		if (Parameters.DZParameters.allShiftX > (InBitmap->SizeInPixels().iWidth/2 * Parameters.DZParameters.scaleX - aTargetBitmap->SizeInPixels().iWidth/2))
-		{
-			Parameters.DZParameters.allShiftX = (TInt)((InBitmap->SizeInPixels().iWidth/2)*Parameters.DZParameters.scaleX - aTargetBitmap->SizeInPixels().iWidth/2);
-		}
-		
-		if (Parameters.DZParameters.allShiftY < (-InBitmap->SizeInPixels().iHeight/2 * Parameters.DZParameters.scaleY + aTargetBitmap->SizeInPixels().iHeight/2))
-		{
-			Parameters.DZParameters.allShiftY = (TInt)((-InBitmap->SizeInPixels().iHeight/2)*Parameters.DZParameters.scaleY + aTargetBitmap->SizeInPixels().iHeight/2);
-		}
-		
-		if (Parameters.DZParameters.allShiftY > (InBitmap->SizeInPixels().iHeight/2 * Parameters.DZParameters.scaleY - aTargetBitmap->SizeInPixels().iHeight/2))
-		{
-			Parameters.DZParameters.allShiftY = (TInt)((InBitmap->SizeInPixels().iHeight/2)*Parameters.DZParameters.scaleY - aTargetBitmap->SizeInPixels().iHeight/2);
-		}
-			
-		DigitalZoomPtr->SetParameters(&Parameters.DZParameters);
-		DigitalZoomPtr->ProcessL(InBitmap, aTargetBitmap);
-	}
-	
-	//IETD 
-	if (Parameters.IetdON)
-	{
- 		if (Parameters.FirstOpening)
-		{
-			IetdPtr->Analyze(*aTargetBitmap);
-			Parameters.FirstOpening = EFalse;
-		}
-		//Set parameters is needed if default values can change (read from file etc.)
-		//IetdPtr->SetParams(&Parameters.IETDParameters);
-		IetdPtr->ProcessL(*aTargetBitmap);
-	}
-	
-	//Sharpening
-	if (Parameters.SharpeningON)
-	{
-		//Set parameters is needed if default values can change (read from file etc.)
-		//SharpeningPtr->SetParameters(&Parameters.SharpeningParameters);
-		SharpeningPtr->ProcessL(aTargetBitmap);
-	}
-	
-	//ColorManagement
-	if (Parameters.ColorManagementON)
-	{
-		//Set parameters is needed if default values can change (read from file etc.)
-		//ColorManagementPtr->SetParameters(&Parameters.ColorManagementParameters);
-		ColorManagementPtr->ProcessL(aTargetBitmap);
-	}
-
-	//Dithering
-	if (Parameters.DitheringON)
-	{
-		DitheringPtr->ProcessL(*aTargetBitmap);
-	}
-}
-
-
-
-
-/*
------------------------------------------------------------------------------
-
-  SetParams
-	
-  Set processing parameters
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-*/
-void CDisplayChain::SetParameters(DisplayChainParams* params)
-{
-	//Copy parameter struct
-	Parameters = *params;
-}
-
-
-
-/*
------------------------------------------------------------------------------
-
-  GetParams
-	
-  Get current processing parameters
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-*/
-void CDisplayChain::GetParameters(DisplayChainParams* params)
-{
-	//Copy parameter struct
-	*params = Parameters;
-}
-
-
-/*
------------------------------------------------------------------------------
-
-  ReadFileL
-	
-  Example function for reading processing parameters from file
-	  
-  Return Values:  none
-		
------------------------------------------------------------------------------
-TBool CDisplayChain::ReadFileL()
-{
-	
-	FILE *fp;
-	TInt i,j,data;
-	TUint8 data_uchar;
-	TReal data_real;
-	
-	// Open for read (will fail if file does not exist) 
-	if((fp = fopen("e:\\DisplayChain.txt","r"))==NULL )
-	{
-		if((fp = fopen("c:\\DisplayChain.txt","r"))==NULL )
-		{
-			//AfxMessageBox("CMData.txt was not opened");
-			return EFalse;
-		}
-	}
-	
-	//Digital Zoom
-	fscanf(fp,"%d",&data);
-	Parameters.DigitalZoomON = data;
-
-	//Ietd
-	fscanf(fp,"%d",&data);
-	Parameters.IetdON = data;
-	
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aWhitePixels = data_uchar;
-	
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aBlackPixels = data_uchar;
-	
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aStretchLimit = data_uchar;
-	
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aSaturationGain = data_uchar;
-
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aBitLimit = data_uchar;
-
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aWBC = data_uchar;
-
-	fscanf(fp,"%d",&data_uchar);
-	Parameters.IETDParameters.aDBC = data_uchar;
-	
-	//Sharpening
-	fscanf(fp,"%d",&data);
-	Parameters.SharpeningON = data;
-	
-	fscanf(fp,"%d",&data);
-	Parameters.SharpeningParameters.SHARP_OVER = data;
-	
-	fscanf(fp,"%d",&data);
-	Parameters.SharpeningParameters.SHARP_DZONE = data;
-	
-	//fscanf(fp,"%f",&data_real);
-	fscanf(fp,"%d",&data);
-	data_real = ((TReal)data)/65536;
-	Parameters.SharpeningParameters.SHARP_GAIN = data_real;
-
-	//Dithering
-	fscanf(fp,"%d",&data);
-	Parameters.DitheringON = data;
-
-	//ColorManagement
-	fscanf(fp,"%d",&data);
-	Parameters.ColorManagementON = data;
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.GammaR[i]=data;
-	}
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.GammaG[i]=data;
-	}
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.GammaB[i]=data;
-	}
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.TRCR[i]=data;
-	}
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.TRCG[i]=data;
-	}
-	
-	for(i=0;i<256;i++)
-	{
-		fscanf(fp,"%d",&data);
-		Parameters.ColorManagementParameters.TRCB[i]=data;
-	}
-	
-	
-	for(i=0;i<3;i++)
-	{
-		for(j=0;j<3;j++)
-		{
-			fscanf(fp,"%d",&data);
-			Parameters.ColorManagementParameters.Matrix [3*i+j]=data;
-		}
-	}
-
-	
-	// Close stream 
-	fclose(fp);
-
-	return ETrue;	
-}
-*/
-//----IMAAMI----