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/vgui2/vgui_controls/subrectimage.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/vgui2/vgui_controls/subrectimage.cpp')
| -rw-r--r-- | mp/src/vgui2/vgui_controls/subrectimage.cpp | 424 |
1 files changed, 212 insertions, 212 deletions
diff --git a/mp/src/vgui2/vgui_controls/subrectimage.cpp b/mp/src/vgui2/vgui_controls/subrectimage.cpp index e7405049..12939995 100644 --- a/mp/src/vgui2/vgui_controls/subrectimage.cpp +++ b/mp/src/vgui2/vgui_controls/subrectimage.cpp @@ -1,212 +1,212 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================
-
-#include "vgui_controls/subrectimage.h"
-#include "tier0/dbg.h"
-#include "vgui/ISurface.h"
-#include "vgui_controls/Controls.h"
-
-// NOTE: This has to be the last file included!
-#include "tier0/memdbgon.h"
-
-
-using namespace vgui;
-
-// Officially the invalid texture ID is zero, but -1 is used in many
-// places, and changing it carries some risk. Adding a named constant
-// for this file avoids warnings and makes future changes easier.
-const HTexture SUBRECT_INVALID_TEXTURE = (HTexture)-1;
-
-//-----------------------------------------------------------------------------
-// Constructor, destructor
-//-----------------------------------------------------------------------------
-CSubRectImage::CSubRectImage( const char *filename, bool hardwareFiltered, int subx, int suby, int subw, int subh )
-{
- SetSize( subw, subh );
- sub[ 0 ] = subx;
- sub[ 1 ] = suby;
- sub[ 2 ] = subw;
- sub[ 3 ] = subh;
-
- _filtered = hardwareFiltered;
- // HACKHACK - force VGUI materials to be in the vgui/ directory
- // This needs to be revisited once GoldSRC is grandfathered off.
- //!! need to make this work with goldsrc
- int size = strlen(filename) + 1 + strlen("vgui/");
- _filename = (char *)malloc( size );
- Assert( _filename );
-
- Q_snprintf( _filename, size, "vgui/%s", filename );
-
- _id = SUBRECT_INVALID_TEXTURE;
- _uploaded = false;
- _color = Color(255, 255, 255, 255);
- _pos[0] = _pos[1] = 0;
- _valid = true;
- _wide = subw;
- _tall = subh;
- ForceUpload();
-}
-
-CSubRectImage::~CSubRectImage()
-{
- if ( vgui::surface() && _id != SUBRECT_INVALID_TEXTURE )
- {
- vgui::surface()->DestroyTextureID( _id );
- _id = SUBRECT_INVALID_TEXTURE;
- }
-
- if ( _filename )
- {
- free( _filename );
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: data accessor
-//-----------------------------------------------------------------------------
-void CSubRectImage::GetSize(int &wide, int &tall)
-{
- wide = _wide;
- tall = _tall;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: size of the bitmap
-//-----------------------------------------------------------------------------
-void CSubRectImage::GetContentSize(int &wide, int &tall)
-{
- wide = 0;
- tall = 0;
-
- if (!_valid)
- return;
-
- if ( _id != SUBRECT_INVALID_TEXTURE )
- {
- surface()->DrawGetTextureSize(_id, wide, tall);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: ignored
-//-----------------------------------------------------------------------------
-void CSubRectImage::SetSize(int x, int y)
-{
- _wide = x;
- _tall = y;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: data accessor
-//-----------------------------------------------------------------------------
-void CSubRectImage::SetPos(int x, int y)
-{
- _pos[0] = x;
- _pos[1] = y;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: data accessor
-//-----------------------------------------------------------------------------
-void CSubRectImage::SetColor(Color col)
-{
- _color = col;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: returns the file name of the bitmap
-//-----------------------------------------------------------------------------
-const char *CSubRectImage::GetName()
-{
- return _filename;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Renders the loaded image, uploading it if necessary
-// Assumes a valid image is always returned from uploading
-//-----------------------------------------------------------------------------
-void CSubRectImage::Paint()
-{
- if ( !_valid )
- return;
-
- // if we don't have an _id then lets make one
- if ( _id == SUBRECT_INVALID_TEXTURE )
- {
- _id = surface()->CreateNewTextureID();
- }
-
- // if we have not uploaded yet, lets go ahead and do so
- if ( !_uploaded )
- {
- ForceUpload();
- }
-
- // set the texture current, set the color, and draw the biatch
- surface()->DrawSetColor( _color[0], _color[1], _color[2], _color[3] );
- surface()->DrawSetTexture( _id );
-
- if ( _wide == 0 || _tall == 0 )
- return;
-
- int cw, ch;
- GetContentSize( cw, ch );
- if ( cw == 0 || ch == 0 )
- return;
-
- float s[ 2 ];
- float t[ 2 ];
-
- s[ 0 ] = (float)sub[ 0 ] / (float)cw;
- s[ 1 ] = (float)(sub[ 0 ]+sub[ 2 ]) / (float)cw;
- t[ 0 ] = (float)sub[ 1 ] / (float)ch;
- t[ 1 ] = (float)(sub[ 1 ]+sub[ 3 ]) / (float)ch;
- surface()->DrawTexturedSubRect(
- _pos[0],
- _pos[1],
- _pos[0] + _wide,
- _pos[1] + _tall,
- s[ 0 ],
- t[ 0 ],
- s[ 1 ],
- t[ 1 ] );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: ensures the bitmap has been uploaded
-//-----------------------------------------------------------------------------
-void CSubRectImage::ForceUpload()
-{
- if ( !_valid || _uploaded )
- return;
-
- if ( _id == SUBRECT_INVALID_TEXTURE )
- {
- _id = surface()->CreateNewTextureID( false );
- }
-
- surface()->DrawSetTextureFile( _id, _filename, _filtered, false );
-
- _uploaded = true;
-
- _valid = surface()->IsTextureIDValid( _id );
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: data accessor
-//-----------------------------------------------------------------------------
-HTexture CSubRectImage::GetID()
-{
- return _id;
-}
-
-bool CSubRectImage::IsValid()
-{
- return _valid;
-}
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#include "vgui_controls/subrectimage.h" +#include "tier0/dbg.h" +#include "vgui/ISurface.h" +#include "vgui_controls/Controls.h" + +// NOTE: This has to be the last file included! +#include "tier0/memdbgon.h" + + +using namespace vgui; + +// Officially the invalid texture ID is zero, but -1 is used in many +// places, and changing it carries some risk. Adding a named constant +// for this file avoids warnings and makes future changes easier. +const HTexture SUBRECT_INVALID_TEXTURE = (HTexture)-1; + +//----------------------------------------------------------------------------- +// Constructor, destructor +//----------------------------------------------------------------------------- +CSubRectImage::CSubRectImage( const char *filename, bool hardwareFiltered, int subx, int suby, int subw, int subh ) +{ + SetSize( subw, subh ); + sub[ 0 ] = subx; + sub[ 1 ] = suby; + sub[ 2 ] = subw; + sub[ 3 ] = subh; + + _filtered = hardwareFiltered; + // HACKHACK - force VGUI materials to be in the vgui/ directory + // This needs to be revisited once GoldSRC is grandfathered off. + //!! need to make this work with goldsrc + int size = strlen(filename) + 1 + strlen("vgui/"); + _filename = (char *)malloc( size ); + Assert( _filename ); + + Q_snprintf( _filename, size, "vgui/%s", filename ); + + _id = SUBRECT_INVALID_TEXTURE; + _uploaded = false; + _color = Color(255, 255, 255, 255); + _pos[0] = _pos[1] = 0; + _valid = true; + _wide = subw; + _tall = subh; + ForceUpload(); +} + +CSubRectImage::~CSubRectImage() +{ + if ( vgui::surface() && _id != SUBRECT_INVALID_TEXTURE ) + { + vgui::surface()->DestroyTextureID( _id ); + _id = SUBRECT_INVALID_TEXTURE; + } + + if ( _filename ) + { + free( _filename ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: data accessor +//----------------------------------------------------------------------------- +void CSubRectImage::GetSize(int &wide, int &tall) +{ + wide = _wide; + tall = _tall; +} + +//----------------------------------------------------------------------------- +// Purpose: size of the bitmap +//----------------------------------------------------------------------------- +void CSubRectImage::GetContentSize(int &wide, int &tall) +{ + wide = 0; + tall = 0; + + if (!_valid) + return; + + if ( _id != SUBRECT_INVALID_TEXTURE ) + { + surface()->DrawGetTextureSize(_id, wide, tall); + } +} + +//----------------------------------------------------------------------------- +// Purpose: ignored +//----------------------------------------------------------------------------- +void CSubRectImage::SetSize(int x, int y) +{ + _wide = x; + _tall = y; +} + +//----------------------------------------------------------------------------- +// Purpose: data accessor +//----------------------------------------------------------------------------- +void CSubRectImage::SetPos(int x, int y) +{ + _pos[0] = x; + _pos[1] = y; +} + +//----------------------------------------------------------------------------- +// Purpose: data accessor +//----------------------------------------------------------------------------- +void CSubRectImage::SetColor(Color col) +{ + _color = col; +} + +//----------------------------------------------------------------------------- +// Purpose: returns the file name of the bitmap +//----------------------------------------------------------------------------- +const char *CSubRectImage::GetName() +{ + return _filename; +} + +//----------------------------------------------------------------------------- +// Purpose: Renders the loaded image, uploading it if necessary +// Assumes a valid image is always returned from uploading +//----------------------------------------------------------------------------- +void CSubRectImage::Paint() +{ + if ( !_valid ) + return; + + // if we don't have an _id then lets make one + if ( _id == SUBRECT_INVALID_TEXTURE ) + { + _id = surface()->CreateNewTextureID(); + } + + // if we have not uploaded yet, lets go ahead and do so + if ( !_uploaded ) + { + ForceUpload(); + } + + // set the texture current, set the color, and draw the biatch + surface()->DrawSetColor( _color[0], _color[1], _color[2], _color[3] ); + surface()->DrawSetTexture( _id ); + + if ( _wide == 0 || _tall == 0 ) + return; + + int cw, ch; + GetContentSize( cw, ch ); + if ( cw == 0 || ch == 0 ) + return; + + float s[ 2 ]; + float t[ 2 ]; + + s[ 0 ] = (float)sub[ 0 ] / (float)cw; + s[ 1 ] = (float)(sub[ 0 ]+sub[ 2 ]) / (float)cw; + t[ 0 ] = (float)sub[ 1 ] / (float)ch; + t[ 1 ] = (float)(sub[ 1 ]+sub[ 3 ]) / (float)ch; + surface()->DrawTexturedSubRect( + _pos[0], + _pos[1], + _pos[0] + _wide, + _pos[1] + _tall, + s[ 0 ], + t[ 0 ], + s[ 1 ], + t[ 1 ] ); +} + +//----------------------------------------------------------------------------- +// Purpose: ensures the bitmap has been uploaded +//----------------------------------------------------------------------------- +void CSubRectImage::ForceUpload() +{ + if ( !_valid || _uploaded ) + return; + + if ( _id == SUBRECT_INVALID_TEXTURE ) + { + _id = surface()->CreateNewTextureID( false ); + } + + surface()->DrawSetTextureFile( _id, _filename, _filtered, false ); + + _uploaded = true; + + _valid = surface()->IsTextureIDValid( _id ); +} + + +//----------------------------------------------------------------------------- +// Purpose: data accessor +//----------------------------------------------------------------------------- +HTexture CSubRectImage::GetID() +{ + return _id; +} + +bool CSubRectImage::IsValid() +{ + return _valid; +} + |