Seperate the API macros
[platform/core/uifw/dali-core.git] / dali / public-api / events / wheel-event.h
1 #ifndef __DALI_WHEEL_EVENT_H__
2 #define __DALI_WHEEL_EVENT_H__
3
4 /*
5  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/common/dali-common.h>
23 #include <dali/public-api/math/vector2.h>
24
25
26 namespace Dali
27 {
28 /**
29  * @addtogroup dali_core_events
30  * @{
31  */
32
33 /**
34  * @brief The wheel event structure is used to store a wheel rolling, it facilitates
35  * processing of the wheel rolling and passing to other libraries like Toolkit.
36  *
37  * There is a key modifier which relates to keys like alt, shift and control functions are
38  * supplied to check if they have been pressed when the wheel is being rolled.
39  *
40  * 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.
41  * The mouse wheel event can be sent to the specific actor but the custom wheel event will be sent to the stage.
42  * @SINCE_1_0.0
43  */
44 struct DALI_CORE_API WheelEvent
45 {
46   // Enumerations
47
48   /**
49    * @brief Enumeration for specifying the type of the wheel event.
50    * @SINCE_1_0.0
51    */
52   enum Type
53   {
54     MOUSE_WHEEL,      ///< Mouse wheel event @SINCE_1_0.0
55     CUSTOM_WHEEL      ///< Custom wheel event @SINCE_1_0.0
56   };
57
58   /**
59    * @brief Default constructor.
60    * @SINCE_1_0.0
61    */
62   WheelEvent();
63
64   /**
65    * @brief Constructor.
66    *
67    * @SINCE_1_0.0
68    * @param[in] type      The type of the wheel event
69    * @param[in] direction The direction of wheel rolling (0 = default vertical wheel, 1 = horizontal wheel)
70    * @param[in] modifiers Modifier keys pressed during the event (such as shift, alt and control)
71    * @param[in] point     The co-ordinates of the cursor relative to the top-left of the screen
72    * @param[in] z         The offset of rolling (positive value means roll down or clockwise, and negative value means roll up or counter-clockwise)
73    * @param[in] timeStamp The time the wheel is being rolled
74    */
75   WheelEvent( Type type, int direction, unsigned int modifiers, Vector2 point, int z, unsigned int timeStamp );
76
77   /**
78    * @brief Destructor.
79    * @SINCE_1_0.0
80    */
81   ~WheelEvent();
82
83   /**
84    * @brief Checks to see if Shift key modifier has been supplied.
85    *
86    * @SINCE_1_0.0
87    * @return True if shift modifier
88    */
89   bool IsShiftModifier() const;
90
91   /**
92    * @brief Checks to see if Ctrl (control) key modifier has been supplied.
93    *
94    * @SINCE_1_0.0
95    * @return True if ctrl modifier
96    */
97   bool IsCtrlModifier() const;
98
99   /**
100    * @brief Checks to see if Alt key modifier has been supplied.
101    *
102    * @SINCE_1_0.0
103    * @return True if alt modifier
104    */
105   bool IsAltModifier() const;
106
107   // Data
108
109   /**
110    * @brief Type of the event.
111    *
112    * @see Type
113    */
114   Type type;
115
116   /**
117    * @brief The direction in which the wheel is being rolled.
118    *
119    * 0 means the default vertical wheel, and 1 means horizontal wheel.
120    */
121   int direction;
122
123   /**
124    * @brief Modifier keys pressed during the event (such as shift, alt and control).
125    */
126   unsigned int modifiers;
127
128   /**
129    * @brief The co-ordinates of the cursor relative to the top-left of the screen
130    * when the wheel is being rolled.
131    */
132   Vector2 point;
133
134   /**
135    * @brief The offset of the wheel rolling, where positive value means rolling down or clockwise
136    * and negative value means rolling up or counter-clockwise.
137    */
138   int z;
139
140   /**
141    * @brief The time when the wheel is being rolled.
142    */
143   unsigned int timeStamp;
144
145 };
146
147 /**
148  * @}
149  */
150 } // namespace Dali
151
152 #endif // __DALI_WHEEL_EVENT_H__