diff options
Diffstat (limited to 'native/jni/src')
-rw-r--r-- | native/jni/src/proximity_info.cpp | 2 | ||||
-rw-r--r-- | native/jni/src/proximity_info.h | 9 | ||||
-rw-r--r-- | native/jni/src/proximity_info_utils.h | 6 |
3 files changed, 11 insertions, 6 deletions
diff --git a/native/jni/src/proximity_info.cpp b/native/jni/src/proximity_info.cpp index d812745ca..81eb0b37d 100644 --- a/native/jni/src/proximity_info.cpp +++ b/native/jni/src/proximity_info.cpp @@ -15,6 +15,7 @@ */ #include <cstring> +#include <cmath> #define LOG_TAG "LatinIME: proximity_info.cpp" @@ -59,6 +60,7 @@ ProximityInfo::ProximityInfo(JNIEnv *env, const jstring localeJStr, CELL_HEIGHT((keyboardHeight + gridHeight - 1) / gridHeight), KEY_COUNT(min(keyCount, MAX_KEY_COUNT_IN_A_KEYBOARD)), KEYBOARD_WIDTH(keyboardWidth), KEYBOARD_HEIGHT(keyboardHeight), + KEYBOARD_HYPOTENUSE(hypotf(KEYBOARD_WIDTH, KEYBOARD_HEIGHT)), HAS_TOUCH_POSITION_CORRECTION_DATA(keyCount > 0 && keyXCoordinates && keyYCoordinates && keyWidths && keyHeights && keyCharCodes && sweetSpotCenterXs && sweetSpotCenterYs && sweetSpotRadii), diff --git a/native/jni/src/proximity_info.h b/native/jni/src/proximity_info.h index d42c72391..22bbdf165 100644 --- a/native/jni/src/proximity_info.h +++ b/native/jni/src/proximity_info.h @@ -62,6 +62,7 @@ class ProximityInfo { int getGridHeight() const { return GRID_HEIGHT; } int getKeyboardWidth() const { return KEYBOARD_WIDTH; } int getKeyboardHeight() const { return KEYBOARD_HEIGHT; } + float getKeyboardHypotenuse() const { return KEYBOARD_HYPOTENUSE; } int getKeyCenterXOfCodePointG(int charCode) const; int getKeyCenterYOfCodePointG(int charCode) const; @@ -69,15 +70,16 @@ class ProximityInfo { int getKeyCenterYOfKeyIdG(int keyId) const; int getKeyKeyDistanceG(int keyId0, int keyId1) const; - void initializeProximities(const int *const inputCodes, const int *const inputXCoordinates, - const int *const inputYCoordinates, const int inputSize, int *allInputCodes) const { + void AK_FORCE_INLINE initializeProximities(const int *const inputCodes, + const int *const inputXCoordinates, const int *const inputYCoordinates, + const int inputSize, int *allInputCodes) const { ProximityInfoUtils::initializeProximities(inputCodes, inputXCoordinates, inputYCoordinates, inputSize, mKeyXCoordinates, mKeyYCoordinates, mKeyWidths, mKeyHeights, mProximityCharsArray, CELL_HEIGHT, CELL_WIDTH, GRID_WIDTH, MOST_COMMON_KEY_WIDTH, KEY_COUNT, mLocaleStr, &mCodeToKeyMap, allInputCodes); } - int getKeyIndexOf(const int c) const { + int AK_FORCE_INLINE getKeyIndexOf(const int c) const { return ProximityInfoUtils::getKeyIndexOf(KEY_COUNT, c, &mCodeToKeyMap); } @@ -97,6 +99,7 @@ class ProximityInfo { const int KEY_COUNT; const int KEYBOARD_WIDTH; const int KEYBOARD_HEIGHT; + const float KEYBOARD_HYPOTENUSE; const bool HAS_TOUCH_POSITION_CORRECTION_DATA; char mLocaleStr[MAX_LOCALE_STRING_LENGTH]; int *mProximityCharsArray; diff --git a/native/jni/src/proximity_info_utils.h b/native/jni/src/proximity_info_utils.h index c50df57f9..51cafba2c 100644 --- a/native/jni/src/proximity_info_utils.h +++ b/native/jni/src/proximity_info_utils.h @@ -28,7 +28,7 @@ namespace latinime { class ProximityInfoUtils { public: - static int getKeyIndexOf(const int keyCount, const int c, + static AK_FORCE_INLINE int getKeyIndexOf(const int keyCount, const int c, const hash_map_compat<int, int> *const codeToKeyMap) { if (keyCount == 0) { // We do not have the coordinate data @@ -45,7 +45,7 @@ class ProximityInfoUtils { return NOT_AN_INDEX; } - static void initializeProximities(const int *const inputCodes, + static AK_FORCE_INLINE void initializeProximities(const int *const inputCodes, const int *const inputXCoordinates, const int *const inputYCoordinates, const int inputSize, const int *const keyXCoordinates, const int *const keyYCoordinates, const int *const keyWidths, const int *keyHeights, @@ -151,7 +151,7 @@ class ProximityInfoUtils { return left < right && top < bottom && x >= left && x < right && y >= top && y < bottom; } - static void calculateProximities(const int *const keyXCoordinates, + static AK_FORCE_INLINE void calculateProximities(const int *const keyXCoordinates, const int *const keyYCoordinates, const int *const keyWidths, const int *keyHeights, const int *const proximityCharsArray, const int cellHeight, const int cellWidth, const int gridWidth, const int mostCommonKeyWidth, const int keyCount, |