1 #ifndef DALI_WHEEL_EVENT_H
2 #define DALI_WHEEL_EVENT_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <cstdint> // uint32_t
25 #include <dali/public-api/common/dali-common.h>
26 #include <dali/public-api/math/vector2.h>
27 #include <dali/public-api/object/base-handle.h>
31 namespace Internal DALI_INTERNAL
37 * @addtogroup dali_core_events
42 * @brief The wheel event class is used to store a wheel rolling, it facilitates
43 * processing of the wheel rolling and passing to other libraries like Toolkit.
45 * There is a key modifier which relates to keys like alt, shift and control functions are
46 * supplied to check if they have been pressed when the wheel is being rolled.
48 * We support a mouse device and there may be another custom device that support the wheel event. The device type is specified as \e type.
49 * The mouse wheel event can be sent to the specific actor but the custom wheel event will be sent to the stage.
52 class DALI_CORE_API WheelEvent : public BaseHandle
58 * @brief Enumeration for specifying the type of the wheel event.
63 MOUSE_WHEEL, ///< Mouse wheel event @SINCE_1_0.0
64 CUSTOM_WHEEL ///< Custom wheel event @SINCE_1_0.0
67 // Construction & Destruction
70 * @brief An uninitialized WheelEvent instance.
72 * Calling member functions with an uninitialized WheelEvent handle is not allowed.
78 * @brief Copy constructor.
81 * @param[in] rhs The WheelEvent to copy from
83 WheelEvent(const WheelEvent& rhs);
86 * @brief Move constructor.
89 * @param[in] rhs A reference to the moved WheelEvent
91 WheelEvent(WheelEvent&& rhs) noexcept;
100 * @brief Copy assignment operator.
103 * @param[in] rhs The WheelEvent to copy from
104 * @return A reference to this
106 WheelEvent& operator=(const WheelEvent& rhs);
109 * @brief Move assignment operator.
112 * @param[in] rhs A reference to the moved WheelEvent
113 * @return A reference to this
115 WheelEvent& operator=(WheelEvent&& rhs) noexcept;
118 * @brief Checks to see if Shift key modifier has been supplied.
121 * @return True if shift modifier
123 bool IsShiftModifier() const;
126 * @brief Checks to see if Ctrl (control) key modifier has been supplied.
129 * @return True if ctrl modifier
131 bool IsCtrlModifier() const;
134 * @brief Checks to see if Alt key modifier has been supplied.
137 * @return True if alt modifier
139 bool IsAltModifier() const;
144 * @brief Get the type of the wheel event.
147 * @return The type of the wheel event
149 Type GetType() const;
152 * @brief Get the direction in which the wheel is being rolled.
155 * @return The direction of wheel rolling (0 = default vertical wheel, 1 = horizontal wheel)
157 int32_t GetDirection() const;
160 * @brief Get the modifier keys pressed during the event (such as shift, alt and control).
163 * @return The modifier keys pressed during the event
165 uint32_t GetModifiers() const;
168 * @brief Get the co-ordinates of the cursor relative to the top-left of the screen
169 * when the wheel is being rolled.
172 * @return The co-ordinates of the cursor relative to the top-left of the screen
174 const Vector2& GetPoint() const;
177 * @brief Get the offset of the wheel rolling
180 * @return The offset of rolling (positive value means roll down or clockwise, and negative value means roll up or counter-clockwise)
182 int32_t GetDelta() const;
185 * @brief Get the time when the wheel is being rolled.
188 * @return The time when the wheel is being rolled
190 uint32_t GetTime() const;
192 public: // Not intended for application developers
195 * @brief This constructor is used internally to Create an initialized WheelEvent handle.
198 * @param[in] wheelEvent A pointer to a newly allocated Dali resource
200 explicit DALI_INTERNAL WheelEvent(Internal::WheelEvent* hoverEvent);
209 #endif // DALI_WHEEL_EVENT_H