diff options
author | 2011-06-17 12:46:17 +0000 | |
---|---|---|
committer | 2011-06-17 12:46:17 +0000 | |
commit | a54e2f61f8d181b95dd1757d405eacf9f6a9d792 (patch) | |
tree | 7363cab3be0586686a64f02e5da9f5fad10912d2 /samplecode | |
parent | 1bce0a585733a3e4e5cc1b79eae12b15deee122d (diff) |
Use SkTouchGesture to handle pinch events in Android SampleApp.
http://codereview.appspot.com/4631043/
git-svn-id: http://skia.googlecode.com/svn/trunk@1624 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleApp.cpp | 31 | ||||
-rw-r--r-- | samplecode/SampleApp.h | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index f0c4e59528..c003e4a3de 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -1175,6 +1175,37 @@ 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); diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h index 37a3d0959a..25e39643f1 100644 --- a/samplecode/SampleApp.h +++ b/samplecode/SampleApp.h @@ -58,6 +58,8 @@ public: void changeZoomLevel(float delta); bool nextSample(); bool previousSample(); + bool handleTouch(int ownerId, float x, float y, + SkView::Click::State state); protected: virtual void onDraw(SkCanvas* canvas); |