Initial
This commit is contained in:
136
guitar/ScrollInfo.cpp
Normal file
136
guitar/ScrollInfo.cpp
Normal file
@@ -0,0 +1,136 @@
|
||||
#include <guitar/scrollinfo.hpp>
|
||||
|
||||
bool ScrollInfo::pageDown(void)
|
||||
{
|
||||
int yDelta;
|
||||
int yNew;
|
||||
int xDelta;
|
||||
|
||||
xDelta=0;
|
||||
yNew=currScrolly()+PageIncrement;
|
||||
yNew=imax(0,yNew);
|
||||
yNew=imin(maxScrolly(),yNew);
|
||||
if(yNew==currScrolly())return false;
|
||||
scrollEvent(TRUE);
|
||||
yDelta=yNew-currScrolly();
|
||||
currScrolly(yNew);
|
||||
::ScrollWindow(hwndOwner(),-xDelta,-yDelta,(const RECT*)0,(const RECT*)0);
|
||||
::UpdateWindow(hwndOwner());
|
||||
::SetScrollPos(hwndOwner(),SB_VERT,currScrolly(),TRUE);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScrollInfo::pageUp(void)
|
||||
{
|
||||
int yDelta;
|
||||
int yNew;
|
||||
int xDelta;
|
||||
|
||||
xDelta=0;
|
||||
yNew=currScrolly()-PageIncrement;
|
||||
yNew=imax(0,yNew);
|
||||
yNew=imin(maxScrolly(),yNew);
|
||||
if(yNew==currScrolly())return false;
|
||||
scrollEvent(TRUE);
|
||||
yDelta=yNew-currScrolly();
|
||||
currScrolly(yNew);
|
||||
::ScrollWindow(hwndOwner(),-xDelta,-yDelta,(const RECT*)0,(const RECT*)0);
|
||||
::UpdateWindow(hwndOwner());
|
||||
::SetScrollPos(hwndOwner(),SB_VERT,currScrolly(),TRUE);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ScrollInfo::handleHorizontalScroll(CallbackData &someCallbackData)
|
||||
{
|
||||
int xDelta;
|
||||
int yDelta;
|
||||
int xNew;
|
||||
|
||||
yDelta=0;
|
||||
switch(LOWORD(someCallbackData.wParam()))
|
||||
{
|
||||
case SB_PAGEUP :
|
||||
xNew=currScrollx()-PageIncrement;
|
||||
break;
|
||||
case SB_PAGEDOWN :
|
||||
xNew=currScrollx()+PageIncrement;
|
||||
break;
|
||||
case SB_LINEUP :
|
||||
xNew=currScrollx()-LineIncrement;
|
||||
break;
|
||||
case SB_LINEDOWN :
|
||||
xNew=currScrollx()+LineIncrement;
|
||||
break;
|
||||
case SB_THUMBPOSITION :
|
||||
xNew= HIWORD(someCallbackData.wParam());
|
||||
break;
|
||||
default :
|
||||
xNew=currScrollx();
|
||||
break;
|
||||
}
|
||||
xNew=imax(0,xNew);
|
||||
xNew=imin(maxScrollx(),xNew);
|
||||
if(xNew==currScrollx())return;
|
||||
scrollEvent(TRUE);
|
||||
xDelta=xNew-currScrollx();
|
||||
currScrollx(xNew);
|
||||
::ScrollWindow(hwndOwner(),-xDelta,-yDelta,(const RECT*)0,(const RECT*)0);
|
||||
::UpdateWindow(hwndOwner());
|
||||
::SetScrollPos(hwndOwner(),SB_HORZ,currScrollx(),TRUE);
|
||||
}
|
||||
|
||||
void ScrollInfo::handleVerticalScroll(CallbackData &someCallbackData)
|
||||
{
|
||||
int yDelta;
|
||||
int yNew;
|
||||
int xDelta;
|
||||
|
||||
xDelta=0;
|
||||
switch(LOWORD(someCallbackData.wParam()))
|
||||
{
|
||||
case SB_PAGEUP :
|
||||
yNew=currScrolly()-PageIncrement;
|
||||
break;
|
||||
case SB_PAGEDOWN :
|
||||
yNew=currScrolly()+PageIncrement;
|
||||
break;
|
||||
case SB_LINEUP :
|
||||
yNew=currScrolly()-LineIncrement;
|
||||
break;
|
||||
case SB_LINEDOWN :
|
||||
yNew=currScrolly()+LineIncrement;
|
||||
break;
|
||||
case SB_THUMBPOSITION :
|
||||
yNew=HIWORD(someCallbackData.wParam());
|
||||
break;
|
||||
default :
|
||||
yNew=currScrolly();
|
||||
break;
|
||||
}
|
||||
yNew=imax(0,yNew);
|
||||
yNew=imin(maxScrolly(),yNew);
|
||||
if(yNew==currScrolly())return;
|
||||
scrollEvent(TRUE);
|
||||
yDelta=yNew-currScrolly();
|
||||
currScrolly(yNew);
|
||||
::ScrollWindow(hwndOwner(),-xDelta,-yDelta,(const RECT*)0,(const RECT*)0);
|
||||
::UpdateWindow(hwndOwner());
|
||||
::SetScrollPos(hwndOwner(),SB_VERT,currScrolly(),TRUE);
|
||||
}
|
||||
|
||||
void ScrollInfo::handleSize(CallbackData &someCallbackData)
|
||||
{
|
||||
int xNew(someCallbackData.loWord());
|
||||
int yNew(someCallbackData.hiWord());
|
||||
|
||||
sizeEvent(TRUE);
|
||||
maxScrollx(imax(scrollableObjectWidth()-xNew,0));
|
||||
::SetScrollRange(hwndOwner(),SB_HORZ,minScrollx(),maxScrollx(),FALSE);
|
||||
currScrollx(imin(currScrollx(),maxScrollx()));
|
||||
::SetScrollPos(hwndOwner(),SB_HORZ,currScrollx(),TRUE);
|
||||
maxScrolly(imax(scrollableObjectHeight()-yNew,0));
|
||||
::SetScrollRange(hwndOwner(),SB_VERT,minScrolly(),maxScrolly(),FALSE);
|
||||
currScrolly(imin(currScrolly(),maxScrolly()));
|
||||
::SetScrollPos(hwndOwner(),SB_VERT,currScrolly(),TRUE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user