/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #pragma once #ifndef GWEN_CONTROLS_IMAGEPANEL_H #define GWEN_CONTROLS_IMAGEPANEL_H #include "../gwen.h" #include "gwen_base.h" #include "../gwen_baserender.h" #include "../gwen_texture.h" namespace Gwen { namespace Controls { class GWEN_EXPORT ImagePanel : public Controls::Base { public: GWEN_CONTROL_INLINE( ImagePanel, Controls::Base ) { SetUV( 0, 0, 1, 1 ); SetMouseInputEnabled( false ); m_DrawColor = Colors::White; SetStretch( true ); } virtual ~ImagePanel() { m_Texture.Release( GetSkin()->GetRender() ); } virtual void SetUV( float u1, float v1, float u2, float v2 ) { m_uv[0] = u1; m_uv[1] = v1; m_uv[2] = u2; m_uv[3] = v2; } virtual void SetImage( const TextObject& imageName ) { m_Texture.Load( imageName, GetSkin()->GetRender() ); } virtual void SetImage( const Texture& texture ) { m_Texture = texture; } virtual TextObject& GetImage() { return m_Texture.name; } virtual int TextureWidth() { return m_Texture.width; } virtual int TextureHeight() { return m_Texture.height; } virtual const TextObject& GetImageName() { return m_Texture.name; } virtual void Render( Skin::Base* skin ) { skin->GetRender()->SetDrawColor( m_DrawColor ); if ( m_bStretch ) skin->GetRender()->DrawTexturedRect( &m_Texture, GetRenderBounds(), m_uv[0], m_uv[1], m_uv[2], m_uv[3] ); else skin->GetRender()->DrawTexturedRect( &m_Texture, Gwen::Rect( 0, 0, m_Texture.width, m_Texture.height ), m_uv[0], m_uv[1], m_uv[2], m_uv[3] ); } virtual void SizeToContents() { SetSize( m_Texture.width, m_Texture.height ); } virtual void SetDrawColor( Gwen::Color color ) { m_DrawColor = color; } virtual bool FailedToLoad() { return m_Texture.FailedToLoad(); } virtual bool GetStretch(){ return m_bStretch; } virtual void SetStretch( bool b ){ m_bStretch = b; } protected: Texture m_Texture; float m_uv[4]; Gwen::Color m_DrawColor; bool m_bStretch; }; } } #endif