diff options
-rw-r--r-- | dictionaries/en_whitelist.xml | 82 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/PointerTracker.java | 2 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java | 26 | ||||
-rw-r--r-- | native/jni/src/dictionary.cpp | 2 | ||||
-rw-r--r-- | native/jni/src/geometry_utils.h | 40 | ||||
-rw-r--r-- | native/jni/src/gesture/gesture_decoder_wrapper.h | 8 | ||||
-rw-r--r-- | native/jni/src/gesture/incremental_decoder_interface.h | 2 | ||||
-rw-r--r-- | native/jni/src/gesture/incremental_decoder_wrapper.h | 8 |
8 files changed, 73 insertions, 97 deletions
diff --git a/dictionaries/en_whitelist.xml b/dictionaries/en_whitelist.xml index f112077bd..e11935fdf 100644 --- a/dictionaries/en_whitelist.xml +++ b/dictionaries/en_whitelist.xml @@ -19,13 +19,13 @@ --> <shortcuts> <entry shortcut="ill"> - <target replacement="I\'ll" priority="whitelist" /> + <target replacement="I'll" priority="whitelist" /> </entry> <entry shortcut="acomodate"> <target replacement="accommodate" priority="whitelist" /> </entry> <entry shortcut="aint"> - <target replacement="ain\'t" priority="whitelist" /> + <target replacement="ain't" priority="whitelist" /> </entry> <entry shortcut="alot"> <target replacement="a lot" priority="whitelist" /> @@ -34,7 +34,7 @@ <target replacement="and the" priority="whitelist" /> </entry> <entry shortcut="arent"> - <target replacement="aren\'t" priority="whitelist" /> + <target replacement="aren't" priority="whitelist" /> </entry> <entry shortcut="bern"> <target replacement="been" priority="whitelist" /> @@ -49,13 +49,13 @@ <target replacement="can" priority="whitelist" /> </entry> <entry shortcut="cant"> - <target replacement="can\'t" priority="whitelist" /> + <target replacement="can't" priority="whitelist" /> </entry> <entry shortcut="dame"> <target replacement="same" priority="whitelist" /> </entry> <entry shortcut="didint"> - <target replacement="didn\'t" priority="whitelist" /> + <target replacement="didn't" priority="whitelist" /> </entry> <entry shortcut="dormer"> <target replacement="former" priority="whitelist" /> @@ -82,13 +82,13 @@ <target replacement="too" priority="whitelist" /> </entry> <entry shortcut="hed"> - <target replacement="he\'d" priority="whitelist" /> + <target replacement="he'd" priority="whitelist" /> </entry> <entry shortcut="hel"> - <target replacement="he\'ll" priority="whitelist" /> + <target replacement="he'll" priority="whitelist" /> </entry> <entry shortcut="heres"> - <target replacement="here\'s" priority="whitelist" /> + <target replacement="here's" priority="whitelist" /> </entry> <entry shortcut="hew"> <target replacement="new" priority="whitelist" /> @@ -97,19 +97,19 @@ <target replacement="how" priority="whitelist" /> </entry> <entry shortcut="hoes"> - <target replacement="how\'s" priority="whitelist" /> + <target replacement="how's" priority="whitelist" /> </entry> <entry shortcut="howd"> - <target replacement="how\'d" priority="whitelist" /> + <target replacement="how'd" priority="whitelist" /> </entry> <entry shortcut="howll"> - <target replacement="how\'ll" priority="whitelist" /> + <target replacement="how'll" priority="whitelist" /> </entry> <entry shortcut="hows"> - <target replacement="how\'s" priority="whitelist" /> + <target replacement="how's" priority="whitelist" /> </entry> <entry shortcut="howve"> - <target replacement="how\'ve" priority="whitelist" /> + <target replacement="how've" priority="whitelist" /> </entry> <entry shortcut="hum"> <target replacement="him" priority="whitelist" /> @@ -121,25 +121,25 @@ <target replacement="its" priority="whitelist" /> </entry> <entry shortcut="il"> - <target replacement="I\'ll" priority="whitelist" /> + <target replacement="I'll" priority="whitelist" /> </entry> <entry shortcut="im"> - <target replacement="I\'m" priority="whitelist" /> + <target replacement="I'm" priority="whitelist" /> </entry> <entry shortcut="inteh"> <target replacement="in the" priority="whitelist" /> </entry> <entry shortcut="itd"> - <target replacement="it\'d" priority="whitelist" /> + <target replacement="it'd" priority="whitelist" /> </entry> <entry shortcut="itsa"> - <target replacement="it\'s a" priority="whitelist" /> + <target replacement="it's a" priority="whitelist" /> </entry> <entry shortcut="lets"> - <target replacement="let\'s" priority="whitelist" /> + <target replacement="let's" priority="whitelist" /> </entry> <entry shortcut="maam"> - <target replacement="ma\'am" priority="whitelist" /> + <target replacement="ma'am" priority="whitelist" /> </entry> <entry shortcut="manu"> <target replacement="many" priority="whitelist" /> @@ -196,10 +196,10 @@ <target replacement="took" priority="whitelist" /> </entry> <entry shortcut="shel"> - <target replacement="she\'ll" priority="whitelist" /> + <target replacement="she'll" priority="whitelist" /> </entry> <entry shortcut="shouldent"> - <target replacement="shouldn\'t" priority="whitelist" /> + <target replacement="shouldn't" priority="whitelist" /> </entry> <entry shortcut="sill"> <target replacement="will" priority="whitelist" /> @@ -208,7 +208,7 @@ <target replacement="down" priority="whitelist" /> </entry> <entry shortcut="thatd"> - <target replacement="that\'d" priority="whitelist" /> + <target replacement="that'd" priority="whitelist" /> </entry> <entry shortcut="tine"> <target replacement="time" priority="whitelist" /> @@ -238,60 +238,60 @@ <target replacement="weird" priority="whitelist" /> </entry> <entry shortcut="wel"> - <target replacement="we\'ll" priority="whitelist" /> + <target replacement="we'll" priority="whitelist" /> </entry> <entry shortcut="wer"> - <target replacement="we\'re" priority="whitelist" /> + <target replacement="we're" priority="whitelist" /> </entry> <entry shortcut="whatd"> - <target replacement="what\'d" priority="whitelist" /> + <target replacement="what'd" priority="whitelist" /> </entry> <entry shortcut="whatm"> - <target replacement="what\'m" priority="whitelist" /> + <target replacement="what'm" priority="whitelist" /> </entry> <entry shortcut="whatre"> - <target replacement="what\'re" priority="whitelist" /> + <target replacement="what're" priority="whitelist" /> </entry> <entry shortcut="whats"> - <target replacement="what\'s" priority="whitelist" /> + <target replacement="what's" priority="whitelist" /> </entry> <entry shortcut="whens"> - <target replacement="when\'s" priority="whitelist" /> + <target replacement="when's" priority="whitelist" /> </entry> <entry shortcut="whered"> - <target replacement="where\'d" priority="whitelist" /> + <target replacement="where'd" priority="whitelist" /> </entry> <entry shortcut="wherell"> - <target replacement="where\'ll" priority="whitelist" /> + <target replacement="where'll" priority="whitelist" /> </entry> <entry shortcut="wheres"> - <target replacement="where\'s" priority="whitelist" /> + <target replacement="where's" priority="whitelist" /> </entry> <entry shortcut="wholl"> - <target replacement="who\'ll" priority="whitelist" /> + <target replacement="who'll" priority="whitelist" /> </entry> <entry shortcut="whove"> - <target replacement="who\'ve" priority="whitelist" /> + <target replacement="who've" priority="whitelist" /> </entry> <entry shortcut="whyd"> - <target replacement="why\'d" priority="whitelist" /> + <target replacement="why'd" priority="whitelist" /> </entry> <entry shortcut="whyll"> - <target replacement="why\'ll" priority="whitelist" /> + <target replacement="why'll" priority="whitelist" /> </entry> <entry shortcut="whys"> - <target replacement="why\'s" priority="whitelist" /> + <target replacement="why's" priority="whitelist" /> </entry> <entry shortcut="whyve"> - <target replacement="why\'ve" priority="whitelist" /> + <target replacement="why've" priority="whitelist" /> </entry> <entry shortcut="wont"> - <target replacement="won\'t" priority="whitelist" /> + <target replacement="won't" priority="whitelist" /> </entry> <entry shortcut="yall"> - <target replacement="y\'all" priority="whitelist" /> + <target replacement="y'all" priority="whitelist" /> </entry> <entry shortcut="youd"> - <target replacement="you\'d" priority="whitelist" /> + <target replacement="you'd" priority="whitelist" /> </entry> </shortcuts> diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 696903746..7d565a64f 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -520,7 +520,7 @@ public class PointerTracker implements PointerTrackerQueue.Element { public void drawGestureTrail(Canvas canvas, Paint paint) { if (mInGesture) { - mGestureStroke.drawGestureTrail(canvas, paint, mLastX, mLastY); + mGestureStroke.drawGestureTrail(canvas, paint); } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java index da57b5a34..79e977a40 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java +++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java @@ -144,20 +144,21 @@ public class GestureStroke { mLastIncrementalBatchSize = size; } - private static float getDistance(final int p1x, final int p1y, - final int p2x, final int p2y) { - final float dx = p1x - p2x; - final float dy = p1y - p2y; + private static float getDistance(final int x1, final int y1, final int x2, final int y2) { + final float dx = x1 - x2; + final float dy = y1 - y2; // Note that, in recent versions of Android, FloatMath is actually slower than // java.lang.Math due to the way the JIT optimizes java.lang.Math. return (float)Math.sqrt(dx * dx + dy * dy); } - private static float getAngle(final int p1x, final int p1y, final int p2x, final int p2y) { - final int dx = p1x - p2x; - final int dy = p1y - p2y; + private static float getAngle(final int x1, final int y1, final int x2, final int y2) { + final int dx = x1 - x2; + final int dy = y1 - y2; if (dx == 0 && dy == 0) return 0; - return (float)Math.atan2(dy, dx); + // Would it be faster to call atan2f() directly via JNI? Not sure about what the JIT + // does with Math.atan2(). + return (float)Math.atan2((double)dy, (double)dx); } private static float getAngleDiff(final float a1, final float a2) { @@ -168,12 +169,12 @@ public class GestureStroke { return diff; } - public void drawGestureTrail(Canvas canvas, Paint paint, int lastX, int lastY) { + public void drawGestureTrail(final Canvas canvas, final Paint paint) { // TODO: These paint parameter interpolation should be tunable, possibly introduce an object // that implements an interface such as Paint getPaint(int step, int strokePoints) final int size = mXCoordinates.getLength(); - int[] xCoords = mXCoordinates.getPrimitiveArray(); - int[] yCoords = mYCoordinates.getPrimitiveArray(); + final int[] xCoords = mXCoordinates.getPrimitiveArray(); + final int[] yCoords = mYCoordinates.getPrimitiveArray(); int alpha = Constants.Color.ALPHA_OPAQUE; for (int i = size - 1; i > 0 && alpha > 0; i--) { paint.setAlpha(alpha); @@ -181,9 +182,6 @@ public class GestureStroke { alpha -= DRAWING_GESTURE_FADE_RATE; } canvas.drawLine(xCoords[i - 1], yCoords[i - 1], xCoords[i], yCoords[i], paint); - if (i == size - 1) { - canvas.drawLine(lastX, lastY, xCoords[i], yCoords[i], paint); - } } } } diff --git a/native/jni/src/dictionary.cpp b/native/jni/src/dictionary.cpp index 75d566cc7..9e4bd15a9 100644 --- a/native/jni/src/dictionary.cpp +++ b/native/jni/src/dictionary.cpp @@ -47,8 +47,6 @@ Dictionary::Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust, fullWordMultiplier, maxWordLength, maxWords, options); mBigramDictionary = new BigramDictionary(mOffsetDict, maxWordLength, maxPredictions); mGestureDecoder = new GestureDecoderWrapper(maxWordLength, maxWords); - mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary, - mOffsetDict /* dict root */, 0 /* root pos */); } Dictionary::~Dictionary() { diff --git a/native/jni/src/geometry_utils.h b/native/jni/src/geometry_utils.h index 168542e45..deb042525 100644 --- a/native/jni/src/geometry_utils.h +++ b/native/jni/src/geometry_utils.h @@ -28,38 +28,36 @@ namespace latinime { -static inline float sqrf(float x) { +static inline float squareFloat(float x) { return x * x; } -static inline float getNormalizedSqrDistanceFloat(int x1, int y1, int x2, int y2, int scale) { - return sqrf(static_cast<float>(x1 - x2) / static_cast<float>(scale)) - + sqrf(static_cast<float>(y1 - y2) / static_cast<float>(scale)); +static inline float getNormalizedSquaredDistanceFloat(float x1, float y1, float x2, float y2, + float scale) { + return squareFloat((x1 - x2) / scale) + squareFloat((y1 - y2) / scale); } -static inline float getDistanceSqrFloat(float x1, float y1, float x2, float y2) { - return sqrf(x2 - x1) + sqrf(y2 - y1); +static inline float getSquaredDistanceFloat(float x1, float y1, float x2, float y2) { + return squareFloat(x1 - x2) + squareFloat(y1 - y2); +} + +static inline float getDistanceFloat(float x1, float y1, float x2, float y2) { + return hypotf(x1 - x2, y1 - y2); } static inline int getDistanceInt(int x1, int y1, int x2, int y2) { - return static_cast<int>( - sqrtf(getDistanceSqrFloat( - static_cast<float>(x1), static_cast<float>(y1), - static_cast<float>(x2), static_cast<float>(y2)))); + return static_cast<int>(getDistanceFloat(static_cast<float>(x1), static_cast<float>(y1), + static_cast<float>(x2), static_cast<float>(y2))); } static inline float getAngle(int x1, int y1, int x2, int y2) { const int dx = x1 - x2; const int dy = y1 - y2; - if (dx == 0 && dy == 0) { - return 0; - } - const float dxf = static_cast<float>(dx); - const float dyf = static_cast<float>(dy); - return atan2f(dyf, dxf); + if (dx == 0 && dy == 0) return 0; + return atan2f(static_cast<float>(dy), static_cast<float>(dx)); } -static inline float angleDiff(float a1, float a2) { +static inline float getAngleDiff(float a1, float a2) { const float diff = fabsf(a1 - a2); if (diff > M_PI_F) { return 2.0f * M_PI_F - diff; @@ -67,7 +65,7 @@ static inline float angleDiff(float a1, float a2) { return diff; } -// static float pointToLineDistanceSqrFloat( +// static float pointToLineSegSquaredDistanceFloat( // float x, float y, float x1, float y1, float x2, float y2) { // float A = x - x1; // float B = y - y1; @@ -76,7 +74,7 @@ static inline float angleDiff(float a1, float a2) { // return fabsf(A * D - C * B) / sqrtf(C * C + D * D); // } -static inline float pointToLineSegDistanceSqrFloat( +static inline float pointToLineSegSquaredDistanceFloat( float x, float y, float x1, float y1, float x2, float y2) { const float ray1x = x - x1; const float ray1y = y - y1; @@ -84,7 +82,7 @@ static inline float pointToLineSegDistanceSqrFloat( const float ray2y = y2 - y1; const float dotProduct = ray1x * ray2x + ray1y * ray2y; - const float lineLengthSqr = sqrf(ray2x) + sqrf(ray2y); + const float lineLengthSqr = squareFloat(ray2x) + squareFloat(ray2y); const float projectionLengthSqr = dotProduct / lineLengthSqr; float projectionX; @@ -99,7 +97,7 @@ static inline float pointToLineSegDistanceSqrFloat( projectionX = x1 + projectionLengthSqr * ray2x; projectionY = y1 + projectionLengthSqr * ray2y; } - return getDistanceSqrFloat(x, y, projectionX, projectionY); + return getSquaredDistanceFloat(x, y, projectionX, projectionY); } } // namespace latinime #endif // LATINIME_GEOMETRY_UTILS_H diff --git a/native/jni/src/gesture/gesture_decoder_wrapper.h b/native/jni/src/gesture/gesture_decoder_wrapper.h index 4a26d9c1b..f8bfe7c79 100644 --- a/native/jni/src/gesture/gesture_decoder_wrapper.h +++ b/native/jni/src/gesture/gesture_decoder_wrapper.h @@ -48,14 +48,6 @@ class GestureDecoderWrapper : public IncrementalDecoderInterface { inputSize, commitPoint, outWords, frequencies, outputIndices, outputTypes); } - void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, - const uint8_t *dictRoot, int rootPos) { - if (!mIncrementalDecoderInterface) { - return; - } - mIncrementalDecoderInterface->setDict(dict, bigram, dictRoot, rootPos); - } - static void setGestureDecoderFactoryMethod( IncrementalDecoderInterface *(*factoryMethod)(int, int)) { sGestureDecoderFactoryMethod = factoryMethod; diff --git a/native/jni/src/gesture/incremental_decoder_interface.h b/native/jni/src/gesture/incremental_decoder_interface.h index e940344d4..04f0095e0 100644 --- a/native/jni/src/gesture/incremental_decoder_interface.h +++ b/native/jni/src/gesture/incremental_decoder_interface.h @@ -32,8 +32,6 @@ class IncrementalDecoderInterface { int *inputXs, int *inputYs, int *times, int *pointerIds, int *codes, int inputSize, int commitPoint, unsigned short *outWords, int *frequencies, int *outputIndices, int *outputTypes) = 0; - virtual void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, - const uint8_t *dictRoot, int rootPos) = 0; IncrementalDecoderInterface() { }; virtual ~IncrementalDecoderInterface() { }; private: diff --git a/native/jni/src/gesture/incremental_decoder_wrapper.h b/native/jni/src/gesture/incremental_decoder_wrapper.h index f47d539b7..5cb2ee368 100644 --- a/native/jni/src/gesture/incremental_decoder_wrapper.h +++ b/native/jni/src/gesture/incremental_decoder_wrapper.h @@ -48,14 +48,6 @@ class IncrementalDecoderWrapper : public IncrementalDecoderInterface { inputSize, commitPoint, outWords, frequencies, outputIndices, outputTypes); } - void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram, - const uint8_t *dictRoot, int rootPos) { - if (!mIncrementalDecoderInterface) { - return; - } - mIncrementalDecoderInterface->setDict(dict, bigram, dictRoot, rootPos); - } - static void setIncrementalDecoderFactoryMethod( IncrementalDecoderInterface *(*factoryMethod)(int, int)) { sIncrementalDecoderFactoryMethod = factoryMethod; |