aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dictionaries/en_whitelist.xml82
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java26
-rw-r--r--native/jni/src/dictionary.cpp2
-rw-r--r--native/jni/src/geometry_utils.h40
-rw-r--r--native/jni/src/gesture/gesture_decoder_wrapper.h8
-rw-r--r--native/jni/src/gesture/incremental_decoder_interface.h2
-rw-r--r--native/jni/src/gesture/incremental_decoder_wrapper.h8
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;