diff options
author | 2012-03-13 03:16:06 -0700 | |
---|---|---|
committer | 2012-03-13 03:16:06 -0700 | |
commit | abaff8d023ae4fc5f5601b9f4d1e6577a9f128e7 (patch) | |
tree | 468f5c8fcd616db686f398481d75ffdbb254d937 /native/src/proximity_info.cpp | |
parent | d6662ecd306e1084af81c79df61cf52ef6da75ea (diff) | |
parent | 5eec574cf0eb6b8ec23723b5f566563453edd42f (diff) | |
download | latinime-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.cpp | 25 |
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 } |