From 71578358bbe75e59e40bd80aadef2620cd784152 Mon Sep 17 00:00:00 2001 From: Jamie McDonald Date: Thu, 20 Mar 2014 00:04:47 +0100 Subject: [PATCH] Removed dated scale drawables and just draw circles --- .../android/crop/CropImageView.java | 2 +- .../android/crop/HighlightView.java | 75 +++++++----------- .../res/drawable-hdpi/crop__handle_height.png | Bin 2901 -> 0 bytes .../res/drawable-hdpi/crop__handle_width.png | Bin 2908 -> 0 bytes 4 files changed, 28 insertions(+), 49 deletions(-) delete mode 100644 lib/src/main/res/drawable-hdpi/crop__handle_height.png delete mode 100644 lib/src/main/res/drawable-hdpi/crop__handle_width.png diff --git a/lib/src/main/java/com/soundcloud/android/crop/CropImageView.java b/lib/src/main/java/com/soundcloud/android/crop/CropImageView.java index dd9cb46..63a28ee 100644 --- a/lib/src/main/java/com/soundcloud/android/crop/CropImageView.java +++ b/lib/src/main/java/com/soundcloud/android/crop/CropImageView.java @@ -8,7 +8,7 @@ import android.view.MotionEvent; import java.util.ArrayList; -class CropImageView extends ImageViewTouchBase { +public class CropImageView extends ImageViewTouchBase { ArrayList mHighlightViews = new ArrayList(); HighlightView mMotionHighlightView; diff --git a/lib/src/main/java/com/soundcloud/android/crop/HighlightView.java b/lib/src/main/java/com/soundcloud/android/crop/HighlightView.java index 4a00ad9..4cfc4ed 100644 --- a/lib/src/main/java/com/soundcloud/android/crop/HighlightView.java +++ b/lib/src/main/java/com/soundcloud/android/crop/HighlightView.java @@ -24,7 +24,6 @@ import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; -import android.graphics.drawable.Drawable; import android.view.View; /* @@ -44,6 +43,10 @@ class HighlightView { public static final int GROW_BOTTOM_EDGE = (1 << 4); public static final int MOVE = (1 << 5); + private static final int HIGHLIGHT_COLOR = 0xFF33B5E5; + private static final float HANDLE_RADIUS_DP = 12f; + private static final float OUTLINE_DP = 2f; + enum ModifyMode { None, Move, Grow } RectF mCropRect; // Image space @@ -54,21 +57,20 @@ class HighlightView { private final Paint mFocusPaint = new Paint(); private final Paint mNoFocusPaint = new Paint(); private final Paint mOutlinePaint = new Paint(); + private final Paint mHandlePaint = new Paint(); private View mContext; // View displaying image private ModifyMode mMode = ModifyMode.None; private boolean mMaintainAspectRatio; private float mInitialAspectRatio; - private Drawable mResizeDrawableWidth; - private Drawable mResizeDrawableHeight; + private float mHandleRadius; private boolean mIsFocused; public HighlightView(View context) { mContext = context; } - public void setup(Matrix m, Rect imageRect, RectF cropRect, - boolean maintainAspectRatio) { + public void setup(Matrix m, Rect imageRect, RectF cropRect, boolean maintainAspectRatio) { mMatrix = new Matrix(m); mCropRect = cropRect; @@ -80,18 +82,20 @@ class HighlightView { mFocusPaint.setARGB(125, 50, 50, 50); mNoFocusPaint.setARGB(125, 50, 50, 50); - mOutlinePaint.setStrokeWidth(2F * mContext.getResources().getDisplayMetrics().density); + mOutlinePaint.setStrokeWidth(dpToPx(OUTLINE_DP)); mOutlinePaint.setStyle(Paint.Style.STROKE); mOutlinePaint.setAntiAlias(true); + mHandlePaint.setColor(HIGHLIGHT_COLOR); + mHandlePaint.setStyle(Paint.Style.FILL); + mHandlePaint.setAntiAlias(true); + mHandleRadius = dpToPx(HANDLE_RADIUS_DP); + mMode = ModifyMode.None; - initResources(); } - private void initResources() { - android.content.res.Resources resources = mContext.getResources(); - mResizeDrawableWidth = resources.getDrawable(R.drawable.crop__handle_width); - mResizeDrawableHeight = resources.getDrawable(R.drawable.crop__handle_height); + private float dpToPx(float dp) { + return dp * mContext.getResources().getDisplayMetrics().density; } protected void draw(Canvas canvas) { @@ -105,7 +109,7 @@ class HighlightView { mContext.getDrawingRect(viewDrawingRect); path.addRect(new RectF(mDrawRect), Path.Direction.CW); - mOutlinePaint.setColor(0xFF33B5E5); + mOutlinePaint.setColor(HIGHLIGHT_COLOR); canvas.clipPath(path, Region.Op.DIFFERENCE); canvas.drawRect(viewDrawingRect, hasFocus() ? mFocusPaint : mNoFocusPaint); @@ -114,46 +118,21 @@ class HighlightView { canvas.drawPath(path, mOutlinePaint); if (mMode == ModifyMode.Grow) { - int left = mDrawRect.left + 1; - int right = mDrawRect.right + 1; - int top = mDrawRect.top + 4; - int bottom = mDrawRect.bottom + 3; - - int widthWidth = mResizeDrawableWidth.getIntrinsicWidth() / 2; - int widthHeight = mResizeDrawableWidth.getIntrinsicHeight() / 2; - int heightHeight = mResizeDrawableHeight.getIntrinsicHeight() / 2; - int heightWidth = mResizeDrawableHeight.getIntrinsicWidth() / 2; - - int xMiddle = mDrawRect.left + ((mDrawRect.right - mDrawRect.left) / 2); - int yMiddle = mDrawRect.top + ((mDrawRect.bottom - mDrawRect.top) / 2); - - mResizeDrawableWidth.setBounds(left - widthWidth, - yMiddle - widthHeight, - left + widthWidth, - yMiddle + widthHeight); - mResizeDrawableWidth.draw(canvas); - - mResizeDrawableWidth.setBounds(right - widthWidth, - yMiddle - widthHeight, - right + widthWidth, - yMiddle + widthHeight); - mResizeDrawableWidth.draw(canvas); - - mResizeDrawableHeight.setBounds(xMiddle - heightWidth, - top - heightHeight, - xMiddle + heightWidth, - top + heightHeight); - mResizeDrawableHeight.draw(canvas); - - mResizeDrawableHeight.setBounds(xMiddle - heightWidth, - bottom - heightHeight, - xMiddle + heightWidth, - bottom + heightHeight); - mResizeDrawableHeight.draw(canvas); + drawHandles(canvas); } } } + private void drawHandles(Canvas canvas) { + int xMiddle = mDrawRect.left + ((mDrawRect.right - mDrawRect.left) / 2); + int yMiddle = mDrawRect.top + ((mDrawRect.bottom - mDrawRect.top) / 2);; + + canvas.drawCircle(mDrawRect.left, yMiddle, mHandleRadius, mHandlePaint); + canvas.drawCircle(xMiddle, mDrawRect.top, mHandleRadius, mHandlePaint); + canvas.drawCircle(mDrawRect.right, yMiddle, mHandleRadius, mHandlePaint); + canvas.drawCircle(xMiddle, mDrawRect.bottom, mHandleRadius, mHandlePaint); + } + public void setMode(ModifyMode mode) { if (mode != mMode) { mMode = mode; diff --git a/lib/src/main/res/drawable-hdpi/crop__handle_height.png b/lib/src/main/res/drawable-hdpi/crop__handle_height.png deleted file mode 100644 index dc157eda1e961245dffcd4e34cb3478d2d0668f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2901 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 diff --git a/lib/src/main/res/drawable-hdpi/crop__handle_width.png b/lib/src/main/res/drawable-hdpi/crop__handle_width.png deleted file mode 100644 index b3f4ee0ef80f22bfdf695e4500087c104af73b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2908 zcmV-i3#0UjP)RL6%O{(ciW3t(H?Hae+e|&3vL})Z|<2F8a({_>2YP(V^!K%bZSP;Sb zidL(U8kH&n@@58R2BzQd^jsWUtV%|ku*wjAZ1~RfFvg;&m1~*=(GU?1|)`uhY$4DiPdU-QBhHG?dj8}g%>Yg zEZ|$UQW_*_$F^^&dNSYyz9(&zQgzrP7EIBWTp9Q4|{+E3V$k8dAR9ELWy?ptS3JVMA+O=zBx7z`58+_`g~m6w;_mzu@gb#BU~3B-hnO_c&w*kp-`(e>-s#s8L;mTETNUtPI!<*)qr znVhc<>8W3vq(TtpIdtK|g&(kqegy5s$H&v6MT={DvQuN%Pet>MKdbMEkG|U$SJ$r!g@xsdzAD$`o3$Vg>b7Iez>&6&Dwa-=(Fc znK?N*`}yY+NwigssIMf=GS&^7J9q8}vdOtKYG=^g$tzNyF-lhUPzy*A4 zU2uj7&Y^1BG-_$FckkXKh7B9`6Qp1;k+86^w?d1G01rDuks@-Qyb5@wlQelFsc12R zC-wVm4i=u^VjjLt1QnS%b0!=R%+>2R~z+&?-x`iD-Z^R)+YZ zQ>2#-)*`9IMhkna?_xr8A}#{2KT=au&DqFp%FfQF=H_NXBBfU!*;rFk6CFKz6j_YW zyuV`tC-4Hd8%cv2NqD8uAw!15@kEZ`w<27$KZDiP)rwWapHKcpER%2#>7rg6HZ!3G ztJO*w85yEI`tfI6-~?XaX8iFol$f+ghFC0?IJ_0C=KV1lm}PNs37cpRIhY{&fPjQv zJB6gf;UJsMM!);&E0LpmGjmU2a$>wbefo@+9@gaUXxvE#^BOT0gL3SV=A>Ux2i~!u zpn%SvJu3#pJzTNXVK5lQT+_@ejV5yNcrMunZ8I{CvZ=Swym|9rft zy&|dYw&8u(ty?D?gYb?lPDOa0Dju`*)#3Kvsag+pl)l(o(%!v$g=5jf<3`dZNxIZX z;sJYqdlf2IR#xhEia3aY*RNksef#zeC^1F)_3KBUfBtJ4K74q4+|?4`1#aM%n_F#a z<_g=ib2xZ}M%d_;6Irt$u3;N;>(;GeyB<4h?xq+T8YY~FFROib(}j#2Ig$<>I6&dy z;UaVLR)ANAvq$nfN~@YCakGUpj|U)!oorvS4P+_+vTN5ae&fSBXbk|M5+xaM zI$LD|;UsKz9yxMEtQpb2FF1e~?SWs}W!ECv%(>$|23m_oWo2dUnTwtv9-7Q1N=r`{ z$+EjC8jJ?rwnmdt5K~Na!i0%*_{d=a2>tppK5zmra05ShXpwYDH8-$%+(qN_=g<2z z2&AFDfo?EJHH$>R*Rd6xz%6&y?OKk9 z6q4+z@?ZitZrt#BAV^(Z9o5#>3U4@P&K#i`n4_*H`8mc~ym&F~-~Sm^RaH@aeZ61f z0;lw_d2S>%*OS|eNl>OHM zY_c;f7RzDmZNg-cufFMmObDjR*x64te8j0-A-=wQnyR<2T1w2U<_@m0Yu<%pDOeom zPnJG?#$o1|Q98bRp z$d2ekZa-P6G-k{g@g*3m5&ZU6?%lg5l5BiG!EZN^CG17NWUu-+&l6ef1YObr_1xJy zCOe(`_%X}(1-YM)4@E^M^B!T z>>~-k!-Qw@6{M%iLknIHU@?v>IK{%m3S{O|C+D3Y$JU}6BJ`5~?mq9@OA_xb|3kZB zJVuPH%fq@#Wqi9$ug<$#<$UXK-j&;VbuQgaQjM_Z$>m_uKDn%r>2Pvc&ujWxx{IV5 zY2{;*L1hcn<+f^Y1$yvKB>$I-k^T?Lw