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>
32 namespace Internal DALI_INTERNAL
38 * @addtogroup dali_core_events
43 * @brief The wheel event class is used to store a wheel rolling, it facilitates
44 * processing of the wheel rolling and passing to other libraries like Toolkit.
46 * There is a key modifier which relates to keys like alt, shift and control functions are
47 * supplied to check if they have been pressed when the wheel is being rolled.
49 * 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.
50 * The mouse wheel event can be sent to the specific actor but the custom wheel event will be sent to the stage.
53 class DALI_CORE_API WheelEvent : public BaseHandle
61 * @brief Enumeration for specifying the type of the wheel event.
66 MOUSE_WHEEL, ///< Mouse wheel event @SINCE_1_0.0
67 CUSTOM_WHEEL ///< Custom wheel event @SINCE_1_0.0
70 // Construction & Destruction
73 * @brief An uninitialized WheelEvent instance.
75 * Calling member functions with an uninitialized WheelEvent handle is not allowed.
81 * @brief Copy constructor.
84 * @param[in] rhs The WheelEvent to copy from
86 WheelEvent( const WheelEvent& rhs );
89 * @brief Move constructor.
92 * @param[in] rhs A reference to the moved WheelEvent
94 WheelEvent( WheelEvent&& rhs );
103 * @brief Copy assignment operator.
106 * @param[in] rhs The WheelEvent to copy from
107 * @return A reference to this
109 WheelEvent& operator=( const WheelEvent& rhs );
112 * @brief Move assignment operator.
115 * @param[in] rhs A reference to the moved WheelEvent
116 * @return A reference to this
118 WheelEvent& operator=( WheelEvent&& rhs );
121 * @brief Checks to see if Shift key modifier has been supplied.
124 * @return True if shift modifier
126 bool IsShiftModifier() const;
129 * @brief Checks to see if Ctrl (control) key modifier has been supplied.
132 * @return True if ctrl modifier
134 bool IsCtrlModifier() const;
137 * @brief Checks to see if Alt key modifier has been supplied.
140 * @return True if alt modifier
142 bool IsAltModifier() const;
147 * @brief Get the type of the wheel event.
150 * @return The type of the wheel event
152 Type GetType() const;
155 * @brief Get the direction in which the wheel is being rolled.
158 * @return The direction of wheel rolling (0 = default vertical wheel, 1 = horizontal wheel)
160 int32_t GetDirection() const;
163 * @brief Get the modifier keys pressed during the event (such as shift, alt and control).
166 * @return The modifier keys pressed during the event
168 uint32_t GetModifiers() const;
171 * @brief Get the co-ordinates of the cursor relative to the top-left of the screen
172 * when the wheel is being rolled.
175 * @return The co-ordinates of the cursor relative to the top-left of the screen
177 const Vector2& GetPoint() const;
180 * @brief Get the offset of the wheel rolling
183 * @return The offset of rolling (positive value means roll down or clockwise, and negative value means roll up or counter-clockwise)
185 int32_t GetDelta() const;
188 * @brief Get the time when the wheel is being rolled.
191 * @return The time when the wheel is being rolled
193 uint32_t GetTime() const;
195 public: // Not intended for application developers
199 * @brief This constructor is used internally to Create an initialized WheelEvent handle.
202 * @param[in] wheelEvent A pointer to a newly allocated Dali resource
204 explicit DALI_INTERNAL WheelEvent( Internal::WheelEvent* hoverEvent );
213 #endif // DALI_WHEEL_EVENT_H