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
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 9c2b7d1..8a8ac9c 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1206,7 +1206,8 @@
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 @@
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 @@
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;
}