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.
76 lines
2.0 KiB
76 lines
2.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef CIRCULARPROGRESSBAR_H |
|
#define CIRCULARPROGRESSBAR_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui/VGUI.h> |
|
#include <vgui_controls/Panel.h> |
|
#include <vgui_controls/ProgressBar.h> |
|
|
|
enum progress_textures_t |
|
{ |
|
PROGRESS_TEXTURE_FG, |
|
PROGRESS_TEXTURE_BG, |
|
|
|
NUM_PROGRESS_TEXTURES, |
|
}; |
|
|
|
namespace vgui |
|
{ |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Progress Bar in the shape of a pie graph |
|
//----------------------------------------------------------------------------- |
|
class CircularProgressBar : public ProgressBar |
|
{ |
|
DECLARE_CLASS_SIMPLE( CircularProgressBar, ProgressBar ); |
|
|
|
public: |
|
CircularProgressBar(Panel *parent, const char *panelName); |
|
~CircularProgressBar(); |
|
|
|
virtual void ApplySettings(KeyValues *inResourceData); |
|
virtual void ApplySchemeSettings(IScheme *pScheme); |
|
|
|
void SetFgImage(const char *imageName) { SetImage( imageName, PROGRESS_TEXTURE_FG ); } |
|
void SetBgImage(const char *imageName) { SetImage( imageName, PROGRESS_TEXTURE_BG ); } |
|
|
|
enum CircularProgressDir_e |
|
{ |
|
PROGRESS_CW, |
|
PROGRESS_CCW |
|
}; |
|
int GetProgressDirection() const { return m_iProgressDirection; } |
|
void SetProgressDirection( int val ) { m_iProgressDirection = val; } |
|
void SetStartSegment( int val ) { m_iStartSegment = val; } |
|
void SetReverseProgress( bool bReverse ) { m_bReverseProgress = bReverse; } |
|
|
|
protected: |
|
virtual void Paint(); |
|
virtual void PaintBackground(); |
|
|
|
void DrawCircleSegment( Color c, float flEndDegrees, bool clockwise /* = true */ ); |
|
void SetImage(const char *imageName, progress_textures_t iPos); |
|
|
|
private: |
|
int m_iProgressDirection; |
|
int m_iStartSegment; |
|
bool m_bReverseProgress; |
|
|
|
int m_nTextureId[NUM_PROGRESS_TEXTURES]; |
|
char *m_pszImageName[NUM_PROGRESS_TEXTURES]; |
|
int m_lenImageName[NUM_PROGRESS_TEXTURES]; |
|
}; |
|
|
|
} // namespace vgui |
|
|
|
#endif // CIRCULARPROGRESSBAR_H
|