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

		I2DExColorSet.h

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

		I2DExColorSet definition

		Revision History

		when		who			what & why
		==========	==========	======================================================
		02/26/99	Mathieu		More methods in I2DShColorSet
		04/02/99	Mathieu		GetColorSpace()
	
*****************************************************************************************/

#ifndef __I2DExColorSet__
#define __I2DExColorSet__

#if CP_PRAGMA_ONCE
#pragma once
#endif

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

class TMCfstream;
class TMCString;

class TColorRGB214;
class TColorCMYK;


//****** Family Id *************************************************
const FourCharT kColorSetFamilyID	= kRID_ColorSetFamilyID;


//****** Globally Unique Ids *************************************************
MCDEFINE_GUID2(IID_I2DExColorSet, R_IID_I2DExColorSet);
MCDEFINE_GUID2(IID_I2DShColorSet, R_IID_I2DShColorSet);


/*****************************************************************************\
*                                                                             *
*  I2DExColorSet                                                              *
*                                                                             *
\*****************************************************************************/

struct I2DExColorSet : public IMCUnknown
{   
public:
	
	virtual MCCOMErr MCCOMAPI AddColorRGB (const TColorRGB214&) = 0;
	virtual MCCOMErr MCCOMAPI AddColorRGB (const TColorRGB214&, const TMCString&) = 0;
	virtual MCCOMErr MCCOMAPI AddColorCMYK (const TColorCMYK&) = 0;
	virtual MCCOMErr MCCOMAPI AddColorCMYK (const TColorCMYK&, const TMCString&) = 0;
	virtual uint32	 MCCOMAPI GetNumberOfColors() const = 0;
	virtual	EICColorSpaceSignature MCCOMAPI GetColorSpace() const = 0;

	virtual MCCOMErr MCCOMAPI SetPrefixString (const TMCString&) = 0;
	virtual MCCOMErr MCCOMAPI SetSuffixString (const TMCString&) = 0;

	virtual MCCOMErr MCCOMAPI GetColorRGB (const uint32, TColorRGB214&)	= 0 ;
	virtual MCCOMErr MCCOMAPI GetColorCMYK(const uint32, TColorCMYK&)	= 0 ;
	virtual MCCOMErr MCCOMAPI GetColorName(const uint32, TMCString&)	= 0 ;

	virtual MCCOMErr MCCOMAPI GetPrefixString (TMCString&) = 0;
	virtual MCCOMErr MCCOMAPI GetSuffixString (TMCString&) = 0;

};


/*****************************************************************************\
*                                                                             *
*  I2DShColorSet				                                              *
*                                                                             *
\*****************************************************************************/

/// internal color set color model (use EICColorSpaceSignature definitions)
///
struct TColorSetData
{
	IDType fColorModel;		
};

struct I2DShColorSet : public I2DExColorSet
{   
	virtual MCCOMErr MCCOMAPI LoadICCNamedColorSet	(TMCfstream&, EICColorSpaceSignature) = 0;
	virtual MCCOMErr MCCOMAPI LoadICCNamedColor2Set	(TMCfstream&, EICColorSpaceSignature) = 0;
	virtual MCCOMErr MCCOMAPI LoadPainterColorSet	(TMCString&) = 0;
	virtual MCCOMErr MCCOMAPI LoadPhotoshopCLUT		(TMCString&) = 0;

	virtual MCCOMErr MCCOMAPI SaveICCNamedColor2Set (TMCfstream*) = 0;
	virtual	void	 MCCOMAPI AddColorGroupRGB (uint8*, uint8*, uint8*) = 0;

	virtual MCCOMErr MCCOMAPI GetPrivateData(TColorSetData*&) = 0 ;
};


#endif  // __I2DExColorSet__