Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0529a04b authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Followup TBR in I87060049

This change is followup TBR in I87060049cad6f9d6432b6c4a246c15587ae0d837

Change-Id: I02ee33da269162f5e95ce5b985dbf5094ba14c0d
parent c5d33b16
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -24,11 +24,15 @@ import java.util.List;

abstract class KeyDetector {
    protected Keyboard mKeyboard;

    private Key[] mKeys;

    protected int mCorrectionX;

    protected int mCorrectionY;

    protected boolean mProximityCorrectOn;

    protected int mProximityThresholdSquare;

    public Key[] setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
@@ -54,7 +58,7 @@ abstract class KeyDetector {
    protected Key[] getKeys() {
        if (mKeys == null)
            throw new IllegalStateException("keyboard isn't set");
        // mKeyboard is guaranteed not null at setKeybaord() method
        // mKeyboard is guaranteed not to be null at setKeybaord() method if mKeys is not null
        return mKeys;
    }

@@ -70,13 +74,40 @@ abstract class KeyDetector {
        mProximityThresholdSquare = threshold * threshold;
    }

    /**
     * Allocates array that can hold all key indices returned by {@link #getKeyIndexAndNearbyCodes}
     * method. The maximum size of the array should be computed by {@link #getMaxNearbyKeys}.
     *
     * @return Allocates and returns an array that can hold all key indices returned by
     *         {@link #getKeyIndexAndNearbyCodes} method. All elements in the returned array are
     *         initialized by {@link com.android.inputmethod.latin.LatinKeyboardView.NOT_A_KEY}
     *         value.
     */
    public int[] newCodeArray() {
        int[] codes = new int[getMaxNearbyKeys()];
        Arrays.fill(codes, LatinKeyboardBaseView.NOT_A_KEY);
        return codes;
    }

    /**
     * Computes maximum size of the array that can contain all nearby key indices returned by
     * {@link #getKeyIndexAndNearbyCodes}.
     *
     * @return Returns maximum size of the array that can contain all nearby key indices returned
     *         by {@link #getKeyIndexAndNearbyCodes}.
     */
    abstract protected int getMaxNearbyKeys();

    /**
     * Finds all possible nearby key indices around a touch event point and returns the nearest key
     * index. The algorithm to determine the nearby keys depends on the threshold set by
     * {@link #setProximityThreshold(int)} and the mode set by
     * {@link #setProximityCorrectionEnabled(boolean)}.
     *
     * @param x The x-coordinate of a touch point
     * @param y The y-coordinate of a touch point
     * @param allKeys All nearby key indices are returned in this array
     * @return The nearest key index
     */
    abstract public int getKeyIndexAndNearbyCodes(int x, int y, int[] allKeys);
}