aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/proximity_info_state.h
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src/proximity_info_state.h')
-rw-r--r--native/jni/src/proximity_info_state.h260
1 files changed, 0 insertions, 260 deletions
diff --git a/native/jni/src/proximity_info_state.h b/native/jni/src/proximity_info_state.h
deleted file mode 100644
index bbe8af240..000000000
--- a/native/jni/src/proximity_info_state.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_PROXIMITY_INFO_STATE_H
-#define LATINIME_PROXIMITY_INFO_STATE_H
-
-#include <cstring> // for memset()
-#include <vector>
-
-#include "char_utils.h"
-#include "defines.h"
-#include "hash_map_compat.h"
-#include "proximity_info_params.h"
-#include "proximity_info_state_utils.h"
-
-namespace latinime {
-
-class ProximityInfo;
-
-class ProximityInfoState {
- public:
- /////////////////////////////////////////
- // Defined in proximity_info_state.cpp //
- /////////////////////////////////////////
- void initInputParams(const int pointerId, const float maxPointToKeyLength,
- const ProximityInfo *proximityInfo, const int *const inputCodes,
- const int inputSize, const int *xCoordinates, const int *yCoordinates,
- const int *const times, const int *const pointerIds, const bool isGeometric);
-
- /////////////////////////////////////////
- // Defined here //
- /////////////////////////////////////////
- AK_FORCE_INLINE ProximityInfoState()
- : mProximityInfo(0), mMaxPointToKeyLength(0.0f), mAverageSpeed(0.0f),
- mHasTouchPositionCorrectionData(false), mMostCommonKeyWidthSquare(0),
- mKeyCount(0), mCellHeight(0), mCellWidth(0), mGridHeight(0), mGridWidth(0),
- mIsContinuousSuggestionPossible(false), mSampledInputXs(), mSampledInputYs(),
- mSampledTimes(), mSampledInputIndice(), mSampledLengthCache(),
- mBeelineSpeedPercentiles(), mSampledNormalizedSquaredLengthCache(), mSpeedRates(),
- mDirections(), mCharProbabilities(), mSampledNearKeySets(), mSampledSearchKeySets(),
- mSampledSearchKeyVectors(), mTouchPositionCorrectionEnabled(false),
- mSampledInputSize(0), mMostProbableStringProbability(0.0f) {
- memset(mInputProximities, 0, sizeof(mInputProximities));
- memset(mNormalizedSquaredDistances, 0, sizeof(mNormalizedSquaredDistances));
- memset(mPrimaryInputWord, 0, sizeof(mPrimaryInputWord));
- memset(mMostProbableString, 0, sizeof(mMostProbableString));
- }
-
- // Non virtual inline destructor -- never inherit this class
- AK_FORCE_INLINE ~ProximityInfoState() {}
-
- inline int getPrimaryCodePointAt(const int index) const {
- return getProximityCodePointsAt(index)[0];
- }
-
- inline bool sameAsTyped(const int *word, int length) const {
- if (length != mSampledInputSize) {
- return false;
- }
- const int *inputProximities = mInputProximities;
- while (length--) {
- if (*inputProximities != *word) {
- return false;
- }
- inputProximities += MAX_PROXIMITY_CHARS_SIZE;
- word++;
- }
- return true;
- }
-
- AK_FORCE_INLINE bool existsCodePointInProximityAt(const int index, const int c) const {
- const int *codePoints = getProximityCodePointsAt(index);
- int i = 0;
- while (codePoints[i] > 0 && i < MAX_PROXIMITY_CHARS_SIZE) {
- if (codePoints[i++] == c) {
- return true;
- }
- }
- return false;
- }
-
- inline bool existsAdjacentProximityChars(const int index) const {
- if (index < 0 || index >= mSampledInputSize) return false;
- const int currentCodePoint = getPrimaryCodePointAt(index);
- const int leftIndex = index - 1;
- if (leftIndex >= 0 && existsCodePointInProximityAt(leftIndex, currentCodePoint)) {
- return true;
- }
- const int rightIndex = index + 1;
- if (rightIndex < mSampledInputSize
- && existsCodePointInProximityAt(rightIndex, currentCodePoint)) {
- return true;
- }
- return false;
- }
-
- inline int getNormalizedSquaredDistance(
- const int inputIndex, const int proximityIndex) const {
- return mNormalizedSquaredDistances[
- inputIndex * MAX_PROXIMITY_CHARS_SIZE + proximityIndex];
- }
-
- inline const int *getPrimaryInputWord() const {
- return mPrimaryInputWord;
- }
-
- inline bool touchPositionCorrectionEnabled() const {
- return mTouchPositionCorrectionEnabled;
- }
-
- bool isUsed() const {
- return mSampledInputSize > 0;
- }
-
- int size() const {
- return mSampledInputSize;
- }
-
- int getInputX(const int index) const {
- return mSampledInputXs[index];
- }
-
- int getInputY(const int index) const {
- return mSampledInputYs[index];
- }
-
- bool hasSpaceProximity(const int index) const;
-
- int getLengthCache(const int index) const {
- return mSampledLengthCache[index];
- }
-
- bool isContinuousSuggestionPossible() const {
- return mIsContinuousSuggestionPossible;
- }
-
- // TODO: Rename s/Length/NormalizedSquaredLength/
- float getPointToKeyByIdLength(const int inputIndex, const int keyId) const;
- // TODO: Rename s/Length/NormalizedSquaredLength/
- float getPointToKeyLength(const int inputIndex, const int codePoint) const;
-
- ProximityType getProximityType(const int index, const int codePoint,
- const bool checkProximityChars, int *proximityIndex = 0) const;
-
- ProximityType getProximityTypeG(const int index, const int codePoint) const;
-
- const std::vector<int> *getSearchKeyVector(const int index) const {
- return &mSampledSearchKeyVectors[index];
- }
-
- float getSpeedRate(const int index) const {
- return mSpeedRates[index];
- }
-
- AK_FORCE_INLINE int getBeelineSpeedPercentile(const int id) const {
- return mBeelineSpeedPercentiles[id];
- }
-
- AK_FORCE_INLINE DoubleLetterLevel getDoubleLetterLevel(const int id) const {
- const int beelineSpeedRate = getBeelineSpeedPercentile(id);
- if (beelineSpeedRate == 0) {
- return A_STRONG_DOUBLE_LETTER;
- } else if (beelineSpeedRate
- < ProximityInfoParams::MIN_DOUBLE_LETTER_BEELINE_SPEED_PERCENTILE) {
- return A_DOUBLE_LETTER;
- } else {
- return NOT_A_DOUBLE_LETTER;
- }
- }
-
- float getDirection(const int index) const {
- return mDirections[index];
- }
- // get xy direction
- float getDirection(const int x, const int y) const;
-
- float getMostProbableString(int *const codePointBuf) const;
-
- float getProbability(const int index, const int charCode) const;
-
- float getLineToKeyDistance(
- const int from, const int to, const int keyId, const bool extend) const;
-
- bool isKeyInSerchKeysAfterIndex(const int index, const int keyId) const;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ProximityInfoState);
- /////////////////////////////////////////
- // Defined in proximity_info_state.cpp //
- /////////////////////////////////////////
- float calculateNormalizedSquaredDistance(const int keyIndex, const int inputIndex) const;
-
- float calculateSquaredDistanceFromSweetSpotCenter(
- const int keyIndex, const int inputIndex) const;
-
- /////////////////////////////////////////
- // Defined here //
- /////////////////////////////////////////
-
- inline const int *getProximityCodePointsAt(const int index) const {
- return ProximityInfoStateUtils::getProximityCodePointsAt(mInputProximities, index);
- }
-
- // const
- const ProximityInfo *mProximityInfo;
- float mMaxPointToKeyLength;
- float mAverageSpeed;
- bool mHasTouchPositionCorrectionData;
- int mMostCommonKeyWidthSquare;
- int mKeyCount;
- int mCellHeight;
- int mCellWidth;
- int mGridHeight;
- int mGridWidth;
- bool mIsContinuousSuggestionPossible;
-
- std::vector<int> mSampledInputXs;
- std::vector<int> mSampledInputYs;
- std::vector<int> mSampledTimes;
- std::vector<int> mSampledInputIndice;
- std::vector<int> mSampledLengthCache;
- std::vector<int> mBeelineSpeedPercentiles;
- std::vector<float> mSampledNormalizedSquaredLengthCache;
- std::vector<float> mSpeedRates;
- 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
- // 1. Used to calculate the probability of the key
- // 2. Used to calculate mSampledSearchKeySets
- std::vector<ProximityInfoStateUtils::NearKeycodesSet> mSampledNearKeySets;
- // The vector for the key code set which holds nearby keys of some trailing sampled input points
- // for each sampled input point. These nearby keys contain the next characters which can be in
- // the dictionary. Specifically, currently we are looking for keys nearby trailing sampled
- // inputs including the current input point.
- std::vector<ProximityInfoStateUtils::NearKeycodesSet> mSampledSearchKeySets;
- std::vector<std::vector<int> > mSampledSearchKeyVectors;
- bool mTouchPositionCorrectionEnabled;
- int mInputProximities[MAX_PROXIMITY_CHARS_SIZE * MAX_WORD_LENGTH];
- int mNormalizedSquaredDistances[MAX_PROXIMITY_CHARS_SIZE * MAX_WORD_LENGTH];
- int mSampledInputSize;
- int mPrimaryInputWord[MAX_WORD_LENGTH];
- float mMostProbableStringProbability;
- int mMostProbableString[MAX_WORD_LENGTH];
-};
-} // namespace latinime
-#endif // LATINIME_PROXIMITY_INFO_STATE_H