diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/client/vgui_bitmapimage.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/client/vgui_bitmapimage.cpp')
| -rw-r--r-- | mp/src/game/client/vgui_bitmapimage.cpp | 640 |
1 files changed, 320 insertions, 320 deletions
diff --git a/mp/src/game/client/vgui_bitmapimage.cpp b/mp/src/game/client/vgui_bitmapimage.cpp index b36d96c6..5ec1fccf 100644 --- a/mp/src/game/client/vgui_bitmapimage.cpp +++ b/mp/src/game/client/vgui_bitmapimage.cpp @@ -1,320 +1,320 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-#include "cbase.h"
-#include "vgui_bitmapimage.h"
-#include <vgui_controls/Controls.h>
-#include <vgui/ISurface.h>
-#include <vgui_controls/Panel.h>
-#include "panelmetaclassmgr.h"
-#include <KeyValues.h>
-#include <vgui/IPanel.h>
-#include <bitmap/bitmap.h>
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-//-----------------------------------------------------------------------------
-// Purpose: Check box image
-//-----------------------------------------------------------------------------
-BitmapImage::BitmapImage()
-{
- m_clr.SetColor( 255, 255, 255, 255 );
- m_pos[ 0 ] = m_pos[ 1 ] = 0;
- m_pPanelSize = NULL;
- m_nTextureId = -1;
- m_bProcedural = false;
-
- SetViewport( false, 0.0f, 0.0f, 0.0f, 0.0f );
-}
-
-BitmapImage::BitmapImage( vgui::VPANEL parent, const char *filename )
-{
- m_nTextureId = -1;
- m_clr.SetColor( 255, 255, 255, 255 );
- m_pos[ 0 ] = m_pos[ 1 ] = 0;
- Init( parent, filename );
- SetViewport( false, 0.0f, 0.0f, 0.0f, 0.0f );
-}
-
-BitmapImage::~BitmapImage()
-{
- DestroyTexture();
-}
-
-void BitmapImage::DestroyTexture()
-{
- if ( m_nTextureId != -1 )
- {
- vgui::surface()->DestroyTextureID( m_nTextureId );
- m_nTextureId = -1;
- m_bProcedural = false;
- }
-}
-
-bool BitmapImage::Init( vgui::VPANEL pParent, const char *pFileName )
-{
- UsePanelRenderSize( pParent );
- if ( pFileName != NULL )
- {
- DestroyTexture();
- m_nTextureId = vgui::surface()->CreateNewTextureID();
- m_bProcedural = false;
- vgui::surface()->DrawSetTextureFile( m_nTextureId, pFileName , true, true);
- GetSize( m_Size[0], m_Size[1] );
- }
- return true;
-}
-
-bool BitmapImage::Init( vgui::VPANEL pParent, KeyValues* pInitData )
-{
- char const* pMaterialName = pInitData->GetString( "material" );
- if ( !pMaterialName || !pMaterialName[ 0 ] )
- return false;
-
- // modulation color
- Color color;
- if (!ParseRGBA( pInitData, "color", color ))
- color.SetColor( 255, 255, 255, 255 );
-
- Init( pParent, pMaterialName );
- SetColor( color );
-
- return true;
-}
-
-//-----------------------------------------------------------------------------
-// FIXME: Bleah!!! Don't want two different KeyValues
-/*-----------------------------------------------------------------------------
-bool BitmapImage::Init( vgui::VPANEL pParent, KeyValues* pInitData )
-{
- char const* pMaterialName = pInitData->GetString( "material" );
- if ( !pMaterialName || !pMaterialName[ 0 ] )
- return false;
-
- // modulation color
- Color color;
- if (!ParseRGBA( pInitData, "color", color ))
- color.SetColor( 255, 255, 255, 255 );
-
- Init( pParent, pMaterialName );
- SetColor( color );
-
- return true;
-} */
-
-void BitmapImage::SetImageFile( const char *newImage )
-{
- if ( m_nTextureId == -1 || m_bProcedural )
- {
- DestroyTexture();
- m_nTextureId = vgui::surface()->CreateNewTextureID();
- m_bProcedural = false;
- }
-
- vgui::surface()->DrawSetTextureFile( m_nTextureId, newImage , true, true);
-}
-
-void BitmapImage::UsePanelRenderSize( vgui::VPANEL pPanel )
-{
- m_pPanelSize = pPanel;
-}
-
-vgui::VPANEL BitmapImage::GetRenderSizePanel( void )
-{
- return m_pPanelSize;
-}
-
-void BitmapImage::SetRenderSize( int x, int y )
-{
- m_Size[0] = x;
- m_Size[1] = y;
-}
-
-void BitmapImage::DoPaint( int x, int y, int wide, int tall, float yaw, float flAlphaModulate )
-{
- vgui::surface()->DrawSetTexture( m_nTextureId );
-
- int r, g, b, a;
- m_clr.GetColor( r, g, b, a );
- a *= flAlphaModulate;
- vgui::surface()->DrawSetColor( r, g, b, a );
-
- if (yaw == 0)
- {
- if ( !m_bUseViewport )
- {
- vgui::surface()->DrawTexturedRect( x, y, x + wide, y + tall );
- }
- else
- {
- vgui::surface()->DrawTexturedSubRect( x, y, x + wide, y + tall,
- m_rgViewport[ 0 ],
- m_rgViewport[ 1 ],
- m_rgViewport[ 2 ],
- m_rgViewport[ 3 ]
- );
- }
- }
- else
- {
- // Rotated version of the bitmap!
- // Rotate about the center of the bitmap
- vgui::Vertex_t verts[4];
- Vector2D center( x + (wide * 0.5f), y + (tall * 0.5f) );
-
- // Choose a basis...
- float yawRadians = -yaw * M_PI / 180.0f;
- Vector2D axis[2];
- axis[0].x = cos(yawRadians);
- axis[0].y = sin(yawRadians);
- axis[1].x = -axis[0].y;
- axis[1].y = axis[0].x;
-
- verts[0].m_TexCoord.Init( 0, 0 );
- Vector2DMA( center, -0.5f * wide, axis[0], verts[0].m_Position );
- Vector2DMA( verts[0].m_Position, -0.5f * tall, axis[1], verts[0].m_Position );
-
- verts[1].m_TexCoord.Init( 1, 0 );
- Vector2DMA( verts[0].m_Position, wide, axis[0], verts[1].m_Position );
-
- verts[2].m_TexCoord.Init( 1, 1 );
- Vector2DMA( verts[1].m_Position, tall, axis[1], verts[2].m_Position );
-
- verts[3].m_TexCoord.Init( 0, 1 );
- Vector2DMA( verts[0].m_Position, tall, axis[1], verts[3].m_Position );
-
- vgui::surface()->DrawTexturedPolygon( 4, verts );
- }
-}
-
-void BitmapImage::DoPaint( vgui::VPANEL pPanel, float yaw, float flAlphaModulate )
-{
- int wide, tall;
- if ( pPanel )
- {
- vgui::ipanel()->GetSize(pPanel, wide, tall );
- }
- else
- {
- wide = m_Size[0];
- tall = m_Size[1];
- }
-
- DoPaint( m_pos[0], m_pos[1], wide, tall, yaw, flAlphaModulate );
-}
-
-void BitmapImage::Paint()
-{
- DoPaint( m_pPanelSize );
-}
-
-void BitmapImage::SetColor( const Color& clr )
-{
- m_clr = clr;
-}
-
-Color BitmapImage::GetColor( )
-{
- return m_clr;
-}
-
-void BitmapImage::GetColor( int& r,int& g,int& b,int& a )
-{
- m_clr.GetColor( r,g,b,a );
-}
-
-void BitmapImage::GetSize( int& wide, int& tall )
-{
- vgui::surface()->DrawGetTextureSize( m_nTextureId, wide, tall );
-}
-
-void BitmapImage::SetPos( int x, int y )
-{
- m_pos[ 0 ] = x;
- m_pos[ 1 ] = y;
-}
-
-
-//-----------------------------------------------------------------------------
-// Helper method to initialize a bitmap image from KeyValues data..
-//-----------------------------------------------------------------------------
-bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage )
-{
- KeyValues *pBitmapImageSection;
- if (pSectionName)
- {
- pBitmapImageSection = pInitData->FindKey( pSectionName );
- if ( !pBitmapImageSection )
- return false;
- }
- else
- {
- pBitmapImageSection = pInitData;
- }
-
- return pBitmapImage->Init( pParent->GetVPanel(), pBitmapImageSection );
-}
-
-
-//-----------------------------------------------------------------------------
-// FIXME: How sad. We need to make KeyValues + vgui::KeyValues be the same. Bleah
-/*-----------------------------------------------------------------------------
-bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage )
-{
- KeyValues *pBitmapImageSection;
- if (pSectionName)
- {
- pBitmapImageSection = pInitData->FindKey( pSectionName );
- if ( !pBitmapImageSection )
- return false;
- }
- else
- {
- pBitmapImageSection = pInitData;
- }
-
- return pBitmapImage->Init( pParent->GetVPanel(), pBitmapImageSection );
-} */
-
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : use -
-// left -
-// top -
-// right -
-// bottom -
-//-----------------------------------------------------------------------------
-void BitmapImage::SetViewport( bool use, float left, float top, float right, float bottom )
-{
- m_bUseViewport = use;
- m_rgViewport[ 0 ] = left;
- m_rgViewport[ 1 ] = top;
- m_rgViewport[ 2 ] = right;
- m_rgViewport[ 3 ] = bottom;
-}
-
-//-----------------------------------------------------------------------------
-void BitmapImage::SetBitmap( const Bitmap_t &bitmap )
-{
- if ( m_nTextureId == -1 || !m_bProcedural )
- {
- DestroyTexture();
- m_nTextureId = vgui::surface()->CreateNewTextureID( true );
- m_bProcedural = true;
- }
-
- vgui::surface()->DrawSetTextureRGBA( m_nTextureId, bitmap.GetBits(), bitmap.Width(), bitmap.Height(), 1, true );
-
- // Initialize render size, if we don't already have one
- if ( m_Size[0] == 0 )
- {
- m_Size[0] = bitmap.Width();
- m_Size[1] = bitmap.Height();
- }
-}
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "vgui_bitmapimage.h" +#include <vgui_controls/Controls.h> +#include <vgui/ISurface.h> +#include <vgui_controls/Panel.h> +#include "panelmetaclassmgr.h" +#include <KeyValues.h> +#include <vgui/IPanel.h> +#include <bitmap/bitmap.h> + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: Check box image +//----------------------------------------------------------------------------- +BitmapImage::BitmapImage() +{ + m_clr.SetColor( 255, 255, 255, 255 ); + m_pos[ 0 ] = m_pos[ 1 ] = 0; + m_pPanelSize = NULL; + m_nTextureId = -1; + m_bProcedural = false; + + SetViewport( false, 0.0f, 0.0f, 0.0f, 0.0f ); +} + +BitmapImage::BitmapImage( vgui::VPANEL parent, const char *filename ) +{ + m_nTextureId = -1; + m_clr.SetColor( 255, 255, 255, 255 ); + m_pos[ 0 ] = m_pos[ 1 ] = 0; + Init( parent, filename ); + SetViewport( false, 0.0f, 0.0f, 0.0f, 0.0f ); +} + +BitmapImage::~BitmapImage() +{ + DestroyTexture(); +} + +void BitmapImage::DestroyTexture() +{ + if ( m_nTextureId != -1 ) + { + vgui::surface()->DestroyTextureID( m_nTextureId ); + m_nTextureId = -1; + m_bProcedural = false; + } +} + +bool BitmapImage::Init( vgui::VPANEL pParent, const char *pFileName ) +{ + UsePanelRenderSize( pParent ); + if ( pFileName != NULL ) + { + DestroyTexture(); + m_nTextureId = vgui::surface()->CreateNewTextureID(); + m_bProcedural = false; + vgui::surface()->DrawSetTextureFile( m_nTextureId, pFileName , true, true); + GetSize( m_Size[0], m_Size[1] ); + } + return true; +} + +bool BitmapImage::Init( vgui::VPANEL pParent, KeyValues* pInitData ) +{ + char const* pMaterialName = pInitData->GetString( "material" ); + if ( !pMaterialName || !pMaterialName[ 0 ] ) + return false; + + // modulation color + Color color; + if (!ParseRGBA( pInitData, "color", color )) + color.SetColor( 255, 255, 255, 255 ); + + Init( pParent, pMaterialName ); + SetColor( color ); + + return true; +} + +//----------------------------------------------------------------------------- +// FIXME: Bleah!!! Don't want two different KeyValues +/*----------------------------------------------------------------------------- +bool BitmapImage::Init( vgui::VPANEL pParent, KeyValues* pInitData ) +{ + char const* pMaterialName = pInitData->GetString( "material" ); + if ( !pMaterialName || !pMaterialName[ 0 ] ) + return false; + + // modulation color + Color color; + if (!ParseRGBA( pInitData, "color", color )) + color.SetColor( 255, 255, 255, 255 ); + + Init( pParent, pMaterialName ); + SetColor( color ); + + return true; +} */ + +void BitmapImage::SetImageFile( const char *newImage ) +{ + if ( m_nTextureId == -1 || m_bProcedural ) + { + DestroyTexture(); + m_nTextureId = vgui::surface()->CreateNewTextureID(); + m_bProcedural = false; + } + + vgui::surface()->DrawSetTextureFile( m_nTextureId, newImage , true, true); +} + +void BitmapImage::UsePanelRenderSize( vgui::VPANEL pPanel ) +{ + m_pPanelSize = pPanel; +} + +vgui::VPANEL BitmapImage::GetRenderSizePanel( void ) +{ + return m_pPanelSize; +} + +void BitmapImage::SetRenderSize( int x, int y ) +{ + m_Size[0] = x; + m_Size[1] = y; +} + +void BitmapImage::DoPaint( int x, int y, int wide, int tall, float yaw, float flAlphaModulate ) +{ + vgui::surface()->DrawSetTexture( m_nTextureId ); + + int r, g, b, a; + m_clr.GetColor( r, g, b, a ); + a *= flAlphaModulate; + vgui::surface()->DrawSetColor( r, g, b, a ); + + if (yaw == 0) + { + if ( !m_bUseViewport ) + { + vgui::surface()->DrawTexturedRect( x, y, x + wide, y + tall ); + } + else + { + vgui::surface()->DrawTexturedSubRect( x, y, x + wide, y + tall, + m_rgViewport[ 0 ], + m_rgViewport[ 1 ], + m_rgViewport[ 2 ], + m_rgViewport[ 3 ] + ); + } + } + else + { + // Rotated version of the bitmap! + // Rotate about the center of the bitmap + vgui::Vertex_t verts[4]; + Vector2D center( x + (wide * 0.5f), y + (tall * 0.5f) ); + + // Choose a basis... + float yawRadians = -yaw * M_PI / 180.0f; + Vector2D axis[2]; + axis[0].x = cos(yawRadians); + axis[0].y = sin(yawRadians); + axis[1].x = -axis[0].y; + axis[1].y = axis[0].x; + + verts[0].m_TexCoord.Init( 0, 0 ); + Vector2DMA( center, -0.5f * wide, axis[0], verts[0].m_Position ); + Vector2DMA( verts[0].m_Position, -0.5f * tall, axis[1], verts[0].m_Position ); + + verts[1].m_TexCoord.Init( 1, 0 ); + Vector2DMA( verts[0].m_Position, wide, axis[0], verts[1].m_Position ); + + verts[2].m_TexCoord.Init( 1, 1 ); + Vector2DMA( verts[1].m_Position, tall, axis[1], verts[2].m_Position ); + + verts[3].m_TexCoord.Init( 0, 1 ); + Vector2DMA( verts[0].m_Position, tall, axis[1], verts[3].m_Position ); + + vgui::surface()->DrawTexturedPolygon( 4, verts ); + } +} + +void BitmapImage::DoPaint( vgui::VPANEL pPanel, float yaw, float flAlphaModulate ) +{ + int wide, tall; + if ( pPanel ) + { + vgui::ipanel()->GetSize(pPanel, wide, tall ); + } + else + { + wide = m_Size[0]; + tall = m_Size[1]; + } + + DoPaint( m_pos[0], m_pos[1], wide, tall, yaw, flAlphaModulate ); +} + +void BitmapImage::Paint() +{ + DoPaint( m_pPanelSize ); +} + +void BitmapImage::SetColor( const Color& clr ) +{ + m_clr = clr; +} + +Color BitmapImage::GetColor( ) +{ + return m_clr; +} + +void BitmapImage::GetColor( int& r,int& g,int& b,int& a ) +{ + m_clr.GetColor( r,g,b,a ); +} + +void BitmapImage::GetSize( int& wide, int& tall ) +{ + vgui::surface()->DrawGetTextureSize( m_nTextureId, wide, tall ); +} + +void BitmapImage::SetPos( int x, int y ) +{ + m_pos[ 0 ] = x; + m_pos[ 1 ] = y; +} + + +//----------------------------------------------------------------------------- +// Helper method to initialize a bitmap image from KeyValues data.. +//----------------------------------------------------------------------------- +bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage ) +{ + KeyValues *pBitmapImageSection; + if (pSectionName) + { + pBitmapImageSection = pInitData->FindKey( pSectionName ); + if ( !pBitmapImageSection ) + return false; + } + else + { + pBitmapImageSection = pInitData; + } + + return pBitmapImage->Init( pParent->GetVPanel(), pBitmapImageSection ); +} + + +//----------------------------------------------------------------------------- +// FIXME: How sad. We need to make KeyValues + vgui::KeyValues be the same. Bleah +/*----------------------------------------------------------------------------- +bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage ) +{ + KeyValues *pBitmapImageSection; + if (pSectionName) + { + pBitmapImageSection = pInitData->FindKey( pSectionName ); + if ( !pBitmapImageSection ) + return false; + } + else + { + pBitmapImageSection = pInitData; + } + + return pBitmapImage->Init( pParent->GetVPanel(), pBitmapImageSection ); +} */ + + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : use - +// left - +// top - +// right - +// bottom - +//----------------------------------------------------------------------------- +void BitmapImage::SetViewport( bool use, float left, float top, float right, float bottom ) +{ + m_bUseViewport = use; + m_rgViewport[ 0 ] = left; + m_rgViewport[ 1 ] = top; + m_rgViewport[ 2 ] = right; + m_rgViewport[ 3 ] = bottom; +} + +//----------------------------------------------------------------------------- +void BitmapImage::SetBitmap( const Bitmap_t &bitmap ) +{ + if ( m_nTextureId == -1 || !m_bProcedural ) + { + DestroyTexture(); + m_nTextureId = vgui::surface()->CreateNewTextureID( true ); + m_bProcedural = true; + } + + vgui::surface()->DrawSetTextureRGBA( m_nTextureId, bitmap.GetBits(), bitmap.Width(), bitmap.Height(), 1, true ); + + // Initialize render size, if we don't already have one + if ( m_Size[0] == 0 ) + { + m_Size[0] = bitmap.Width(); + m_Size[1] = bitmap.Height(); + } +} |