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

		IShColorConversionUtilities.h

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

		IShColorConversionUtilities definition

		Revision History

		when		who			what & why
		==========	==========	======================================================
		05/04/99	Nba			Added inTile parameter
		02/26/99	Mathieu		Gamma correction onto a chunky tile
		02/10/99	Mathieu		Pixel-based gamma correction
		02/09/99	Mathieu		Color Sets operations
		01/27/99	Mathieu		Lab conversions use TColorLab
		12/23/98	Mathieu		Gamma correction
		12/15/98	Mathieu		TColorCMYK as parameter for pixel-based CMYK transforms
		12/11/98	Mathieu		Parameters are now TMCPixelBuckets* [], const where appropriate
		12/02/98	Mathieu		Created

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

#ifndef __IShColorConversionUtilities__
#define __IShColorConversionUtilities__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "COMTypes.h"

struct I2DShColorSet;
class  TColorRGB214;
class  TColorHSV214;
class  TColorHLS214;
class  TXYZColor;
class  TColorCMYK;
class  TColorLab;
class  TMCRect;
class  TMCPixelBucket;
class  TMCRGBColor;

//************************* Globally Unique Ids *******************************

// {0F709781-80B3-11d2-978B-0060973D5267}
MCDEFINE_GUID_H(IID_IShColorConversionUtilities);

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

/*****************************************************************************\
*                                                                             *
*  IShColorConversion			                                              *
*                                                                             *
\*****************************************************************************/

struct IShColorConversionUtilities: public IMCUnknown
{   
	virtual MCCOMErr MCCOMAPI PixelRGBToHSV					(const TColorRGB214&, TColorHSV214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelRGBToHLS					(const TColorRGB214&, TColorHLS214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelRGBToXYZ					(const TColorRGB214&, TXYZColor&) = 0;
	virtual MCCOMErr MCCOMAPI PixelRGBToLab					(const TColorRGB214&, TColorLab&) = 0;
	virtual MCCOMErr MCCOMAPI PixelRGBToCMYK				(const TColorRGB214&, TColorCMYK&) = 0;

	virtual MCCOMErr MCCOMAPI PixelHSVToRGB					(const TColorHSV214&, TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelHLSToRGB					(const TColorHLS214&, TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelXYZToRGB					(const TXYZColor&, TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelLabToRGB					(const TColorLab&, TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelCMYKToRGB				(const TColorCMYK&, TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI PixelCMYKToLab				(const TColorCMYK&, TColorLab&) = 0;


	virtual MCCOMErr MCCOMAPI TileRGBToHSV					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileRGBToHLS					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileRGBToXYZ					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileRGBToLab					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileRGBToCMYK					(const TMCPixelBucket* [3], uint8, const TMCPixelBucket* []) = 0;

	virtual MCCOMErr MCCOMAPI TileHSVToRGB					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileHLSToRGB					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileXYZToRGB					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileLabToRGB					(const TMCPixelBucket* [3], const TMCPixelBucket* [3]) = 0;
	virtual MCCOMErr MCCOMAPI TileCMYKToRGB					(uint8, const TMCPixelBucket* [], const TMCPixelBucket* [3]) = 0;

	virtual TMCRGBColor MCCOMAPI PixelGammaCorrect			(const TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI GammaCorrectToChunky			(const TMCPixelBucket* [3], const TMCPixelBucket*, const TMCRect &inRect) = 0;
	virtual MCCOMErr MCCOMAPI GammaCorrectChunkyToItself	(const TMCPixelBucket*) = 0;


	virtual MCCOMErr MCCOMAPI LoadColorSetFromFile			(const int8*, I2DShColorSet**) = 0;
	virtual MCCOMErr MCCOMAPI SaveColorSetToFile			(const int8*, I2DShColorSet*) = 0;


};

#endif // __IShColorConversionUtilities__