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
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index f0c4e59..c003e4a 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1175,6 +1175,37 @@
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 37a3d09..25e3964 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -58,6 +58,8 @@
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);