e21ebb37f5
This was SVN commit r141.
92 lines
1.7 KiB
C++
Executable File
92 lines
1.7 KiB
C++
Executable File
/*
|
|
IGUIScrollBar
|
|
by Gustav Larsson
|
|
gee@pyro.nu
|
|
*/
|
|
|
|
//#include "stdafx.h"
|
|
#include "GUI.h"
|
|
|
|
using namespace std;
|
|
|
|
//-------------------------------------------------------------------
|
|
// IGUIScrollBar
|
|
//-------------------------------------------------------------------
|
|
IGUIScrollBar::IGUIScrollBar() : m_pStyle(NULL), m_X(300), m_Y(300), m_Length(200), m_Width(20), m_BarSize(0.5), m_Pos(0.5)
|
|
{
|
|
}
|
|
|
|
IGUIScrollBar::~IGUIScrollBar()
|
|
{
|
|
}
|
|
|
|
const SGUIScrollBarStyle & IGUIScrollBar::GetStyle() const
|
|
{
|
|
if (!m_pHostObject)
|
|
return SGUIScrollBarStyle();
|
|
|
|
return m_pHostObject->GetScrollBarStyle(m_ScrollBarStyle);
|
|
}
|
|
|
|
void IGUIScrollBar::UpdatePosBoundaries()
|
|
{
|
|
if (m_Pos > 1.f)
|
|
m_Pos = 1.f;
|
|
else
|
|
if (m_Pos < 0.f)
|
|
m_Pos = 0.f;
|
|
}
|
|
|
|
bool IGUIScrollBar::HandleMessage(const SGUIMessage &Message)
|
|
{
|
|
switch (Message.type)
|
|
{
|
|
case GUIM_MOUSE_MOTION:
|
|
if (m_BarPressed)
|
|
{
|
|
SetPosFromMousePos(m_pHostObject->GetMouseX(), m_pHostObject->GetMouseY());
|
|
UpdatePosBoundaries();
|
|
}
|
|
break;
|
|
|
|
case GUIM_MOUSE_PRESS_LEFT:
|
|
{
|
|
if (!m_pHostObject)
|
|
break;
|
|
|
|
int mouse_x = m_pHostObject->GetMouseX(),
|
|
mouse_y = m_pHostObject->GetMouseY();
|
|
|
|
// if bar is pressed
|
|
if (mouse_x >= GetBarRect().left &&
|
|
mouse_x <= GetBarRect().right &&
|
|
mouse_y >= GetBarRect().top &&
|
|
mouse_y <= GetBarRect().bottom)
|
|
{
|
|
m_BarPressed = true;
|
|
m_BarPressedAtX = mouse_x;
|
|
m_BarPressedAtY = mouse_y;
|
|
m_PosWhenPressed = m_Pos;
|
|
}
|
|
else
|
|
// if button-minus is pressed
|
|
if (HoveringButtonMinus(mouse_x, mouse_y))
|
|
{
|
|
ScrollMinus();
|
|
}
|
|
else
|
|
// if button-plus is pressed
|
|
if (HoveringButtonPlus(mouse_x, mouse_y))
|
|
{
|
|
ScrollPlus();
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|