#include "PanelManager.h"
#include "Panel.h"

#include <Utility/Log.h>
#include <Renderer/OpenGLUtils.h>
#include <Renderer/OpenGLMatrix.h>

#include <algorithm>

//////////////////////////////////////////////////////////////
namespace Dubious {
namespace Panels {

//////////////////////////////////////////////////////////////
PanelManager::PanelManager()
{
}

//////////////////////////////////////////////////////////////
PanelManager::~PanelManager()
{
}

//////////////////////////////////////////////////////////////
void PanelManager::Draw()
{
//	LOG_INFO( "PanelManager::Draw " << m_ScreenDimensions );
	// Orthographic projection
	Renderer::OpenGLMatrix::MatrixMode( GL_PROJECTION );
	Renderer::OpenGLMatrix::LoadIdentity();
	Renderer::OpenGLUtils::Ortho( Math::RectangleYDown( Math::Point(), m_ScreenDimensions ) );

	Renderer::OpenGLMatrix::MatrixMode( GL_MODELVIEW );
	Renderer::OpenGLMatrix::LoadIdentity();

	glDisable( GL_DEPTH_TEST );
	glDisable( GL_LIGHTING );
	glDisable( GL_COLOR_MATERIAL );
	glDisable( GL_STENCIL_TEST );

	std::for_each( m_Panels.begin(), m_Panels.end(), [] (PanelPtr pPanel) {
		pPanel->Draw();
	});

}

//////////////////////////////////////////////////////////////
void PanelManager::AddPanel( PanelPtr pPanel )
{
	m_Panels.push_back( pPanel );
}

//////////////////////////////////////////////////////////////
void PanelManager::RemovePanel( PanelPtr pPanel )
{
	m_Panels.remove( pPanel );
}

}
}
