aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-17 12:46:17 +0000
committerGravatar Scroggo <Scroggo@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-06-17 12:46:17 +0000
commita54e2f61f8d181b95dd1757d405eacf9f6a9d792 (patch)
tree7363cab3be0586686a64f02e5da9f5fad10912d2 /samplecode
parent1bce0a585733a3e4e5cc1b79eae12b15deee122d (diff)
Use SkTouchGesture to handle pinch events in Android SampleApp.
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleApp.cpp31
-rw-r--r--samplecode/SampleApp.h2
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);