diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java index aa4004c9c..e8de3a3bf 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java @@ -1136,4 +1136,8 @@ public class Key implements Comparable { height, params.mHorizontalGap, params.mVerticalGap); } } + + public boolean isPressed() { + return mPressed; + } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java index 4568f45b3..9bf2a578a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardSwitcher.java @@ -37,6 +37,7 @@ import org.dslul.openboard.inputmethod.latin.LatinIME; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.RichInputMethodManager; import org.dslul.openboard.inputmethod.latin.WordComposer; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.define.ProductionFlags; import org.dslul.openboard.inputmethod.latin.settings.Settings; import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; @@ -555,9 +556,9 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mClipboardHistoryView.setKeyboardActionListener(mLatinIME); // set background color here, otherwise there is a narrow white line between keyboard and suggestion strip - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) - mKeyboardViewWrapper.getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) + mKeyboardViewWrapper.getBackground().setColorFilter(colors.backgroundFilter); return mCurrentInputView; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java index 15c95dbaf..bbb6a3f53 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java @@ -21,7 +21,6 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.PorterDuff; @@ -33,18 +32,14 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; -import androidx.core.graphics.BlendModeColorFilterCompat; -import androidx.core.graphics.BlendModeCompat; - import org.dslul.openboard.inputmethod.keyboard.internal.KeyDrawParams; import org.dslul.openboard.inputmethod.keyboard.internal.KeyVisualAttributes; import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.StringUtils; import org.dslul.openboard.inputmethod.latin.settings.Settings; -import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import org.dslul.openboard.inputmethod.latin.suggestions.MoreSuggestionsView; -import org.dslul.openboard.inputmethod.latin.utils.ColorUtils; import org.dslul.openboard.inputmethod.latin.utils.TypefaceUtils; import java.util.HashSet; @@ -104,11 +99,7 @@ public class KeyboardView extends View { private final float mSpacebarIconWidthRatio; private final Rect mKeyBackgroundPadding = new Rect(); private static final float KET_TEXT_SHADOW_RADIUS_DISABLED = -1.0f; - private final ColorFilter keyHintTextColorFilter; - private final ColorFilter keyTextColorFilter; - private final ColorFilter keyBgFilter; - private final ColorFilter accentColorFilter; - private final boolean mCustomTheme; + private final Colors mColors; // The maximum key label width in the proportion to the key width. private static final float MAX_LABEL_RATIO = 0.90f; @@ -180,22 +171,11 @@ public class KeyboardView extends View { mPaint.setAntiAlias(true); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - mCustomTheme = settingsValues.mCustomTheme; - if (mCustomTheme) { - getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); - - keyBgFilter = settingsValues.mCustomKeyBackgroundColorFilter; - keyHintTextColorFilter = settingsValues.mCustomHintTextColorFilter; - keyTextColorFilter = settingsValues.mCustomKeyTextColorFilter; - accentColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(settingsValues.mCustomThemeColorAccent, BlendModeCompat.SRC_ATOP); - mSpacebarBackground.setColorFilter(settingsValues.mCustomSpaceBarBackgroundColorFilter); - mFunctionalKeyBackground.setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); - } else { - keyHintTextColorFilter = null; - keyTextColorFilter = null; - keyBgFilter = null; - accentColorFilter = null; + mColors = Settings.getInstance().getCurrent().mColors; + if (mColors.isCustom) { + getBackground().setColorFilter(mColors.backgroundFilter); + mSpacebarBackground.setColorFilter(mColors.spaceBarFilter); // todo: consider pressed state + mFunctionalKeyBackground.setColorFilter(mColors.functionalKeyBackgroundFilter); // todo: consider pressed state } } @@ -401,13 +381,13 @@ public class KeyboardView extends View { bgX = -padding.left; bgY = -padding.top; } - if (mCustomTheme) { + if (mColors.isCustom) { // color filter is applied to background, which is re-used // action key and normal key share the same background drawable, so we need to select the correct color filter if (key.isActionKey()) - background.setColorFilter(accentColorFilter); + background.setColorFilter(mColors.accentColorFilter); else if (key.getBackgroundType() == Key.BACKGROUND_TYPE_NORMAL) - background.setColorFilter(keyBgFilter); + background.setColorFilter(mColors.keyBackgroundFilter); } background.setBounds(0, 0, bgWidth, bgHeight); canvas.translate(bgX, bgY); @@ -461,14 +441,14 @@ public class KeyboardView extends View { if (key.isEnabled()) { paint.setColor(key.selectTextColor(params)); - if (mCustomTheme) { + if (mColors.isCustom) { // set key color only if not in emoji keyboard range if (keyboard != null - && (this.getClass() == MoreSuggestionsView.class ? - !StringUtils.probablyContainsEmoji(key.getLabel()) : // doesn't contain emoji (all can happen in MoreSuggestionsView) - (keyboard.mId.mElementId < 10 || keyboard.mId.mElementId > 26) // not showing emoji keyboard (no emojis visible on main keyboard otherwise) + && (this.getClass() == MoreSuggestionsView.class + ? !StringUtils.probablyContainsEmoji(key.getLabel()) // doesn't contain emoji (MoreSuggestionsView can have letters and emojis) + : (keyboard.mId.mElementId < 10 || keyboard.mId.mElementId > 26) // not showing emoji keyboard (no emojis visible on main keyboard otherwise) )) - paint.setColorFilter(keyTextColorFilter); + paint.setColorFilter(mColors.keyTextFilter); else paint.setColorFilter(null); } @@ -495,8 +475,8 @@ public class KeyboardView extends View { if (hintLabel != null && mShowsHints) { paint.setTextSize(key.selectHintTextSize(params)); paint.setColor(key.selectHintTextColor(params)); - if (mCustomTheme) - paint.setColorFilter(keyHintTextColorFilter); + if (mColors.isCustom) + paint.setColorFilter(mColors.keyHintTextFilter); // TODO: Should add a way to specify type face for hint letters paint.setTypeface(Typeface.DEFAULT_BOLD); blendAlpha(paint, params.mAnimAlpha); @@ -549,24 +529,21 @@ public class KeyboardView extends View { iconY = (keyHeight - iconHeight) / 2; // Align vertically center. } final int iconX = (keyWidth - iconWidth) / 2; // Align horizontally center. - if (mCustomTheme) { + if (mColors.isCustom) { if (key.isActionKey()) { // the white icon may not have enough contrast, and can't be adjusted by the user - if (ColorUtils.isBrightColor(Settings.getInstance().getCurrent().mCustomThemeColorAccent)) - icon.setColorFilter(Color.DKGRAY, PorterDuff.Mode.SRC_ATOP); - else - icon.clearColorFilter(); + icon.setColorFilter(mColors.actionKeyIconColorFilter); } else if (key.isShift()) { if (keyboard.mId.mElementId == KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED || keyboard.mId.mElementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED || keyboard.mId.mElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED || keyboard.mId.mElementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED ) - icon.setColorFilter(accentColorFilter); + icon.setColorFilter(mColors.accentColorFilter); else - icon.setColorFilter(keyTextColorFilter); + icon.setColorFilter(mColors.keyTextFilter); } else if (key.getBackgroundType() != Key.BACKGROUND_TYPE_NORMAL) { - icon.setColorFilter(keyTextColorFilter); + icon.setColorFilter(mColors.keyTextFilter); } } drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt index dc099e615..1517276a6 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryRecyclerView.kt @@ -63,9 +63,9 @@ class ClipboardHistoryRecyclerView @JvmOverloads constructor( init { paint.color = dividerColor paint.strokeWidth = dividerHeight.toFloat() - val settingsValues = Settings.getInstance().current - if (settingsValues.mCustomTheme) - paint.colorFilter = settingsValues.mCustomBackgroundColorFilter + val colors = Settings.getInstance().current.mColors + if (colors.isCustom) + paint.colorFilter = colors.backgroundFilter } override fun onDrawOver(canvas: Canvas, parent: RecyclerView, state: State) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt index cc06e78e6..96cfb5e92 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/clipboard/ClipboardHistoryView.kt @@ -90,7 +90,6 @@ class ClipboardHistoryView @JvmOverloads constructor( findViewById(R.id.clipboard_action_bar)?.apply { clipboardLayoutParams.setActionBarProperties(this) } - val settingsValues = Settings.getInstance().current alphabetKey = findViewById(R.id.clipboard_keyboard_alphabet).apply { tag = Constants.CODE_ALPHA_FROM_CLIPBOARD setBackgroundResource(functionalKeyBackgroundId) @@ -101,11 +100,12 @@ class ClipboardHistoryView @JvmOverloads constructor( setOnTouchListener(this@ClipboardHistoryView) setOnClickListener(this@ClipboardHistoryView) } - if (settingsValues.mCustomTheme) { - alphabetKey.background.colorFilter = settingsValues.mCustomFunctionalKeyBackgroundColorFilter - alphabetKey.setTextColor(settingsValues.mCustomKeyTextColor) - clearKey.colorFilter = settingsValues.mCustomKeyTextColorFilter - background.colorFilter = settingsValues.mCustomBackgroundColorFilter + val colors = Settings.getInstance().current.mColors + if (colors.isCustom) { + alphabetKey.background.colorFilter = colors.functionalKeyBackgroundFilter + alphabetKey.setTextColor(colors.keyText) + clearKey.colorFilter = colors.keyTextFilter + background.colorFilter = colors.backgroundFilter } } @@ -113,9 +113,9 @@ class ClipboardHistoryView @JvmOverloads constructor( key?.apply { text = label typeface = params.mTypeface - val settingsValues = Settings.getInstance().current - if (settingsValues.mCustomTheme) - setTextColor(settingsValues.mCustomKeyTextColor) + val colors = Settings.getInstance().current.mColors + if (colors.isCustom) + setTextColor(colors.keyText) else setTextColor(params.mFunctionalTextColor) setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize.toFloat()) @@ -126,10 +126,10 @@ class ClipboardHistoryView @JvmOverloads constructor( clipboardAdapter.apply { itemBackgroundId = keyBackgroundId itemTypeFace = params.mTypeface - val settingsValues = Settings.getInstance().current - if (settingsValues.mCustomTheme) { - itemTextColor = settingsValues.mCustomKeyTextColor - itemBackgroundColorFilter = settingsValues.mCustomKeyBackgroundColorFilter + val colors = Settings.getInstance().current.mColors + if (colors.isCustom) { + itemTextColor = colors.keyText + itemBackgroundColorFilter = colors.keyBackgroundFilter } else itemTextColor = params.mTextColor itemTextSize = params.mLabelSize.toFloat() diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java index d67914c47..2755bb656 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java @@ -47,9 +47,9 @@ import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardIconsSet; import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.RichInputMethodSubtype; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.settings.Settings; -import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils; import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils; @@ -163,10 +163,10 @@ public final class EmojiPalettesView extends LinearLayout // TODO: Replace background color with its own setting rather than using the // category page indicator background as a workaround. iconView.setBackgroundColor(mCategoryPageIndicatorBackground); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) { - iconView.getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); - iconView.setColorFilter(settingsValues.mCustomKeyTextColorFilter); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) { + iconView.getBackground().setColorFilter(colors.backgroundFilter); + iconView.setColorFilter(colors.keyTextFilter); } iconView.setImageResource(mEmojiCategory.getCategoryTabIcon(categoryId)); iconView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId)); @@ -269,14 +269,14 @@ public final class EmojiPalettesView extends LinearLayout mSpacebar.setTag(Constants.CODE_SPACE); mSpacebar.setOnTouchListener(this); mSpacebar.setOnClickListener(this); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) { - mAlphabetKeyLeft.getBackground().setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); - mSpacebar.getBackground().setColorFilter(settingsValues.mCustomSpaceBarBackgroundColorFilter); - mDeleteKey.getBackground().setColorFilter(settingsValues.mCustomFunctionalKeyBackgroundColorFilter); - getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); - mEmojiCategoryPageIndicatorView.setColors(settingsValues.mCustomThemeColorAccent, settingsValues.mCustomBackgroundColor); - findViewById(R.id.emoji_tab_strip).getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) { + mAlphabetKeyLeft.getBackground().setColorFilter(colors.functionalKeyBackgroundFilter); + mSpacebar.getBackground().setColorFilter(colors.spaceBarFilter); + mDeleteKey.getBackground().setColorFilter(colors.functionalKeyBackgroundFilter); + getBackground().setColorFilter(colors.backgroundFilter); + mEmojiCategoryPageIndicatorView.setColors(colors.accent, colors.background); + findViewById(R.id.emoji_tab_strip).getBackground().setColorFilter(colors.backgroundFilter); } mEmojiLayoutParams.setKeyProperties(mSpacebar); mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon); @@ -299,12 +299,12 @@ public final class EmojiPalettesView extends LinearLayout setCurrentCategoryAndPageId(categoryId, 0, false /* force */); updateEmojiCategoryPageIdView(); } - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) { + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) { if (mCurrentTab != null) - mCurrentTab.setColorFilter(settingsValues.mCustomKeyTextColorFilter); + mCurrentTab.setColorFilter(colors.keyTextFilter); mCurrentTab = (ImageView) mTabHost.getCurrentTabView(); - mCurrentTab.setColorFilter(settingsValues.mCustomThemeColorAccent); + mCurrentTab.setColorFilter(colors.accentColorFilter); } } @@ -389,9 +389,9 @@ public final class EmojiPalettesView extends LinearLayout private static void setupAlphabetKey(final TextView alphabetKey, final String label, final KeyDrawParams params) { alphabetKey.setText(label); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) - alphabetKey.setTextColor(settingsValues.mCustomKeyTextColor); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) + alphabetKey.setTextColor(colors.keyText); else alphabetKey.setTextColor(params.mFunctionalTextColor); alphabetKey.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java index 0bf021e07..e9ef35c6a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java @@ -27,9 +27,9 @@ import android.text.TextUtils; import org.dslul.openboard.inputmethod.keyboard.PointerTracker; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.SuggestedWords; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; import org.dslul.openboard.inputmethod.latin.settings.Settings; -import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import javax.annotation.Nonnull; @@ -62,15 +62,17 @@ public class GestureFloatingTextDrawingPreview extends AbstractDrawingPreview { private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' }; public GesturePreviewTextParams(final TypedArray mainKeyboardViewAttr) { - final SettingsValues sv = Settings.getInstance().getCurrent(); + final Colors colors = Settings.getInstance().getCurrent().mColors; mGesturePreviewTextSize = mainKeyboardViewAttr.getDimensionPixelSize( R.styleable.MainKeyboardView_gestureFloatingPreviewTextSize, 0); - mGesturePreviewTextColor = sv.mCustomTheme ? sv.mCustomKeyTextColor : mainKeyboardViewAttr.getColor( - R.styleable.MainKeyboardView_gestureFloatingPreviewTextColor, 0); + mGesturePreviewTextColor = colors.isCustom + ? colors.keyText + : mainKeyboardViewAttr.getColor(R.styleable.MainKeyboardView_gestureFloatingPreviewTextColor, 0); mGesturePreviewTextOffset = mainKeyboardViewAttr.getDimensionPixelOffset( R.styleable.MainKeyboardView_gestureFloatingPreviewTextOffset, 0); - mGesturePreviewColor = sv.mCustomTheme ? sv.mCustomBackgroundColor : mainKeyboardViewAttr.getColor( - R.styleable.MainKeyboardView_gestureFloatingPreviewColor, 0); + mGesturePreviewColor = colors.isCustom + ? colors.background + : mainKeyboardViewAttr.getColor(R.styleable.MainKeyboardView_gestureFloatingPreviewColor, 0); mGesturePreviewHorizontalPadding = mainKeyboardViewAttr.getDimension( R.styleable.MainKeyboardView_gestureFloatingPreviewHorizontalPadding, 0.0f); mGesturePreviewVerticalPadding = mainKeyboardViewAttr.getDimension( diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureTrailDrawingParams.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureTrailDrawingParams.java index 22faba628..ff5c06f8f 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureTrailDrawingParams.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/GestureTrailDrawingParams.java @@ -19,8 +19,8 @@ package org.dslul.openboard.inputmethod.keyboard.internal; import android.content.res.TypedArray; import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.settings.Settings; -import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; /** * This class holds parameters to control how a gesture trail is drawn and animated on the screen. @@ -52,8 +52,8 @@ final class GestureTrailDrawingParams { public final int mTrailLingerDuration; public GestureTrailDrawingParams(final TypedArray mainKeyboardViewAttr) { - final SettingsValues sv = Settings.getInstance().getCurrent(); - mTrailColor = sv.mCustomTheme ? sv.mCustomThemeColorAccent : mainKeyboardViewAttr.getColor( + final Colors colors = Settings.getInstance().getCurrent().mColors; + mTrailColor = colors.isCustom ? colors.accent : mainKeyboardViewAttr.getColor( R.styleable.MainKeyboardView_gestureTrailColor, 0); mTrailStartWidth = mainKeyboardViewAttr.getDimension( R.styleable.MainKeyboardView_gestureTrailStartWidth, 0.0f); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyPreviewChoreographer.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyPreviewChoreographer.java index 064608fe3..4ecaa0495 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyPreviewChoreographer.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyPreviewChoreographer.java @@ -21,9 +21,9 @@ import android.view.View; import android.view.ViewGroup; import org.dslul.openboard.inputmethod.keyboard.Key; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; import org.dslul.openboard.inputmethod.latin.settings.Settings; -import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import org.dslul.openboard.inputmethod.latin.utils.ViewLayoutUtils; import java.util.ArrayDeque; @@ -119,10 +119,10 @@ public final class KeyPreviewChoreographer { } final boolean hasMoreKeys = (key.getMoreKeys() != null); keyPreviewView.setPreviewBackground(hasMoreKeys, keyPreviewPosition); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) { - keyPreviewView.getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); - keyPreviewView.setTextColor(settingsValues.mCustomKeyTextColor); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) { + keyPreviewView.getBackground().setColorFilter(colors.backgroundFilter); + keyPreviewView.setTextColor(colors.keyText); } // The key preview is placed vertically above the top edge of the parent key with an // arbitrary offset. diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java index b7a8a88b5..1c1ace1e4 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java @@ -23,7 +23,9 @@ import android.graphics.Path; import org.dslul.openboard.inputmethod.keyboard.PointerTracker; import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; +import org.dslul.openboard.inputmethod.latin.settings.Settings; /** * Draw rubber band preview graphics during sliding key input. @@ -45,8 +47,10 @@ public final class SlidingKeyInputDrawingPreview extends AbstractDrawingPreview private final Paint mPaint = new Paint(); public SlidingKeyInputDrawingPreview(final TypedArray mainKeyboardViewAttr) { - final int previewColor = mainKeyboardViewAttr.getColor( - R.styleable.MainKeyboardView_slidingKeyInputPreviewColor, 0); + final Colors colors = Settings.getInstance().getCurrent().mColors; + final int previewColor = colors.isCustom + ? colors.accent + : mainKeyboardViewAttr.getColor(R.styleable.MainKeyboardView_slidingKeyInputPreviewColor, 0); final float previewRadius = mainKeyboardViewAttr.getDimension( R.styleable.MainKeyboardView_slidingKeyInputPreviewWidth, 0) / 2.0f; final int PERCENTAGE_INT = 100; diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java index 3098fe5a9..17ebf02af 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/LatinIME.java @@ -64,6 +64,7 @@ import org.dslul.openboard.inputmethod.keyboard.KeyboardSwitcher; import org.dslul.openboard.inputmethod.keyboard.MainKeyboardView; import org.dslul.openboard.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.CoordinateUtils; import org.dslul.openboard.inputmethod.latin.common.InputPointers; @@ -101,7 +102,6 @@ import javax.annotation.Nonnull; import static org.dslul.openboard.inputmethod.latin.common.Constants.ImeOption.FORCE_ASCII; import static org.dslul.openboard.inputmethod.latin.common.Constants.ImeOption.NO_MICROPHONE; import static org.dslul.openboard.inputmethod.latin.common.Constants.ImeOption.NO_MICROPHONE_COMPAT; -import static org.dslul.openboard.inputmethod.latin.utils.ColorUtils.isBrightColor; /** * Input method implementation for Qwerty'ish keyboard. @@ -2022,7 +2022,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen final SettingsValues settingsValues = mSettings.getCurrent(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || !settingsValues.mCustomNavBarColor) return; - final int color = settingsValues.mNavBarColor; + final int color = settingsValues.mColors.navBar; final Window window = getWindow().getWindow(); if (window == null) return; @@ -2033,7 +2033,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen return; final View view = window.getDecorView(); mOriginalNavBarFlags = view.getSystemUiVisibility(); - if (isBrightColor(color)) { + if (Colors.isBrightColor(color)) { view.setSystemUiVisibility(mOriginalNavBarFlags | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); } else { view.setSystemUiVisibility(mOriginalNavBarFlags & ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.java new file mode 100644 index 000000000..dd2e71b7f --- /dev/null +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/Colors.java @@ -0,0 +1,129 @@ +package org.dslul.openboard.inputmethod.latin.common; + +import android.content.res.Configuration; +import android.graphics.Color; +import android.graphics.ColorFilter; + +import androidx.core.graphics.BlendModeColorFilterCompat; +import androidx.core.graphics.BlendModeCompat; + +import org.dslul.openboard.inputmethod.keyboard.KeyboardTheme; +import org.dslul.openboard.inputmethod.latin.settings.Settings; + +public class Colors { + + public final boolean isCustom; // todo: could be removed? + public final int navBar; + public final int accent; + public final int background; + public final int keyBackground; + public final int functionalKey; + public final int spaceBar; + public final int keyText; + public final int keyHintText; + public ColorFilter backgroundFilter; + public ColorFilter keyBackgroundFilter; + public ColorFilter keyPressedBackgroundFilter; + public ColorFilter functionalKeyBackgroundFilter; + public ColorFilter functionalKeyPressedBackgroundFilter; + public ColorFilter spaceBarFilter; + public ColorFilter spaceBarPressedFilter; + public ColorFilter keyTextFilter; // todo: really necessary? + public ColorFilter keyHintTextFilter; // todo: really? color alone should be sufficient i think... test! + public ColorFilter accentColorFilter; // todo: really necessary? + public ColorFilter actionKeyIconColorFilter; + + public Colors(int acc, int bg, int k, int fun, int space, int kt, int kht) { + isCustom = true; + accent = acc; + background = bg; + keyBackground = k; + functionalKey = fun; + spaceBar = space; + keyText = kt; + keyHintText = kht; + navBar = background; + } + + public Colors(int themeId, int nightModeFlags) { + isCustom = false; + if (KeyboardTheme.getIsDayNight(themeId)) { + if (nightModeFlags == Configuration.UI_MODE_NIGHT_NO) + navBar = Color.rgb(236, 239, 241); + else if (themeId == KeyboardTheme.THEME_ID_LXX_DARK) + navBar = Color.rgb(38, 50, 56); + else + navBar = Color.BLACK; + } else if (KeyboardTheme.THEME_VARIANT_LIGHT.equals(KeyboardTheme.getThemeVariant(themeId))) { + navBar = Color.rgb(236, 239, 241); + } else if (themeId == KeyboardTheme.THEME_ID_LXX_DARK) { + navBar = Color.rgb(38, 50, 56); + } else { + // dark border is 13/13/13, but that's ok + navBar = Color.BLACK; + } + accent = 0; + background = 0; + keyBackground = 0; + functionalKey = 0; + spaceBar = 0; + keyText = 0; + keyHintText = 0; + } + + public void createColorFilters(final boolean hasKeyBorders) { + backgroundFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(background, BlendModeCompat.MODULATE); + if (hasKeyBorders) { + keyBackgroundFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(keyBackground, BlendModeCompat.MODULATE); + functionalKeyBackgroundFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(functionalKey, BlendModeCompat.MODULATE); + spaceBarFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(spaceBar, BlendModeCompat.MODULATE); + keyPressedBackgroundFilter = isDarkColor(keyBackground) + ? BlendModeColorFilterCompat.createBlendModeColorFilterCompat(keyBackground, BlendModeCompat.SCREEN) + : keyBackgroundFilter; + functionalKeyPressedBackgroundFilter = isDarkColor(functionalKey) + ? BlendModeColorFilterCompat.createBlendModeColorFilterCompat(functionalKey, BlendModeCompat.SCREEN) + : functionalKeyBackgroundFilter; + spaceBarPressedFilter = isDarkColor(spaceBar) + ? BlendModeColorFilterCompat.createBlendModeColorFilterCompat(spaceBar, BlendModeCompat.SCREEN) + : spaceBarFilter; + } else { + // need to set color to background if key borders are disabled, or there will be ugly keys + keyBackgroundFilter = backgroundFilter; + functionalKeyBackgroundFilter = backgroundFilter; + spaceBarFilter = backgroundFilter; + keyPressedBackgroundFilter = isDarkColor(background) + ? BlendModeColorFilterCompat.createBlendModeColorFilterCompat(background, BlendModeCompat.SCREEN) + : keyBackgroundFilter; + functionalKeyPressedBackgroundFilter = keyBackgroundFilter; + spaceBarPressedFilter = keyBackgroundFilter; + } + keyTextFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(keyText, BlendModeCompat.SRC_ATOP); + keyHintTextFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(keyHintText, BlendModeCompat.SRC_ATOP); + accentColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(accent, BlendModeCompat.SRC_ATOP); + actionKeyIconColorFilter = isBrightColor(accent) // the white icon may not have enough contrast, and can't be adjusted by the user + ? BlendModeColorFilterCompat.createBlendModeColorFilterCompat(Color.DKGRAY, BlendModeCompat.SRC_ATOP) + : null; + } + + public static boolean isBrightColor(int color) { + if (android.R.color.transparent == color) { + return true; + } + // See http://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx + int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)}; + // we are only interested whether brightness is greater, so no need for sqrt + int brightnessSquared = (int) (rgb[0] * rgb[0] * .241 + rgb[1] * rgb[1] * .691 + rgb[2] * rgb[2] * .068); + return brightnessSquared >= 210*210; + } + + public static boolean isDarkColor(int color) { + if (android.R.color.transparent == color) { + return true; + } + // See http://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx + int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)}; + // we are only interested whether brightness is greater, so no need for sqrt + int brightnessSquared = (int) (rgb[0] * rgb[0] * .241 + rgb[1] * rgb[1] * .691 + rgb[2] * rgb[2] * .068); + return brightnessSquared < 50*50; + } +} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java index bcae1ebc0..1f07ff3b1 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/Settings.java @@ -31,6 +31,7 @@ import org.dslul.openboard.inputmethod.keyboard.KeyboardTheme; import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager; import org.dslul.openboard.inputmethod.latin.InputAttributes; import org.dslul.openboard.inputmethod.latin.R; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; import org.dslul.openboard.inputmethod.latin.common.StringUtils; import org.dslul.openboard.inputmethod.latin.utils.AdditionalSubtypeUtils; @@ -47,6 +48,7 @@ import java.util.Set; import java.util.concurrent.locks.ReentrantLock; import javax.annotation.Nonnull; +import javax.annotation.Nullable; public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = Settings.class.getSimpleName(); @@ -564,58 +566,3 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang } } - -// class for forwarding custom colors to SettingsValues -// (kotlin data class could be 3 lines...) -// actually this could contain the color filters too, which would allow more flexibility (only do if needed) -class Colors { - boolean isCustom; - int navBar; - int accent; - int background; - int keyBackground; - int functionalKey; // this color will appear darker than set, as it is applied using a color filter in modulate mode - int spaceBar; - int keyText; - int keyHintText; - public Colors(int acc, int bg, int k, int fun, int space, int kt, int kht) { - isCustom = true; - accent = acc; - background = bg; - keyBackground = k; - functionalKey = fun; - spaceBar = space; - keyText = kt; - keyHintText = kht; - // slightly adjust color so it matches keyboard background (actually it's a little off) - // todo: remove this weird not-really-white? i.e. set actually white background - // then the default themes could simply be replaced by a set of colors... - // but: this needs to work for the auto-theme too! - navBar = Color.rgb((int) (Color.red(background) * 0.925), (int) (Color.green(background) * 0.9379), (int) (Color.blue(background) * 0.945)); - } - public Colors(int themeId, int nightModeFlags) { - isCustom = false; - if (KeyboardTheme.getIsDayNight(themeId)) { - if (nightModeFlags == Configuration.UI_MODE_NIGHT_NO) - navBar = Color.rgb(236, 239, 241); - else if (themeId == KeyboardTheme.THEME_ID_LXX_DARK) - navBar = Color.rgb(38, 50, 56); - else - navBar = Color.BLACK; - } else if (KeyboardTheme.THEME_VARIANT_LIGHT.equals(KeyboardTheme.getThemeVariant(themeId))) { - navBar = Color.rgb(236, 239, 241); - } else if (themeId == KeyboardTheme.THEME_ID_LXX_DARK) { - navBar = Color.rgb(38, 50, 56); - } else { - // dark border is 13/13/13, but that's ok - navBar = Color.BLACK; - } - accent = 0; - background = 0; - keyBackground = 0; - functionalKey = 0; - spaceBar = 0; - keyText = 0; - keyHintText = 0; - } -} diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java index dce30b26b..dcd797e65 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SettingsValues.java @@ -32,6 +32,7 @@ import org.dslul.openboard.inputmethod.compat.AppWorkaroundsUtils; import org.dslul.openboard.inputmethod.latin.InputAttributes; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.RichInputMethodManager; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.spellcheck.AndroidSpellCheckerService; import org.dslul.openboard.inputmethod.latin.utils.AsyncResultHolder; import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils; @@ -127,17 +128,7 @@ public class SettingsValues { private final AsyncResultHolder mAppWorkarounds; // User-defined colors - public final boolean mCustomTheme; - public final ColorFilter mCustomKeyBackgroundColorFilter; - public final ColorFilter mCustomFunctionalKeyBackgroundColorFilter; - public final ColorFilter mCustomSpaceBarBackgroundColorFilter; - public final int mCustomBackgroundColor; - public final ColorFilter mCustomBackgroundColorFilter; - public final ColorFilter mCustomKeyTextColorFilter; - public final ColorFilter mCustomHintTextColorFilter; - public final int mCustomThemeColorAccent; - public final int mCustomKeyTextColor; - public final int mNavBarColor; + public final Colors mColors; // Debug settings public final boolean mIsInternal; @@ -265,25 +256,8 @@ public class SettingsValues { mOneHandedModeGravity = Settings.readOneHandedModeGravity(prefs); mSecondaryLocale = Settings.getSecondaryLocale(prefs, RichInputMethodManager.getInstance().getCurrentSubtypeLocale().toString()); - final Colors colors = Settings.getColors(context.getResources().getConfiguration(), prefs); - mNavBarColor = colors.navBar; - mCustomTheme = colors.isCustom; - mCustomThemeColorAccent = colors.accent; - mCustomKeyTextColor = colors.keyText; - mCustomBackgroundColor = colors.background; - mCustomBackgroundColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(mCustomBackgroundColor, BlendModeCompat.MODULATE); - if (prefs.getBoolean(Settings.PREF_THEME_KEY_BORDERS, false)) { - mCustomKeyBackgroundColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(colors.keyBackground, BlendModeCompat.MODULATE); - mCustomFunctionalKeyBackgroundColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(colors.functionalKey, BlendModeCompat.MODULATE); - mCustomSpaceBarBackgroundColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(colors.spaceBar, BlendModeCompat.MODULATE); - } else { - // need to set color to background if key borders are disabled, or there will be ugly keys - mCustomKeyBackgroundColorFilter = mCustomBackgroundColorFilter; - mCustomFunctionalKeyBackgroundColorFilter = mCustomBackgroundColorFilter; - mCustomSpaceBarBackgroundColorFilter = mCustomBackgroundColorFilter; - } - mCustomHintTextColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(colors.keyHintText, BlendModeCompat.SRC_ATOP); - mCustomKeyTextColorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(mCustomKeyTextColor, BlendModeCompat.SRC_ATOP); + mColors = Settings.getColors(context.getResources().getConfiguration(), prefs); + mColors.createColorFilters(prefs.getBoolean(Settings.PREF_THEME_KEY_BORDERS, false)); mAddToPersonalDictionary = prefs.getBoolean(Settings.PREF_ADD_TO_PERSONAL_DICTIONARY, false); mUseContactsDictionary = prefs.getBoolean(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY, false); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java index 613450f20..52719a28a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java @@ -49,6 +49,7 @@ import org.dslul.openboard.inputmethod.latin.PunctuationSuggestions; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.SuggestedWords; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.settings.Settings; import org.dslul.openboard.inputmethod.latin.settings.SettingsValues; import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils; @@ -508,9 +509,9 @@ final class SuggestionStripLayoutHelper { // {@link SuggestionStripView#onClick(View)}. wordView.setTag(indexInSuggestedWords); wordView.setText(getStyledSuggestedWord(suggestedWords, indexInSuggestedWords)); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) - wordView.setTextColor(settingsValues.mCustomKeyTextColor); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) + wordView.setTextColor(colors.keyText); else wordView.setTextColor(getSuggestionTextColor(suggestedWords, indexInSuggestedWords)); if (SuggestionStripView.DBG) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index 95241e7d2..43c777c7a 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -48,6 +48,7 @@ import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager; import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.SuggestedWords; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import org.dslul.openboard.inputmethod.latin.common.Colors; import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.define.DebugFlags; import org.dslul.openboard.inputmethod.latin.settings.Settings; @@ -181,10 +182,10 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick mOtherKey.setImageDrawable(iconIncognito); - final SettingsValues settingsValues = Settings.getInstance().getCurrent(); - if (settingsValues.mCustomTheme) { - mStripVisibilityGroup.mSuggestionStripView.getBackground().setColorFilter(settingsValues.mCustomBackgroundColorFilter); - mClipboardKey.setColorFilter(settingsValues.mCustomKeyTextColor); + final Colors colors = Settings.getInstance().getCurrent().mColors; + if (colors.isCustom) { + mStripVisibilityGroup.mSuggestionStripView.getBackground().setColorFilter(colors.backgroundFilter); + mClipboardKey.setColorFilter(colors.keyText); } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ColorUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ColorUtils.java deleted file mode 100644 index 3d8ac1200..000000000 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/ColorUtils.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.dslul.openboard.inputmethod.latin.utils; - -import android.graphics.Color; - -public class ColorUtils { - public static boolean isBrightColor(int color) { - if (android.R.color.transparent == color) { - return true; - } - // See http://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx - boolean bright = false; - int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)}; - int brightness = (int) Math.sqrt(rgb[0] * rgb[0] * .241 + rgb[1] * rgb[1] * .691 + rgb[2] * rgb[2] * .068); - if (brightness >= 210) { - bright = true; - } - return bright; - } - -}