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

		I3DExGel.h

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

		I3DExLightsourceGel definition

		Author:	Ray Dream
		Date:	3/2/98

		Revision History

		when		who			what & why
		==========	==========	======================================================
		08/26/99	cph			Added family ids
		08/06/99	cph			modified interface to inherit from IMCUnknown instead of DataExchanger

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

#ifndef __I3DEXGEL__
#define __I3DEXGEL__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "IExtension.h"
#include "APITypes.h"
#include "InterfaceIDs.h"


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

MCDEFINE_GUID2	(IID_I3DExLightsourceGel, R_IID_I3DExLightsourceGel);

//****** Family Id *************************************************

const FourCharT kLightsourceGelFamilyID = kRID_LightsourceGelFamilyID;


/*****************************************************************************\
*  I3DExLightsourceGel                                                        *
*                                                                             *
*  Light Sources gels                                                         *
*                                                                             *
\*****************************************************************************/
/// \addtogroup ExternalInterface
///
/// \{

/// The user can combine lights with gels to make additional lighting effects
/// (see the I3DExLightsource interface to learn more about lights).
/// A Gel can be thought of as a colored filter placed in front of a light source
/// to modify the color and intensity of the light beam.
///
struct I3DExLightsourceGel: public IMCUnknown
{
	/// Modifies the color of the light.
	///
	/// \param gelScreenPosition The position in the gel [0,1]x[0,1]
	/// \param result	On Enter, it contains the light emitted from the light source. On Exit, it contains
	///					the color of light filtered by the gel.
	///
	virtual boolean MCCOMAPI GetGelValues(const TVector2& gelScreenPosition, TMCColorRGB& result) = 0;
};

/// \}

#endif