aboutsummaryrefslogtreecommitdiffstats
path: root/native/src/proximity_info.cpp
diff options
context:
space:
mode:
authorsatok <satok@google.com>2012-03-13 18:26:23 +0900
committersatok <satok@google.com>2012-03-13 19:00:16 +0900
commit5eec574cf0eb6b8ec23723b5f566563453edd42f (patch)
treef0ffebedce2e91d8936812584be9b1647b9fba1d /native/src/proximity_info.cpp
parent552c3c27f04e6769e40cffbce3a9e8eed1269294 (diff)
downloadlatinime-5eec574cf0eb6b8ec23723b5f566563453edd42f.tar.gz
latinime-5eec574cf0eb6b8ec23723b5f566563453edd42f.tar.xz
latinime-5eec574cf0eb6b8ec23723b5f566563453edd42f.zip
Use additional proximity chars in the native code
Bug: 4343280 Change-Id: Ida690fe246cea80a82fcdb3ad0c28e2907b882ac
Diffstat (limited to 'native/src/proximity_info.cpp')
-rw-r--r--native/src/proximity_info.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/native/src/proximity_info.cpp b/native/src/proximity_info.cpp
index 561fffa90..e590740d2 100644
--- a/native/src/proximity_info.cpp
+++ b/native/src/proximity_info.cpp
@@ -50,6 +50,7 @@ ProximityInfo::ProximityInfo(const std::string localeStr, const int maxProximity
HAS_TOUCH_POSITION_CORRECTION_DATA(keyCount > 0 && keyXCoordinates && keyYCoordinates
&& keyWidths && keyHeights && keyCharCodes && sweetSpotCenterXs
&& sweetSpotCenterYs && sweetSpotRadii),
+ mLocaleStr(localeStr),
mInputXCoordinates(0), mInputYCoordinates(0),
mTouchPositionCorrectionEnabled(false) {
const int proximityGridLength = GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE;
@@ -164,6 +165,30 @@ void ProximityInfo::calculateNearbyKeyCodes(
}
}
}
+ const int existingProximitySize = insertPos;
+ for (int i = 0; i < existingProximitySize; ++i) {
+ const uint32_t c = inputCodes[i];
+ const int additionalProximitySize =
+ AdditionalProximityChars::hasAdditionalChars(&mLocaleStr, c);
+ if (additionalProximitySize <= 0) {
+ continue;
+ }
+ const uint32_t* additionalProximityChars =
+ AdditionalProximityChars::getAdditionalChars(&mLocaleStr, c);
+ for (int j = 0; j < additionalProximitySize; ++j) {
+ const uint32_t ac = additionalProximityChars[j];
+ int k = 0;
+ for (; k < insertPos; ++k) {
+ if ((int)ac == inputCodes[k]) {
+ break;
+ }
+ }
+ if (k < insertPos) {
+ continue;
+ }
+ inputCodes[insertPos++] = ac;
+ }
+ }
// TODO: calculate additional chars
}