#ifndef _GUITAR_SCROLLINFO_HPP_ #define _GUITAR_SCROLLINFO_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_CALLBACK_HPP_ #include #endif class ScrollInfo { public: ScrollInfo(void); ScrollInfo(const ScrollInfo &someScrollInfo); virtual ~ScrollInfo(); ScrollInfo &operator=(const ScrollInfo &someScrollInfo); BOOL operator==(const ScrollInfo &someScrollInfo)const; void handleHorizontalScroll(CallbackData &someCallbackData); void handleVerticalScroll(CallbackData &someCallbackData); void handleSize(CallbackData &someCallbackData); int minScrollx(void)const; void minScrollx(int minScrollx); int maxScrollx(void)const; void maxScrollx(int maxScrollx); int currScrollx(void)const;; void currScrollx(int currScrollx); int minScrolly(void)const; void minScrolly(int minScrolly); int maxScrolly(void)const; void maxScrolly(int maxScrolly); int currScrolly(void)const; void currScrolly(int curScrolly); void scrollableObjectDimensions(int width,int height); int scrollableObjectWidth(void)const; int scrollableObjectHeight(void)const; BOOL scrollEvent(void)const; void scrollEvent(BOOL scrollEvent); BOOL sizeEvent(void)const; void sizeEvent(BOOL sizeEvent); HWND hwndOwner(void)const; void hwndOwner(HWND hwndOwner); bool pageUp(void); bool pageDown(void); private: void scrollableObjectWidth(int scrollableObjectWidth); void scrollableObjectHeight(int scrollableObjectHeight); enum{PageIncrement=50,LineIncrement=5}; int imax(int param1,int param2); int imin(int param1,int param2); HWND mhWndOwner; BOOL mSizeEvent; BOOL mScrollEvent; int mScrollableObjectWidth; int mScrollableObjectHeight; int mMinScrollx; int mMaxScrollx; int mCurrScrollx; int mMinScrolly; int mMaxScrolly; int mCurrScrolly; }; inline ScrollInfo::ScrollInfo(void) : mMinScrollx(0), mMaxScrollx(0), mCurrScrollx(0), mMinScrolly(0), mMaxScrolly(0), mCurrScrolly(0), mScrollableObjectWidth(0), mScrollableObjectHeight(0), mSizeEvent(FALSE), mhWndOwner(0), mScrollEvent(FALSE) { } inline ScrollInfo::ScrollInfo(const ScrollInfo &someScrollInfo) { *this=someScrollInfo; } inline ScrollInfo::~ScrollInfo() { } inline ScrollInfo &ScrollInfo::operator=(const ScrollInfo &someScrollInfo) { minScrollx(someScrollInfo.minScrollx()); maxScrollx(someScrollInfo.maxScrollx()); currScrollx(someScrollInfo.currScrollx()); maxScrolly(someScrollInfo.currScrolly()); minScrolly(someScrollInfo.maxScrolly()); currScrolly(someScrollInfo.minScrollx()); sizeEvent(someScrollInfo.minScrollx()); scrollEvent(someScrollInfo.scrollEvent()); scrollableObjectWidth(someScrollInfo.scrollableObjectWidth()); scrollableObjectHeight(someScrollInfo.scrollableObjectHeight()); hwndOwner(someScrollInfo.hwndOwner()); return *this; } inline BOOL ScrollInfo::operator==(const ScrollInfo &someScrollInfo)const { return (minScrollx()==someScrollInfo.minScrollx()&& maxScrollx()==someScrollInfo.maxScrollx()&& currScrollx()==someScrollInfo.currScrollx()&& minScrolly()==someScrollInfo.minScrolly()&& maxScrolly()==someScrollInfo.maxScrolly()&& currScrolly()==someScrollInfo.currScrolly()&& sizeEvent()==someScrollInfo.sizeEvent()&& scrollEvent()==someScrollInfo.scrollEvent()&& scrollableObjectWidth()==someScrollInfo.scrollableObjectWidth()&& scrollableObjectHeight()==someScrollInfo.scrollableObjectHeight()&& hwndOwner()==someScrollInfo.hwndOwner()); } inline int ScrollInfo::minScrollx(void)const { return mMinScrollx; } inline void ScrollInfo::minScrollx(int minScrollx) { mMinScrollx=minScrollx; } inline int ScrollInfo::maxScrollx(void)const { return mMaxScrollx; } inline void ScrollInfo::maxScrollx(int maxScrollx) { mMaxScrollx=maxScrollx; } inline int ScrollInfo::currScrollx(void)const { return mCurrScrollx; } inline void ScrollInfo::currScrollx(int currScrollx) { mCurrScrollx=currScrollx; } inline int ScrollInfo::minScrolly(void)const { return mMinScrolly; } inline void ScrollInfo::minScrolly(int minScrolly) { mMinScrolly=minScrolly; } inline int ScrollInfo::maxScrolly(void)const { return mMaxScrolly; } inline void ScrollInfo::maxScrolly(int maxScrolly) { mMaxScrolly=maxScrolly; } inline int ScrollInfo::currScrolly(void)const { return mCurrScrolly; } inline void ScrollInfo::currScrolly(int currScrolly) { mCurrScrolly=currScrolly; } inline BOOL ScrollInfo::scrollEvent(void)const { return mScrollEvent; } inline void ScrollInfo::scrollEvent(BOOL scrollEvent) { mScrollEvent=scrollEvent; } inline BOOL ScrollInfo::sizeEvent(void)const { return mSizeEvent; } inline void ScrollInfo::sizeEvent(BOOL sizeEvent) { mSizeEvent=sizeEvent; } inline void ScrollInfo::scrollableObjectDimensions(int width,int height) { RECT clientRect; if(scrollableObjectWidth()==width&&scrollableObjectHeight()==height)return; scrollableObjectWidth(width); scrollableObjectHeight(height); sizeEvent(FALSE); scrollEvent(FALSE); ::GetClientRect(hwndOwner(),&clientRect); handleSize(CallbackData(0,MAKELPARAM(clientRect.right,clientRect.bottom))); } inline int ScrollInfo::scrollableObjectWidth(void)const { return mScrollableObjectWidth; } inline void ScrollInfo::scrollableObjectWidth(int scrollableObjectWidth) { mScrollableObjectWidth=scrollableObjectWidth; } inline int ScrollInfo::scrollableObjectHeight(void)const { return mScrollableObjectHeight; } inline void ScrollInfo::scrollableObjectHeight(int scrollableObjectHeight) { mScrollableObjectHeight=scrollableObjectHeight; } inline HWND ScrollInfo::hwndOwner(void)const { return mhWndOwner; } inline void ScrollInfo::hwndOwner(HWND hwndOwner) { mhWndOwner=hwndOwner; } inline int ScrollInfo::imax(int param1,int param2) { return param1>param2?param1:param2; } inline int ScrollInfo::imin(int param1,int param2) { return param1