aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/correction.cpp2
-rw-r--r--native/jni/src/proximity_info.h5
-rw-r--r--native/jni/src/proximity_info_state.cpp27
-rw-r--r--native/jni/src/unigram_dictionary.cpp1
4 files changed, 19 insertions, 16 deletions
diff --git a/native/jni/src/correction.cpp b/native/jni/src/correction.cpp
index 15a713122..49e3e3c8c 100644
--- a/native/jni/src/correction.cpp
+++ b/native/jni/src/correction.cpp
@@ -631,7 +631,7 @@ Correction::CorrectionType Correction::processCharAndCalcState(
inline static int getQuoteCount(const unsigned short *word, const int length) {
int quoteCount = 0;
for (int i = 0; i < length; ++i) {
- if (word[i] == '\'') {
+ if (word[i] == SINGLE_QUOTE) {
++quoteCount;
}
}
diff --git a/native/jni/src/proximity_info.h b/native/jni/src/proximity_info.h
index 2f258ef86..0d8c6a3ca 100644
--- a/native/jni/src/proximity_info.h
+++ b/native/jni/src/proximity_info.h
@@ -27,6 +27,11 @@ namespace latinime {
class Correction;
+inline bool isSkippableChar(const uint16_t character) {
+ // TODO: Do not hardcode here
+ return character == '\'' || character == '-';
+}
+
class ProximityInfo {
public:
ProximityInfo(JNIEnv *env, const jstring localeJStr, const int maxProximityCharsSize,
diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp
index 7e917a929..5cb9235f1 100644
--- a/native/jni/src/proximity_info_state.cpp
+++ b/native/jni/src/proximity_info_state.cpp
@@ -295,29 +295,30 @@ float ProximityInfoState::getPointScore(
const NearKeysDistanceMap *const currentNearKeysDistances,
const NearKeysDistanceMap *const prevNearKeysDistances,
const NearKeysDistanceMap *const prevPrevNearKeysDistances) const {
- static const float BASE_SAMPLE_RATE_SCALE = 0.1f;
- static const float SAVE_DISTANCE_SCALE = 20.0f;
+ static const int DISTANCE_BASE_SCALE = 100;
+ static const int SAVE_DISTANCE_SCALE = 200;
+ static const int SKIP_DISTANCE_SCALE = 25;
+ static const int CHECK_LOCALMIN_DISTANCE_THRESHOLD_SCALE = 40;
+ static const int STRAIGHT_SKIP_DISTANCE_THRESHOLD_SCALE = 50;
+ static const int CORNER_CHECK_DISTANCE_THRESHOLD_SCALE = 27;
static const float SAVE_DISTANCE_SCORE = 2.0f;
- static const float SKIP_DISTANCE_SCALE = 2.5f;
static const float SKIP_DISTANCE_SCORE = -1.0f;
- static const float CHECK_LOCALMIN_DISTANCE_THRESHOLD_SCALE = 4.0f;
static const float CHECK_LOCALMIN_DISTANCE_SCORE = -1.0f;
static const float STRAIGHT_ANGLE_THRESHOLD = M_PI_F / 36.0f;
- static const float STRAIGHT_SKIP_DISTANCE_THRESHOLD_SCALE = 5.0f;
static const float STRAIGHT_SKIP_NEAREST_DISTANCE_THRESHOLD = 0.5f;
static const float STRAIGHT_SKIP_SCORE = -1.0f;
static const float CORNER_ANGLE_THRESHOLD = M_PI_F / 2.0f;
- static const float CORNER_CHECK_DISTANCE_THRESHOLD_SCALE = 2.7f;
static const float CORNER_SCORE = 1.0f;
const std::size_t size = mInputXs.size();
if (size <= 1) {
- return 0;
+ return 0.0f;
}
- const float baseSampleRate = mProximityInfo->getMostCommonKeyWidth() * BASE_SAMPLE_RATE_SCALE;
- const float distNext = getDistanceFloat(x, y, mInputXs.back(), mInputYs.back());
- const float distPrev = getDistanceFloat(mInputXs.back(), mInputYs.back(),
- mInputXs[size - 2], mInputYs[size - 2]);
+ const int baseSampleRate = mProximityInfo->getMostCommonKeyWidth();
+ const int distNext = getDistanceInt(x, y, mInputXs.back(), mInputYs.back())
+ * DISTANCE_BASE_SCALE;
+ const int distPrev = getDistanceInt(mInputXs.back(), mInputYs.back(),
+ mInputXs[size - 2], mInputYs[size - 2]) * DISTANCE_BASE_SCALE;
float score = 0.0f;
// Sum of distances
@@ -469,9 +470,7 @@ float ProximityInfoState::getPointToKeyLength(const int inputIndex, const int co
const int index = inputIndex * mProximityInfo->getKeyCount() + keyId;
return min(mDistanceCache[index] * scale, mMaxPointToKeyLength);
}
- // TODO: Do not hardcode here
- // No penalty to ' and -
- if (codePoint == '\'' || codePoint == '-') {
+ if (isSkippableChar(codePoint)) {
return 0;
}
// If the char is not a key on the keyboard then return the max length.
diff --git a/native/jni/src/unigram_dictionary.cpp b/native/jni/src/unigram_dictionary.cpp
index 6eaff48df..49d044fbc 100644
--- a/native/jni/src/unigram_dictionary.cpp
+++ b/native/jni/src/unigram_dictionary.cpp
@@ -314,7 +314,6 @@ void UnigramDictionary::initSuggestions(ProximityInfo *proximityInfo, const int
correction->initCorrection(proximityInfo, inputSize, maxDepth);
}
-static const char QUOTE = '\'';
static const char SPACE = ' ';
void UnigramDictionary::getOneWordSuggestions(ProximityInfo *proximityInfo,