From 9a90f8db00e1c54c1f1f51083d0eabe184201d2c Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 4 Dec 2016 15:57:33 +0100 Subject: [PATCH 1/3] Added clear color (implements and closes #6) --- .../com/simplemobiletools/draw/MyCanvas.java | 17 ++++++++++++++++- .../draw/activities/MainActivity.java | 14 +++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java b/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java index 607712d..9072c21 100644 --- a/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java +++ b/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java @@ -14,6 +14,8 @@ import java.util.LinkedHashMap; import java.util.Map; public class MyCanvas extends View { + private Paint mBackgroundPaint; + private Paint mPaint; private Path mPath; private Map mPaths; @@ -28,6 +30,10 @@ public class MyCanvas extends View { public MyCanvas(Context context, AttributeSet attrs) { super(context, attrs); + mBackgroundPaint = new Paint(); + mBackgroundPaint.setColor(Color.WHITE); + mBackgroundPaint.setStyle(Paint.Style.FILL); + mPath = new Path(); mPaint = new Paint(); mPaint.setColor(Color.BLACK); @@ -60,6 +66,10 @@ public class MyCanvas extends View { invalidate(); } + public int getBackgroundColor() { + return mBackgroundPaint.getColor(); + } + public void setColor(int newColor) { mColor = newColor; } @@ -76,6 +86,9 @@ public class MyCanvas extends View { protected void onDraw(Canvas canvas) { super.onDraw(canvas); + // Clear canvas background + canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), mBackgroundPaint); + for (Map.Entry entry : mPaths.entrySet()) { mPaint.setColor(entry.getValue()); canvas.drawPath(entry.getKey(), mPaint); @@ -85,7 +98,9 @@ public class MyCanvas extends View { canvas.drawPath(mPath, mPaint); } - public void clearCanvas(){ + public void clearCanvas(int color) { + mBackgroundPaint.setColor(color); + mPath.reset(); mPaths.clear(); pathsUpdated(); diff --git a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java index 63b9c00..b1ab380 100644 --- a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java @@ -85,7 +85,19 @@ public class MainActivity extends SimpleActivity implements MyCanvas.PathsChange startActivity(new Intent(getApplicationContext(), SettingsActivity.class)); return true; case R.id.clear: - mMyCanvas.clearCanvas(); + AmbilWarnaDialog dialog = new AmbilWarnaDialog(this, mMyCanvas.getBackgroundColor(), + new AmbilWarnaDialog.OnAmbilWarnaListener() { + @Override + public void onCancel(AmbilWarnaDialog dialog) { + } + + @Override + public void onOk(AmbilWarnaDialog dialog, int pickedColor) { + mMyCanvas.clearCanvas(pickedColor); + } + }); + + dialog.show(); return true; case R.id.about: startActivity(new Intent(getApplicationContext(), AboutActivity.class)); From f8bd541f9acf91b6a75d620bedcdb6bbe948cb5a Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 4 Dec 2016 17:40:13 +0100 Subject: [PATCH 2/3] Separated background color functionality from Clear action --- .../com/simplemobiletools/draw/MyCanvas.java | 17 +------------- .../draw/activities/MainActivity.java | 23 +++++++++++-------- app/src/main/res/menu/menu.xml | 4 ++++ app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 21 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java b/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java index 9072c21..ab32d8a 100644 --- a/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java +++ b/app/src/main/java/com/simplemobiletools/draw/MyCanvas.java @@ -14,8 +14,6 @@ import java.util.LinkedHashMap; import java.util.Map; public class MyCanvas extends View { - private Paint mBackgroundPaint; - private Paint mPaint; private Path mPath; private Map mPaths; @@ -30,10 +28,6 @@ public class MyCanvas extends View { public MyCanvas(Context context, AttributeSet attrs) { super(context, attrs); - mBackgroundPaint = new Paint(); - mBackgroundPaint.setColor(Color.WHITE); - mBackgroundPaint.setStyle(Paint.Style.FILL); - mPath = new Path(); mPaint = new Paint(); mPaint.setColor(Color.BLACK); @@ -66,10 +60,6 @@ public class MyCanvas extends View { invalidate(); } - public int getBackgroundColor() { - return mBackgroundPaint.getColor(); - } - public void setColor(int newColor) { mColor = newColor; } @@ -86,9 +76,6 @@ public class MyCanvas extends View { protected void onDraw(Canvas canvas) { super.onDraw(canvas); - // Clear canvas background - canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), mBackgroundPaint); - for (Map.Entry entry : mPaths.entrySet()) { mPaint.setColor(entry.getValue()); canvas.drawPath(entry.getKey(), mPaint); @@ -98,9 +85,7 @@ public class MyCanvas extends View { canvas.drawPath(mPath, mPaint); } - public void clearCanvas(int color) { - mBackgroundPaint.setColor(color); - + public void clearCanvas() { mPath.reset(); mPaths.clear(); pathsUpdated(); diff --git a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java index b1ab380..39dcb42 100644 --- a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Bundle; @@ -85,17 +86,21 @@ public class MainActivity extends SimpleActivity implements MyCanvas.PathsChange startActivity(new Intent(getApplicationContext(), SettingsActivity.class)); return true; case R.id.clear: - AmbilWarnaDialog dialog = new AmbilWarnaDialog(this, mMyCanvas.getBackgroundColor(), + mMyCanvas.clearCanvas(); + return true; + case R.id.change_background: + int oldColor = ((ColorDrawable)mMyCanvas.getBackground()).getColor(); + AmbilWarnaDialog dialog = new AmbilWarnaDialog(this, oldColor, new AmbilWarnaDialog.OnAmbilWarnaListener() { - @Override - public void onCancel(AmbilWarnaDialog dialog) { - } + @Override + public void onCancel(AmbilWarnaDialog dialog) { + } - @Override - public void onOk(AmbilWarnaDialog dialog, int pickedColor) { - mMyCanvas.clearCanvas(pickedColor); - } - }); + @Override + public void onOk(AmbilWarnaDialog dialog, int pickedColor) { + mMyCanvas.setBackgroundColor(pickedColor); + } + }); dialog.show(); return true; diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 38445c6..51b0885 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -15,6 +15,10 @@ android:id="@+id/clear" android:title="@string/clear" app:showAsAction="never"/> + Ajustes Tema oscuro Limpiar + Cambiar fondo Acerca de diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 80ab415..eca8301 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -17,6 +17,7 @@ Settings Dark theme Clear + Change background About From e6a12682072070381f70013437f7a2144ce59e88 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 4 Dec 2016 18:00:50 +0100 Subject: [PATCH 3/3] Changed Undo arrow color based on the selected background --- .../com/simplemobiletools/draw/Utils.java | 18 ++++++++++++++++++ .../draw/activities/MainActivity.java | 6 ++++++ app/src/main/res/layout/activity_main.xml | 2 +- .../mipmap-hdpi/{undo.png => undo_black.png} | Bin app/src/main/res/mipmap-hdpi/undo_white.png | Bin 0 -> 477 bytes .../mipmap-mdpi/{undo.png => undo_black.png} | Bin app/src/main/res/mipmap-mdpi/undo_white.png | Bin 0 -> 339 bytes .../mipmap-xhdpi/{undo.png => undo_black.png} | Bin app/src/main/res/mipmap-xhdpi/undo_white.png | Bin 0 -> 606 bytes .../{undo.png => undo_black.png} | Bin app/src/main/res/mipmap-xxhdpi/undo_white.png | Bin 0 -> 894 bytes .../{undo.png => undo_black.png} | Bin .../main/res/mipmap-xxxhdpi/undo_white.png | Bin 0 -> 1169 bytes 13 files changed, 25 insertions(+), 1 deletion(-) rename app/src/main/res/mipmap-hdpi/{undo.png => undo_black.png} (100%) create mode 100644 app/src/main/res/mipmap-hdpi/undo_white.png rename app/src/main/res/mipmap-mdpi/{undo.png => undo_black.png} (100%) create mode 100644 app/src/main/res/mipmap-mdpi/undo_white.png rename app/src/main/res/mipmap-xhdpi/{undo.png => undo_black.png} (100%) create mode 100644 app/src/main/res/mipmap-xhdpi/undo_white.png rename app/src/main/res/mipmap-xxhdpi/{undo.png => undo_black.png} (100%) create mode 100644 app/src/main/res/mipmap-xxhdpi/undo_white.png rename app/src/main/res/mipmap-xxxhdpi/{undo.png => undo_black.png} (100%) create mode 100644 app/src/main/res/mipmap-xxxhdpi/undo_white.png diff --git a/app/src/main/java/com/simplemobiletools/draw/Utils.java b/app/src/main/java/com/simplemobiletools/draw/Utils.java index ecdea08..7115145 100644 --- a/app/src/main/java/com/simplemobiletools/draw/Utils.java +++ b/app/src/main/java/com/simplemobiletools/draw/Utils.java @@ -1,10 +1,28 @@ package com.simplemobiletools.draw; import android.content.Context; +import android.graphics.Color; import android.widget.Toast; public class Utils { + private final static double BRIGHTNESS_CUTOFF = 130.0; + public static void showToast(Context cxt, int msgId) { Toast.makeText(cxt, cxt.getResources().getString(msgId), Toast.LENGTH_SHORT).show(); } + + // Used to determine the best foreground color (black or white) given a background color + public static boolean shouldUseWhite(int color) { + float r, g, b; + r = Color.red(color); + g = Color.green(color); + b = Color.blue(color); + + double brightness = Math.sqrt( + r * r * .299 + + g * g * .587 + + b * b * .114); + + return brightness < BRIGHTNESS_CUTOFF; + } } diff --git a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java index 39dcb42..6a4aafb 100644 --- a/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/draw/activities/MainActivity.java @@ -19,6 +19,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; +import android.widget.ImageView; import android.widget.Toast; import com.simplemobiletools.draw.Config; @@ -98,6 +99,11 @@ public class MainActivity extends SimpleActivity implements MyCanvas.PathsChange @Override public void onOk(AmbilWarnaDialog dialog, int pickedColor) { + if (Utils.shouldUseWhite(pickedColor)) { + ((ImageView)mUndoBtn).setImageResource(R.mipmap.undo_white); + } else { + ((ImageView)mUndoBtn).setImageResource(R.mipmap.undo_black); + } mMyCanvas.setBackgroundColor(pickedColor); } }); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e40ba7d..ab8c976 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -23,7 +23,7 @@ android:layout_alignParentRight="true" android:layout_below="@id/color_picker" android:padding="@dimen/icon_padding" - android:src="@mipmap/undo" + android:src="@mipmap/undo_black" android:visibility="gone"/> diff --git a/app/src/main/res/mipmap-hdpi/undo.png b/app/src/main/res/mipmap-hdpi/undo_black.png similarity index 100% rename from app/src/main/res/mipmap-hdpi/undo.png rename to app/src/main/res/mipmap-hdpi/undo_black.png diff --git a/app/src/main/res/mipmap-hdpi/undo_white.png b/app/src/main/res/mipmap-hdpi/undo_white.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1e3d866125bbeceb283decc5ed3b9f0f696bbe GIT binary patch literal 477 zcmV<30V4j1P)D3GFD?@r<9B$_L#^*SyGd&g+Jmb7Sxo&$S^B*)YMEYl&O*2x^UI}yvXEwskcI2a*TTj-XPl1no0^H|`&&J`&+2iOWm%SGS(at}!x7@3b0c$+x9+x;wpo2(B+Ch~TpGoc$kEya<2PKmZ(&Q`Y`$Cfg z0w|GGrbCv-v?+_A7-<*xiO60=gQ5iTNay%~-h0k!pkJf{b!OLX@(Kv9^NOT?(5J;6 zu5pDM+@(XGh@@V!TL2~WmKrD7HuWu>pvDG&s?VNTgPw7U94>J=j?-q$wBGn64b$Up`%kb!;z6yinR TJ@r{w00000NkvXXu0mjf?+@0e literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/undo.png b/app/src/main/res/mipmap-mdpi/undo_black.png similarity index 100% rename from app/src/main/res/mipmap-mdpi/undo.png rename to app/src/main/res/mipmap-mdpi/undo_black.png diff --git a/app/src/main/res/mipmap-mdpi/undo_white.png b/app/src/main/res/mipmap-mdpi/undo_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c28d0a4a8bf7746fff7a34a8df15aabc510bc9 GIT binary patch literal 339 zcmV-Z0j&OsP)9KVVSO%^j7PWo5BRDgS~&Qbd>xvN%`yeR`YD z)4BDW`aIihmI&-SWsJ<(rgS(atdBC2BU0ko1l(JHGNkqUyB%Gpj!n6!HqQ(vxYCmi;AOMb-;F8eJ8CL;#qq`0VG)Wkymp(?Q z(`28N?w+ZuK(Pmw81!Da#v->AOG(0jPuBdmb?aw^cW^y1rUS1uh=k2>hl?{}70`e8 zC>OYBD?m7LPu>@kI-nD?e2{mj0O7UfhsyeG@4rdyKWO=UPVqS?5yQbF5O#T${|nBnhItC? zFF1=Flw0o3d1#irC%G&0*~$$kcvP3oNNI_llhiJ^LB?sGo!SpS+o>}aOfS=2Q0F8q zt~qJL6``gsS~ake<1QEYNahySGrW0t_K3dcEGA}@j%HgVpTR8~wAb;}TE2;#8R z`z-C6s&`RDbb`|jXTj9`8=|}uoGjcWOH->JF()+0IIr>HY<`l&{6P3?=pqOE<(4k< zdY?piYgh6WPm{KJuKhK1fu-4kGWngy>YRGtKIVGA@@{ri7@xs$TRx#_8~oa4KKw75 z>ByfjFL9gDw2fwY*BtgF?Unk_Gq;6pTkmg`lZeWfy}vwApQQF;QDae<6_bXV3#UloL`I%BDHqOLavgC9RKIm9 z)U6{;*<|8+_D%jz7Pj>tSydh~S&eOzjoq-4|@r6@6s*x%0H# z9qvj4y|SXY`7UuC#@&oBOhp5KoGX32c(TC6u=gno1pGDnUd5k`c_*l{$bv#=@z<=H#XHym-2sU?m6H! z-y@Jov-8fD#HHC$3aWuZ{Ra9+_;e?H3;!bYna%SWP%fylyHfqCgV!RTV+Pqw{ZbyD zA%}F*OkXulaWS1Csu0Y-MCH}7HEy;OCTVcnKm7doBC}@aDudO2Kyj}Jybq<1uVoJs z$~~?#U(Un(iq{XTFAhhpVp|x45+a*{^W-%~j@=omD@#N6stm zF;UO`Y_*8%-#hWSA&*M0nXOm#N)>8gIB(JAzQ5bDf5pt@GHE;iKK$TsUE;t5OymkL z{=Y6`dBiNJ;xR$Nv5AFKs0Bi)cnE-aU||jj)#QgRz#{nPiSm+&bnj|Ve(`kmb6Mw< G&;$TOr*3@! literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/undo.png b/app/src/main/res/mipmap-xxxhdpi/undo_black.png similarity index 100% rename from app/src/main/res/mipmap-xxxhdpi/undo.png rename to app/src/main/res/mipmap-xxxhdpi/undo_black.png diff --git a/app/src/main/res/mipmap-xxxhdpi/undo_white.png b/app/src/main/res/mipmap-xxxhdpi/undo_white.png new file mode 100644 index 0000000000000000000000000000000000000000..9959132c610b8a6556c0206a52b4ede0702f9853 GIT binary patch literal 1169 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE1xWt5x}=AJfhEGz#WAFU@y)?Tpcq5Lg1;-p zS2BT^=pgNWUHoRP#}<9_f9pJtUH#W#;j?8uY7;l?N#5niuahZgo9S|K(F_F@iJ5*BGZ9&}*n=V%^{$ z;AmXFsd>7khkU%zA&bdpHaN^He)419`k!+S?>Q{@?y=alg3jLz+c<+_T&?vl9@iJS zEU~wwSbD1;bA-Z&%q7iob?&QVU`Pd|$9t(MXJug~O|2l8v6Zx47yz z#xCU*i47_xQ=)z|JY&)Q;}s;8+FZ+E+@!;;veHs+15bj(hAHNrN$eiSj`?O1iiKn=p<@(B?JEzihw%MOh;eH^J`=eswTQ<9t!lx_zxeiFaJ9xai z=Jm^T!@1A6zB4X6u}S3oty>Zcf9zXyDYv0~<-yH+Ok#b4bN)`*#Wi8EsJ>eC;li%m z{j(X^BiqCm#~u+r6Bsi)mf7OG*dB>@QEi&bGNodfB$hGiFI)XY;Hb$Vqi_bhMO^yF zKHqd@{9NU^lko#j+?#Ui%QLp0Wn@U7_d7R5=<>fOUhE8W6eEsXER$7y%FtlU5?(BJ zdE03wje{0xe_i*gGzgg(wnnz6Fiu&}8hK_{q?iNeErZuAs+$Ek+XJ& ziQ7({1|gm2>^`@2c^9ypeZqN9W$GmcuM54N)=Pm}rwFs;PuXGuG;ET3Mf6j~DGBBW zrH@T#3uy8_DY(b_3FDLpaZT5i`4_O*IkV)>%c^8h%}}i9Z)IG-GGA!R)78&qol`;+05aRo_5c6? literal 0 HcmV?d00001