aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-12-15 22:21:17 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-12-15 22:21:17 -0800
commitcfd5b4811fe2a706abea26370cdb04604dc18ba4 (patch)
treeb95736025d459fb3d033ed78ff270b01adc30d80 /java/src
parentf1e05e74e6c145ef029cd5b8e0e30f6245700632 (diff)
parent6cb72b0f36e0fc58988d01b75948e456280b27a4 (diff)
downloadlatinime-cfd5b4811fe2a706abea26370cdb04604dc18ba4.tar.gz
latinime-cfd5b4811fe2a706abea26370cdb04604dc18ba4.tar.xz
latinime-cfd5b4811fe2a706abea26370cdb04604dc18ba4.zip
Merge "Cleanup ProximityInfo.calulateSweetSpot"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/ProximityInfo.java69
1 files changed, 31 insertions, 38 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index 778aac3de..1a636dc2e 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -104,6 +104,20 @@ public class ProximityInfo {
final int[] keyWidths = new int[keyCount];
final int[] keyHeights = new int[keyCount];
final int[] keyCharCodes = new int[keyCount];
+ final float[] sweetSpotCenterXs;
+ final float[] sweetSpotCenterYs;
+ final float[] sweetSpotRadii;
+ final boolean calculateSweetSpotParams;
+ if (touchPositionCorrection != null && touchPositionCorrection.isValid()) {
+ sweetSpotCenterXs = new float[keyCount];
+ sweetSpotCenterYs = new float[keyCount];
+ sweetSpotRadii = new float[keyCount];
+ calculateSweetSpotParams = true;
+ } else {
+ sweetSpotCenterXs = sweetSpotCenterYs = sweetSpotRadii = null;
+ calculateSweetSpotParams = false;
+ }
+
for (int i = 0; i < keyCount; ++i) {
final Key key = keys.get(i);
keyXCoordinates[i] = key.mX;
@@ -111,18 +125,23 @@ public class ProximityInfo {
keyWidths[i] = key.mWidth;
keyHeights[i] = key.mHeight;
keyCharCodes[i] = key.mCode;
- }
-
- float[] sweetSpotCenterXs = null;
- float[] sweetSpotCenterYs = null;
- float[] sweetSpotRadii = null;
-
- if (touchPositionCorrection != null && touchPositionCorrection.isValid()) {
- sweetSpotCenterXs = new float[keyCount];
- sweetSpotCenterYs = new float[keyCount];
- sweetSpotRadii = new float[keyCount];
- calculateSweetSpot(keys, touchPositionCorrection,
- sweetSpotCenterXs, sweetSpotCenterYs, sweetSpotRadii);
+ if (calculateSweetSpotParams) {
+ final Rect hitBox = key.mHitBox;
+ final int row = hitBox.top / mKeyHeight;
+ if (row < touchPositionCorrection.mRadii.length) {
+ final float hitBoxCenterX = (hitBox.left + hitBox.right) * 0.5f;
+ final float hitBoxCenterY = (hitBox.top + hitBox.bottom) * 0.5f;
+ final float hitBoxWidth = hitBox.right - hitBox.left;
+ final float hitBoxHeight = hitBox.bottom - hitBox.top;
+ final float x = touchPositionCorrection.mXs[row];
+ final float y = touchPositionCorrection.mYs[row];
+ final float radius = touchPositionCorrection.mRadii[row];
+ sweetSpotCenterXs[i] = hitBoxCenterX + x * hitBoxWidth;
+ sweetSpotCenterYs[i] = hitBoxCenterY + y * hitBoxHeight;
+ sweetSpotRadii[i] = radius * (float)Math.sqrt(
+ hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
+ }
+ }
}
mNativeProximityInfo = setProximityInfoNative(MAX_PROXIMITY_CHARS_SIZE,
@@ -131,32 +150,6 @@ public class ProximityInfo {
sweetSpotCenterXs, sweetSpotCenterYs, sweetSpotRadii);
}
- private void calculateSweetSpot(List<Key> keys, TouchPositionCorrection touchPositionCorrection,
- float[] sweetSpotCenterXs, float[] sweetSpotCenterYs, float[] sweetSpotRadii) {
- final int keyCount = keys.size();
- final float[] xs = touchPositionCorrection.mXs;
- final float[] ys = touchPositionCorrection.mYs;
- final float[] radii = touchPositionCorrection.mRadii;
- for (int i = 0; i < keyCount; ++i) {
- final Key key = keys.get(i);
- final Rect hitBox = key.mHitBox;
- final int row = hitBox.top / mKeyHeight;
- if (row < radii.length) {
- final float hitBoxCenterX = (hitBox.left + hitBox.right) * 0.5f;
- final float hitBoxCenterY = (hitBox.top + hitBox.bottom) * 0.5f;
- final float hitBoxWidth = hitBox.right - hitBox.left;
- final float hitBoxHeight = hitBox.bottom - hitBox.top;
- final float x = xs[row];
- final float y = ys[row];
- final float radius = radii[row];
- sweetSpotCenterXs[i] = hitBoxCenterX + x * hitBoxWidth;
- sweetSpotCenterYs[i] = hitBoxCenterY + y * hitBoxHeight;
- sweetSpotRadii[i] = radius
- * (float)Math.sqrt(hitBoxWidth * hitBoxWidth + hitBoxHeight * hitBoxHeight);
- }
- }
- }
-
public long getNativeProximityInfo() {
return mNativeProximityInfo;
}