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

		BasicWireframe.h

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

		Author:	Joshua
		Date:	11/20/98

		Revision History

		when		who			what & why
		==========	==========	======================================================
		09/30/99	chp			changed TBasicWireframe to be pure mix-in
		11/20/98	Joshua		Created

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

#ifndef __BasicWireframe__
#define __BasicWireframe__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "BasicCOMImplementations.h"
#include "MCBasicTypes.h"

#include "I3DWireframe.h"
#include "I3DWireframeSet.h"


/**********************************************************************************\
*                                                                                  *
*     TBasicWireframe        DEPRECATED, use I3DExWireFrameSet instead			   *
*                                                                                  *
*     For Mix-In use...                                                            *
*     Your class must also inherit from another TBasic* class,                     *
*     and be sure to add a call to TBasicWireframe::QueryInterface
*     before you call TBasicUnknown::QueryInterface									*
*                                                                                  *
\**********************************************************************************/
/// DEPRECATED.  Use I3DExWireFrameSet instead.
class TBasicWireframe : public I3DExWF, public I3DExWireFrame
{
public:	
	//IMCUnknown
	virtual MCErr  MCCOMAPI QueryInterface	(const MCIID& riid, void** ppvObj) =0;

	//I3DExWF
	virtual I3DExWireFrameSet*	MCCOMAPI GetNewInterface		()		{ return NULL; }
	virtual I3DExWireFrame*		MCCOMAPI GetDeprecatedInterface	()		{ return this; }

	//I3DExWireFrame
	virtual MCCOMErr MCCOMAPI TrackWireFrame	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree, 
												 int16 handle,const TRACKINFO& startinfo,const TRACKINFO& previnfo, 
												 const TRACKINFO& nextinfo, I3DShCamera* camera);
	virtual MCCOMErr MCCOMAPI DataToWireFrame	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree,
												 I3DShCamera* camera);
	virtual MCCOMErr MCCOMAPI WireFrameToData	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree,
												 I3DShCamera* camera);
	// These three functions are not in the interface
	virtual MCCOMErr MCCOMAPI TrackWireFrame	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree, 
												 int16 handle,const TRACKINFO& startinfo,const TRACKINFO& previnfo, 
												 const TRACKINFO& nextinfo);
	virtual MCCOMErr MCCOMAPI DataToWireFrame	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree);
	virtual MCCOMErr MCCOMAPI WireFrameToData	(I3DShWireFrame* wireFrame,int16 proj,I3DShTreeElement* tree);

	virtual MCCOMErr MCCOMAPI GetWireFrameBBox	(TBBox3D* outBBox, int16 proj, I3DShTreeElement* tree);

	virtual void	 MCCOMAPI ShowWFTools		(boolean show)			{ }
	virtual boolean	 MCCOMAPI HandlesTool		(int16 inTool);
	virtual boolean  MCCOMAPI IsViewDependent	() const { return false; }

	virtual real32	 MCCOMAPI GetScalingFactor()	const { return 1.0f; }
	virtual void	 MCCOMAPI SetScalingFactor(real32 inValue) { }

	virtual boolean	 MCCOMAPI IsBBoxAlwaysUsedForParentBBox() { return true; }
};

#endif