Lephisto/src/gui_vscroll_portal.cpp
Rtch90 948652f752 [Add] Added some vertical scrollbar stuff.
[Add] New font, forgot from last commit.
2018-08-19 13:49:55 +01:00

60 lines
1.1 KiB
C++

#include "libs.h"
#include "gui.h"
namespace Gui {
VScrollPortal::VScrollPortal(float w, float h): Container() {
SetSize(w, h);
m_child = 0;
m_eventMask = EVENT_ALL;
}
void VScrollPortal::GetSizeRequested(float size[2]) {
GetSize(size);
}
void VScrollPortal::OnChildResizeRequest(Widget* child) {
float size[2], rsize[2];
GetSize(size);
rsize[0] = size[0];
rsize[1] = FLT_MAX;
child->GetSizeRequested(rsize);
rsize[0] = MIN(rsize[0], size[0]);
m_childSizeY = rsize[1];
child->SEtSize(rsize[0], rsize[1]);
}
void VScrollPortal::Add(Widget* child) {
assert(m_child == 0);
AppendChild(child, 0, 0);
OnChildResizeRequest(child);
}
void VScrollPortal::Remove(Widget* child) {
assert(m_child= child);
Container::RemoveChild(child);
m_child = 0;
m_childSizeY = 0;
}
void VSrollPortal::Draw(void) {
float size[2];
GetSize(size);
SetClipping(size[0], size[1]);
m_scrollY = vscrollAdjust.GetValue();
float toScroll = m_childSizeY - size[1];
if(toScroll < 0) toScroll = 0;
glPushMatrix();
glTranslatef(0, -m_scrollY*toScroll, 0);
Container::Draw();
glPopMatrix();
EndClipping();
}
}