videoeditorengine/vedengine/GenManip/inc/DisplayChain.h
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* 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----
//*************************************************************************
//DisplayChain.cpp
//
//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	
//*************************************************************************

#ifndef __DisplayChain_H
#define __DisplayChain_H

#include <e32std.h> // for Fundamental Types
#include <e32base.h> // for Fundamental Types
#include <e32math.h> //for the calculation of exponents
#include <stdio.h>

#include "DCDigitalZoom.h"
#include "DCSharpening.h"
#include "DCIetd.h"
#include "DCDithering.h"
#include "DCColorManagement.h"
#include "DCDefines.h"
#include "DCInit.h"


//Class definition
class CDisplayChain : public CBase
{
public:

	//Standard functions
	CDisplayChain();
	static CDisplayChain* NewL();
	static CDisplayChain* NewLC();
	~CDisplayChain();
	
	// Second Phase contructor (may leave)
	void ConstructL();
	
	//Process original image and store result
	void ProcessL(const CFbsBitmap* InBitmap, CFbsBitmap* aTargetBitmap);

	//Processing parameters
	struct DisplayChainParams
	{
		TBool FirstOpening;

		TBool IetdON;				//IETD ON/OFF
		TBool SharpeningON;			//Sharpening ON/OFF
		TBool ColorManagementON;	//Color Management ON/OFF
		TBool DitheringON;			//Dithering ON/OFF
		TBool DigitalZoomON;		//Scaling ON/OFF

		//Parameters for each processing algorithm
		//See processing algorithm classes for details.
		CDCIetd::DCIetdParameters IETDParameters;
		DCSharpening::DCSharpeningParams SharpeningParameters;
		CDCColorManagement::DCColorManagementParams ColorManagementParameters;
		CDCDigitalZoom::DCDigitalZoomParams DZParameters;
	};	
	
	//Parameter excange
	void SetParameters(DisplayChainParams* Parameters);
	void GetParameters(DisplayChainParams* Parameters);
	
	//Limit integer value to byte [0,255]
	static inline TUint8 Limit255(TInt i) {return (TUint8)(i<0?0:(i>255?255:i));}
	
private:


	//PArameters
	DisplayChainParams Parameters;

	//Processing objects
	CDCIetd* IetdPtr;
	DCSharpening* SharpeningPtr;
	CDCColorManagement* ColorManagementPtr;
	CDCDithering* DitheringPtr;
	CDCDigitalZoom* DigitalZoomPtr;
};

#endif // ifndef __DisplayChain_H
//----IMAAMI----