summaryrefslogtreecommitdiff
path: root/src/interface/ScrollPanel.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
commit9abe51526cac2634af0541c3de69834dd30e9f78 (patch)
tree6ae4deadfe00a83094b9d288d8c11d8ce823577a /src/interface/ScrollPanel.cpp
parent2c311b9a36a88fadd96f3d39acb1ab2590835d81 (diff)
downloadpowder-9abe51526cac2634af0541c3de69834dd30e9f78.zip
powder-9abe51526cac2634af0541c3de69834dd30e9f78.tar.gz
Move all GUI source files into gui/
Diffstat (limited to 'src/interface/ScrollPanel.cpp')
-rw-r--r--src/interface/ScrollPanel.cpp173
1 files changed, 0 insertions, 173 deletions
diff --git a/src/interface/ScrollPanel.cpp b/src/interface/ScrollPanel.cpp
deleted file mode 100644
index 74f6b62..0000000
--- a/src/interface/ScrollPanel.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-#include <iostream>
-#include "ScrollPanel.h"
-
-using namespace ui;
-
-ScrollPanel::ScrollPanel(Point position, Point size):
- Panel(position, size),
- maxOffset(0, 0),
- offsetX(0),
- offsetY(0),
- yScrollVel(0.0f),
- xScrollVel(0.0f),
- scrollBarWidth(0),
- isMouseInsideScrollbar(false),
- scrollbarSelected(false),
- scrollbarInitialYOffset(0),
- scrollbarInitialYClick(0)
-{
-
-}
-
-int ScrollPanel::GetScrollLimit()
-{
- if(ViewportPosition.Y == 0)
- return -1;
- else if(maxOffset.Y == -ViewportPosition.Y)
- return 1;
- return 0;
-}
-
-void ScrollPanel::XOnMouseWheelInside(int localx, int localy, int d)
-{
- if(!d)
- return;
- yScrollVel -= d*2;
-}
-
-void ScrollPanel::Draw(const Point& screenPos)
-{
- Panel::Draw(screenPos);
-
- Graphics * g = ui::Engine::Ref().g;
-
- //Vertical scroll bar
- if(maxOffset.Y>0 && InnerSize.Y>0)
- {
- float scrollHeight = float(Size.Y)*(float(Size.Y)/float(InnerSize.Y));
- float scrollPos = 0;
- if(-ViewportPosition.Y>0)
- {
- scrollPos = float(Size.Y-scrollHeight)*(float(offsetY)/float(maxOffset.Y));
- }
-
- g->fillrect(screenPos.X+(Size.X-scrollBarWidth), screenPos.Y, scrollBarWidth, Size.Y, 125, 125, 125, 100);
- g->fillrect(screenPos.X+(Size.X-scrollBarWidth), screenPos.Y+scrollPos, scrollBarWidth, scrollHeight, 255, 255, 255, 255);
- }
-}
-
-void ScrollPanel::XOnMouseClick(int x, int y, unsigned int button)
-{
- if (isMouseInsideScrollbar)
- {
- scrollbarSelected = true;
- scrollbarInitialYOffset = offsetY;
- scrollbarInitialYClick = y;
- }
-}
-
-void ScrollPanel::XOnMouseUp(int x, int y, unsigned int button)
-{
- scrollbarSelected = false;
-}
-
-void ScrollPanel::XOnMouseMoved(int x, int y, int dx, int dy)
-{
- if(maxOffset.Y>0 && InnerSize.Y>0)
- {
- float scrollHeight = float(Size.Y)*(float(Size.Y)/float(InnerSize.Y));
- float scrollPos = 0;
- if(-ViewportPosition.Y>0)
- {
- scrollPos = float(Size.Y-scrollHeight)*(float(offsetY)/float(maxOffset.Y));
- }
-
- if (scrollbarSelected)
- {
- if (x > 0)
- {
- int scrollY = float(y-scrollbarInitialYClick)/float(Size.Y)*float(InnerSize.Y)+scrollbarInitialYOffset;
- ViewportPosition.Y = -scrollY;
- offsetY = scrollY;
- }
- else
- {
- ViewportPosition.Y = -scrollbarInitialYOffset;
- offsetY = scrollbarInitialYOffset;
- }
- }
-
- if (x > (Size.X-scrollBarWidth) && x < (Size.X-scrollBarWidth)+scrollBarWidth && y > scrollPos && y < scrollPos+scrollHeight)
- isMouseInsideScrollbar = true;
- else
- isMouseInsideScrollbar = false;
- }
-}
-
-void ScrollPanel::XTick(float dt)
-{
- //if(yScrollVel > 7.0f) yScrollVel = 7.0f;
- //if(yScrollVel < -7.0f) yScrollVel = -7.0f;
- if(yScrollVel > -0.5f && yScrollVel < 0.5)
- yScrollVel = 0;
-
- if(xScrollVel > 7.0f) xScrollVel = 7.0f;
- if(xScrollVel < -7.0f) xScrollVel = -7.0f;
- if(xScrollVel > -0.5f && xScrollVel < 0.5)
- xScrollVel = 0;
-
- maxOffset = InnerSize-Size;
- maxOffset.Y = std::max(0, maxOffset.Y);
- maxOffset.X = std::max(0, maxOffset.X);
-
- int oldOffsetY = offsetY;
- offsetY += yScrollVel;
- int oldOffsetX = offsetX;
- offsetX += xScrollVel;
-
- yScrollVel*=0.98f;
- xScrollVel*=0.98f;
-
- if(oldOffsetY!=int(offsetY))
- {
- if(offsetY<0)
- {
- offsetY = 0;
- yScrollVel = 0;
- //commentsBegin = true;
- //commentsEnd = false;
- }
- else if(offsetY>maxOffset.Y)
- {
- offsetY = maxOffset.Y;
- yScrollVel = 0;
- //commentsEnd = true;
- //commentsBegin = false;
- }
- else
- {
- //commentsEnd = false;
- //commentsBegin = false;
- }
- ViewportPosition.Y = -offsetY;
- }
- else
- {
- if(offsetY<0)
- {
- offsetY = 0;
- yScrollVel = 0;
- ViewportPosition.Y = -offsetY;
- }
- else if(offsetY>maxOffset.Y)
- {
- offsetY = maxOffset.Y;
- ViewportPosition.Y = -offsetY;
- }
- }
-
- if(mouseInside && scrollBarWidth < 6)
- scrollBarWidth++;
- else if(!mouseInside && scrollBarWidth > 0 && !scrollbarSelected)
- scrollBarWidth--;
-} \ No newline at end of file