//=========== Copyright Valve Corporation, All rights reserved. ===============//
//
// Purpose: 
//=============================================================================//

#ifndef PANORAMA_RENDERPANEL_H
#define PANORAMA_RENDERPANEL_H

#ifdef _WIN32
#pragma once
#endif

#include "panorama/controls/panel2d.h"
#include "materialsystem2/imaterialsystem2utils.h"

namespace panorama
{

//-----------------------------------------------------------------------------
// Purpose: Render panel, to use for raw source2 render operations directly in render thread
//-----------------------------------------------------------------------------
class CRenderPanel : public CPanel2D
{
	DECLARE_PANEL2D( CRenderPanel, CPanel2D );

public:
	CRenderPanel( CPanel2D *parent, const char * pchPanelID );
	virtual ~CRenderPanel();

	void SetRenderThreadCallback( CRenderThreadCallback *pRenderCallback );

	// Override and make return true if you need to paint every single frame, and will not manually call SetRepaint when you want to repaint
	virtual bool BShouldAlwaysRepaint() { return true; }

protected:
	// Override of Panel2D paint
	virtual void Paint() OVERRIDE;

private:
	CRenderThreadCallback *m_pRenderCallback;
};

} // namespace panorama

#endif // PANORAMA_RENDERPANEL_H