summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/ui
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2012-09-27 15:10:28 -0700
committernicolasroard <nicolasroard@google.com>2012-09-27 15:45:40 -0700
commit90b3fa4aa65b332aebe5bcc0a87a74770adaecf1 (patch)
tree9918285e23507c953c1742384398a90648882b3e /src/com/android/gallery3d/filtershow/ui
parentb10a2712931ba35d35f3f795beb585eca4ce6738 (diff)
downloadandroid_packages_apps_Snap-90b3fa4aa65b332aebe5bcc0a87a74770adaecf1.tar.gz
android_packages_apps_Snap-90b3fa4aa65b332aebe5bcc0a87a74770adaecf1.tar.bz2
android_packages_apps_Snap-90b3fa4aa65b332aebe5bcc0a87a74770adaecf1.zip
Remove the pie slider, add a linear slider
bug:7247494 Change-Id: Id002b46d4a0ee0ff2a3ed9c4924defd0b1760b79
Diffstat (limited to 'src/com/android/gallery3d/filtershow/ui')
-rw-r--r--src/com/android/gallery3d/filtershow/ui/PieSlider.java181
-rw-r--r--src/com/android/gallery3d/filtershow/ui/SliderController.java163
-rw-r--r--src/com/android/gallery3d/filtershow/ui/SliderListener.java (renamed from src/com/android/gallery3d/filtershow/ui/PieSliderListener.java)2
3 files changed, 164 insertions, 182 deletions
diff --git a/src/com/android/gallery3d/filtershow/ui/PieSlider.java b/src/com/android/gallery3d/filtershow/ui/PieSlider.java
deleted file mode 100644
index 0f3702d37..000000000
--- a/src/com/android/gallery3d/filtershow/ui/PieSlider.java
+++ /dev/null
@@ -1,181 +0,0 @@
-
-package com.android.gallery3d.filtershow.ui;
-
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.graphics.Path.FillType;
-import android.view.MotionEvent;
-
-public class PieSlider {
- private float mCenterX;
- private float mCenterY;
- private float mCurrentX;
- private float mCurrentY;
- private int mStartAngle = 210;
- private int mEndAngle = 120;
- private int mValue = 100;
-
- private Paint mPaint = new Paint();
- private Path mBasePath = new Path();
- private Path mCirclePath = new Path();
- private RectF mOvalRect = new RectF();
- private Rect mTextBounds = new Rect();
-
- private PieSliderListener mListener = null;
-
- private MODES mMode = MODES.NONE;
- private static int mMenuRadius = 140;
- private static int mTextSize = 32;
- private static int mFanDistance = 2 * mMenuRadius;
- private static int mTextDistance = (int) (2.2f * mMenuRadius);
- private static int mLineDistance = (int) (2.5f * mMenuRadius);
-
- private enum MODES {
- NONE, DOWN, UP, MOVE
- }
-
- public void onDraw(Canvas canvas) {
- if (mMode == MODES.NONE || mMode == MODES.UP) {
- return;
- }
- drawFan(canvas);
- }
-
- public void setActionDown(float x, float y) {
- mCenterX = x;
- mCenterY = y;
- mCurrentX = x;
- mCurrentY = y;
- mMode = MODES.DOWN;
- }
-
- public void setActionMove(float x, float y) {
- mCurrentX = x;
- mCurrentY = y;
- mMode = MODES.MOVE;
- computeValue();
- if (mListener != null) {
- mListener.onNewValue(mValue);
- }
- }
-
- public void setActionUp() {
- mMode = MODES.UP;
- }
-
- public void setNoAction() {
- mMode = MODES.NONE;
- }
-
- private void drawFan(Canvas canvas) {
- mPaint.setARGB(200, 200, 200, 200);
- mPaint.setStrokeWidth(4);
- mBasePath.reset();
- mCirclePath.reset();
-
- int mf = 2;
-
- mOvalRect.left = mCenterX - mFanDistance;
- mOvalRect.top = mCenterY - mFanDistance;
- mOvalRect.right = mOvalRect.left + mf * mFanDistance;
- mOvalRect.bottom = mOvalRect.top + mf * mFanDistance;
-
- canvas.save();
- mBasePath.moveTo(mCenterX, mCenterY);
- mBasePath.arcTo(mOvalRect, mStartAngle, mEndAngle);
-
- mCirclePath.moveTo(mCenterX, mCenterY);
- mOvalRect.left = mCenterX - mMenuRadius;
- mOvalRect.top = mCenterY - mMenuRadius;
- mOvalRect.right = mOvalRect.left + mf * mMenuRadius;
- mOvalRect.bottom = mOvalRect.top + mf * mMenuRadius;
- mCirclePath.arcTo(mOvalRect, mStartAngle, mEndAngle);
-
- mBasePath.setFillType(FillType.EVEN_ODD);
- mBasePath.addPath(mCirclePath);
- mBasePath.close();
-
- canvas.drawPath(mBasePath, mPaint);
- canvas.restore();
-
- canvas.save();
- canvas.rotate(-60, mCenterX, mCenterY);
- canvas.drawLine(mCenterX, mCenterY - mMenuRadius, mCenterX, mCenterY - mLineDistance,
- mPaint);
- canvas.restore();
- canvas.save();
- canvas.rotate(mEndAngle - 60, mCenterX, mCenterY);
- canvas.drawLine(mCenterX, mCenterY - mMenuRadius, mCenterX, mCenterY - mLineDistance,
- mPaint);
- canvas.restore();
-
- canvas.save();
- canvas.rotate(mEndAngle / 2 - 60, mCenterX, mCenterY);
- String txt = "" + mValue;
- mPaint.setTextSize(mTextSize);
- mPaint.getTextBounds(txt, 0, txt.length(), mTextBounds);
- mPaint.setARGB(255, 20, 20, 20);
- canvas.drawText(txt, mCenterX - mTextBounds.width() / 2 - 2, mCenterY - mTextDistance - 2,
- mPaint);
- mPaint.setARGB(200, 200, 200, 200);
- canvas.drawText(txt, mCenterX - mTextBounds.width() / 2, mCenterY - mTextDistance, mPaint);
- canvas.restore();
- }
-
- private void computeValue() {
- float dX = mCurrentX - mCenterX;
- float dY = mCurrentY - mCenterY;
- float distance = (float) Math.sqrt(dX * dX + dY * dY);
-
- if (mCenterY > mCurrentY && distance > mMenuRadius) {
- float angle = (float) (Math.atan2(dX, dY) * 180 / Math.PI);
- if (angle < 0) {
- // from -90 to -180
- angle = -angle;
- angle = Math.max(90, angle);
- angle = Math.min(180, angle);
- angle -= 90;
- } else {
- angle = Math.max(90, angle);
- angle = Math.min(180, angle);
- angle -= 90;
- angle = 90 + (90 - angle);
- }
- angle /= 180.0f;
- angle = Math.max(0, angle);
- angle = Math.min(1, angle);
- mEndAngle = (int) (120 * angle);
- mValue = (int) (100 * (mEndAngle / 120.0f));
- }
- }
-
- public void setListener(PieSliderListener listener) {
- mListener = listener;
- }
-
- public boolean onTouchEvent(MotionEvent event) {
- setNoAction();
- switch (event.getActionMasked()) {
- case (MotionEvent.ACTION_DOWN): {
- setActionDown(event.getX(), event.getY());
- break;
- }
- case (MotionEvent.ACTION_UP): {
- setActionUp();
- break;
- }
- case (MotionEvent.ACTION_CANCEL): {
- setActionUp();
- break;
- }
- case (MotionEvent.ACTION_MOVE): {
- setActionMove(event.getX(), event.getY());
- break;
- }
- }
- return true;
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/ui/SliderController.java b/src/com/android/gallery3d/filtershow/ui/SliderController.java
new file mode 100644
index 000000000..86b5fb736
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/ui/SliderController.java
@@ -0,0 +1,163 @@
+
+package com.android.gallery3d.filtershow.ui;
+
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.view.MotionEvent;
+
+import android.util.Log;
+
+public class SliderController {
+ private static final String LOGTAG = "SliderController";
+
+ private float mCenterX;
+ private float mCenterY;
+ private float mCurrentX;
+ private float mCurrentY;
+ private int mValue = 100;
+ int mOriginalValue = 0;
+
+ private int mWidth = 0;
+ private int mHeight = 0;
+
+ private String mToast = null;
+
+ private Paint mPaint = new Paint();
+
+ private SliderListener mListener = null;
+
+ private MODES mMode = MODES.NONE;
+ private static int mTextSize = 128;
+
+ private enum MODES {
+ NONE, DOWN, UP, MOVE
+ }
+
+ public void onDraw(Canvas canvas) {
+ if (mMode == MODES.NONE || mMode == MODES.UP) {
+ return;
+ }
+ drawToast(canvas);
+ }
+
+ public void drawToast(Canvas canvas) {
+ if (mToast != null) {
+ canvas.save();
+ mPaint.setTextSize(mTextSize);
+ float textWidth = mPaint.measureText(mToast);
+ int toastX = (int) ((getWidth() - textWidth) / 2.0f);
+ int toastY = (int) (getHeight() / 3.0f);
+
+ mPaint.setARGB(255, 0, 0, 0);
+ canvas.drawText(mToast, toastX - 2, toastY - 2, mPaint);
+ canvas.drawText(mToast, toastX - 2, toastY, mPaint);
+ canvas.drawText(mToast, toastX, toastY - 2, mPaint);
+ canvas.drawText(mToast, toastX + 2, toastY + 2, mPaint);
+ canvas.drawText(mToast, toastX + 2, toastY, mPaint);
+ canvas.drawText(mToast, toastX, toastY + 2, mPaint);
+ mPaint.setARGB(255, 255, 255, 255);
+ canvas.drawText(mToast, toastX, toastY, mPaint);
+ canvas.restore();
+ }
+ }
+
+ protected int computeValue() {
+ int delta = (int) (100 * (getCurrentX() - getCenterX()) / (float) getWidth());
+ int value = mOriginalValue + delta;
+ value = Math.max(0, Math.min(value, 100));
+ setValue(value);
+ mToast = "" + value;
+ return value;
+ }
+
+ public void setValue(int value) {
+ mValue = value;
+ }
+
+ public int getWidth() {
+ return mWidth;
+ }
+
+ public int getHeight() {
+ return mHeight;
+ }
+
+ public void setWidth(int value) {
+ mWidth = value;
+ }
+
+ public void setHeight(int value) {
+ mHeight = value;
+ }
+
+ public float getCurrentX() {
+ return mCurrentX;
+ }
+
+ public float getCurrentY() {
+ return mCurrentY;
+ }
+
+ public float getCenterX() {
+ return mCenterX;
+ }
+
+ public float getCenterY() {
+ return mCenterY;
+ }
+
+ public void setActionDown(float x, float y) {
+ mCenterX = x;
+ mCenterY = y;
+ mCurrentX = x;
+ mCurrentY = y;
+ mMode = MODES.DOWN;
+ }
+
+ public void setActionMove(float x, float y) {
+ mCurrentX = x;
+ mCurrentY = y;
+ mMode = MODES.MOVE;
+ computeValue();
+ if (mListener != null) {
+ mListener.onNewValue(mValue);
+ }
+ }
+
+ public void setActionUp() {
+ mMode = MODES.UP;
+ mOriginalValue = computeValue();
+ }
+
+ public void setNoAction() {
+ mMode = MODES.NONE;
+ }
+
+ public void setListener(SliderListener listener) {
+ mListener = listener;
+ }
+
+ public boolean onTouchEvent(MotionEvent event) {
+ setNoAction();
+ switch (event.getActionMasked()) {
+ case (MotionEvent.ACTION_DOWN): {
+ setActionDown(event.getX(), event.getY());
+ break;
+ }
+ case (MotionEvent.ACTION_UP): {
+ setActionUp();
+ break;
+ }
+ case (MotionEvent.ACTION_CANCEL): {
+ setActionUp();
+ break;
+ }
+ case (MotionEvent.ACTION_MOVE): {
+ setActionMove(event.getX(), event.getY());
+ break;
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/src/com/android/gallery3d/filtershow/ui/PieSliderListener.java b/src/com/android/gallery3d/filtershow/ui/SliderListener.java
index 6020ad8a9..67e28de0e 100644
--- a/src/com/android/gallery3d/filtershow/ui/PieSliderListener.java
+++ b/src/com/android/gallery3d/filtershow/ui/SliderListener.java
@@ -1,6 +1,6 @@
package com.android.gallery3d.filtershow.ui;
-public interface PieSliderListener {
+public interface SliderListener {
public void onNewValue(int value);
}