From 19e0cdc44496129407f55aed0efe8e9548ab66b4 Mon Sep 17 00:00:00 2001 From: HalfDane Date: Sat, 27 Jul 2024 13:25:24 +0200 Subject: [PATCH] New Color picker, bump Android minSdk from 16 to 18, closes #1428 (PR #2203 by @halfdane) * fixes #1428 by introducing a new color picker * Update preferences_master.xml * Restore preference --------- Co-authored-by: Gregor Santner --- app/build.gradle | 4 +- .../markor/format/ActionButtonBase.java | 45 -- .../base/GsPreferenceFragmentBase.java | 12 +- app/src/main/res/xml/preferences_master.xml | 11 +- .../QuadFlask-colorpicker/.gitignore | 1 - .../LICENSE-QuadFlask.md | 13 - .../QuadFlask-colorpicker/README.md | 142 ----- .../QuadFlask-colorpicker/build.gradle | 28 - .../QuadFlask-colorpicker/proguard-rules.pro | 17 - .../flask/colorpicker/ApplicationTest.java | 13 - .../src/main/AndroidManifest.xml | 5 - .../colorpicker/CircleColorDrawable.java | 43 -- .../com/flask/colorpicker/ColorCircle.java | 54 -- .../colorpicker/ColorPickerPreference.java | 168 ------ .../flask/colorpicker/ColorPickerView.java | 550 ------------------ .../colorpicker/OnColorChangedListener.java | 5 - .../colorpicker/OnColorSelectedListener.java | 5 - .../java/com/flask/colorpicker/Utils.java | 40 -- .../builder/ColorPickerClickListener.java | 10 - .../builder/ColorPickerDialogBuilder.java | 288 --------- .../builder/ColorWheelRendererBuilder.java | 18 - .../colorpicker/builder/PaintBuilder.java | 82 --- .../renderer/AbsColorWheelRenderer.java | 34 -- .../renderer/ColorWheelRenderOption.java | 10 - .../renderer/ColorWheelRenderer.java | 17 - .../renderer/FlowerColorWheelRenderer.java | 50 -- .../renderer/SimpleColorWheelRenderer.java | 46 -- .../colorpicker/slider/AbsCustomSlider.java | 142 ----- .../flask/colorpicker/slider/AlphaSlider.java | 83 --- .../colorpicker/slider/LightnessSlider.java | 74 --- .../slider/OnValueChangedListener.java | 5 - .../src/main/res/layout/color_preview.xml | 8 - .../src/main/res/layout/color_selector.xml | 12 - .../src/main/res/layout/color_widget.xml | 7 - .../src/main/res/layout/picker_edit.xml | 7 - .../src/main/res/values/attrs.xml | 19 - .../src/main/res/values/dimens.xml | 11 - .../src/main/res/values/styles.xml | 11 - .../colorpicker/ColorPickerPreference.java | 187 ------ settings.gradle | 1 - 40 files changed, 18 insertions(+), 2260 deletions(-) delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/.gitignore delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/LICENSE-QuadFlask.md delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/README.md delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/build.gradle delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/proguard-rules.pro delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/androidTest/java/com/flask/colorpicker/ApplicationTest.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/AndroidManifest.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/CircleColorDrawable.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorCircle.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerPreference.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerView.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorChangedListener.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorSelectedListener.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/Utils.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerClickListener.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerDialogBuilder.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorWheelRendererBuilder.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/PaintBuilder.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/AbsColorWheelRenderer.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderOption.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderer.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/FlowerColorWheelRenderer.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/SimpleColorWheelRenderer.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AbsCustomSlider.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AlphaSlider.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/LightnessSlider.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/OnValueChangedListener.java delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_preview.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_selector.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_widget.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/picker_edit.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/attrs.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/dimens.xml delete mode 100644 app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/styles.xml delete mode 100644 app/thirdparty/java/other/com/flask/colorpicker/ColorPickerPreference.java diff --git a/app/build.gradle b/app/build.gradle index 8c60de7d4..d2a194761 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ if (enable_plugin_kotlin) { apply plugin: 'kotlin-kapt' } -rootProject.ext.version_minSdk = 16 +rootProject.ext.version_minSdk = 18 // https://github.com/vsch/flexmark-java/releases ext.version_library_flexmark = "0.42.14" @@ -142,7 +142,7 @@ dependencies { implementation 'com.github.AppIntro:AppIntro:6.2.0' implementation 'com.kailashdabhi:om-recorder:1.1.5' implementation 'com.github.mertakdut:EpubParser:1.0.95' - implementation project(':app:thirdparty-lib-src:QuadFlask-colorpicker') + implementation 'com.github.martin-stone:hsv-alpha-color-picker-android:3.1.0' // Tool libraries //noinspection AnnotationProcessorOnCompilePath diff --git a/app/src/main/java/net/gsantner/markor/format/ActionButtonBase.java b/app/src/main/java/net/gsantner/markor/format/ActionButtonBase.java index 99761ef6c..f628333e6 100644 --- a/app/src/main/java/net/gsantner/markor/format/ActionButtonBase.java +++ b/app/src/main/java/net/gsantner/markor/format/ActionButtonBase.java @@ -32,11 +32,6 @@ import androidx.annotation.StringRes; import androidx.appcompat.widget.TooltipCompat; -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.Utils; -import com.flask.colorpicker.builder.ColorPickerClickListener; -import com.flask.colorpicker.builder.ColorPickerDialogBuilder; - import net.gsantner.markor.ApplicationObject; import net.gsantner.markor.R; import net.gsantner.markor.activity.DocumentActivity; @@ -993,46 +988,6 @@ public void runSpecialKeyAction() { }); } - public void showColorPickerDialog() { - MarkorDialogFactory.showColorSelectionModeDialog(getActivity(), new GsCallback.a1() { - @Override - public void callback(Integer colorInsertType) { - ColorPickerDialogBuilder - .with(_hlEditor.getContext()) - .setTitle(R.string.color) - .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) - .density(12) - .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { - @Override - public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - String hex = Utils.getHexString(selectedColor, false).toLowerCase(); - int pos = _hlEditor.getSelectionStart(); - switch (colorInsertType) { - case R.string.hexcode: { - _hlEditor.getText().insert(pos, hex); - break; - } - case R.string.foreground: { - _hlEditor.getText().insert(pos, ""); - _hlEditor.setSelection(_hlEditor.getSelectionStart() - 7); - break; - } - case R.string.background: { - _hlEditor.getText().insert(pos, ""); - _hlEditor.setSelection(_hlEditor.getSelectionStart() - 7); - break; - } - } - - } - }) - .setNegativeButton(R.string.cancel, null) - .build() - .show(); - } - }); - } - public void runJumpBottomTopAction(ActionItem.DisplayMode displayMode) { if (displayMode == ActionItem.DisplayMode.EDIT) { int pos = _hlEditor.getSelectionStart(); diff --git a/app/src/main/java/net/gsantner/opoc/frontend/base/GsPreferenceFragmentBase.java b/app/src/main/java/net/gsantner/opoc/frontend/base/GsPreferenceFragmentBase.java index a52f95a65..732bc58dc 100644 --- a/app/src/main/java/net/gsantner/opoc/frontend/base/GsPreferenceFragmentBase.java +++ b/app/src/main/java/net/gsantner/opoc/frontend/base/GsPreferenceFragmentBase.java @@ -74,6 +74,8 @@ import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; +import com.rarepebble.colorpicker.ColorPreference; + import net.gsantner.opoc.model.GsSharedPreferencesPropertyBackend; import net.gsantner.opoc.util.GsContextUtils; import net.gsantner.opoc.wrapper.GsCallback; @@ -154,7 +156,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { if (activity != null && activity.getTheme() != null) { TypedArray array = activity.getTheme().obtainStyledAttributes(new int[]{android.R.attr.colorBackground}); - int bgcolor = array.getColor(0, 0xFFFFFFFF); + int bgcolor = array.getColor(0, 0xFFFFFF); _defaultIconTintColor = _cu.shouldColorOnTopBeLight(bgcolor) ? Color.WHITE : Color.BLACK; } @@ -295,6 +297,14 @@ protected void onPreferenceChanged(SharedPreferences prefs, String key) { } } + public void onDisplayPreferenceDialog(Preference preference) { + if (preference instanceof ColorPreference) { + ((ColorPreference) preference).showDialog(this, 0); + } else { + super.onDisplayPreferenceDialog(preference); + } + } + @Override @Deprecated public boolean onPreferenceTreeClick(Preference preference) { diff --git a/app/src/main/res/xml/preferences_master.xml b/app/src/main/res/xml/preferences_master.xml index e61f6fedf..c2e03f372 100644 --- a/app/src/main/res/xml/preferences_master.xml +++ b/app/src/main/res/xml/preferences_master.xml @@ -200,26 +200,25 @@ android:summary="@string/background_foreground_color_in_editor_works_dark_light" android:title="@string/basic_color_scheme"> - - - - - check out latest version at [releases](https://github.com/QuadFlask/colorpicker/releases) - -## Usage -As a dialog -```java -ColorPickerDialogBuilder - .with(context) - .setTitle("Choose color") - .initialColor(currentBackgroundColor) - .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) - .density(12) - .setOnColorSelectedListener(new OnColorSelectedListener() { - @Override - public void onColorSelected(int selectedColor) { - toast("onColorSelected: 0x" + Integer.toHexString(selectedColor)); - } - }) - .setPositiveButton("ok", new ColorPickerClickListener() { - @Override - public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - changeBackgroundColor(selectedColor); - } - }) - .setNegativeButton("cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }) - .build() - .show(); -``` -As a widget -```xml - - - - - -``` - - -## To do - -* gradle support -* performance improvement -* refactoring - - -## License - -``` -Copyright 2014-2015 QuadFlask - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/build.gradle b/app/thirdparty-lib-src/QuadFlask-colorpicker/build.gradle deleted file mode 100644 index fa244b77e..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -apply plugin: 'com.android.library' - -android { - buildToolsVersion rootProject.ext.version_buildTools - compileSdkVersion rootProject.ext.version_compileSdk - - defaultConfig { - minSdkVersion 14 - targetSdkVersion rootProject.ext.version_compileSdk - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - namespace 'com.flask.colorpicker' - lint { - abortOnError false - checkReleaseBuilds false - disable 'MissingTranslation', 'InvalidPackage', 'ObsoleteLintCustomCheck', 'DefaultLocale', 'UnusedAttribute', 'VectorRaster', 'InflateParams', 'IconLocation', 'UnusedResources', 'TypographyEllipsis' - } -} - - -dependencies { - implementation 'androidx.appcompat:appcompat:1.0.0' -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/proguard-rules.pro b/app/thirdparty-lib-src/QuadFlask-colorpicker/proguard-rules.pro deleted file mode 100644 index 73f713701..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Users/flask/Documents/android-sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/androidTest/java/com/flask/colorpicker/ApplicationTest.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/androidTest/java/com/flask/colorpicker/ApplicationTest.java deleted file mode 100644 index 9aca1fc21..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/androidTest/java/com/flask/colorpicker/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.flask.colorpicker; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/AndroidManifest.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/AndroidManifest.xml deleted file mode 100644 index 695cf9443..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/AndroidManifest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/CircleColorDrawable.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/CircleColorDrawable.java deleted file mode 100644 index 2407ee911..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/CircleColorDrawable.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.flask.colorpicker; - -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.drawable.ColorDrawable; - -import com.flask.colorpicker.builder.PaintBuilder; - -public class CircleColorDrawable extends ColorDrawable { - private float strokeWidth; - private Paint strokePaint = PaintBuilder.newPaint().style(Paint.Style.STROKE).stroke(strokeWidth).color(0xffffffff).build(); - private Paint fillPaint = PaintBuilder.newPaint().style(Paint.Style.FILL).color(0).build(); - private Paint fillBackPaint = PaintBuilder.newPaint().shader(PaintBuilder.createAlphaPatternShader(16)).build(); - - public CircleColorDrawable() { - super(); - } - - public CircleColorDrawable(int color) { - super(color); - } - - @Override - public void draw(Canvas canvas) { - canvas.drawColor(0); - - int width = canvas.getWidth(); - float radius = width / 2f; - strokeWidth = radius / 12f; - - this.strokePaint.setStrokeWidth(strokeWidth); - this.fillPaint.setColor(getColor()); - canvas.drawCircle(radius, radius, radius - strokeWidth * 1.5f, fillBackPaint); - canvas.drawCircle(radius, radius, radius - strokeWidth * 1.5f, fillPaint); - canvas.drawCircle(radius, radius, radius - strokeWidth, strokePaint); - } - - @Override - public void setColor(int color) { - super.setColor(color); - invalidateSelf(); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorCircle.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorCircle.java deleted file mode 100644 index ba28baa62..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorCircle.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.flask.colorpicker; - -import android.graphics.Color; - -public class ColorCircle { - private float x, y; - private float[] hsv = new float[3]; - private float[] hsvClone; - private int color; - - public ColorCircle(float x, float y, float[] hsv) { - set(x, y, hsv); - } - - public double sqDist(float x, float y) { - double dx = this.x - x; - double dy = this.y - y; - return dx * dx + dy * dy; - } - - public float getX() { - return x; - } - - public float getY() { - return y; - } - - public float[] getHsv() { - return hsv; - } - - public float[] getHsvWithLightness(float lightness) { - if (hsvClone == null) - hsvClone = hsv.clone(); - hsvClone[0] = hsv[0]; - hsvClone[1] = hsv[1]; - hsvClone[2] = lightness; - return hsvClone; - } - - public void set(float x, float y, float[] hsv) { - this.x = x; - this.y = y; - this.hsv[0] = hsv[0]; - this.hsv[1] = hsv[1]; - this.hsv[2] = hsv[2]; - this.color = Color.HSVToColor(this.hsv); - } - - public int getColor() { - return color; - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerPreference.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerPreference.java deleted file mode 100644 index 792f51b1a..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerPreference.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.flask.colorpicker; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.graphics.Color; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.GradientDrawable; -import android.preference.Preference; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.view.View; -import android.widget.ImageView; - -import androidx.annotation.NonNull; - -import com.flask.colorpicker.builder.ColorPickerClickListener; -import com.flask.colorpicker.builder.ColorPickerDialogBuilder; - -public class ColorPickerPreference extends Preference { - - protected boolean alphaSlider; - protected boolean lightSlider; - - protected int selectedColor = 0; - - protected ColorPickerView.WHEEL_TYPE wheelType; - protected int density; - - private String pickerTitle; - private String pickerButtonCancel; - private String pickerButtonOk; - - protected ImageView colorIndicator; - - - public ColorPickerPreference(Context context) { - super(context); - } - - public ColorPickerPreference(Context context, AttributeSet attrs) { - super(context, attrs); - initWith(context, attrs); - } - - public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initWith(context, attrs); - } - - - private void initWith(Context context, AttributeSet attrs) { - final TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ColorPickerPreference); - - try { - alphaSlider = typedArray.getBoolean(R.styleable.ColorPickerPreference_alphaSlider, false); - lightSlider = typedArray.getBoolean(R.styleable.ColorPickerPreference_lightnessSlider, false); - - density = typedArray.getInt(R.styleable.ColorPickerPreference_density, 10); - wheelType = ColorPickerView.WHEEL_TYPE.indexOf(typedArray.getInt(R.styleable.ColorPickerPreference_wheelType, 0)); - - selectedColor = typedArray.getInt(R.styleable.ColorPickerPreference_initialColor, 0xffffffff); - - pickerTitle = typedArray.getString(R.styleable.ColorPickerPreference_pickerTitle); - if (pickerTitle==null) - pickerTitle = "Choose color"; - - pickerButtonCancel = typedArray.getString(R.styleable.ColorPickerPreference_pickerButtonCancel); - if (pickerButtonCancel==null) - pickerButtonCancel = "cancel"; - - pickerButtonOk = typedArray.getString(R.styleable.ColorPickerPreference_pickerButtonOk); - if (pickerButtonOk==null) - pickerButtonOk = "ok"; - - } finally { - typedArray.recycle(); - } - - setWidgetLayoutResource(R.layout.color_widget); - } - - - @Override - protected void onBindView(@NonNull View view) { - super.onBindView(view); - - Resources res = view.getContext().getResources(); - GradientDrawable colorChoiceDrawable = null; - - colorIndicator = (ImageView) view.findViewById(R.id.color_indicator); - - Drawable currentDrawable = colorIndicator.getDrawable(); - if (currentDrawable!=null && currentDrawable instanceof GradientDrawable) - colorChoiceDrawable = (GradientDrawable) currentDrawable; - - if (colorChoiceDrawable==null) { - colorChoiceDrawable = new GradientDrawable(); - colorChoiceDrawable.setShape(GradientDrawable.OVAL); - } - - int tmpColor = isEnabled() - ? selectedColor - : darken(selectedColor, .5f); - - colorChoiceDrawable.setColor(tmpColor); - colorChoiceDrawable.setStroke((int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, - 1, - res.getDisplayMetrics() - ), darken(tmpColor, .8f)); - - colorIndicator.setImageDrawable(colorChoiceDrawable); - } - - public void setValue(int value) { - if (callChangeListener(value)) { - selectedColor = value; - persistInt(value); - notifyChanged(); - } - } - - @Override - protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { - setValue(restoreValue ? getPersistedInt(0) : (Integer) defaultValue); - } - - - @Override - protected void onClick() { - ColorPickerDialogBuilder builder = ColorPickerDialogBuilder - .with(getContext()) - .setTitle(pickerTitle) - .initialColor(selectedColor) - .wheelType(wheelType) - .density(density) - .setPositiveButton(pickerButtonOk, new ColorPickerClickListener() { - @Override - public void onClick(DialogInterface dialog, int selectedColorFromPicker, Integer[] allColors) { - setValue(selectedColorFromPicker); - } - }) - .setNegativeButton(pickerButtonCancel, null); - - if (!alphaSlider && !lightSlider) builder.noSliders(); - else if (!alphaSlider) builder.lightnessSliderOnly(); - else if (!lightSlider) builder.alphaSliderOnly(); - - - builder - .build() - .show(); - } - - public static int darken(int color, float factor) { - int a = Color.alpha(color); - int r = Color.red(color); - int g = Color.green(color); - int b = Color.blue(color); - - return Color.argb(a, - Math.max((int)(r * factor), 0), - Math.max((int)(g * factor), 0), - Math.max((int)(b * factor), 0)); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerView.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerView.java deleted file mode 100644 index 92cee5e8b..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/ColorPickerView.java +++ /dev/null @@ -1,550 +0,0 @@ -package com.flask.colorpicker; - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; - -import com.flask.colorpicker.builder.ColorWheelRendererBuilder; -import com.flask.colorpicker.builder.PaintBuilder; -import com.flask.colorpicker.renderer.ColorWheelRenderOption; -import com.flask.colorpicker.renderer.ColorWheelRenderer; -import com.flask.colorpicker.slider.AlphaSlider; -import com.flask.colorpicker.slider.LightnessSlider; - -import java.util.ArrayList; - -public class ColorPickerView extends View { - private static final float STROKE_RATIO = 2f; - - private Bitmap colorWheel; - private Canvas colorWheelCanvas; - private int density = 10; - - private float lightness = 1; - private float alpha = 1; - private int backgroundColor = 0x00000000; - - private Integer initialColors[] = new Integer[]{null, null, null, null, null}; - private int colorSelection = 0; - private Integer initialColor; - private Integer pickerTextColor; - private Paint colorWheelFill = PaintBuilder.newPaint().color(0).build(); - private Paint selectorStroke1 = PaintBuilder.newPaint().color(0xffffffff).build(); - private Paint selectorStroke2 = PaintBuilder.newPaint().color(0xff000000).build(); - private Paint alphaPatternPaint = PaintBuilder.newPaint().build(); - private ColorCircle currentColorCircle; - - private ArrayList colorChangedListeners = new ArrayList<>(); - private ArrayList listeners = new ArrayList<>(); - - private LightnessSlider lightnessSlider; - private AlphaSlider alphaSlider; - private EditText colorEdit; - private TextWatcher colorTextChange = new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - try { - int color = Color.parseColor(s.toString()); - - // set the color without changing the edit text preventing stack overflow - setColor(color, false); - } catch (Exception e) { - } - } - - @Override - public void afterTextChanged(Editable s) { - } - }; - private LinearLayout colorPreview; - - private ColorWheelRenderer renderer; - - private int alphaSliderViewId, lightnessSliderViewId; - - public ColorPickerView(Context context) { - super(context); - initWith(context, null); - } - - public ColorPickerView(Context context, AttributeSet attrs) { - super(context, attrs); - initWith(context, attrs); - } - - public ColorPickerView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initWith(context, attrs); - } - - @TargetApi(21) - public ColorPickerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - initWith(context, attrs); - } - - private void initWith(Context context, AttributeSet attrs) { - final TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ColorPickerPreference); - - density = typedArray.getInt(R.styleable.ColorPickerPreference_density, 10); - initialColor = typedArray.getInt(R.styleable.ColorPickerPreference_initialColor, 0xffffffff); - - pickerTextColor = typedArray.getInt(R.styleable.ColorPickerPreference_pickerColorEditTextColor, 0xffffffff); - - WHEEL_TYPE wheelType = WHEEL_TYPE.indexOf(typedArray.getInt(R.styleable.ColorPickerPreference_wheelType, 0)); - ColorWheelRenderer renderer = ColorWheelRendererBuilder.getRenderer(wheelType); - - alphaSliderViewId = typedArray.getResourceId(R.styleable.ColorPickerPreference_alphaSliderView, 0); - lightnessSliderViewId = typedArray.getResourceId(R.styleable.ColorPickerPreference_lightnessSliderView, 0); - - setRenderer(renderer); - setDensity(density); - setInitialColor(initialColor, true); - - typedArray.recycle(); - } - - @Override - public void onWindowFocusChanged(boolean hasWindowFocus) { - super.onWindowFocusChanged(hasWindowFocus); - updateColorWheel(); - currentColorCircle = findNearestByColor(initialColor); - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - - if (alphaSliderViewId != 0) - setAlphaSlider((AlphaSlider) getRootView().findViewById(alphaSliderViewId)); - if (lightnessSliderViewId != 0) - setLightnessSlider((LightnessSlider) getRootView().findViewById(lightnessSliderViewId)); - - updateColorWheel(); - currentColorCircle = findNearestByColor(initialColor); - } - - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - updateColorWheel(); - } - - private void updateColorWheel() { - int width = getMeasuredWidth(); - int height = getMeasuredHeight(); - - if (height < width) - width = height; - if (width <= 0) - return; - if (colorWheel == null) { - colorWheel = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888); - colorWheelCanvas = new Canvas(colorWheel); - alphaPatternPaint.setShader(PaintBuilder.createAlphaPatternShader(8)); - } - drawColorWheel(); - invalidate(); - } - - private void drawColorWheel() { - colorWheelCanvas.drawColor(0, PorterDuff.Mode.CLEAR); - - if (renderer == null) return; - - float half = colorWheelCanvas.getWidth() / 2f; - float strokeWidth = STROKE_RATIO * (1f + ColorWheelRenderer.GAP_PERCENTAGE); - float maxRadius = half - strokeWidth - half / density; - float cSize = maxRadius / (density - 1) / 2; - - ColorWheelRenderOption colorWheelRenderOption = renderer.getRenderOption(); - colorWheelRenderOption.density = this.density; - colorWheelRenderOption.maxRadius = maxRadius; - colorWheelRenderOption.cSize = cSize; - colorWheelRenderOption.strokeWidth = strokeWidth; - colorWheelRenderOption.alpha = alpha; - colorWheelRenderOption.lightness = lightness; - colorWheelRenderOption.targetCanvas = colorWheelCanvas; - - renderer.initWith(colorWheelRenderOption); - renderer.draw(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - int width = 0; - if (widthMode == MeasureSpec.UNSPECIFIED) - width = widthMeasureSpec; - else if (widthMode == MeasureSpec.AT_MOST) - width = MeasureSpec.getSize(widthMeasureSpec); - else if (widthMode == MeasureSpec.EXACTLY) - width = MeasureSpec.getSize(widthMeasureSpec); - - int heightMode = MeasureSpec.getMode(heightMeasureSpec); - int height = 0; - if (heightMode == MeasureSpec.UNSPECIFIED) - height = widthMeasureSpec; - else if (heightMode == MeasureSpec.AT_MOST) - height = MeasureSpec.getSize(heightMeasureSpec); - else if (widthMode == MeasureSpec.EXACTLY) - height = MeasureSpec.getSize(heightMeasureSpec); - int squareDimen = width; - if (height < width) - squareDimen = height; - setMeasuredDimension(squareDimen, squareDimen); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - case MotionEvent.ACTION_MOVE: { - int lastSelectedColor = getSelectedColor(); - currentColorCircle = findNearestByPosition(event.getX(), event.getY()); - int selectedColor = getSelectedColor(); - - callOnColorChangedListeners(lastSelectedColor, selectedColor); - - initialColor = selectedColor; - setColorToSliders(selectedColor); - invalidate(); - break; - } - case MotionEvent.ACTION_UP: { - int selectedColor = getSelectedColor(); - if (listeners != null) { - for (OnColorSelectedListener listener : listeners) { - try { - listener.onColorSelected(selectedColor); - } catch (Exception e) { - //Squash individual listener exceptions - } - } - } - setColorToSliders(selectedColor); - setColorText(selectedColor); - setColorPreviewColor(selectedColor); - invalidate(); - break; - } - } - return true; - } - - protected void callOnColorChangedListeners(int oldColor, int newColor) { - if (colorChangedListeners != null && oldColor != newColor) { - for (OnColorChangedListener listener : colorChangedListeners) { - try { - listener.onColorChanged(newColor); - } catch (Exception e) { - //Squash individual listener exceptions - } - } - } - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - canvas.drawColor(backgroundColor); - if (colorWheel != null) - canvas.drawBitmap(colorWheel, 0, 0, null); - if (currentColorCircle != null) { - float maxRadius = canvas.getWidth() / 2f - STROKE_RATIO * (1f + ColorWheelRenderer.GAP_PERCENTAGE); - float size = maxRadius / density / 2; - colorWheelFill.setColor(Color.HSVToColor(currentColorCircle.getHsvWithLightness(this.lightness))); - colorWheelFill.setAlpha((int) (alpha * 0xff)); - canvas.drawCircle(currentColorCircle.getX(), currentColorCircle.getY(), size * STROKE_RATIO, selectorStroke1); - canvas.drawCircle(currentColorCircle.getX(), currentColorCircle.getY(), size * (1 + (STROKE_RATIO - 1) / 2), selectorStroke2); - - canvas.drawCircle(currentColorCircle.getX(), currentColorCircle.getY(), size, alphaPatternPaint); - canvas.drawCircle(currentColorCircle.getX(), currentColorCircle.getY(), size, colorWheelFill); - } - } - - private ColorCircle findNearestByPosition(float x, float y) { - ColorCircle near = null; - double minDist = Double.MAX_VALUE; - - for (ColorCircle colorCircle : renderer.getColorCircleList()) { - double dist = colorCircle.sqDist(x, y); - if (minDist > dist) { - minDist = dist; - near = colorCircle; - } - } - - return near; - } - - private ColorCircle findNearestByColor(int color) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - ColorCircle near = null; - double minDiff = Double.MAX_VALUE; - double x = hsv[1] * Math.cos(hsv[0] * Math.PI / 180); - double y = hsv[1] * Math.sin(hsv[0] * Math.PI / 180); - - for (ColorCircle colorCircle : renderer.getColorCircleList()) { - float[] hsv1 = colorCircle.getHsv(); - double x1 = hsv1[1] * Math.cos(hsv1[0] * Math.PI / 180); - double y1 = hsv1[1] * Math.sin(hsv1[0] * Math.PI / 180); - double dx = x - x1; - double dy = y - y1; - double dist = dx * dx + dy * dy; - if (dist < minDiff) { - minDiff = dist; - near = colorCircle; - } - } - - return near; - } - - public int getSelectedColor() { - int color = 0; - if (currentColorCircle != null) - color = Color.HSVToColor(currentColorCircle.getHsvWithLightness(this.lightness)); - return Utils.adjustAlpha(this.alpha, color); - } - - public Integer[] getAllColors() { - return initialColors; - } - - public void setInitialColors(Integer[] colors, int selectedColor) { - this.initialColors = colors; - this.colorSelection = selectedColor; - Integer initialColor = this.initialColors[this.colorSelection]; - if (initialColor == null) initialColor = 0xffffffff; - setInitialColor(initialColor, true); - } - - public void setInitialColor(int color, boolean updateText) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - - this.alpha = Utils.getAlphaPercent(color); - this.lightness = hsv[2]; - this.initialColors[this.colorSelection] = color; - this.initialColor = color; - setColorPreviewColor(color); - setColorToSliders(color); - if (this.colorEdit != null && updateText) - setColorText(color); - currentColorCircle = findNearestByColor(color); - } - - public void setLightness(float lightness) { - int lastSelectedColor = getSelectedColor(); - - this.lightness = lightness; - this.initialColor = Color.HSVToColor(Utils.alphaValueAsInt(this.alpha), currentColorCircle.getHsvWithLightness(lightness)); - if (this.colorEdit != null) - this.colorEdit.setText(Utils.getHexString(this.initialColor, this.alphaSlider != null)); - if (this.alphaSlider != null && this.initialColor != null) - this.alphaSlider.setColor(this.initialColor); - - callOnColorChangedListeners(lastSelectedColor, this.initialColor); - - updateColorWheel(); - invalidate(); - } - - public void setColor(int color, boolean updateText) { - setInitialColor(color, updateText); - updateColorWheel(); - invalidate(); - } - - public void setAlphaValue(float alpha) { - int lastSelectedColor = getSelectedColor(); - - this.alpha = alpha; - this.initialColor = Color.HSVToColor(Utils.alphaValueAsInt(this.alpha), currentColorCircle.getHsvWithLightness(this.lightness)); - if (this.colorEdit != null) - this.colorEdit.setText(Utils.getHexString(this.initialColor, this.alphaSlider != null)); - if (this.lightnessSlider != null && this.initialColor != null) - this.lightnessSlider.setColor(this.initialColor); - - callOnColorChangedListeners(lastSelectedColor, this.initialColor); - - updateColorWheel(); - invalidate(); - } - - public void addOnColorChangedListener(OnColorChangedListener listener) { - this.colorChangedListeners.add(listener); - } - - public void addOnColorSelectedListener(OnColorSelectedListener listener) { - this.listeners.add(listener); - } - - public void setLightnessSlider(LightnessSlider lightnessSlider) { - this.lightnessSlider = lightnessSlider; - if (lightnessSlider != null) { - this.lightnessSlider.setColorPicker(this); - this.lightnessSlider.setColor(getSelectedColor()); - } - } - - public void setAlphaSlider(AlphaSlider alphaSlider) { - this.alphaSlider = alphaSlider; - if (alphaSlider != null) { - this.alphaSlider.setColorPicker(this); - this.alphaSlider.setColor(getSelectedColor()); - } - } - - public void setColorEdit(EditText colorEdit) { - this.colorEdit = colorEdit; - if (this.colorEdit != null) { - this.colorEdit.setVisibility(View.VISIBLE); - this.colorEdit.addTextChangedListener(colorTextChange); - setColorEditTextColor(pickerTextColor); - } - } - - public void setColorEditTextColor(int argb) { - this.pickerTextColor = argb; - if (colorEdit != null) - colorEdit.setTextColor(argb); - } - - public void setDensity(int density) { - this.density = Math.max(2, density); - invalidate(); - } - - public void setRenderer(ColorWheelRenderer renderer) { - this.renderer = renderer; - invalidate(); - } - - public void setColorPreview(LinearLayout colorPreview, Integer selectedColor) { - if (colorPreview == null) - return; - this.colorPreview = colorPreview; - if (selectedColor == null) - selectedColor = 0; - int children = colorPreview.getChildCount(); - if (children == 0 || colorPreview.getVisibility() != View.VISIBLE) - return; - - for (int i = 0; i < children; i++) { - View childView = colorPreview.getChildAt(i); - if (!(childView instanceof LinearLayout)) - continue; - LinearLayout childLayout = (LinearLayout) childView; - if (i == selectedColor) { - childLayout.setBackgroundColor(Color.WHITE); - } - ImageView childImage = (ImageView) childLayout.findViewById(R.id.image_preview); - childImage.setClickable(true); - childImage.setTag(i); - childImage.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (v == null) - return; - Object tag = v.getTag(); - if (tag == null || !(tag instanceof Integer)) - return; - setSelectedColor((int) tag); - } - }); - } - } - - public void setSelectedColor(int previewNumber) { - if (initialColors == null || initialColors.length < previewNumber) - return; - this.colorSelection = previewNumber; - setHighlightedColor(previewNumber); - Integer color = initialColors[previewNumber]; - if (color == null) - return; - setColor(color, true); - } - - private void setHighlightedColor(int previewNumber) { - int children = colorPreview.getChildCount(); - if (children == 0 || colorPreview.getVisibility() != View.VISIBLE) - return; - - for (int i = 0; i < children; i++) { - View childView = colorPreview.getChildAt(i); - if (!(childView instanceof LinearLayout)) - continue; - LinearLayout childLayout = (LinearLayout) childView; - if (i == previewNumber) { - childLayout.setBackgroundColor(Color.WHITE); - } else { - childLayout.setBackgroundColor(Color.TRANSPARENT); - } - } - } - - private void setColorPreviewColor(int newColor) { - if (colorPreview == null || initialColors == null || colorSelection > initialColors.length || initialColors[colorSelection] == null) - return; - - int children = colorPreview.getChildCount(); - if (children == 0 || colorPreview.getVisibility() != View.VISIBLE) - return; - - View childView = colorPreview.getChildAt(colorSelection); - if (!(childView instanceof LinearLayout)) - return; - LinearLayout childLayout = (LinearLayout) childView; - ImageView childImage = (ImageView) childLayout.findViewById(R.id.image_preview); - childImage.setImageDrawable(new CircleColorDrawable(newColor)); - } - - private void setColorText(int argb) { - if (colorEdit == null) - return; - colorEdit.setText(Utils.getHexString(argb, this.alphaSlider != null)); - } - - private void setColorToSliders(int selectedColor) { - if (lightnessSlider != null) - lightnessSlider.setColor(selectedColor); - if (alphaSlider != null) - alphaSlider.setColor(selectedColor); - } - - public enum WHEEL_TYPE { - FLOWER, CIRCLE; - - public static WHEEL_TYPE indexOf(int index) { - switch (index) { - case 0: - return FLOWER; - case 1: - return CIRCLE; - } - return FLOWER; - } - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorChangedListener.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorChangedListener.java deleted file mode 100644 index eda2a53d9..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorChangedListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.flask.colorpicker; - -public interface OnColorChangedListener { - void onColorChanged(int selectedColor); -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorSelectedListener.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorSelectedListener.java deleted file mode 100644 index dbf8f723f..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/OnColorSelectedListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.flask.colorpicker; - -public interface OnColorSelectedListener { - void onColorSelected(int selectedColor); -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/Utils.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/Utils.java deleted file mode 100644 index 8e92c5ebf..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/Utils.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.flask.colorpicker; - -import android.graphics.Color; - -/** - * Created by Charles Andersons on 4/17/15. - */ -public class Utils { - public static float getAlphaPercent(int argb) { - return Color.alpha(argb) / 255f; - } - - public static int alphaValueAsInt(float alpha) { - return Math.round(alpha * 255); - } - - public static int adjustAlpha(float alpha, int color) { - return alphaValueAsInt(alpha) << 24 | (0x00ffffff & color); - } - - public static int colorAtLightness(int color, float lightness) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - hsv[2] = lightness; - return Color.HSVToColor(hsv); - } - - public static float lightnessOfColor(int color) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - return hsv[2]; - } - - public static String getHexString(int color, boolean showAlpha) { - int base = showAlpha ? 0xFFFFFFFF : 0xFFFFFF; - String format = showAlpha ? "#%08X" : "#%06X"; - return String.format(format, (base & color)).toUpperCase(); - } - -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerClickListener.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerClickListener.java deleted file mode 100644 index 35e70e92d..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerClickListener.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.flask.colorpicker.builder; - -import android.content.DialogInterface; - -/** - * Created by Charles Anderson on 4/17/15. - */ -public interface ColorPickerClickListener { - void onClick(DialogInterface d, int lastSelectedColor, Integer[] allColors); -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerDialogBuilder.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerDialogBuilder.java deleted file mode 100644 index 34e5bcdb2..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorPickerDialogBuilder.java +++ /dev/null @@ -1,288 +0,0 @@ -package com.flask.colorpicker.builder; - -import android.content.Context; -import android.content.DialogInterface; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.text.InputFilter; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; - -import androidx.appcompat.app.AlertDialog; - -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.OnColorChangedListener; -import com.flask.colorpicker.OnColorSelectedListener; -import com.flask.colorpicker.R; -import com.flask.colorpicker.Utils; -import com.flask.colorpicker.renderer.ColorWheelRenderer; -import com.flask.colorpicker.slider.AlphaSlider; -import com.flask.colorpicker.slider.LightnessSlider; - -public class ColorPickerDialogBuilder { - private AlertDialog.Builder builder; - private LinearLayout pickerContainer; - private ColorPickerView colorPickerView; - private LightnessSlider lightnessSlider; - private AlphaSlider alphaSlider; - private EditText colorEdit; - private LinearLayout colorPreview; - - private boolean isLightnessSliderEnabled = true; - private boolean isAlphaSliderEnabled = true; - private boolean isColorEditEnabled = false; - private boolean isPreviewEnabled = false; - private int pickerCount = 1; - private int defaultMargin = 0; - private Integer[] initialColor = new Integer[]{null, null, null, null, null}; - - private ColorPickerDialogBuilder(Context context) { - this(context, 0); - } - - private ColorPickerDialogBuilder(Context context, int theme) { - defaultMargin = getDimensionAsPx(context, R.dimen.default_slider_margin); - final int dialogMarginBetweenTitle = getDimensionAsPx(context, R.dimen.default_slider_margin_btw_title); - - builder = new AlertDialog.Builder(context, theme); - pickerContainer = new LinearLayout(context); - pickerContainer.setOrientation(LinearLayout.VERTICAL); - pickerContainer.setGravity(Gravity.CENTER_HORIZONTAL); - pickerContainer.setPadding(defaultMargin, dialogMarginBetweenTitle, defaultMargin, defaultMargin); - - LinearLayout.LayoutParams layoutParamsForColorPickerView = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0); - layoutParamsForColorPickerView.weight = 1; - colorPickerView = new ColorPickerView(context); - - pickerContainer.addView(colorPickerView, layoutParamsForColorPickerView); - - builder.setView(pickerContainer); - } - - public static ColorPickerDialogBuilder with(Context context) { - return new ColorPickerDialogBuilder(context); - } - - public static ColorPickerDialogBuilder with(Context context, int theme) { - return new ColorPickerDialogBuilder(context, theme); - } - - public ColorPickerDialogBuilder setTitle(String title) { - builder.setTitle(title); - return this; - } - - public ColorPickerDialogBuilder setTitle(int titleId) { - builder.setTitle(titleId); - return this; - } - - public ColorPickerDialogBuilder initialColor(int initialColor) { - this.initialColor[0] = initialColor; - return this; - } - - - public ColorPickerDialogBuilder initialColors(int[] initialColor) { - for (int i = 0; i < initialColor.length && i < this.initialColor.length; i++) { - this.initialColor[i] = initialColor[i]; - } - return this; - } - - public ColorPickerDialogBuilder wheelType(ColorPickerView.WHEEL_TYPE wheelType) { - ColorWheelRenderer renderer = ColorWheelRendererBuilder.getRenderer(wheelType); - colorPickerView.setRenderer(renderer); - return this; - } - - public ColorPickerDialogBuilder density(int density) { - colorPickerView.setDensity(density); - return this; - } - - public ColorPickerDialogBuilder setOnColorChangedListener(OnColorChangedListener onColorChangedListener) { - colorPickerView.addOnColorChangedListener(onColorChangedListener); - return this; - } - - public ColorPickerDialogBuilder setOnColorSelectedListener(OnColorSelectedListener onColorSelectedListener) { - colorPickerView.addOnColorSelectedListener(onColorSelectedListener); - return this; - } - - public ColorPickerDialogBuilder setPositiveButton(CharSequence text, final ColorPickerClickListener onClickListener) { - builder.setPositiveButton(text, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - positiveButtonOnClick(dialog, onClickListener); - } - }); - return this; - } - - public ColorPickerDialogBuilder setPositiveButton(int textId, final ColorPickerClickListener onClickListener) { - builder.setPositiveButton(textId, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - positiveButtonOnClick(dialog, onClickListener); - } - }); - return this; - } - - public ColorPickerDialogBuilder setNegativeButton(CharSequence text, DialogInterface.OnClickListener onClickListener) { - builder.setNegativeButton(text, onClickListener); - return this; - } - - public ColorPickerDialogBuilder setNegativeButton(int textId, DialogInterface.OnClickListener onClickListener) { - builder.setNegativeButton(textId, onClickListener); - return this; - } - - public ColorPickerDialogBuilder noSliders() { - isLightnessSliderEnabled = false; - isAlphaSliderEnabled = false; - return this; - } - - public ColorPickerDialogBuilder alphaSliderOnly() { - isLightnessSliderEnabled = false; - isAlphaSliderEnabled = true; - return this; - } - - public ColorPickerDialogBuilder lightnessSliderOnly() { - isLightnessSliderEnabled = true; - isAlphaSliderEnabled = false; - return this; - } - - public ColorPickerDialogBuilder showAlphaSlider(boolean showAlpha) { - isAlphaSliderEnabled = showAlpha; - return this; - } - - public ColorPickerDialogBuilder showLightnessSlider(boolean showLightness) { - isLightnessSliderEnabled = showLightness; - return this; - } - - public ColorPickerDialogBuilder showColorEdit(boolean showEdit) { - isColorEditEnabled = showEdit; - return this; - } - - public ColorPickerDialogBuilder setColorEditTextColor(int argb) { - colorPickerView.setColorEditTextColor(argb); - return this; - } - - public ColorPickerDialogBuilder showColorPreview(boolean showPreview) { - isPreviewEnabled = showPreview; - if (!showPreview) - pickerCount = 1; - return this; - } - - public ColorPickerDialogBuilder setPickerCount(int pickerCount) throws IndexOutOfBoundsException { - if (pickerCount < 1 || pickerCount > 5) - throw new IndexOutOfBoundsException("Picker Can Only Support 1-5 Colors"); - this.pickerCount = pickerCount; - if (this.pickerCount > 1) - this.isPreviewEnabled = true; - return this; - } - - public AlertDialog build() { - Context context = builder.getContext(); - colorPickerView.setInitialColors(initialColor, getStartOffset(initialColor)); - - if (isLightnessSliderEnabled) { - LinearLayout.LayoutParams layoutParamsForLightnessBar = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getDimensionAsPx(context, R.dimen.default_slider_height)); - lightnessSlider = new LightnessSlider(context); - lightnessSlider.setLayoutParams(layoutParamsForLightnessBar); - pickerContainer.addView(lightnessSlider); - colorPickerView.setLightnessSlider(lightnessSlider); - lightnessSlider.setColor(getStartColor(initialColor)); - } - if (isAlphaSliderEnabled) { - LinearLayout.LayoutParams layoutParamsForAlphaBar = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getDimensionAsPx(context, R.dimen.default_slider_height)); - alphaSlider = new AlphaSlider(context); - alphaSlider.setLayoutParams(layoutParamsForAlphaBar); - pickerContainer.addView(alphaSlider); - colorPickerView.setAlphaSlider(alphaSlider); - alphaSlider.setColor(getStartColor(initialColor)); - } - if (isColorEditEnabled) { - LinearLayout.LayoutParams layoutParamsForColorEdit = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - colorEdit = (EditText) View.inflate(context, R.layout.picker_edit, null); - colorEdit.setFilters(new InputFilter[]{new InputFilter.AllCaps()}); - colorEdit.setSingleLine(); - colorEdit.setVisibility(View.GONE); - - // limit number of characters to hexColors - int maxLength = isAlphaSliderEnabled ? 9 : 7; - colorEdit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); - - pickerContainer.addView(colorEdit, layoutParamsForColorEdit); - - colorEdit.setText(Utils.getHexString(getStartColor(initialColor), isAlphaSliderEnabled)); - colorPickerView.setColorEdit(colorEdit); - } - if (isPreviewEnabled) { - colorPreview = (LinearLayout) View.inflate(context, R.layout.color_preview, null); - colorPreview.setVisibility(View.GONE); - pickerContainer.addView(colorPreview); - - if (initialColor.length == 0) { - ImageView colorImage = (ImageView) View.inflate(context, R.layout.color_selector, null); - colorImage.setImageDrawable(new ColorDrawable(Color.WHITE)); - } else { - for (int i = 0; i < initialColor.length && i < this.pickerCount; i++) { - if (initialColor[i] == null) - break; - LinearLayout colorLayout = (LinearLayout) View.inflate(context, R.layout.color_selector, null); - ImageView colorImage = (ImageView) colorLayout.findViewById(R.id.image_preview); - colorImage.setImageDrawable(new ColorDrawable(initialColor[i])); - colorPreview.addView(colorLayout); - } - } - colorPreview.setVisibility(View.VISIBLE); - colorPickerView.setColorPreview(colorPreview, getStartOffset(initialColor)); - } - - return builder.create(); - } - - private Integer getStartOffset(Integer[] colors) { - Integer start = 0; - for (int i = 0; i < colors.length; i++) { - if (colors[i] == null) { - return start; - } - start = (i + 1) / 2; - } - return start; - } - - private int getStartColor(Integer[] colors) { - Integer startColor = getStartOffset(colors); - return startColor == null ? Color.WHITE : colors[startColor]; - } - - private static int getDimensionAsPx(Context context, int rid) { - return (int) (context.getResources().getDimension(rid) + .5f); - } - - private void positiveButtonOnClick(DialogInterface dialog, ColorPickerClickListener onClickListener) { - int selectedColor = colorPickerView.getSelectedColor(); - Integer[] allColors = colorPickerView.getAllColors(); - onClickListener.onClick(dialog, selectedColor, allColors); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorWheelRendererBuilder.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorWheelRendererBuilder.java deleted file mode 100644 index cc816ee9d..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/ColorWheelRendererBuilder.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.flask.colorpicker.builder; - -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.renderer.ColorWheelRenderer; -import com.flask.colorpicker.renderer.FlowerColorWheelRenderer; -import com.flask.colorpicker.renderer.SimpleColorWheelRenderer; - -public class ColorWheelRendererBuilder { - public static ColorWheelRenderer getRenderer(ColorPickerView.WHEEL_TYPE wheelType) { - switch (wheelType) { - case CIRCLE: - return new SimpleColorWheelRenderer(); - case FLOWER: - return new FlowerColorWheelRenderer(); - } - throw new IllegalArgumentException("wrong WHEEL_TYPE"); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/PaintBuilder.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/PaintBuilder.java deleted file mode 100644 index a8bb6a5f0..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/builder/PaintBuilder.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.flask.colorpicker.builder; - -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Shader; - -public class PaintBuilder { - public static PaintHolder newPaint() { - return new PaintHolder(); - } - - public static class PaintHolder { - private Paint paint; - - private PaintHolder() { - this.paint = new Paint(Paint.ANTI_ALIAS_FLAG); - } - - public PaintHolder color(int color) { - this.paint.setColor(color); - return this; - } - - public PaintHolder antiAlias(boolean flag) { - this.paint.setAntiAlias(flag); - return this; - } - - public PaintHolder style(Paint.Style style) { - this.paint.setStyle(style); - return this; - } - - public PaintHolder mode(PorterDuff.Mode mode) { - this.paint.setXfermode(new PorterDuffXfermode(mode)); - return this; - } - - public PaintHolder stroke(float width) { - this.paint.setStrokeWidth(width); - return this; - } - - public PaintHolder xPerMode(PorterDuff.Mode mode) { - this.paint.setXfermode(new PorterDuffXfermode(mode)); - return this; - } - - public PaintHolder shader(Shader shader) { - this.paint.setShader(shader); - return this; - } - - public Paint build() { - return this.paint; - } - } - - public static Shader createAlphaPatternShader(int size) { - size /= 2; - size = Math.max(8, size * 2); - return new BitmapShader(createAlphaBackgroundPattern(size), Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); - } - - private static Bitmap createAlphaBackgroundPattern(int size) { - Paint alphaPatternPaint = PaintBuilder.newPaint().build(); - Bitmap bm = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); - Canvas c = new Canvas(bm); - int s = Math.round(size / 2f); - for (int i = 0; i < 2; i++) - for (int j = 0; j < 2; j++) { - if ((i + j) % 2 == 0) alphaPatternPaint.setColor(0xffffffff); - else alphaPatternPaint.setColor(0xffd0d0d0); - c.drawRect(i * s, j * s, (i + 1) * s, (j + 1) * s, alphaPatternPaint); - } - return bm; - } -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/AbsColorWheelRenderer.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/AbsColorWheelRenderer.java deleted file mode 100644 index 9ce0f980a..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/AbsColorWheelRenderer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.flask.colorpicker.renderer; - -import com.flask.colorpicker.ColorCircle; - -import java.util.ArrayList; -import java.util.List; - -public abstract class AbsColorWheelRenderer implements ColorWheelRenderer { - protected ColorWheelRenderOption colorWheelRenderOption; - protected List colorCircleList = new ArrayList<>(); - - public void initWith(ColorWheelRenderOption colorWheelRenderOption) { - this.colorWheelRenderOption = colorWheelRenderOption; - this.colorCircleList.clear(); - } - - @Override - public ColorWheelRenderOption getRenderOption() { - if (colorWheelRenderOption == null) colorWheelRenderOption = new ColorWheelRenderOption(); - return colorWheelRenderOption; - } - - public List getColorCircleList() { - return colorCircleList; - } - - protected int getAlphaValueAsInt() { - return Math.round(colorWheelRenderOption.alpha * 255); - } - - protected int calcTotalCount(float radius, float size) { - return Math.max(1, (int) ((1f - GAP_PERCENTAGE) * Math.PI / (Math.asin(size / radius)) + 0.5f)); - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderOption.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderOption.java deleted file mode 100644 index 6a8c7eb1c..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderOption.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.flask.colorpicker.renderer; - -import android.graphics.Canvas; - -public class ColorWheelRenderOption { - public int density; - public float maxRadius; - public float cSize, strokeWidth, alpha, lightness; - public Canvas targetCanvas; -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderer.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderer.java deleted file mode 100644 index 180fcda25..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/ColorWheelRenderer.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.flask.colorpicker.renderer; - -import com.flask.colorpicker.ColorCircle; - -import java.util.List; - -public interface ColorWheelRenderer { - float GAP_PERCENTAGE = 0.025f; - - void draw(); - - ColorWheelRenderOption getRenderOption(); - - void initWith(ColorWheelRenderOption colorWheelRenderOption); - - List getColorCircleList(); -} diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/FlowerColorWheelRenderer.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/FlowerColorWheelRenderer.java deleted file mode 100644 index 509415b8c..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/FlowerColorWheelRenderer.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.flask.colorpicker.renderer; - -import android.graphics.Color; -import android.graphics.Paint; - -import com.flask.colorpicker.ColorCircle; -import com.flask.colorpicker.builder.PaintBuilder; - -public class FlowerColorWheelRenderer extends AbsColorWheelRenderer { - private Paint selectorFill = PaintBuilder.newPaint().build(); - private float[] hsv = new float[3]; - private float sizeJitter = 1.2f; - - @Override - public void draw() { - final int setSize = colorCircleList.size(); - int currentCount = 0; - float half = colorWheelRenderOption.targetCanvas.getWidth() / 2f; - int density = colorWheelRenderOption.density; - float strokeWidth = colorWheelRenderOption.strokeWidth; - float maxRadius = colorWheelRenderOption.maxRadius; - float cSize = colorWheelRenderOption.cSize; - - for (int i = 0; i < density; i++) { - float p = (float) i / (density - 1); // 0~1 - float jitter = (i - density / 2f) / density; // -0.5 ~ 0.5 - float radius = maxRadius * p; - float size = Math.max(1.5f + strokeWidth, cSize + (i == 0 ? 0 : cSize * sizeJitter * jitter)); - int total = Math.min(calcTotalCount(radius, size), density * 2); - - for (int j = 0; j < total; j++) { - double angle = Math.PI * 2 * j / total + (Math.PI / total) * ((i + 1) % 2); - float x = half + (float) (radius * Math.cos(angle)); - float y = half + (float) (radius * Math.sin(angle)); - hsv[0] = (float) (angle * 180 / Math.PI); - hsv[1] = radius / maxRadius; - hsv[2] = colorWheelRenderOption.lightness; - selectorFill.setColor(Color.HSVToColor(hsv)); - selectorFill.setAlpha(getAlphaValueAsInt()); - - colorWheelRenderOption.targetCanvas.drawCircle(x, y, size - strokeWidth, selectorFill); - - if (currentCount >= setSize) - colorCircleList.add(new ColorCircle(x, y, hsv)); - else colorCircleList.get(currentCount).set(x, y, hsv); - currentCount++; - } - } - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/SimpleColorWheelRenderer.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/SimpleColorWheelRenderer.java deleted file mode 100644 index 46a3769d3..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/renderer/SimpleColorWheelRenderer.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.flask.colorpicker.renderer; - -import android.graphics.Color; -import android.graphics.Paint; - -import com.flask.colorpicker.ColorCircle; -import com.flask.colorpicker.builder.PaintBuilder; - -public class SimpleColorWheelRenderer extends AbsColorWheelRenderer { - private Paint selectorFill = PaintBuilder.newPaint().build(); - private float[] hsv = new float[3]; - - @Override - public void draw() { - final int setSize = colorCircleList.size(); - int currentCount = 0; - float half = colorWheelRenderOption.targetCanvas.getWidth() / 2f; - int density = colorWheelRenderOption.density; - float maxRadius = colorWheelRenderOption.maxRadius; - - for (int i = 0; i < density; i++) { - float p = (float) i / (density - 1); // 0~1 - float radius = maxRadius * p; - float size = colorWheelRenderOption.cSize; - int total = calcTotalCount(radius, size); - - for (int j = 0; j < total; j++) { - double angle = Math.PI * 2 * j / total + (Math.PI / total) * ((i + 1) % 2); - float x = half + (float) (radius * Math.cos(angle)); - float y = half + (float) (radius * Math.sin(angle)); - hsv[0] = (float) (angle * 180 / Math.PI); - hsv[1] = radius / maxRadius; - hsv[2] = colorWheelRenderOption.lightness; - selectorFill.setColor(Color.HSVToColor(hsv)); - selectorFill.setAlpha(getAlphaValueAsInt()); - - colorWheelRenderOption.targetCanvas.drawCircle(x, y, size - colorWheelRenderOption.strokeWidth, selectorFill); - - if (currentCount >= setSize) - colorCircleList.add(new ColorCircle(x, y, hsv)); - else colorCircleList.get(currentCount).set(x, y, hsv); - currentCount++; - } - } - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AbsCustomSlider.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AbsCustomSlider.java deleted file mode 100644 index b8e80ea2d..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AbsCustomSlider.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.flask.colorpicker.slider; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.PorterDuff; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; - -import androidx.annotation.DimenRes; - -import com.flask.colorpicker.R; - -public abstract class AbsCustomSlider extends View { - protected Bitmap bitmap; - protected Canvas bitmapCanvas; - protected Bitmap bar; - protected Canvas barCanvas; - protected OnValueChangedListener onValueChangedListener; - protected int barOffsetX; - protected int handleRadius = 20; - protected int barHeight = 5; - protected float value = 1; - - public AbsCustomSlider(Context context) { - super(context); - } - - public AbsCustomSlider(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public AbsCustomSlider(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - protected void updateBar() { - handleRadius = getDimension(R.dimen.default_slider_handler_radius); - barHeight = getDimension(R.dimen.default_slider_bar_height); - barOffsetX = handleRadius; - - if (bar == null) - createBitmaps(); - drawBar(barCanvas); - invalidate(); - } - - protected void createBitmaps() { - int width = getWidth(); - int height = getHeight(); - bar = Bitmap.createBitmap(width - barOffsetX * 2, barHeight, Bitmap.Config.ARGB_8888); - barCanvas = new Canvas(bar); - - if (bitmap == null || bitmap.getWidth() != width || bitmap.getHeight() != height) { - if (bitmap != null) bitmap.recycle(); - bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bitmapCanvas = new Canvas(bitmap); - } - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (bar != null && bitmapCanvas != null) { - bitmapCanvas.drawColor(0, PorterDuff.Mode.CLEAR); - bitmapCanvas.drawBitmap(bar, barOffsetX, (getHeight() - bar.getHeight()) / 2, null); - - float x = handleRadius + value * (getWidth() - handleRadius * 2); - float y = getHeight() / 2f; - drawHandle(bitmapCanvas, x, y); - canvas.drawBitmap(bitmap, 0, 0, null); - } - } - - protected abstract void drawBar(Canvas barCanvas); - - protected abstract void onValueChanged(float value); - - protected abstract void drawHandle(Canvas canvas, float x, float y); - - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - updateBar(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - int width = 0; - if (widthMode == MeasureSpec.UNSPECIFIED) - width = widthMeasureSpec; - else if (widthMode == MeasureSpec.AT_MOST) - width = MeasureSpec.getSize(widthMeasureSpec); - else if (widthMode == MeasureSpec.EXACTLY) - width = MeasureSpec.getSize(widthMeasureSpec); - - int heightMode = MeasureSpec.getMode(heightMeasureSpec); - int height = 0; - if (heightMode == MeasureSpec.UNSPECIFIED) - height = heightMeasureSpec; - else if (heightMode == MeasureSpec.AT_MOST) - height = MeasureSpec.getSize(heightMeasureSpec); - else if (heightMode == MeasureSpec.EXACTLY) - height = MeasureSpec.getSize(heightMeasureSpec); - - setMeasuredDimension(width, height); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - case MotionEvent.ACTION_MOVE: { - if (bar != null) { - value = (event.getX() - barOffsetX) / bar.getWidth(); - value = Math.max(0, Math.min(value, 1)); - onValueChanged(value); - invalidate(); - } - break; - } - case MotionEvent.ACTION_UP: { - onValueChanged(value); - if (onValueChangedListener != null) - onValueChangedListener.onValueChanged(value); - invalidate(); - } - } - return true; - } - - protected int getDimension(@DimenRes int id) { - return getResources().getDimensionPixelSize(id); - } - - public void setOnValueChangedListener(OnValueChangedListener onValueChangedListener) { - this.onValueChangedListener = onValueChangedListener; - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AlphaSlider.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AlphaSlider.java deleted file mode 100644 index 391776217..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/AlphaSlider.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.flask.colorpicker.slider; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.util.AttributeSet; - -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.Utils; -import com.flask.colorpicker.builder.PaintBuilder; - -public class AlphaSlider extends AbsCustomSlider { - public int color; - private Paint alphaPatternPaint = PaintBuilder.newPaint().build(); - private Paint barPaint = PaintBuilder.newPaint().build(); - private Paint solid = PaintBuilder.newPaint().build(); - private Paint clearingStroke = PaintBuilder.newPaint().color(0xffffffff).xPerMode(PorterDuff.Mode.CLEAR).build(); - - private ColorPickerView colorPicker; - - public AlphaSlider(Context context) { - super(context); - } - - public AlphaSlider(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public AlphaSlider(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void createBitmaps() { - super.createBitmaps(); - alphaPatternPaint.setShader(PaintBuilder.createAlphaPatternShader(barHeight / 2)); - } - - @Override - protected void drawBar(Canvas barCanvas) { - int width = barCanvas.getWidth(); - int height = barCanvas.getHeight(); - - barCanvas.drawRect(0, 0, width, height, alphaPatternPaint); - int l = Math.max(2, width / 256); - for (int x = 0; x <= width; x += l) { - float alpha = (float) x / (width - 1); - barPaint.setColor(color); - barPaint.setAlpha(Math.round(alpha * 255)); - barCanvas.drawRect(x, 0, x + l, height, barPaint); - } - } - - @Override - protected void onValueChanged(float value) { - if (colorPicker != null) - colorPicker.setAlphaValue(value); - } - - @Override - protected void drawHandle(Canvas canvas, float x, float y) { - solid.setColor(color); - solid.setAlpha(Math.round(value * 255)); - canvas.drawCircle(x, y, handleRadius, clearingStroke); - if (value < 1) - canvas.drawCircle(x, y, handleRadius * 0.75f, alphaPatternPaint); - canvas.drawCircle(x, y, handleRadius * 0.75f, solid); - } - - public void setColorPicker(ColorPickerView colorPicker) { - this.colorPicker = colorPicker; - } - - public void setColor(int color) { - this.color = color; - this.value = Utils.getAlphaPercent(color); - if (bar != null) { - updateBar(); - invalidate(); - } - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/LightnessSlider.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/LightnessSlider.java deleted file mode 100644 index 8d0741b34..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/LightnessSlider.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.flask.colorpicker.slider; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.util.AttributeSet; - -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.Utils; -import com.flask.colorpicker.builder.PaintBuilder; - -public class LightnessSlider extends AbsCustomSlider { - private int color; - private Paint barPaint = PaintBuilder.newPaint().build(); - private Paint solid = PaintBuilder.newPaint().build(); - private Paint clearingStroke = PaintBuilder.newPaint().color(0xffffffff).xPerMode(PorterDuff.Mode.CLEAR).build(); - - private ColorPickerView colorPicker; - - public LightnessSlider(Context context) { - super(context); - } - - public LightnessSlider(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public LightnessSlider(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void drawBar(Canvas barCanvas) { - int width = barCanvas.getWidth(); - int height = barCanvas.getHeight(); - - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - int l = Math.max(2, width / 256); - for (int x = 0; x <= width; x += l) { - hsv[2] = (float) x / (width - 1); - barPaint.setColor(Color.HSVToColor(hsv)); - barCanvas.drawRect(x, 0, x + l, height, barPaint); - } - } - - @Override - protected void onValueChanged(float value) { - if (colorPicker != null) - colorPicker.setLightness(value); - } - - @Override - protected void drawHandle(Canvas canvas, float x, float y) { - solid.setColor(Utils.colorAtLightness(color, value)); - canvas.drawCircle(x, y, handleRadius, clearingStroke); - canvas.drawCircle(x, y, handleRadius * 0.75f, solid); - } - - public void setColorPicker(ColorPickerView colorPicker) { - this.colorPicker = colorPicker; - } - - public void setColor(int color) { - this.color = color; - this.value = Utils.lightnessOfColor(color); - if (bar != null) { - updateBar(); - invalidate(); - } - } -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/OnValueChangedListener.java b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/OnValueChangedListener.java deleted file mode 100644 index 68b263a83..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/java/com/flask/colorpicker/slider/OnValueChangedListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.flask.colorpicker.slider; - -public interface OnValueChangedListener { - void onValueChanged(float value); -} \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_preview.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_preview.xml deleted file mode 100644 index 28f67f4bd..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_preview.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_selector.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_selector.xml deleted file mode 100644 index b9ef85a7e..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_selector.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_widget.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_widget.xml deleted file mode 100644 index 571ac88b6..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/color_widget.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/picker_edit.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/picker_edit.xml deleted file mode 100644 index 1ec737c48..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/layout/picker_edit.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/attrs.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/attrs.xml deleted file mode 100644 index 68ea7a8a8..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/attrs.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/dimens.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/dimens.xml deleted file mode 100644 index cae73d520..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/dimens.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - 36dp - 24dp - 4dp - 10dp - 24dp - 40dp - 36dp - 20dp - diff --git a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/styles.xml b/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/styles.xml deleted file mode 100644 index afdeddf13..000000000 --- a/app/thirdparty-lib-src/QuadFlask-colorpicker/src/main/res/values/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/thirdparty/java/other/com/flask/colorpicker/ColorPickerPreference.java b/app/thirdparty/java/other/com/flask/colorpicker/ColorPickerPreference.java deleted file mode 100644 index 27d3b7207..000000000 --- a/app/thirdparty/java/other/com/flask/colorpicker/ColorPickerPreference.java +++ /dev/null @@ -1,187 +0,0 @@ -package other.com.flask.colorpicker; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.graphics.Color; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.GradientDrawable; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.widget.ImageView; - -import androidx.annotation.NonNull; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; - -import com.flask.colorpicker.ColorPickerView; -import com.flask.colorpicker.Utils; -import com.flask.colorpicker.builder.ColorPickerClickListener; -import com.flask.colorpicker.builder.ColorPickerDialogBuilder; - -import net.gsantner.markor.R; - -public class ColorPickerPreference extends Preference { - - protected boolean alphaSlider; - protected boolean lightSlider; - - protected int selectedColor = 0; - - protected ColorPickerView.WHEEL_TYPE wheelType; - protected int density; - - private String pickerTitle; - private String pickerButtonCancel; - private String pickerButtonOk; - - protected ImageView colorIndicator; - - - public ColorPickerPreference(Context context) { - super(context); - } - - public ColorPickerPreference(Context context, AttributeSet attrs) { - super(context, attrs); - initWith(context, attrs); - } - - public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initWith(context, attrs); - } - - - private void initWith(Context context, AttributeSet attrs) { - final TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ColorPickerPreference); - - try { - alphaSlider = typedArray.getBoolean(R.styleable.ColorPickerPreference_alphaSlider, true); - lightSlider = typedArray.getBoolean(R.styleable.ColorPickerPreference_lightnessSlider, true); - - density = typedArray.getInt(R.styleable.ColorPickerPreference_density, 10); - wheelType = ColorPickerView.WHEEL_TYPE.indexOf(typedArray.getInt(R.styleable.ColorPickerPreference_wheelType, 0)); - - selectedColor = typedArray.getInt(R.styleable.ColorPickerPreference_initialColor, 0xffffffff); - - pickerTitle = typedArray.getString(R.styleable.ColorPickerPreference_pickerTitle); - if (pickerTitle == null) - pickerTitle = "Choose color"; - - pickerButtonCancel = typedArray.getString(R.styleable.ColorPickerPreference_pickerButtonCancel); - if (pickerButtonCancel == null) - pickerButtonCancel = context.getString(R.string.cancel); - - pickerButtonOk = typedArray.getString(R.styleable.ColorPickerPreference_pickerButtonOk); - if (pickerButtonOk == null) - pickerButtonOk = context.getString(android.R.string.ok); - - } finally { - typedArray.recycle(); - } - - setWidgetLayoutResource(R.layout.color_widget); - } - - - @Override - public void onBindViewHolder(@NonNull PreferenceViewHolder view) { - super.onBindViewHolder(view); - - Resources res = getContext().getResources(); - GradientDrawable colorChoiceDrawable = null; - - colorIndicator = (ImageView) view.findViewById(R.id.color_indicator); - - Drawable currentDrawable = colorIndicator.getDrawable(); - if (currentDrawable != null && currentDrawable instanceof GradientDrawable) - colorChoiceDrawable = (GradientDrawable) currentDrawable; - - if (colorChoiceDrawable == null) { - colorChoiceDrawable = new GradientDrawable(); - colorChoiceDrawable.setShape(GradientDrawable.OVAL); - } - - int tmpColor = isEnabled() - ? selectedColor - : darken(selectedColor, .5f); - - colorChoiceDrawable.setColor(tmpColor); - colorChoiceDrawable.setStroke((int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, - 1, - res.getDisplayMetrics() - ), darken(tmpColor, .8f)); - - colorIndicator.setImageDrawable(colorChoiceDrawable); - } - - @Override - public CharSequence getSummary() { - CharSequence text = super.getSummary(); - if (TextUtils.isEmpty(text)) { - text = Utils.getHexString(selectedColor, false).toLowerCase(); - } - return text; - } - - public void setValue(int value) { - if (callChangeListener(value)) { - selectedColor = value; - persistInt(value); - notifyChanged(); - } - } - - - @Override - protected void onSetInitialValue(boolean restoreValue, Object defaultValue) { - setValue(restoreValue ? getPersistedInt(0) : (Integer) defaultValue); - } - - @Override - protected Object onGetDefaultValue(TypedArray a, int index) { - return a.getInt(index, 0); - } - - @Override - protected void onClick() { - ColorPickerDialogBuilder builder = ColorPickerDialogBuilder - .with(getContext()) - .setTitle(pickerTitle) - .initialColor(selectedColor) - .wheelType(wheelType) - .density(density) - .setPositiveButton(pickerButtonOk, new ColorPickerClickListener() { - @Override - public void onClick(DialogInterface dialog, int selectedColorFromPicker, Integer[] allColors) { - setValue(selectedColorFromPicker); - } - }) - .setNegativeButton(pickerButtonCancel, null); - - if (!alphaSlider && !lightSlider) builder.noSliders(); - else if (!alphaSlider) builder.lightnessSliderOnly(); - else if (!lightSlider) builder.alphaSliderOnly(); - - - builder - .build() - .show(); - } - - public static int darken(int color, float factor) { - int a = Color.alpha(color); - int r = Color.red(color); - int g = Color.green(color); - int b = Color.blue(color); - - return Color.argb(a, - Math.max((int) (r * factor), 0), - Math.max((int) (g * factor), 0), - Math.max((int) (b * factor), 0)); - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 1359fd6b1..e7b4def49 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1 @@ -include(':app:thirdparty-lib-src:QuadFlask-colorpicker') include ':app'