| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- /*
 
-  * EventsReceiver.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
 
- VCMI_LIB_NAMESPACE_BEGIN
 
- class Point;
 
- class Rect;
 
- VCMI_LIB_NAMESPACE_END
 
- class EventDispatcher;
 
- enum class EShortcut;
 
- enum class InputMode;
 
- /// Class that is capable of subscribing and receiving input events
 
- /// Acts as base class for all UI elements
 
- class AEventsReceiver
 
- {
 
- 	friend class EventDispatcher;
 
- 	ui16 activeState;
 
- 	bool hoveredState;
 
- 	bool panningState;
 
- 	bool mouseClickedState;
 
- protected:
 
- 	/// Activates particular events for this UI element. Uses unnamed enum from this class
 
- 	void activateEvents(ui16 what);
 
- 	/// Deactivates particular events for this UI element. Uses unnamed enum from this class
 
- 	void deactivateEvents(ui16 what);
 
- 	/// allows capturing key input so it will be delivered only to this element
 
- 	virtual bool captureThisKey(EShortcut key) = 0;
 
- 	/// If true, event of selected type in selected position will be processed by this element
 
- 	virtual bool receiveEvent(const Point & position, int eventType) const= 0;
 
- 	virtual const Rect & getPosition() const= 0;
 
- public:
 
- 	virtual void clickPressed(const Point & cursorPosition) {}
 
- 	virtual void clickReleased(const Point & cursorPosition) {}
 
- 	virtual void clickPressed(const Point & cursorPosition, bool lastActivated);
 
- 	virtual void clickReleased(const Point & cursorPosition, bool lastActivated);
 
- 	virtual void clickCancel(const Point & cursorPosition) {}
 
- 	virtual void showPopupWindow(const Point & cursorPosition) {}
 
- 	virtual void clickDouble(const Point & cursorPosition) {}
 
- 	/// Called when user pans screen by specified distance
 
- 	virtual void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) {}
 
- 	/// Called when user pitches screen, requesting scaling by specified factor
 
- 	virtual void gesturePinch(const Point & centerPosition, double lastUpdateFactor) {}
 
- 	virtual void wheelScrolled(int distance) {}
 
- 	virtual void mouseMoved(const Point & cursorPosition, const Point & lastUpdateDistance) {}
 
- 	virtual void mouseDragged(const Point & cursorPosition, const Point & lastUpdateDistance) {}
 
- 	/// Called when UI element hover status changes
 
- 	virtual void hover(bool on) {}
 
- 	/// Called when UI element gesture status changes
 
- 	virtual void gesture(bool on, const Point & initialPosition, const Point & finalPosition) {}
 
- 	virtual void textInputted(const std::string & enteredText) {}
 
- 	virtual void textEdited(const std::string & enteredText) {}
 
- 	virtual void keyPressed(EShortcut key) {}
 
- 	virtual void keyReleased(EShortcut key) {}
 
- 	virtual void tick(uint32_t msPassed) {}
 
- 	virtual void inputModeChanged(InputMode modi) {}
 
- public:
 
- 	AEventsReceiver();
 
- 	virtual ~AEventsReceiver() = default;
 
- 	/// These are the arguments that can be used to determine what kind of input UI element will receive
 
- 	enum
 
- 	{
 
- 		LCLICK = 1,
 
- 		SHOW_POPUP = 2,
 
- 		HOVER = 4,
 
- 		MOVE = 8,
 
- 		KEYBOARD = 16,
 
- 		TIME = 32,
 
- 		GENERAL = 64,
 
- 		WHEEL = 128,
 
- 		DOUBLECLICK = 256,
 
- 		TEXTINPUT = 512,
 
- 		GESTURE = 1024,
 
- 		DRAG = 2048,
 
- 		INPUT_MODE_CHANGE = 4096
 
- 	};
 
- 	/// Returns true if element is currently hovered by mouse
 
- 	bool isHovered() const;
 
- 	/// Returns true if panning/swiping gesture is currently active
 
- 	bool isGesturing() const;
 
- 	/// Returns true if element is currently active and may receive events
 
- 	bool isActive() const;
 
- };
 
 
  |