diff options
author | John Hoford <hoford@google.com> | 2013-02-21 15:18:37 -0800 |
---|---|---|
committer | John Hoford <hoford@google.com> | 2013-02-21 15:19:49 -0800 |
commit | c67da3cdf3cc655a384d9d591fee051fdafb4630 (patch) | |
tree | d94130e4cf16a89b1f89881eedf2fdb710b749ba /src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java | |
parent | 8ae11144fc1fc15062297d03fb86d6bfb443953a (diff) | |
download | android_packages_apps_Snap-c67da3cdf3cc655a384d9d591fee051fdafb4630.tar.gz android_packages_apps_Snap-c67da3cdf3cc655a384d9d591fee051fdafb4630.tar.bz2 android_packages_apps_Snap-c67da3cdf3cc655a384d9d591fee051fdafb4630.zip |
fix draw and ellipse to handle pinch to zoom
Change-Id: I8af9b37dcd98425959742a4142756963363d1cec
Diffstat (limited to 'src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java')
-rw-r--r-- | src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java b/src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java index c46baf566..479652ce3 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageDraw.java @@ -27,11 +27,13 @@ public class ImageDraw extends ImageShow { public ImageDraw(Context context, AttributeSet attrs) { super(context, attrs); resetParameter(); + super.setOriginalDisabled(true); } public ImageDraw(Context context) { super(context); resetParameter(); + super.setOriginalDisabled(true); } public void setEditor(EditorDraw editorDraw) { @@ -82,27 +84,32 @@ public class ImageDraw extends ImageShow { float[] mTmpPoint = new float[2]; // so we do not malloc @Override public boolean onTouchEvent(MotionEvent event) { - super.onTouchEvent(event); - - if (event.getPointerCount() != 1) { - return true; + boolean ret = super.onTouchEvent(event); + if (event.getPointerCount() > 1) { + if (mFRep.getCurrentDrawing() != null) { + mFRep.clearCurrentSection(); + mEditorDraw.commitLocalRepresentation(); + } + return ret; } - - if (didFinishScalingOperation()) { - return true; + if (event.getAction() != MotionEvent.ACTION_DOWN) { + if (mFRep.getCurrentDrawing() == null) { + return ret; + } } ImageFilterDraw filter = (ImageFilterDraw) getCurrentFilter(); if (event.getAction() == MotionEvent.ACTION_DOWN) { + calcScreenMapping(); mTmpPoint[0] = event.getX(); mTmpPoint[1] = event.getY(); mToOrig.mapPoints(mTmpPoint); mFRep.startNewSection(mType, mCurrentColor, mCurrentSize, mTmpPoint[0], mTmpPoint[1]); - } if (event.getAction() == MotionEvent.ACTION_MOVE) { + int historySize = event.getHistorySize(); final int pointerCount = event.getPointerCount(); for (int h = 0; h < historySize; h++) { @@ -127,19 +134,10 @@ public class ImageDraw extends ImageShow { return true; } - Matrix mRotateToScreen; - Matrix mToScreen; - Matrix mToOrig = new Matrix(); + Matrix mRotateToScreen = new Matrix(); + Matrix mToOrig; private void calcScreenMapping() { - - GeometryMetadata geo = getImagePreset().mGeoData; - mToScreen = geo.getOriginalToScreen(false, - mImageLoader.getOriginalBounds().width(), - mImageLoader.getOriginalBounds().height(), getWidth(), getHeight()); - mRotateToScreen = geo.getOriginalToScreen(true, - mImageLoader.getOriginalBounds().width(), - mImageLoader.getOriginalBounds().height(), getWidth(), getHeight()); - mRotateToScreen.invert(mToOrig); + mToOrig = getScreenToImageMatrix(true); mToOrig.invert(mRotateToScreen); } |