diff options
author | Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-06-22 13:26:56 +0000 |
---|---|---|
committer | Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-06-22 13:26:56 +0000 |
commit | d3aed39ab1ad88b05b9423ee1329c227d1f8f612 (patch) | |
tree | 47960b4de36c6188aa8374e89cef85e078b5ebe0 /samplecode/SampleApp.cpp | |
parent | 1eeaf0ba2381f84ffd889f56303cbe0d1886bb21 (diff) |
Unify handleTouch and handleClick in SampleApp.
Allow each sample to handle clicks in Android SampleApp.
Remove SampleWindow::handleTouch.
Allow an SkWindow to have multiple clicks.
Add an owner pointer to SkView::Click.
Reviewed at http://codereview.appspot.com/4643052/
git-svn-id: http://skia.googlecode.com/svn/trunk@1673 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SampleApp.cpp')
-rw-r--r-- | samplecode/SampleApp.cpp | 42 |
1 files changed, 6 insertions, 36 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 9c2b7d1344..8a8ac9c87e 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -1206,7 +1206,8 @@ bool SampleWindow::onHandleKey(SkKey key) { static const char gGestureClickType[] = "GestureClickType"; -bool SampleWindow::onDispatchClick(int x, int y, Click::State state) { +bool SampleWindow::onDispatchClick(int x, int y, Click::State state, + void* owner) { if (Click::kMoved_State == state) { updatePointer(x, y); } @@ -1217,7 +1218,7 @@ bool SampleWindow::onDispatchClick(int x, int y, Click::State state) { if (w - x < 16 && h - y < 16) { return false; // let the OS handle the click } else { - return this->INHERITED::onDispatchClick(x, y, state); + return this->INHERITED::onDispatchClick(x, y, state, owner); } } @@ -1236,51 +1237,20 @@ SkView::Click* SampleWindow::onFindClickHandler(SkScalar x, SkScalar y) { return new GestureClick(this); } -union IntPtr { - int fInt; - void* fPtr; -}; - -static void* int2ptr(int n) { - IntPtr data; - data.fInt = n; - return data.fPtr; -} - -bool SampleWindow::handleTouch(int ownerId, float x, float y, SkView::Click::State state) { - void* click = int2ptr(ownerId); - switch(state) { - case SkView::Click::kDown_State: - fGesture.touchBegin(click, x, y); - break; - case SkView::Click::kMoved_State: - fGesture.touchMoved(click, x, y); - this->inval(NULL); - break; - case SkView::Click::kUp_State: - fGesture.touchEnd(click); - this->inval(NULL); - break; - default: - return false; - } - return true; -} - bool SampleWindow::onClick(Click* click) { if (GestureClick::IsGesture(click)) { float x = SkScalarToFloat(click->fCurr.fX); float y = SkScalarToFloat(click->fCurr.fY); switch (click->fState) { case SkView::Click::kDown_State: - fGesture.touchBegin(click, x, y); + fGesture.touchBegin(click->fOwner, x, y); break; case SkView::Click::kMoved_State: - fGesture.touchMoved(click, x, y); + fGesture.touchMoved(click->fOwner, x, y); this->inval(NULL); break; case SkView::Click::kUp_State: - fGesture.touchEnd(click); + fGesture.touchEnd(click->fOwner); this->inval(NULL); break; } |