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

		IMCCollectionGraphicContext.h

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

		Author:	Ian
		Date:	9/11/99

		Collection Graphic Context COM interface

		Revision History

		when		who			what & why
		==========	==========	======================================================

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

#if CP_PRAGMA_ONCE
#pragma once
#endif

#ifndef __IMCCOLLECTIONGRAPHICCONTEXT__
#define __IMCCOLLECTIONGRAPHICCONTEXT__

#include "MCCompObj.h"
#include "MCRect.h"
#include "MCPublicGCTypes.h"


/// Undocumented
///
struct TSystemGCSpecifer
{
	SystemGCPtr	fSystemGCPtr;
	TMCRect		fScreenRect;
};

struct IMCGraphicContext;

template <class T> class TMCArray;

MCDEFINE_GUID_H(IID_IMCCollectionGraphicContext);


/// \addtogroup MCCore
/// \{

/// This is the interface to access a graphic context that support multiple diplays.
///
struct IMCCollectionGraphicContext : public IMCUnknown
{
	// ****************************************************************************
	//								GetSystemGCPtrs
	// 
	/// Returns pointers to the system GC of each diplay device (monitors).
	/// 
	virtual void GetSystemGCPtrs(   TMCArray<TSystemGCSpecifer>& outSpecifiers)	  = 0;
	
	// ****************************************************************************
	//								GetGraphicContexts
	// 
	/// Returns the graphics context for each diplay device (monitors).
	/// 
	virtual void GetGraphicContexts(TMCArray<IMCGraphicContext*>& outGraphicContexts) = 0;
};

/// \}

#endif