aboutsummaryrefslogtreecommitdiffstats
path: root/native/src/proximity_info.cpp
diff options
context:
space:
mode:
authorsatok <satok@google.com>2012-03-13 03:16:06 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-13 03:16:06 -0700
commitabaff8d023ae4fc5f5601b9f4d1e6577a9f128e7 (patch)
tree468f5c8fcd616db686f398481d75ffdbb254d937 /native/src/proximity_info.cpp
parentd6662ecd306e1084af81c79df61cf52ef6da75ea (diff)
parent5eec574cf0eb6b8ec23723b5f566563453edd42f (diff)
downloadlatinime-abaff8d023ae4fc5f5601b9f4d1e6577a9f128e7.tar.gz
latinime-abaff8d023ae4fc5f5601b9f4d1e6577a9f128e7.tar.xz
latinime-abaff8d023ae4fc5f5601b9f4d1e6577a9f128e7.zip
Merge "Use additional proximity chars in the native code"
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
}