//
// Copyright © Diehl Graphsoft, Inc. 2006.
// All Rights Reserved.
// 

#pragma once

#include "IFileIdentifier.h"

namespace VectorWorks
{
	namespace Filing
	{
		// ----------------------------------------------------------------------------------------------------
		enum EImportCameraOption
		{
			kImportCameraOneOnly,
			kImportCameraAll
		};

		// ----------------------------------------------------------------------------------------------------
		enum EImportMeshOption
		{
			kImportMeshAsVWMesh,
			kImportMeshAs3DPolys
		};

		struct S3DSImportOptions
		{
			bool				fbImportMeshes;
			EImportMeshOption	fImportMeshOptions;
			bool				fbTexture3DPolys;
			bool				fbImportMaterials;
			bool				fbImportTextureMaterials;
			bool				fbImportLights;
			bool				fbImportSpotLights;
			bool				fbImportOmniLights;
			bool				fbImportCameras;
			EImportCameraOption	fImportCameraOptions;
			TXString			fCameraName;
			WorldPt3			fScaleVector;
			WorldPt3			fScaleCenter;
		};

		// ----------------------------------------------------------------------------------------------------
		// {263BD4CD-417F-4fc0-8BEE-9CBFF95FDC76}
		static const VWIID IID_IImportExport3DS = { 0x263bd4cd, 0x417f, 0x4fc0, { 0x8b, 0xee, 0x9c, 0xbf, 0xf9, 0x5f, 0xdc, 0x76 } };

		class DYNAMIC_ATTRIBUTE IImportExport3DS : public IVWUnknown
		{
		public:
			virtual VCOMError VCOM_CALLTYPE	Import() = 0;
			virtual VCOMError VCOM_CALLTYPE	Import(IFileIdentifier* pFileID, const WorldPt& position) = 0;
			virtual VCOMError VCOM_CALLTYPE	Export() = 0;
			virtual VCOMError VCOM_CALLTYPE	Export(IFileIdentifier* pFileID) = 0;
			virtual VCOMError VCOM_CALLTYPE	SetOptions(const S3DSImportOptions& options) = 0;
			virtual VCOMError VCOM_CALLTYPE	GetOptions(S3DSImportOptions& outOptions) = 0;
		};

		// ----------------------------------------------------------------------------------------------------
		typedef VCOMPtr<IImportExport3DS>		IImportExport3DSPtr;
	}
}
