/********************************************************************/
/* Copyright (c) 2019 System fugen G.K. and Yuzi Mizuno          */
/* All rights reserved.                                             */
/********************************************************************/
/********************************************************************/
#pragma once
#include "IO/GLFileExporter.h"

/// .stl ファイルにメッシュだけを保存する。
class CGLStlExporter : public CGLFileExporter
{
	bool m_bSaveAscii; ///< ASCII で保存する。
	bool m_bSingle; ///< 複数オブジェクトをひとつの ASCII STL に保存する。

public:
	/// コンストラクター
	CGLStlExporter();

	/// group に含まれる MGStl オブジェクトのみを保存する。
	///
	/// MGStl ごとにファイルを作成する可能性がある。
	/// ファイル名には適当に連番が付く。
	virtual bool Save(const MGGroup& group);
	/// 上記関数において、指定のファイル名で保存できるようにする
	/// また、出力したファイル数を返却する
	virtual bool Save(const MGGroup& group, const CString filename, int& fileNum);

	/// true を返す。
	virtual bool HasOption() const;

protected:
	/// ダイアログを表示して、メンバーデータを設定する。
	virtual void DoShowOptionDialog();
};

class MGStl;

/// STL ファイルに保存する。
bool SaveStl(const MGStl& stl, const CString& strFileName, bool bSaveAscii, bool bOutputInfo = true);

/// 複数メッシュを単一の STL ファイルに保存する。
bool SaveStlSingle(const std::vector<const MGStl*>& stls, const CString& strFileName);
