2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
18 * @file FUi_TouchPanningGestureDetectorImpl.cpp
19 * @brief This is the implementation file for %_TouchPanningGestureDetectorImpl class
22 * This file contains the implementation of %_TouchPanningGestureDetectorImpl class.
26 #include <FUiTouchPanningGestureDetector.h>
27 #include "FUi_TouchPanningGestureDetectorImpl.h"
28 #include "FUi_TouchPanningGestureDetector.h"
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Graphics;
33 namespace Tizen { namespace Ui
36 _TouchPanningGestureDetectorImpl::_TouchPanningGestureDetectorImpl(TouchPanningGestureDetector* pPublic, _TouchPanningGestureDetector* pCore)
37 : _TouchGestureDetectorImpl(pPublic, pCore)
41 _TouchPanningGestureDetectorImpl::~_TouchPanningGestureDetectorImpl(void)
45 _TouchPanningGestureDetectorImpl*
46 _TouchPanningGestureDetectorImpl::CreateInstanceN(TouchPanningGestureDetector* pPublic)
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.");
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.");
65 const _TouchPanningGestureDetector&
66 _TouchPanningGestureDetectorImpl::GetCore(void) const
68 return static_cast<const _TouchPanningGestureDetector&>(_TouchGestureDetectorImpl::GetCore());
71 _TouchPanningGestureDetector&
72 _TouchPanningGestureDetectorImpl::GetCore(void)
74 return static_cast<_TouchPanningGestureDetector&>(_TouchGestureDetectorImpl::GetCore());
77 _TouchPanningGestureDetectorImpl*
78 _TouchPanningGestureDetectorImpl::GetInstance(TouchPanningGestureDetector& gestureDetector)
80 return static_cast<_TouchPanningGestureDetectorImpl*> (gestureDetector.__pTouchGestureDetectorImpl);
83 const _TouchPanningGestureDetectorImpl*
84 _TouchPanningGestureDetectorImpl::GetInstance(const TouchPanningGestureDetector& gestureDetector)
86 return static_cast<const _TouchPanningGestureDetectorImpl*> (gestureDetector.__pTouchGestureDetectorImpl);
90 _TouchPanningGestureDetectorImpl::SetTouchCount(int count)
92 return GetCore().SetTouchCount(count);
96 _TouchPanningGestureDetectorImpl::GetTouchCount(void) const
100 return GetCore().GetTouchCount();
104 _TouchPanningGestureDetectorImpl::GetTouchInfoListN(void) const
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.");
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.");
113 for (int i = 0; i < pTouchInfoList->GetCount(); i++)
115 _TouchInfo* pFingerInfo = null;
116 pTouchInfoList->GetAt(i, pFingerInfo);
118 if (pFingerInfo == null)
123 TouchInfo* pTouchInfo = new (std::nothrow) TouchInfo;
124 SysTryCatch(NID_UI, pTouchInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
126 if (pFingerInfo->GetTouchStatus() == _TOUCH_PRESSED ||pFingerInfo->GetTouchStatus() == _TOUCH_MOVED )
128 pTouchInfo->id = pFingerInfo->GetPointId();
129 pTouchInfo->position.x = pFingerInfo->GetCurrentPosition().x;
130 pTouchInfo->position.y = pFingerInfo->GetCurrentPosition().y;
131 pTouchInfo->status = TOUCH_PRESSED;
133 pReturnList->Add(*pTouchInfo);
137 pEnumerator = pTouchInfoList->GetEnumeratorN();
140 while(pEnumerator->MoveNext() == E_SUCCESS)
142 _TouchInfo* pTouchInfo = null;
143 pEnumerator->GetCurrent(pTouchInfo);
144 if (pTouchInfo == null)
153 pTouchInfoList->RemoveAll();
154 delete pTouchInfoList;
155 pTouchInfoList = null;
164 IEnumeratorT<_TouchInfo*>* pEnumerator = pTouchInfoList->GetEnumeratorN();
167 while(pEnumerator->MoveNext() == E_SUCCESS)
169 _TouchInfo* pTouchInfo = null;
170 pEnumerator->GetCurrent(pTouchInfo);
171 if (pTouchInfo == null)
180 pTouchInfoList->RemoveAll();
181 delete pTouchInfoList;
182 pTouchInfoList = null;
187 pReturnList->RemoveAll(true);