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

		I3DImportData.h
		Copyright: (c) 2002 Eovia Corp. All rights reserved.

		Author:	Arnaud
		Date:	1/23/2007

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

#ifndef __I3DImportData__
#define __I3DImportData__

#if CP_PRAGMA_ONCE
#pragma once
#endif


struct IMCFile;
struct I3DExFigurePrimitive;


MCDEFINE_GUID_H(IID_I3DImportData);
MCDEFINE_GUID_H(IID_I3DFigureConformer);

/// \addtogroup ShellInterface
/// \{

/// 
///
struct I3DImportData : public IMCUnknown
{
	virtual IDType		MCCOMAPI GetDataID		() const = 0;	///the id of the flavor (eg kDragFlavor_ImportFile)

	virtual IDType		MCCOMAPI GetDataHint	() const = 0;	///a hint about the content of the data (eg the file's MCFileTypeID)

	virtual IMCFile*	MCCOMAPI GetDataFile	() const = 0;	///the file (when there is one and its available)
};



struct I3DFigureConformer : public IMCUnknown
{
	/// Returns true if the conformer can import the given data on the given instance
	virtual boolean		MCCOMAPI CanImportData	(	I3DImportData*			inImportData, 
													I3DShInstance*			inInstance,
													I3DExFigurePrimitive*	inFigure) = 0;

	/// Imports the given data on the given instance, returns false if the import was aborted
	virtual boolean		MCCOMAPI ImportData		(	I3DImportData*			inImportData, 
													I3DShInstance*			inInstance,
													I3DExFigurePrimitive*	inFigure) = 0;

	/// Creates a conform action
	virtual void		MCCOMAPI ConformFigures	(	I3DShTreeElement*	conformNode,
													I3DShTreeElement*	conformTarget) = 0;
};


/// \}





#endif
