//------------------------------------------------------------------------------
// Lamp : Open source game middleware
// Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//------------------------------------------------------------------------------

/** @file
 * グラフィックスバッファフォーマットヘッダ
 * @author Junpee
 */

#ifndef GRAPHICS_BUFFER_FORMAT_H_
#define GRAPHICS_BUFFER_FORMAT_H_

namespace Lamp{

//------------------------------------------------------------------------------
/**
 * グラフィックスバッファフォーマット
 *
 * このクラスは継承しないで下さい。
 */
class GraphicsBufferFormat{
public:
	/**
	 * コンストラクタ
	 */
	GraphicsBufferFormat(){ format_ = D3DFMT_UNKNOWN; }

	/**
	 * コピーコンストラクタ
	 * @param format 設定するフォーマット
	 */
	explicit GraphicsBufferFormat(const D3DFORMAT& format){ format_ = format; }

	/**
	 * フォーマットの設定
	 * @param format 設定するフォーマット
	 */
	void setFormat(D3DFORMAT format){ format_ = format; }

	/**
	 * フォーマットの取得
	 * @return フォーマット
	 */
	D3DFORMAT getFormat(){ return format_; }

	/**
	 * 代入演算子
	 * @param format 代入元フォーマット
	 * @return 代入結果
	 */
	const D3DFORMAT& operator=(const D3DFORMAT& format){
		format_ = format;
		return format_;
	}

	//--------------------------------------------------------------------------
	/**
	 * フォーマット名の取得
	 * @return フォーマット名
	 */
	String getName();

	/**
	 * カラーチャンネルビット数の取得
	 * @return カラーチャンネルビット数
	 */
	u_int getColorChannelBits();

	/**
	 * アルファチャンネルビット数の取得
	 * @return アルファチャンネルビット数
	 */
	u_int getAlphaChannelBits();

	/**
	 * 深度ビット数の取得
	 * @return 深度ビット数
	 */
	u_int getDepthBits();

	/**
	 * ステンシルビット数の取得
	 * @return ステンシルビット数
	 */
	u_int getStencilBits();

private:
	// フォーマット
	D3DFORMAT format_;

};

//------------------------------------------------------------------------------
} // End of namespace Lamp
#endif // End of GRAPHICS_BUFFER_FORMAT_H_
//------------------------------------------------------------------------------

