From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/game/client/vgui_bitmapbutton.cpp | 120 +++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 mp/src/game/client/vgui_bitmapbutton.cpp (limited to 'mp/src/game/client/vgui_bitmapbutton.cpp') diff --git a/mp/src/game/client/vgui_bitmapbutton.cpp b/mp/src/game/client/vgui_bitmapbutton.cpp new file mode 100644 index 00000000..82969803 --- /dev/null +++ b/mp/src/game/client/vgui_bitmapbutton.cpp @@ -0,0 +1,120 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: This is a panel which is rendered image on top of an entity +// +// $Revision: $ +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#pragma warning (disable: 4514) + +#include "vgui_bitmapimage.h" +#include "vgui_bitmapbutton.h" +#include + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Constructor +//----------------------------------------------------------------------------- +CBitmapButton::CBitmapButton( vgui::Panel *pParent, const char *pName, const char *pText ) : + BaseClass( pParent, pName, pText ) +{ + SetPaintBackgroundEnabled( false ); + for ( int i = 0; i < BUTTON_STATE_COUNT; ++i ) + { + m_bImageLoaded[i] = false; + } +} + +CBitmapButton::~CBitmapButton() +{ +} + + +//----------------------------------------------------------------------------- +// initialization +//----------------------------------------------------------------------------- +bool CBitmapButton::Init( KeyValues* pInitData ) +{ + // Unimplemented + Assert( 0 ); + return true; +} + + +//----------------------------------------------------------------------------- +// initialization from build-mode dialog style .res files +//----------------------------------------------------------------------------- +void CBitmapButton::ApplySettings(KeyValues *pInitData) +{ + BaseClass::ApplySettings(pInitData); + + COMPILE_TIME_ASSERT( BUTTON_STATE_COUNT == 4 ); + const char *pSectionName[BUTTON_STATE_COUNT] = + { + "enabledImage", + "mouseOverImage", + "pressedImage", + "disabledImage" + }; + + for ( int i = 0; i < BUTTON_STATE_COUNT; ++i ) + { + m_bImageLoaded[i] = InitializeImage(pInitData, pSectionName[i], this, &m_pImage[i] ); + } +} + + +//----------------------------------------------------------------------------- +// Sets the image +//----------------------------------------------------------------------------- +void CBitmapButton::SetImage( ButtonImageType_t type, const char *pMaterialName, color32 color ) +{ + m_bImageLoaded[type] = m_pImage[type].Init( GetVPanel(), pMaterialName ); + if (m_bImageLoaded[type]) + { + Color vcol( color.r, color.g, color.b, color.a ); + m_pImage[type].SetColor( vcol ); + } +} + +bool CBitmapButton::IsImageLoaded( ButtonImageType_t type ) const +{ + return m_bImageLoaded[type]; +} + + +//----------------------------------------------------------------------------- +// Draws the puppy +//----------------------------------------------------------------------------- +void CBitmapButton::Paint( void ) +{ + // Determine the image to use based on the state + int nCurrentImage = BUTTON_ENABLED; + if (IsArmed()) + { + if (IsDepressed()) + { + nCurrentImage = BUTTON_PRESSED; + } + else + { + nCurrentImage = BUTTON_ENABLED_MOUSE_OVER; + } + } + else if (!IsEnabled()) + { + nCurrentImage = BUTTON_DISABLED; + } + + if (m_bImageLoaded[nCurrentImage]) + { + m_pImage[nCurrentImage].DoPaint( GetVPanel() ); + } + + BaseClass::Paint(); +} + + -- cgit v1.2.3