aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java5
-rw-r--r--java/src/com/android/inputmethod/latin/InputPointers.java35
-rw-r--r--java/src/com/android/inputmethod/latin/LastComposedWord.java2
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java2
5 files changed, 30 insertions, 20 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 4f6af98ca..cc6789d13 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -234,9 +234,8 @@ public class PointerTracker {
// TODO: To handle multi-touch gestures we may want to move this method to
// {@link PointerTrackerQueue}.
private static InputPointers getIncrementalBatchPoints() {
- final InputPointers pointers = new InputPointers();
- // TODO: Add a default capacity parameter for the InputPointers' constructor.
// TODO: Avoid creating a new instance here?
+ final InputPointers pointers = new InputPointers(GestureStroke.DEFAULT_CAPACITY);
for (final PointerTracker tracker : sTrackers) {
tracker.mGestureStroke.appendIncrementalBatchPoints(pointers);
}
@@ -246,9 +245,8 @@ public class PointerTracker {
// TODO: To handle multi-touch gestures we may want to move this method to
// {@link PointerTrackerQueue}.
private static InputPointers getAllBatchPoints() {
- // TODO: Add a default capacity parameter for the InputPointers' constructor.
// TODO: Avoid creating a new instance here?
- final InputPointers pointers = new InputPointers();
+ final InputPointers pointers = new InputPointers(GestureStroke.DEFAULT_CAPACITY);
for (final PointerTracker tracker : sTrackers) {
tracker.mGestureStroke.appendAllBatchPoints(pointers);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
index 14e99487d..8740e6972 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
@@ -19,8 +19,11 @@ import android.util.FloatMath;
import com.android.inputmethod.latin.InputPointers;
public class GestureStroke {
+ public static final int DEFAULT_CAPACITY = 128;
+
private final int mPointerId;
- private final InputPointers mInputPointers = new InputPointers();
+ // TODO: Replace this {@link InputPointers} with a set of {@link ScalableIntArray}s.
+ private final InputPointers mInputPointers = new InputPointers(DEFAULT_CAPACITY);
private float mLength;
private float mAngle;
private int mIncrementalRecognitionPoint;
diff --git a/java/src/com/android/inputmethod/latin/InputPointers.java b/java/src/com/android/inputmethod/latin/InputPointers.java
index 298e2b213..febabadf7 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -20,10 +20,19 @@ import java.util.Arrays;
// TODO: This class is not thread-safe.
public class InputPointers {
- private final ScalableIntArray mXCoordinates = new ScalableIntArray();
- private final ScalableIntArray mYCoordinates = new ScalableIntArray();
- private final ScalableIntArray mPointerIds = new ScalableIntArray();
- private final ScalableIntArray mTimes = new ScalableIntArray();
+ private final int mDefaultCapacity;
+ private final ScalableIntArray mXCoordinates;
+ private final ScalableIntArray mYCoordinates;
+ private final ScalableIntArray mPointerIds;
+ private final ScalableIntArray mTimes;
+
+ public InputPointers(int defaultCapacity) {
+ mDefaultCapacity = defaultCapacity;
+ mXCoordinates = new ScalableIntArray(defaultCapacity);
+ mYCoordinates = new ScalableIntArray(defaultCapacity);
+ mPointerIds = new ScalableIntArray(defaultCapacity);
+ mTimes = new ScalableIntArray(defaultCapacity);
+ }
public void addPointer(int index, int x, int y, int pointerId, int time) {
mXCoordinates.add(index, x);
@@ -70,10 +79,11 @@ public class InputPointers {
}
public void reset() {
- mXCoordinates.reset();
- mYCoordinates.reset();
- mPointerIds.reset();
- mTimes.reset();
+ final int defaultCapacity = mDefaultCapacity;
+ mXCoordinates.reset(defaultCapacity);
+ mYCoordinates.reset(defaultCapacity);
+ mPointerIds.reset(defaultCapacity);
+ mTimes.reset(defaultCapacity);
}
public int getPointerSize() {
@@ -97,12 +107,11 @@ public class InputPointers {
}
private static class ScalableIntArray {
- private static final int DEFAULT_SIZE = BinaryDictionary.MAX_WORD_LENGTH;
private int[] mArray;
private int mLength;
- public ScalableIntArray() {
- reset();
+ public ScalableIntArray(int capacity) {
+ reset(capacity);
}
public void add(int index, int val) {
@@ -136,8 +145,8 @@ public class InputPointers {
return mLength;
}
- public void reset() {
- mArray = new int[DEFAULT_SIZE];
+ public void reset(int capacity) {
+ mArray = new int[capacity];
mLength = 0;
}
diff --git a/java/src/com/android/inputmethod/latin/LastComposedWord.java b/java/src/com/android/inputmethod/latin/LastComposedWord.java
index 974af2584..bb39ce4f7 100644
--- a/java/src/com/android/inputmethod/latin/LastComposedWord.java
+++ b/java/src/com/android/inputmethod/latin/LastComposedWord.java
@@ -45,7 +45,7 @@ public class LastComposedWord {
public final String mCommittedWord;
public final int mSeparatorCode;
public final CharSequence mPrevWord;
- public final InputPointers mInputPointers = new InputPointers();
+ public final InputPointers mInputPointers = new InputPointers(BinaryDictionary.MAX_WORD_LENGTH);
private boolean mActive;
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index ca9dbaf05..6d346d179 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -33,7 +33,7 @@ public class WordComposer {
private static final int N = BinaryDictionary.MAX_WORD_LENGTH;
private int[] mPrimaryKeyCodes;
- private final InputPointers mInputPointers = new InputPointers();
+ private final InputPointers mInputPointers = new InputPointers(N);
private final StringBuilder mTypedWord;
private CharSequence mAutoCorrection;
private boolean mIsResumed;