aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java36
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKey.java42
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java32
4 files changed, 34 insertions, 80 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index c268abb89..0749b3f36 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -248,27 +248,29 @@ public class Key {
mOn = !mOn;
}
+ public boolean isInside(int x, int y) {
+ return mKeyboard.isInside(this, x, y);
+ }
+
/**
- * Detects if a point falls inside this key.
+ * Detects if a point falls on this key.
* @param x the x-coordinate of the point
* @param y the y-coordinate of the point
- * @return whether or not the point falls inside the key. If the key is attached to an
- * edge, it will assume that all points between the key and the edge are considered to be
- * inside the key.
+ * @return whether or not the point falls on the key. If the key is attached to an edge, it will
+ * assume that all points between the key and the edge are considered to be on the key.
*/
- public boolean isInside(int x, int y) {
- boolean leftEdge = (mEdgeFlags & Keyboard.EDGE_LEFT) > 0;
- boolean rightEdge = (mEdgeFlags & Keyboard.EDGE_RIGHT) > 0;
- boolean topEdge = (mEdgeFlags & Keyboard.EDGE_TOP) > 0;
- boolean bottomEdge = (mEdgeFlags & Keyboard.EDGE_BOTTOM) > 0;
- if ((x >= this.mX || (leftEdge && x <= this.mX + this.mWidth))
- && (x < this.mX + this.mWidth || (rightEdge && x >= this.mX))
- && (y >= this.mY || (topEdge && y <= this.mY + this.mHeight))
- && (y < this.mY + this.mHeight || (bottomEdge && y >= this.mY))) {
- return true;
- } else {
- return false;
- }
+ public boolean isOnKey(int x, int y) {
+ final int flags = mEdgeFlags;
+ final boolean leftEdge = (flags & Keyboard.EDGE_LEFT) != 0;
+ final boolean rightEdge = (flags & Keyboard.EDGE_RIGHT) != 0;
+ final boolean topEdge = (flags & Keyboard.EDGE_TOP) != 0;
+ final boolean bottomEdge = (flags & Keyboard.EDGE_BOTTOM) != 0;
+ final int left = this.mX;
+ final int right = left + this.mWidth;
+ final int top = this.mY;
+ final int bottom = top + this.mHeight;
+ return (x >= left || leftEdge) && (x < right || rightEdge)
+ && (y >= top || topEdge) && (y < bottom || bottomEdge);
}
/**
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index aa48292c7..ea0a1f9b9 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -409,6 +409,10 @@ public class Keyboard {
}
}
+ public boolean isInside(Key key, int x, int y) {
+ return key.isOnKey(x, y);
+ }
+
/**
* Returns the indices of the keys that are closest to the given point.
* @param x the x-coordinate of the point
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKey.java b/java/src/com/android/inputmethod/keyboard/LatinKey.java
deleted file mode 100644
index 1df4227ae..000000000
--- a/java/src/com/android/inputmethod/keyboard/LatinKey.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc.
- *
- * 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.
- */
-
-package com.android.inputmethod.keyboard;
-
-import android.content.res.Resources;
-import android.content.res.XmlResourceParser;
-
-// TODO: We should remove this class
-public class LatinKey extends Key {
- public LatinKey(Resources res, Row parent, int x, int y,
- XmlResourceParser parser, KeyStyles keyStyles) {
- super(res, parent, x, y, parser, keyStyles);
- }
-
- /**
- * Overriding this method so that we can reduce the target area for certain keys.
- */
- @Override
- public boolean isInside(int x, int y) {
- boolean result = (mKeyboard instanceof LatinKeyboard)
- && ((LatinKeyboard)mKeyboard).isInside(this, x, y);
- return result;
- }
-
- boolean isInsideSuper(int x, int y) {
- return super.isInside(x, y);
- }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 934874868..4e337e6d7 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -22,7 +22,6 @@ import com.android.inputmethod.latin.SubtypeSwitcher;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -98,12 +97,6 @@ public class LatinKeyboard extends Keyboard {
mSpaceKeyIndex = indexOf(CODE_SPACE);
}
- @Override
- protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
- XmlResourceParser parser, KeyStyles keyStyles) {
- return new LatinKey(res, parent, x, y, parser, keyStyles);
- }
-
/**
* @return a key which should be invalidated.
*/
@@ -264,10 +257,6 @@ public class LatinKeyboard extends Keyboard {
return mSpaceDragLastDiff > 0 ? 1 : -1;
}
- boolean isCurrentlyInSpace() {
- return mCurrentlyInSpace;
- }
-
public void setPreferredLetters(int[] frequencies) {
mPrefLetterFrequencies = frequencies;
mPrefLetter = 0;
@@ -289,8 +278,9 @@ public class LatinKeyboard extends Keyboard {
* Does the magic of locking the touch gesture into the spacebar when
* switching input languages.
*/
- @SuppressWarnings("unused")
- public boolean isInside(LatinKey key, int x, int y) {
+ @Override
+ @SuppressWarnings("unused") // SubtypeSwitcher.USE_SPACEBAR_LANGUAGE_SWITCHER is constant
+ public boolean isInside(Key key, int x, int y) {
final int code = key.mCodes[0];
if (code == CODE_SHIFT || code == CODE_DELETE) {
y -= key.mHeight / 10;
@@ -308,13 +298,13 @@ public class LatinKeyboard extends Keyboard {
mSpaceDragLastDiff = diff;
return true;
} else {
- boolean insideSpace = key.isInsideSuper(x, y);
- if (insideSpace) {
+ boolean isOnSpace = key.isOnKey(x, y);
+ if (isOnSpace) {
mCurrentlyInSpace = true;
mSpaceDragStartX = x;
updateLocaleDrag(0);
}
- return insideSpace;
+ return isOnSpace;
}
}
} else if (mPrefLetterFrequencies != null) {
@@ -327,16 +317,16 @@ public class LatinKeyboard extends Keyboard {
final int[] pref = mPrefLetterFrequencies;
if (mPrefLetter > 0) {
if (DEBUG_PREFERRED_LETTER) {
- if (mPrefLetter == code && !key.isInsideSuper(x, y)) {
+ if (mPrefLetter == code && !key.isOnKey(x, y)) {
Log.d(TAG, "CORRECTED !!!!!!");
}
}
return mPrefLetter == code;
} else {
- final boolean inside = key.isInsideSuper(x, y);
+ final boolean isOnKey = key.isOnKey(x, y);
int[] nearby = getNearestKeys(x, y);
List<Key> nearbyKeys = getKeys();
- if (inside) {
+ if (isOnKey) {
// If it's a preferred letter
if (inPrefList(code, pref)) {
// Check if its frequency is much lower than a nearby key
@@ -386,7 +376,7 @@ public class LatinKeyboard extends Keyboard {
}
// Didn't find any
if (mPrefLetter == 0) {
- return inside;
+ return isOnKey;
} else {
return mPrefLetter == code;
}
@@ -396,7 +386,7 @@ public class LatinKeyboard extends Keyboard {
// Lock into the spacebar
if (mCurrentlyInSpace) return false;
- return key.isInsideSuper(x, y);
+ return key.isOnKey(x, y);
}
private boolean inPrefList(int code, int[] pref) {