/****************************************************************************************

		I2DExICCProcessor.h

		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		I2DExICCProcessor definition

		Revision History

		when		who			what & why
		==========	==========	======================================================
		07/20/99	Mathieu		Name cleanup (less cryptic) + conversion to Preview
		2/17/99		psq			Channel/Bucket/Layer API changes
		12/09/98	Mathieu		Updated interface to comply with new standards ([] and count)
		11/10/98	Mathieu		Added transforms for the color picker
		10/29/98	Mathieu		Added Rendering Intents
		10/16/98	Mathieu		Added gamut warning
		10/06/98	dsm			changed constants def to FourCharT
		09/23/98	Mathieu		Added XYZ <-> Planar conversion

*****************************************************************************************/

#ifndef __I2DExICCProcessor__
#define __I2DExICCProcessor__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "COMTypes.h"
#include "MCPixelBucket.h"
#include "ColorDefs.h"
#include "ImageIIDs.h"

//****** Family Id *************************************************
const FourCharT kICCProcessorFamilyID = kRID_ICCProcessorFamilyID;


//****** Globally Unique Ids *************************************************
MCDEFINE_GUID2(IID_I2DExICCProcessor, R_IID_I2DExICCProcessor);


/*****************************************************************************\
*                                                                             *
*  I2DExICCProcessor                                                          *
*                                                                             *
\*****************************************************************************/




struct I2DExICCProcessor: public IMCUnknown
{   
	// formerly PreviewToChunkyOneAlpha
	virtual MCCOMErr MCCOMAPI ConvertXYZToMonitorUsingPreview	(const TMCPixelBucket*, const TMCPixelBucket*) = 0;

	// formerly ColorOutputToPlanar
	virtual MCCOMErr MCCOMAPI ConvertXYZToPrinter				(const TMCPixelBucket*, uint16, const TMCPixelBucket* []) = 0;

	// formerly ColorInputFromPlanar
	virtual MCCOMErr MCCOMAPI ConvertInputToXYZ					(uint16, const TMCPixelBucket* [], const TMCPixelBucket*) = 0;

	// formerly MapColorToSpace
	virtual MCCOMErr MCCOMAPI MapXYZColorsToPreviewSpace		(const TMCPixelBucket*, const TMCPixelBucket*) = 0;

	// formerly ConvertColorsFromPreview
	virtual MCCOMErr MCCOMAPI ConvertPreviewToXYZ				(uint16, const TMCPixelBucket* [], const TMCPixelBucket*) = 0;


	virtual MCCOMErr MCCOMAPI ConvertXYZToPreview				(const TMCPixelBucket*, uint16, const TMCPixelBucket* []) = 0;

	// XYZ -> Gamut warning
	virtual MCCOMErr MCCOMAPI ComputeGamutWarning				(const TMCPixelBucket*, const TMCPixelBucket*) = 0;


	virtual MCCOMErr MCCOMAPI SetMonitorProfile			(int8*) =0;
	virtual MCCOMErr MCCOMAPI SetPrinterProfile			(int8*) =0;
	virtual MCCOMErr MCCOMAPI SetPreviewProfile			(int8*) =0;
	virtual MCCOMErr MCCOMAPI SetInputProfile			(int8*) =0;

	virtual MCCOMErr MCCOMAPI SetScreenPreviewTransform	(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetToPreviewTransform		(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetToPrinterTransform		(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetGamutTransform			(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetFromInputTransform		(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetFromPreviewTransform	(EICRenderingIntent) =0;
	virtual MCCOMErr MCCOMAPI SetMapToPreviewTransform	(EICRenderingIntent) =0;
};


#endif  