Merge "[IL69.1] Move a static method to a utility class."

This commit is contained in:
Jean Chalard 2014-01-24 03:04:11 +00:00 committed by Android (Google) Code Review
commit b6e128cc05
5 changed files with 47 additions and 25 deletions

View file

@ -23,6 +23,7 @@ import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.keyboard.internal.KeyboardParams; import com.android.inputmethod.keyboard.internal.KeyboardParams;
import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.CollectionUtils;
import com.android.inputmethod.latin.utils.CoordinateUtils;
/** /**
* Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@ -217,4 +218,20 @@ public class Keyboard {
final int adjustedY = Math.max(0, Math.min(y, mOccupiedHeight - 1)); final int adjustedY = Math.max(0, Math.min(y, mOccupiedHeight - 1));
return mProximityInfo.getNearestKeys(adjustedX, adjustedY); return mProximityInfo.getNearestKeys(adjustedX, adjustedY);
} }
public int[] getCoordinates(final int[] codePoints) {
final int length = codePoints.length;
final int[] coordinates = CoordinateUtils.newCoordinateArray(length);
for (int i = 0; i < length; ++i) {
final Key key = getKey(codePoints[i]);
if (null != key) {
CoordinateUtils.setXYInArray(coordinates, i,
key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
} else {
CoordinateUtils.setXYInArray(coordinates, i,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
}
}
return coordinates;
}
} }

View file

@ -59,7 +59,6 @@ import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils; import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants; import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardActionListener;
import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.KeyboardId;
@ -1206,24 +1205,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
* @return x,y coordinates for this keyboard, as a flattened array. * @return x,y coordinates for this keyboard, as a flattened array.
*/ */
public int[] getCoordinatesForCurrentKeyboard(final int[] codePoints) { public int[] getCoordinatesForCurrentKeyboard(final int[] codePoints) {
return getCoordinatesForKeyboard(codePoints, mKeyboardSwitcher.getKeyboard()); final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
} if (null == keyboard) {
return CoordinateUtils.newCoordinateArray(codePoints.length,
public static int[] getCoordinatesForKeyboard(final int[] codePoints, final Keyboard keyboard) {
final int length = codePoints.length;
final int[] coordinates = CoordinateUtils.newCoordinateArray(length);
Key key;
for (int i = 0; i < length; ++i) {
if (keyboard != null && (key = keyboard.getKey(codePoints[i])) != null) {
CoordinateUtils.setXYInArray(coordinates, i,
key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
} else {
CoordinateUtils.setXYInArray(coordinates, i,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE); Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
} else {
return keyboard.getCoordinates(codePoints);
} }
} }
return coordinates;
}
// Callback for the {@link SuggestionStripView}, to call when the "add to dictionary" hint is // Callback for the {@link SuggestionStripView}, to call when the "add to dictionary" hint is
// pressed. // pressed.

View file

@ -28,12 +28,13 @@ import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo; import android.view.textservice.TextInfo;
import com.android.inputmethod.compat.SuggestionsInfoCompatUtils; import com.android.inputmethod.compat.SuggestionsInfoCompatUtils;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.Dictionary; import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer; import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer; import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer;
import com.android.inputmethod.latin.utils.CoordinateUtils;
import com.android.inputmethod.latin.utils.LocaleUtils; import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.StringUtils; import com.android.inputmethod.latin.utils.StringUtils;
@ -314,9 +315,14 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
} }
final WordComposer composer = new WordComposer(); final WordComposer composer = new WordComposer();
final int[] codePoints = StringUtils.toCodePointArray(text); final int[] codePoints = StringUtils.toCodePointArray(text);
composer.setComposingWord(codePoints, final int[] coordinates;
LatinIME.getCoordinatesForKeyboard(codePoints, dictInfo.mKeyboard), if (null == dictInfo.mKeyboard) {
null /* previousWord */); coordinates = CoordinateUtils.newCoordinateArray(codePoints.length,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
} else {
coordinates = dictInfo.mKeyboard.getCoordinates(codePoints);
}
composer.setComposingWord(codePoints, coordinates, null /* previousWord */);
// TODO: make a spell checker option to block offensive words or not // TODO: make a spell checker option to block offensive words or not
final ArrayList<SuggestedWordInfo> suggestions = final ArrayList<SuggestedWordInfo> suggestions =
dictInfo.mDictionary.getSuggestions(composer, prevWord, dictInfo.mDictionary.getSuggestions(composer, prevWord,

View file

@ -53,6 +53,15 @@ public final class CoordinateUtils {
return new int[ELEMENT_SIZE * arraySize]; return new int[ELEMENT_SIZE * arraySize];
} }
public static int[] newCoordinateArray(final int arraySize,
final int defaultX, final int defaultY) {
final int[] result = new int[ELEMENT_SIZE * arraySize];
for (int i = 0; i < arraySize; ++i) {
setXYInArray(result, i, defaultX, defaultY);
}
return result;
}
public static int xFromArray(final int[] coordsArray, final int index) { public static int xFromArray(final int[] coordsArray, final int index) {
return coordsArray[ELEMENT_SIZE * index + INDEX_X]; return coordsArray[ELEMENT_SIZE * index + INDEX_X];
} }

View file

@ -19,6 +19,7 @@ package com.android.inputmethod.latin;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest; import android.test.suitebuilder.annotation.SmallTest;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.utils.StringUtils; import com.android.inputmethod.latin.utils.StringUtils;
/** /**
@ -37,7 +38,7 @@ public class WordComposerTests extends AndroidTestCase {
final String STR_WITHIN_BMP = "abcdef"; final String STR_WITHIN_BMP = "abcdef";
final int[] CODEPOINTS_WITHIN_BMP = StringUtils.toCodePointArray(STR_WITHIN_BMP); final int[] CODEPOINTS_WITHIN_BMP = StringUtils.toCodePointArray(STR_WITHIN_BMP);
final int[] COORDINATES_WITHIN_BMP = final int[] COORDINATES_WITHIN_BMP =
LatinIME.getCoordinatesForKeyboard(CODEPOINTS_WITHIN_BMP, null); Keyboard.getCoordinatesWithoutKeyboard(CODEPOINTS_WITHIN_BMP);
final String PREVWORD = "prevword"; final String PREVWORD = "prevword";
wc.setComposingWord(CODEPOINTS_WITHIN_BMP, COORDINATES_WITHIN_BMP, PREVWORD); wc.setComposingWord(CODEPOINTS_WITHIN_BMP, COORDINATES_WITHIN_BMP, PREVWORD);
assertEquals(wc.size(), assertEquals(wc.size(),
@ -69,8 +70,8 @@ public class WordComposerTests extends AndroidTestCase {
final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh"; final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
final int[] CODEPOINTS_WITH_SUPPLEMENTARY_CHAR = final int[] CODEPOINTS_WITH_SUPPLEMENTARY_CHAR =
StringUtils.toCodePointArray(STR_WITH_SUPPLEMENTARY_CHAR); StringUtils.toCodePointArray(STR_WITH_SUPPLEMENTARY_CHAR);
final int[] COORDINATES_WITH_SUPPLEMENTARY_CHAR = LatinIME.getCoordinatesForKeyboard( final int[] COORDINATES_WITH_SUPPLEMENTARY_CHAR = Keyboard.getCoordinatesWithoutKeyboard(
CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, null); CODEPOINTS_WITH_SUPPLEMENTARY_CHAR);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR, wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
null /* previousWord */); null /* previousWord */);
assertEquals(wc.size(), CODEPOINTS_WITH_SUPPLEMENTARY_CHAR.length); assertEquals(wc.size(), CODEPOINTS_WITH_SUPPLEMENTARY_CHAR.length);