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;
         }