/*!
 	@file
 	@brief	描画平面クラス DIB Ver.
 */

#ifndef CSurfaceDIB_h
#define CSurfaceDIB_h

#include"../../../../Setup/CompileMode.h"
#include"../../../../Setup/Win32.h"

#include"../CSurfaceBuffer.h"

namespace Maid
{
	class CSurfaceDIB : public ISurfaceBuffer
	{
	public:
		CSurfaceDIB();
		virtual ~CSurfaceDIB();

		virtual SIZE2DI GetSize() const;
		virtual PIXELFORMAT GetPixelFormat() const;

		virtual void Lock( SPSURFACEBUFFERINFO& info );
		virtual void Unlock();

		void CreateBuffer( int Width, int Height, PIXELFORMAT Format );
		void Destory();

		HBITMAP GetHBITMAP() const;

	private:
		HBITMAP		m_hDIB;			//!<	DIBハンドル
		void*		m_pPlane;		//!<	展開されるプレーン
		SIZE2DI		m_Size;			//!<	m_pPlaneの横幅
		PIXELFORMAT	m_PixelFormat;	//!<	m_pPlaneのピクセルフォーマット
		int			m_Pitch;		//!<	横１ラインのバイト数
	};

	typedef boost::shared_ptr<CSurfaceDIB>	SPSURFACEDIB;

}

#endif
