80 lines
1.9 KiB
C
80 lines
1.9 KiB
C
|
/*
|
||
|
GWEN
|
||
|
Copyright (c) 2010 Facepunch Studios
|
||
|
See license in Gwen.h
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
#ifndef GWEN_CONTROLS_SCROLLBAR_H
|
||
|
#define GWEN_CONTROLS_SCROLLBAR_H
|
||
|
|
||
|
#include "gwen_base.h"
|
||
|
#include "gwen_scrollbarbar.h"
|
||
|
#include "gwen_scrollbarbutton.h"
|
||
|
#include "../gwen.h"
|
||
|
|
||
|
|
||
|
#define SCROLL_BUTTON_UP 0
|
||
|
#define SCROLL_BUTTON_LEFT 0
|
||
|
#define SCROLL_BUTTON_DOWN 1
|
||
|
#define SCROLL_BUTTON_RIGHT 1
|
||
|
#define NUDGE_DIST 10
|
||
|
|
||
|
namespace Gwen
|
||
|
{
|
||
|
namespace Controls
|
||
|
{
|
||
|
class GWEN_EXPORT BaseScrollBar : public Base
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
GWEN_CONTROL( BaseScrollBar, Base );
|
||
|
|
||
|
virtual void Render( Skin::Base* skin );
|
||
|
|
||
|
virtual void SetBarSize(int size) = 0;
|
||
|
virtual int GetBarSize() = 0;
|
||
|
virtual int GetBarPos() = 0;
|
||
|
|
||
|
virtual void OnBarMoved( Controls::Base* control);
|
||
|
virtual void OnMouseClickLeft( int /*x*/, int /*y*/, bool /*bDown*/ ){}
|
||
|
|
||
|
virtual void ScrollToLeft(){}
|
||
|
virtual void ScrollToRight(){}
|
||
|
virtual void ScrollToTop(){}
|
||
|
virtual void ScrollToBottom(){}
|
||
|
|
||
|
virtual float GetNudgeAmount() { return m_fNudgeAmount / m_fContentSize; }
|
||
|
virtual void SetNudgeAmount( float nudge ) { m_fNudgeAmount = nudge; }
|
||
|
|
||
|
virtual void BarMovedNotification();
|
||
|
|
||
|
virtual float CalculateScrolledAmount() { return 0; }
|
||
|
virtual int CalculateBarSize() { return 0; }
|
||
|
virtual bool SetScrolledAmount(float amount, bool forceUpdate);
|
||
|
|
||
|
virtual void SetContentSize(float size);
|
||
|
virtual void SetViewableContentSize(float size);
|
||
|
|
||
|
virtual int GetButtonSize() { return 0; }
|
||
|
virtual float GetScrolledAmount() { return m_fScrolledAmount; }
|
||
|
|
||
|
virtual bool IsHorizontal(){ return false; }
|
||
|
|
||
|
Gwen::Event::Caller onBarMoved;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
ControlsInternal::ScrollBarButton* m_ScrollButton[2];
|
||
|
ControlsInternal::ScrollBarBar * m_Bar;
|
||
|
|
||
|
bool m_bDepressed;
|
||
|
float m_fScrolledAmount;
|
||
|
float m_fContentSize;
|
||
|
float m_fViewableContentSize;
|
||
|
float m_fNudgeAmount;
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
#endif
|