aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleApp.cpp
diff options
context:
space:
mode:
authorGravatar Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-22 13:26:56 +0000
committerGravatar Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-22 13:26:56 +0000
commitd3aed39ab1ad88b05b9423ee1329c227d1f8f612 (patch)
tree47960b4de36c6188aa8374e89cef85e078b5ebe0 /samplecode/SampleApp.cpp
parent1eeaf0ba2381f84ffd889f56303cbe0d1886bb21 (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.cpp42
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;
}