modify license, permission and remove ^M char
[platform/framework/native/uifw.git] / src / ui / FUi_TouchPanningGestureDetectorImpl.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an ”AS IS” BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file                        FUi_TouchPanningGestureDetectorImpl.cpp
19  * @brief               This is the implementation file for %_TouchPanningGestureDetectorImpl class
20  * @version             2.0
21  *
22  * This file contains the implementation of %_TouchPanningGestureDetectorImpl class.
23  *
24  */
25
26 #include <FUiTouchPanningGestureDetector.h>
27 #include "FUi_TouchPanningGestureDetectorImpl.h"
28 #include "FUi_TouchPanningGestureDetector.h"
29
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Graphics;
32
33 namespace Tizen { namespace Ui
34 {
35
36 _TouchPanningGestureDetectorImpl::_TouchPanningGestureDetectorImpl(TouchPanningGestureDetector* pPublic, _TouchPanningGestureDetector* pCore)
37         : _TouchGestureDetectorImpl(pPublic, pCore)
38 {
39 }
40
41 _TouchPanningGestureDetectorImpl::~_TouchPanningGestureDetectorImpl(void)
42 {
43 }
44
45 _TouchPanningGestureDetectorImpl*
46 _TouchPanningGestureDetectorImpl::CreateInstanceN(TouchPanningGestureDetector* pPublic)
47 {
48         ClearLastResult();
49
50         _TouchPanningGestureDetector* pCore = null;
51         pCore = new (std::nothrow) _TouchPanningGestureDetector;
52         SysTryReturn(NID_UI, pCore, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is shortage.");
53
54         _TouchPanningGestureDetectorImpl* pImpl = new (std::nothrow) _TouchPanningGestureDetectorImpl(pPublic, pCore);
55         SysTryCatch(NID_UI, pImpl, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is shortage.");
56
57         return pImpl;
58
59 CATCH:
60         delete pCore;
61
62         return null;
63 }
64
65 const _TouchPanningGestureDetector&
66 _TouchPanningGestureDetectorImpl::GetCore(void) const
67 {
68         return static_cast<const _TouchPanningGestureDetector&>(_TouchGestureDetectorImpl::GetCore());
69 }
70
71 _TouchPanningGestureDetector&
72 _TouchPanningGestureDetectorImpl::GetCore(void)
73 {
74         return static_cast<_TouchPanningGestureDetector&>(_TouchGestureDetectorImpl::GetCore());
75 }
76
77 _TouchPanningGestureDetectorImpl*
78 _TouchPanningGestureDetectorImpl::GetInstance(TouchPanningGestureDetector& gestureDetector)
79 {
80         return static_cast<_TouchPanningGestureDetectorImpl*> (gestureDetector.__pTouchGestureDetectorImpl);
81 }
82
83 const _TouchPanningGestureDetectorImpl*
84 _TouchPanningGestureDetectorImpl::GetInstance(const TouchPanningGestureDetector& gestureDetector)
85 {
86         return static_cast<const _TouchPanningGestureDetectorImpl*> (gestureDetector.__pTouchGestureDetectorImpl);
87 }
88
89 result
90 _TouchPanningGestureDetectorImpl::SetTouchCount(int count)
91 {
92         return GetCore().SetTouchCount(count);
93 }
94
95 int
96 _TouchPanningGestureDetectorImpl::GetTouchCount(void) const
97 {
98         ClearLastResult();
99
100         return GetCore().GetTouchCount();
101 }
102
103 IList*
104 _TouchPanningGestureDetectorImpl::GetTouchInfoListN(void) const
105 {
106         IListT<_TouchInfo*>* pTouchInfoList = GetCore().GetTouchInfoListN(GetCore().GetControl());
107         SysTryReturn(NID_UI, pTouchInfoList, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
108
109         IEnumeratorT<_TouchInfo*>* pEnumerator = null;
110         LinkedList* pReturnList = new (std::nothrow) LinkedList;
111         SysTryCatch(NID_UI, pReturnList,, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
112
113         for (int i = 0; i < pTouchInfoList->GetCount(); i++)
114         {
115                 _TouchInfo* pFingerInfo = null;
116                 pTouchInfoList->GetAt(i, pFingerInfo);
117
118                 if (pFingerInfo == null)
119                 {
120                         continue;
121                 }
122
123                 TouchInfo* pTouchInfo = new (std::nothrow) TouchInfo;
124                 SysTryCatch(NID_UI, pTouchInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
125
126                 if (pFingerInfo->GetTouchStatus() == _TOUCH_PRESSED ||pFingerInfo->GetTouchStatus() == _TOUCH_MOVED )
127                 {
128                         pTouchInfo->id = pFingerInfo->GetPointId();
129                         pTouchInfo->position.x = pFingerInfo->GetCurrentPosition().x;
130                         pTouchInfo->position.y = pFingerInfo->GetCurrentPosition().y;
131                         pTouchInfo->status = TOUCH_PRESSED;
132
133                         pReturnList->Add(*pTouchInfo);
134                 }
135         }
136
137         pEnumerator = pTouchInfoList->GetEnumeratorN();
138         if (pEnumerator)
139         {
140                 while(pEnumerator->MoveNext() == E_SUCCESS)
141                 {
142                         _TouchInfo* pTouchInfo = null;
143                         pEnumerator->GetCurrent(pTouchInfo);
144                         if (pTouchInfo == null)
145                         {
146                                 continue;
147                         }
148
149                         delete pTouchInfo;
150                 }
151                 delete pEnumerator;
152         }
153         pTouchInfoList->RemoveAll();
154         delete pTouchInfoList;
155         pTouchInfoList = null;
156
157         ClearLastResult();
158
159         return pReturnList;
160
161 CATCH:
162         if (pTouchInfoList)
163         {
164                 IEnumeratorT<_TouchInfo*>* pEnumerator = pTouchInfoList->GetEnumeratorN();
165                 if (pEnumerator)
166                 {
167                         while(pEnumerator->MoveNext() == E_SUCCESS)
168                         {
169                                 _TouchInfo* pTouchInfo = null;
170                                 pEnumerator->GetCurrent(pTouchInfo);
171                                 if (pTouchInfo == null)
172                                 {
173                                         continue;
174                                 }
175
176                                 delete pTouchInfo;
177                         }
178                         delete pEnumerator;
179                 }
180                 pTouchInfoList->RemoveAll();
181                 delete pTouchInfoList;
182                 pTouchInfoList = null;
183         }
184
185         if (pReturnList)
186         {
187                 pReturnList->RemoveAll(true);
188                 delete pReturnList;
189                 pReturnList = null;
190         }
191
192         return null;
193 }
194
195 } } // Tizen::Ui