Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright � 1996-2005, 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 <keyvalues.h>
// 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; } _doublePressedActionMessage = NULL; }
CBitmapButton::~CBitmapButton() { if (_doublePressedActionMessage) { _doublePressedActionMessage->deleteThis(); } }
//-----------------------------------------------------------------------------
// 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(); }
void CBitmapButton::OnMouseDoublePressed( vgui::MouseCode code ) { BaseClass::OnMouseDoublePressed( code );
if ( _doublePressedActionMessage ) { PostActionSignal( _doublePressedActionMessage->MakeCopy() ); } }
//-----------------------------------------------------------------------------
// Purpose: sets the message to send when the button is double clicked
//-----------------------------------------------------------------------------
void CBitmapButton::SetDoublePressedCommand( const char *command ) { SetDoublePressedCommand( new KeyValues( "Command", "command", command ) ); }
//-----------------------------------------------------------------------------
// Purpose: sets the message to send when the button is double clicked
//-----------------------------------------------------------------------------
void CBitmapButton::SetDoublePressedCommand( KeyValues *message ) { // delete the old message
if (_doublePressedActionMessage) { _doublePressedActionMessage->deleteThis(); }
_doublePressedActionMessage = message; }
|