#ifndef _CLCDBar_H_
#define _CLCDBar_H_

#define TOP 1
#define CENTER 2
#define BOTTOM 3

#define MODE_PROGRESSBAR 0
#define MODE_SCROLLBAR 1

#define DIRECTION_VERTICAL 0
#define DIRECTION_HORIZONTAL 1

class CLCDBar : public CLCDObject
{
public:
	// constructor
	CLCDBar();
	// destructor
	~CLCDBar();

	// initializes the bar
	bool Initialize();
	// deintializes the bar
	bool Shutdown();

	// draws the bar
	bool Draw(CLCDGfx *pGfx);
	// updates the bar
	bool Update();

	// specifies the bar's mode ( scrollbar / progressbar )
	void SetMode(int iMode);
	// specifies the orientation of the bar
	void SetOrientation(int iDirection);

	// sets the alignment of the scrollbar position
	void SetAlignment(int iAlignment);
	// sets the size of the slider
	void SetSliderSize(int iSize);

	// scrolls up/left
	bool ScrollUp();
	inline bool ScrollLeft() { return ScrollUp(); };
	// scrolls down/right
	bool ScrollDown();
	inline bool ScrollRight() { return ScrollDown(); };

	// scrolls to the specified position
	bool ScrollTo(int iPosition);
	// specifies the bar's range
	void SetRange(int iMin, int iMax);

private:
	int		m_iOrientation = DIRECTION_VERTICAL;
	int		m_iMode = MODE_SCROLLBAR;
	int		m_iSliderSize = 0;
	int		m_iMax = 0;
	int		m_iMin = 0;
	int		m_iPosition = 0;
	int		m_iAlignment = TOP;
};

#endif
