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.
106 lines
3.5 KiB
106 lines
3.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#include <vgui/VGUI.h> |
|
#include <Color.h> |
|
|
|
#include <vgui_controls/ImageList.h> |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include <tier0/memdbgon.h> |
|
|
|
using namespace vgui; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: blank image, intentially draws nothing |
|
//----------------------------------------------------------------------------- |
|
class BlankImage : public IImage |
|
{ |
|
public: |
|
virtual void Paint() {} |
|
virtual void SetPos(int x, int y) {} |
|
virtual void GetContentSize(int &wide, int &tall) { wide = 0; tall = 0; } |
|
virtual void GetSize(int &wide, int &tall) { wide = 0; tall = 0; } |
|
virtual void SetSize(int wide, int tall) {} |
|
virtual void SetColor(Color col) {} |
|
virtual bool Evict() { return false; } |
|
virtual int GetNumFrames() { return 0; } |
|
virtual void SetFrame( int nFrame ) {} |
|
virtual HTexture GetID() { return 0; } |
|
virtual void SetRotation( int iRotation ) { return; }; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor |
|
//----------------------------------------------------------------------------- |
|
ImageList::ImageList(bool deleteImagesWhenDone) |
|
{ |
|
m_bDeleteImagesWhenDone = deleteImagesWhenDone; |
|
AddImage(new BlankImage()); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Destructor |
|
//----------------------------------------------------------------------------- |
|
ImageList::~ImageList() |
|
{ |
|
if (m_bDeleteImagesWhenDone) |
|
{ |
|
// delete all the images, except for the first image (which is always the blank image) |
|
for (int i = 1; i < m_Images.Count(); i++) |
|
{ |
|
delete m_Images[i]; |
|
} |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: adds a new image to the list, returning the index it was placed at |
|
//----------------------------------------------------------------------------- |
|
int ImageList::AddImage(vgui::IImage *image) |
|
{ |
|
return m_Images.AddToTail(image); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: sets an image at a specified index, growing and adding NULL images if necessary |
|
//----------------------------------------------------------------------------- |
|
void ImageList::SetImageAtIndex(int index, vgui::IImage *image) |
|
{ |
|
// allocate more images if necessary |
|
while (m_Images.Count() <= index) |
|
{ |
|
m_Images.AddToTail(NULL); |
|
} |
|
|
|
m_Images[index] = image; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: returns the number of images |
|
//----------------------------------------------------------------------------- |
|
int ImageList::GetImageCount() |
|
{ |
|
return m_Images.Count(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: gets an image, imageIndex is of range [0, GetImageCount) |
|
//----------------------------------------------------------------------------- |
|
vgui::IImage *ImageList::GetImage(int imageIndex) |
|
{ |
|
return m_Images[imageIndex]; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: returns true if an index is valid |
|
//----------------------------------------------------------------------------- |
|
bool ImageList::IsValidIndex(int imageIndex) |
|
{ |
|
return m_Images.IsValidIndex(imageIndex); |
|
} |
|
|
|
|