[dali_1.0.1] Merge branch 'tizen'
[platform/core/uifw/dali-core.git] / dali / public-api / events / touch-point.h
1 #ifndef __DALI_TOUCH_POINT_H__
2 #define __DALI_TOUCH_POINT_H__
3
4 /*
5  * Copyright (c) 2014 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/actors/actor.h>
23 #include <dali/public-api/math/vector2.h>
24
25 namespace Dali DALI_IMPORT_API
26 {
27
28 /**
29  * @brief A TouchPoint represents a point on the screen that is currently being touched
30  * or where touch has stopped.
31  */
32 struct TouchPoint
33 {
34   // Enumerations
35
36   /**
37    * @brief Touch state
38    */
39   enum State
40   {
41     Down,        /**< Screen touched */
42     Up,          /**< Touch stopped */
43     Motion,      /**< Finger dragged */
44     Leave,       /**< Leave the boundary of an actor */
45     Stationary,  /**< No change from last event.  Useful when a multi-touch event occurs where
46                       all points are sent but indicates that this particular point has not changed
47                       since the last time */
48     Interrupted, /**< A system event has occurred which has interrupted the touch event sequence. */
49     Last         /**< Number of states. */
50   };
51
52   // Construction & Destruction
53
54   /**
55    * @brief Constructor
56    *
57    * @param[in]  id       The touch device ID.
58    * @param[in]  state    The state.
59    * @param[in]  screenX  The X co-ordinate relative to the screen's origin.
60    * @param[in]  screenY  The Y co-ordinate relative to the screen's origin.
61    */
62   TouchPoint(int id, State state, float screenX, float screenY);
63
64   /**
65    * @brief Constructor
66    *
67    * @param[in]  id       The touch device ID.
68    * @param[in]  state    The state.
69    * @param[in]  screenX  The X co-ordinate relative to the screen's origin.
70    * @param[in]  screenY  The Y co-ordinate relative to the screen's origin.
71    * @param[in]  localX   The X co-ordinate relative to the top-left (0.0, 0.0, 0.5) of the actor.
72    * @param[in]  localY   The Y co-ordinate relative to the top-left (0.0, 0.0, 0.5) of the actor.
73    */
74   TouchPoint(int id, State state, float screenX, float screenY, float localX, float localY);
75
76   /**
77    * @brief Destructor
78    */
79   ~TouchPoint();
80
81   // Data
82
83   /**
84    * @brief Each touch point has a unique device ID which specifies the touch device for that point.
85    */
86   int deviceId;
87
88   /**
89    * @brief State of the point.
90    *
91    * @see State
92    */
93   State state;
94
95   /**
96    * @brief The actor that was underneath the touch point.
97    */
98   Actor hitActor;
99
100   /**
101    * @brief The co-ordinates relative to the top-left of the hit-actor.
102    *
103    * @note The top-left of an actor is (0.0, 0.0, 0.5).
104    * @note If you require the local coordinates of another actor (e.g the parent of the hit actor),
105    * then you should use Actor::ScreenToLocal().
106    */
107   Vector2 local;
108
109   /**
110    * @brief The co-ordinates relative to the top-left of the screen.
111    */
112   Vector2 screen;
113 };
114
115 } // namespace Dali
116
117 #endif // __DALI_TOUCH_POINT_H__