diff options
author | Paul Gardiner <paulg.artifex@glidos.net> | 2013-06-14 11:08:39 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2013-06-17 15:07:08 +0100 |
commit | b695c87abcdbe0ddc35c5e3a7ee8f5f58ee577f1 (patch) | |
tree | 31a470c889c88540235d4f70b6e1334249b92fbe /android/src/com/artifex/mupdfdemo/MuPDFReaderView.java | |
parent | e860f7240878c22d90b086827e58e1e8e055bbf8 (diff) | |
download | mupdf-b695c87abcdbe0ddc35c5e3a7ee8f5f58ee577f1.tar.xz |
Tweaks to ink annotation for smoothness.
Patch from "andyhan2000" to make the ink annotations smoother.
Diffstat (limited to 'android/src/com/artifex/mupdfdemo/MuPDFReaderView.java')
-rw-r--r-- | android/src/com/artifex/mupdfdemo/MuPDFReaderView.java | 71 |
1 files changed, 59 insertions, 12 deletions
diff --git a/android/src/com/artifex/mupdfdemo/MuPDFReaderView.java b/android/src/com/artifex/mupdfdemo/MuPDFReaderView.java index 3a1b708a..9cab70b7 100644 --- a/android/src/com/artifex/mupdfdemo/MuPDFReaderView.java +++ b/android/src/com/artifex/mupdfdemo/MuPDFReaderView.java @@ -96,13 +96,7 @@ public class MuPDFReaderView extends ReaderView { @Override public boolean onDown(MotionEvent e) { - switch (mMode) { - case Drawing: - MuPDFView pageView = (MuPDFView)getDisplayedView(); - if (pageView != null) - pageView.startDraw(e.getX(), e.getY()); - break; - } + return super.onDown(e); } @@ -119,10 +113,6 @@ public class MuPDFReaderView extends ReaderView { if (pageView != null) pageView.selectText(e1.getX(), e1.getY(), e2.getX(), e2.getY()); return true; - case Drawing: - if (pageView != null) - pageView.continueDraw(e2.getX(), e2.getY()); - return true; default: return true; } @@ -148,12 +138,69 @@ public class MuPDFReaderView extends ReaderView { } public boolean onTouchEvent(MotionEvent event) { - if ((event.getAction() & event.ACTION_MASK) == MotionEvent.ACTION_DOWN) + + if ( mMode == Mode.Drawing ) + { + float x = event.getX(); + float y = event.getY(); + switch (event.getAction()) + { + case MotionEvent.ACTION_DOWN: + touch_start(x, y); + break; + case MotionEvent.ACTION_MOVE: + touch_move(x, y); + break; + case MotionEvent.ACTION_UP: + touch_up(); + break; + } + } + + if ((event.getAction() & event.getActionMasked()) == MotionEvent.ACTION_DOWN) + { tapDisabled = false; + } return super.onTouchEvent(event); } + private float mX, mY; + + private static final float TOUCH_TOLERANCE = 2; + + private void touch_start(float x, float y) { + + MuPDFView pageView = (MuPDFView)getDisplayedView(); + if (pageView != null) + { + pageView.startDraw(x, y); + } + mX = x; + mY = y; + } + + private void touch_move(float x, float y) { + + float dx = Math.abs(x - mX); + float dy = Math.abs(y - mY); + if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) + { + MuPDFView pageView = (MuPDFView)getDisplayedView(); + if (pageView != null) + { + pageView.continueDraw(x, y); + } + mX = x; + mY = y; + } + } + + private void touch_up() { + + // NOOP + } + protected void onChildSetup(int i, View v) { if (SearchTaskResult.get() != null && SearchTaskResult.get().pageNumber == i) |