From 1e06a4d8e9e71188ed685282155ea52a48ddc050 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi <ksk@google.com> Date: Thu, 11 Oct 2012 20:24:41 +0900 Subject: [PATCH] Improve gesture input scoring method 3. Change-Id: I3142cb5ec922e661f0d7c1e1706de6015360b2ff --- native/jni/src/proximity_info_state.cpp | 8 ++++++++ native/jni/src/proximity_info_state.h | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp index 0f7e4d65f5..bbc0deedec 100644 --- a/native/jni/src/proximity_info_state.cpp +++ b/native/jni/src/proximity_info_state.cpp @@ -108,6 +108,7 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi mSearchKeysVector.clear(); mRelativeSpeeds.clear(); mCharProbabilities.clear(); + mDirections.clear(); } if (DEBUG_GEO_FULL) { AKLOGI("Init ProximityInfoState: reused points = %d, last input size = %d", @@ -216,6 +217,13 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi mRelativeSpeeds[i] = speed / averageSpeed; } } + + // Direction calculation. + mDirections.resize(mInputSize - 1); + for (int i = max(0, lastSavedInputSize - 1); i < mInputSize - 1; ++i) { + mDirections[i] = getDirection(i, i + 1); + } + } if (DEBUG_GEO_FULL) { diff --git a/native/jni/src/proximity_info_state.h b/native/jni/src/proximity_info_state.h index 927244b024..1a3f2869d5 100644 --- a/native/jni/src/proximity_info_state.h +++ b/native/jni/src/proximity_info_state.h @@ -55,8 +55,8 @@ class ProximityInfoState { mHasTouchPositionCorrectionData(false), mMostCommonKeyWidthSquare(0), mLocaleStr(), mKeyCount(0), mCellHeight(0), mCellWidth(0), mGridHeight(0), mGridWidth(0), mIsContinuationPossible(false), mInputXs(), mInputYs(), mTimes(), mInputIndice(), - mDistanceCache(), mLengthCache(), mRelativeSpeeds(), mCharProbabilities(), - mNearKeysVector(), mSearchKeysVector(), + mDistanceCache(), mLengthCache(), mRelativeSpeeds(), mDirections(), + mCharProbabilities(), mNearKeysVector(), mSearchKeysVector(), mTouchPositionCorrectionEnabled(false), mInputSize(0) { memset(mInputCodes, 0, sizeof(mInputCodes)); memset(mNormalizedSquaredDistances, 0, sizeof(mNormalizedSquaredDistances)); @@ -226,6 +226,9 @@ class ProximityInfoState { return mRelativeSpeeds[index]; } + float getDirection(const int index) const { + return mDirections[index]; + } // get xy direction float getDirection(const int x, const int y) const; @@ -306,6 +309,7 @@ class ProximityInfoState { std::vector<float> mDistanceCache; std::vector<int> mLengthCache; std::vector<float> mRelativeSpeeds; + std::vector<float> mDirections; // probabilities of skipping or mapping to a key for each point. std::vector<hash_map_compat<int, float> > mCharProbabilities; // The vector for the key code set which holds nearby keys for each sampled input point -- GitLab