diff options
| author | Simon 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) |
| commit | 9abe51526cac2634af0541c3de69834dd30e9f78 (patch) | |
| tree | 6ae4deadfe00a83094b9d288d8c11d8ce823577a /src/interface/ScrollPanel.cpp | |
| parent | 2c311b9a36a88fadd96f3d39acb1ab2590835d81 (diff) | |
| download | powder-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.cpp | 173 |
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 |
