| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- /*
 
-  * Scrollable.h, part of VCMI engine
 
-  *
 
-  * Authors: listed in file AUTHORS in main folder
 
-  *
 
-  * License: GNU General Public License v2.0 or later
 
-  * Full text of license available in license.txt file, in main folder
 
-  *
 
-  */
 
- #pragma once
 
- #include "../gui/CIntObject.h"
 
- enum class Orientation
 
- {
 
- 	HORIZONTAL,
 
- 	VERTICAL
 
- };
 
- /// Simple class that provides scrolling functionality via either mouse wheel or touchscreen gesture
 
- class Scrollable : public CIntObject
 
- {
 
- 	/// how many elements will be scrolled via one wheel action, default = 1
 
- 	int scrollStep;
 
- 	/// How far player must move finger/mouse to move slider by 1 via gesture
 
- 	int panningDistanceSingle;
 
- 	/// How far have player moved finger/mouse via gesture so far.
 
- 	int panningDistanceAccumulated;
 
- 	Orientation orientation;
 
- protected:
 
- 	Scrollable(int used, Point position, Orientation orientation);
 
- 	void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
 
- 	void wheelScrolled(int distance) override;
 
- 	void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) override;
 
- 	int getScrollStep() const;
 
- 	Orientation getOrientation() const;
 
- public:
 
- 	/// Scrolls view by specified number of items
 
- 	virtual void scrollBy(int distance) = 0;
 
- 	/// Scrolls view by 1 item, identical to scrollBy(+1)
 
- 	virtual void scrollNext();
 
- 	/// Scrolls view by 1 item, identical to scrollBy(-1)
 
- 	virtual void scrollPrev();
 
- 	/// Controls how many items wil be scrolled via one click
 
- 	void setScrollStep(int to);
 
- 	/// Controls size of panning step needed to move list by 1 item
 
- 	void setPanningStep(int to);
 
- 	/// Enables or disabled scrolling
 
- 	void setScrollingEnabled(bool on);
 
- };
 
 
  |