aboutsummaryrefslogtreecommitdiffstats
path: root/native/src/proximity_info.cpp
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-03-04 06:06:45 -0800
committersatok <satok@google.com>2011-03-04 20:37:18 -0800
commit817e517e463cb32726ff5a62196ac8744848e29b (patch)
tree2c8d41d8b9b633888ba13e4affaffe344b1a6e68 /native/src/proximity_info.cpp
parentd465e2aad1185bc9f2c27beb156b686184722094 (diff)
downloadlatinime-817e517e463cb32726ff5a62196ac8744848e29b.tar.gz
latinime-817e517e463cb32726ff5a62196ac8744848e29b.tar.xz
latinime-817e517e463cb32726ff5a62196ac8744848e29b.zip
Add the suggestion algorithm of words with space proximity
Bug: 3311719 Change-Id: Ide12a4a6280103c092fa0f563dd5b9e3f7f5c89b
Diffstat (limited to 'native/src/proximity_info.cpp')
-rw-r--r--native/src/proximity_info.cpp42
1 files changed, 36 insertions, 6 deletions
diff --git a/native/src/proximity_info.cpp b/native/src/proximity_info.cpp
index d0cba3eb6..5f2d09f5c 100644
--- a/native/src/proximity_info.cpp
+++ b/native/src/proximity_info.cpp
@@ -17,18 +17,48 @@
#include <stdio.h>
#include <string.h>
+#define LOG_TAG "LatinIME: proximity_info.cpp"
+
#include "proximity_info.h"
namespace latinime {
-ProximityInfo::ProximityInfo(int maxProximityCharsSize, int displayWidth, int displayHeight,
- int gridWidth, int gridHeight, uint32_t const *proximityCharsArray)
- : MAX_PROXIMITY_CHARS_SIZE(maxProximityCharsSize), DISPLAY_WIDTH(displayWidth),
- DISPLAY_HEIGHT(displayHeight), GRID_WIDTH(gridWidth), GRID_HEIGHT(gridHeight) {
- mProximityCharsArray = new uint32_t[GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE];
- memcpy(mProximityCharsArray, proximityCharsArray, sizeof(mProximityCharsArray));
+ProximityInfo::ProximityInfo(const int maxProximityCharsSize, const int keyboardWidth,
+ const int keyboardHeight, const int gridWidth, const int gridHeight,
+ const uint32_t *proximityCharsArray)
+ : MAX_PROXIMITY_CHARS_SIZE(maxProximityCharsSize), KEYBOARD_WIDTH(keyboardWidth),
+ KEYBOARD_HEIGHT(keyboardHeight), GRID_WIDTH(gridWidth), GRID_HEIGHT(gridHeight),
+ CELL_WIDTH((keyboardWidth + gridWidth - 1) / gridWidth),
+ CELL_HEIGHT((keyboardHeight + gridHeight - 1) / gridHeight) {
+ const int len = GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE;
+ mProximityCharsArray = new uint32_t[len];
+ if (DEBUG_PROXIMITY_INFO) {
+ LOGI("Create proximity info array %d", len);
+ }
+ memcpy(mProximityCharsArray, proximityCharsArray, len * sizeof(mProximityCharsArray[0]));
}
ProximityInfo::~ProximityInfo() {
delete[] mProximityCharsArray;
}
+
+inline int ProximityInfo::getStartIndexFromCoordinates(const int x, const int y) const {
+ return (y / CELL_HEIGHT) * GRID_WIDTH + (x / CELL_WIDTH)
+ * MAX_PROXIMITY_CHARS_SIZE;
+}
+
+bool ProximityInfo::hasSpaceProximity(const int x, const int y) const {
+ const int startIndex = getStartIndexFromCoordinates(x, y);
+ if (DEBUG_PROXIMITY_INFO) {
+ LOGI("hasSpaceProximity: index %d", startIndex);
+ }
+ for (int i = 0; i < MAX_PROXIMITY_CHARS_SIZE; ++i) {
+ if (DEBUG_PROXIMITY_INFO) {
+ LOGI("Index: %d", mProximityCharsArray[startIndex + i]);
+ }
+ if (mProximityCharsArray[startIndex + i] == KEYCODE_SPACE) {
+ return true;
+ }
+ }
+ return false;
}
+} // namespace latinime