aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSatoshi Kataoka <satok@google.com>2012-06-27 14:52:40 +0900
committerSatoshi Kataoka <satok@google.com>2012-06-27 16:22:39 +0900
commitefb63246c2e5df29d62416d48f62e2b57b14de7c (patch)
tree6575aad86ee1caf9159bf45e27c9086c3ba920bb
parenta3f5f51ec4aeb438fc4ad408c085b463ed3f8c82 (diff)
downloadlatinime-efb63246c2e5df29d62416d48f62e2b57b14de7c.tar.gz
latinime-efb63246c2e5df29d62416d48f62e2b57b14de7c.tar.xz
latinime-efb63246c2e5df29d62416d48f62e2b57b14de7c.zip
Change native functions' interface for gesture
Change-Id: I106a858f0be7452dd89f425805a6f72aa88c3f65
-rw-r--r--native/jni/Android.mk2
-rw-r--r--native/jni/src/dictionary.cpp3
-rw-r--r--native/jni/src/gesture/impl/gesture_decoder_impl.h (renamed from native/jni/src/gesture/gesture_decoder_impl.h)0
-rw-r--r--native/jni/src/gesture/impl/incremental_decoder_impl.h (renamed from native/jni/src/gesture/incremental_decoder_impl.h)3
-rw-r--r--native/jni/src/gesture/incremental_decoder_interface.h3
-rw-r--r--native/jni/src/proximity_info.cpp22
-rw-r--r--native/jni/src/proximity_info.h4
7 files changed, 34 insertions, 3 deletions
diff --git a/native/jni/Android.mk b/native/jni/Android.mk
index 5d705b1ff..a6bb48752 100644
--- a/native/jni/Android.mk
+++ b/native/jni/Android.mk
@@ -26,6 +26,8 @@ include $(CLEAR_VARS)
LATIN_IME_SRC_DIR := src
LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)/gesture
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)/gesture/impl
LOCAL_CFLAGS += -Werror -Wall
diff --git a/native/jni/src/dictionary.cpp b/native/jni/src/dictionary.cpp
index e0b7f87b2..10ea9fe06 100644
--- a/native/jni/src/dictionary.cpp
+++ b/native/jni/src/dictionary.cpp
@@ -44,7 +44,8 @@ Dictionary::Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust,
fullWordMultiplier, maxWordLength, maxWords, options);
mBigramDictionary = new BigramDictionary(mDict + headerSize, maxWordLength);
mGestureDecoder = new GestureDecoder(maxWordLength, maxWords);
- mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary);
+ mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary,
+ mDict + headerSize /* dict root */, 0 /* root pos */);
}
Dictionary::~Dictionary() {
diff --git a/native/jni/src/gesture/gesture_decoder_impl.h b/native/jni/src/gesture/impl/gesture_decoder_impl.h
index be4e8b3c2..be4e8b3c2 100644
--- a/native/jni/src/gesture/gesture_decoder_impl.h
+++ b/native/jni/src/gesture/impl/gesture_decoder_impl.h
diff --git a/native/jni/src/gesture/incremental_decoder_impl.h b/native/jni/src/gesture/impl/incremental_decoder_impl.h
index 5731ad892..84121e8e2 100644
--- a/native/jni/src/gesture/incremental_decoder_impl.h
+++ b/native/jni/src/gesture/impl/incremental_decoder_impl.h
@@ -28,7 +28,8 @@ class IncrementalDecoderImpl : IncrementalDecoderInterface {
public:
IncrementalDecoderImpl(int maxWordLength, int maxWords) { };
- void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram) { };
+ void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram,
+ const uint8_t *dictRoot, int rootPos) { };
void setPrevWord(const int32_t *prevWord, int prevWordLength) { };
void reset() { };
diff --git a/native/jni/src/gesture/incremental_decoder_interface.h b/native/jni/src/gesture/incremental_decoder_interface.h
index d34b0da11..c5404a40c 100644
--- a/native/jni/src/gesture/incremental_decoder_interface.h
+++ b/native/jni/src/gesture/incremental_decoder_interface.h
@@ -31,7 +31,8 @@ class IncrementalDecoderInterface {
int *pointerIds, int *codes, int inputSize, int commitPoint, bool isMainDict,
unsigned short *outWords, int *frequencies, int *outputIndices) = 0;
virtual void reset() = 0;
- virtual void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram) = 0;
+ virtual void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram,
+ const uint8_t *dictRoot, int rootPos) = 0;
virtual void setPrevWord(const int32_t *prevWord, int prevWordLength) = 0;
virtual ~IncrementalDecoderInterface() { };
};
diff --git a/native/jni/src/proximity_info.cpp b/native/jni/src/proximity_info.cpp
index 2ba244a7c..a4a641160 100644
--- a/native/jni/src/proximity_info.cpp
+++ b/native/jni/src/proximity_info.cpp
@@ -15,6 +15,7 @@
*/
#include <assert.h>
+#include <math.h>
#include <stdio.h>
#include <string>
@@ -210,4 +211,25 @@ int ProximityInfo::getKeyIndex(const int c) const {
}
return mCodeToKeyIndex[baseLowerC];
}
+
+// TODO: [Staging] Optimize
+void ProximityInfo::getCenters(int *centerXs, int *centerYs, int *codeToKeyIndex,
+ int *keyToCodeIndex, int *keyCount, int *keyWidth) const {
+ *keyCount = KEY_COUNT;
+ *keyWidth = sqrt((float)MOST_COMMON_KEY_WIDTH_SQUARE);
+
+ for (int i = 0; i < KEY_COUNT; ++i) {
+ const int code = mKeyCharCodes[i];
+ const int lowerCode = toBaseLowerCase(code);
+ centerXs[i] = mKeyXCoordinates[i] + mKeyWidths[i] / 2;
+ centerYs[i] = mKeyYCoordinates[i] + mKeyHeights[i] / 2;
+ codeToKeyIndex[code] = i;
+ if (code != lowerCode && lowerCode >= 0 && lowerCode <= MAX_CHAR_CODE) {
+ codeToKeyIndex[lowerCode] = i;
+ keyToCodeIndex[i] = lowerCode;
+ } else {
+ keyToCodeIndex[i] = code;
+ }
+ }
+}
} // namespace latinime
diff --git a/native/jni/src/proximity_info.h b/native/jni/src/proximity_info.h
index fec6555ea..d58935c6b 100644
--- a/native/jni/src/proximity_info.h
+++ b/native/jni/src/proximity_info.h
@@ -98,6 +98,10 @@ class ProximityInfo {
return GRID_HEIGHT;
}
+ // Returns the keyboard key-center information.
+ void getCenters(int *centersX, int *centersY, int *codeToKeyIndex, int *keyToCodeIndex,
+ int *keyCount, int *keyWidth) const;
+
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(ProximityInfo);
// The max number of the keys in one keyboard layout