summaryrefslogtreecommitdiff
path: root/gameui/BitmapImagePanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/BitmapImagePanel.cpp')
-rw-r--r--gameui/BitmapImagePanel.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/gameui/BitmapImagePanel.cpp b/gameui/BitmapImagePanel.cpp
new file mode 100644
index 0000000..b2b3545
--- /dev/null
+++ b/gameui/BitmapImagePanel.cpp
@@ -0,0 +1,78 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "BitmapImagePanel.h"
+#include <vgui/ISurface.h>
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+using namespace vgui;
+
+CBitmapImagePanel::CBitmapImagePanel( Panel *parent, char const *panelName,
+ char const *filename /*= NULL*/ ) : Panel( parent, panelName )
+{
+ m_szTexture[ 0 ] = 0;
+ m_bUploaded = false;
+ m_nTextureId = -1;
+
+ SetBounds( 0, 0, 100, 100 );
+
+ if ( filename && filename[ 0 ] )
+ {
+ Q_strncpy( m_szTexture, filename, sizeof( m_szTexture ) );
+ }
+}
+
+void CBitmapImagePanel::PaintBackground()
+{
+ if (!m_szTexture[0])
+ return;
+
+ if ( !m_bUploaded )
+ forceUpload();
+
+ int w, h;
+ GetSize( w, h );
+ surface()->DrawSetColor( Color( 255, 255, 255, 255 ) );
+ surface()->DrawSetTexture( m_nTextureId );
+ surface()->DrawTexturedRect( 0, 0, w, h );
+}
+
+void CBitmapImagePanel::setTexture( char const *filename )
+{
+ Q_strncpy( m_szTexture, filename, sizeof( m_szTexture ) );
+
+ if ( m_bUploaded )
+ {
+ forceReload();
+ }
+ else
+ {
+ forceUpload();
+ }
+}
+
+void CBitmapImagePanel::forceUpload()
+{
+ if ( !m_szTexture[ 0 ] )
+ return;
+
+ m_bUploaded = true;
+
+ m_nTextureId = surface()->CreateNewTextureID();
+ surface()->DrawSetTextureFile( m_nTextureId, m_szTexture, false, true);
+}
+
+void CBitmapImagePanel::forceReload( void )
+{
+ if ( !m_bUploaded )
+ return;
+
+ // Force texture to re-upload to video card
+ surface()->DrawSetTextureFile( m_nTextureId, m_szTexture, false, true);
+}