//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "hud.h" #include "cbase.h" #include "iclientmode.h" #include "hud_macros.h" #include "vgui_controls/controls.h" #include "vgui/ISurface.h" #include "vgui/IBorder.h" #include "vgui/IScheme.h" #include "KeyValues.h" #include "hud_image.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" using namespace vgui; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- HudImagePanel::HudImagePanel(Panel *parent, const char *pElementName) : CHudElement( pElementName ), Panel(parent, pElementName) { Panel *pParent = g_pClientMode->GetViewport(); SetParent( pParent ); SetVisible( true ); SetAlpha( 255 ); m_nImage = NULL; m_pszImageName = NULL; m_pszColorName = NULL; m_bScaleImage = false; m_FillColor = Color(0, 0, 0, 0); SetPaintBorderEnabled( false ); SetPaintEnabled( true ); SetPaintBackgroundEnabled( true ); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- HudImagePanel::~HudImagePanel() { delete [] m_pszImageName; delete [] m_pszColorName; } //----------------------------------------------------------------------------- // Purpose: sets an image by file name //----------------------------------------------------------------------------- void HudImagePanel::SetImage(const char *imageName) { int len = Q_strlen(imageName) + 1; m_pszImageName = new char[ len ]; Q_strncpy(m_pszImageName, imageName, len ); m_nImage = surface()->CreateNewTextureID(); surface()->DrawSetTextureFile( m_nImage, m_pszImageName, true, true); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void HudImagePanel::PaintBackground() { int wide, tall; GetSize(wide, tall); if (m_FillColor[3] > 0) { // draw the specified fill color surface()->DrawSetColor(m_FillColor); surface()->DrawFilledRect(0, 0, wide, tall); } } void HudImagePanel::Paint() { int wide, tall; GetSize(wide, tall); if (m_nImage) { surface()->DrawSetColor( Color( 255,255,255,255) ); surface()->DrawSetTexture( m_nImage ); surface()->DrawTexturedRect( 0, 0, wide, tall ); } } void HudImagePanel::OnThink() { BaseClass::OnThink(); } //----------------------------------------------------------------------------- // Purpose: set the color to fill with, if no Image is specified //----------------------------------------------------------------------------- void HudImagePanel::SetFillColor( Color col ) { m_FillColor = col; } //----------------------------------------------------------------------------- // Purpose: data accessor //----------------------------------------------------------------------------- Color HudImagePanel::GetFillColor() { return m_FillColor; }