Merge "Step 26-A Cleanup geometory_utils" into jb-mr1-dev
This commit is contained in:
commit
d832bec40b
3 changed files with 18 additions and 26 deletions
|
@ -32,11 +32,6 @@ static inline float squareFloat(float x) {
|
||||||
return x * x;
|
return x * x;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float getNormalizedSquaredDistanceFloat(float x1, float y1, float x2, float y2,
|
|
||||||
float scale) {
|
|
||||||
return squareFloat((x1 - x2) / scale) + squareFloat((y1 - y2) / scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float getSquaredDistanceFloat(float x1, float y1, float x2, float y2) {
|
static inline float getSquaredDistanceFloat(float x1, float y1, float x2, float y2) {
|
||||||
return squareFloat(x1 - x2) + squareFloat(y1 - y2);
|
return squareFloat(x1 - x2) + squareFloat(y1 - y2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,21 @@ bool ProximityInfo::hasSpaceProximity(const int x, const int y) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline float getNormalizedSquaredDistanceFloat(float x1, float y1, float x2, float y2,
|
||||||
|
float scale) {
|
||||||
|
return squareFloat((x1 - x2) / scale) + squareFloat((y1 - y2) / scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
float ProximityInfo::getNormalizedSquaredDistanceFromCenterFloat(
|
||||||
|
const int keyId, const int x, const int y) const {
|
||||||
|
const float centerX = static_cast<float>(getKeyCenterXOfIdG(keyId));
|
||||||
|
const float centerY = static_cast<float>(getKeyCenterYOfIdG(keyId));
|
||||||
|
const float touchX = static_cast<float>(x);
|
||||||
|
const float touchY = static_cast<float>(y);
|
||||||
|
const float keyWidth = static_cast<float>(getMostCommonKeyWidth());
|
||||||
|
return getNormalizedSquaredDistanceFloat(centerX, centerY, touchX, touchY, keyWidth);
|
||||||
|
}
|
||||||
|
|
||||||
int ProximityInfo::squaredDistanceToEdge(const int keyId, const int x, const int y) const {
|
int ProximityInfo::squaredDistanceToEdge(const int keyId, const int x, const int y) const {
|
||||||
if (keyId < 0) return true; // NOT_A_ID is -1, but return whenever < 0 just in case
|
if (keyId < 0) return true; // NOT_A_ID is -1, but return whenever < 0 just in case
|
||||||
const int left = mKeyXCoordinates[keyId];
|
const int left = mKeyXCoordinates[keyId];
|
||||||
|
@ -233,6 +248,7 @@ int ProximityInfo::getKeyCode(const int keyIndex) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProximityInfo::initializeG() {
|
void ProximityInfo::initializeG() {
|
||||||
|
// TODO: Optimize
|
||||||
for (int i = 0; i < KEY_COUNT; ++i) {
|
for (int i = 0; i < KEY_COUNT; ++i) {
|
||||||
const int code = mKeyCharCodes[i];
|
const int code = mKeyCharCodes[i];
|
||||||
const int lowerCode = toBaseLowerCase(code);
|
const int lowerCode = toBaseLowerCase(code);
|
||||||
|
@ -285,25 +301,4 @@ int ProximityInfo::getKeyKeyDistanceG(int key0, int key1) const {
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: [Staging] Optimize
|
|
||||||
void ProximityInfo::getCenters(int *centerXs, int *centerYs, int *codeToKeyIndex,
|
|
||||||
int *keyToCodeIndex, int *keyCount, int *keyWidth) const {
|
|
||||||
*keyCount = KEY_COUNT;
|
|
||||||
*keyWidth = sqrtf(static_cast<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
|
} // namespace latinime
|
||||||
|
|
|
@ -38,6 +38,8 @@ class ProximityInfo {
|
||||||
~ProximityInfo();
|
~ProximityInfo();
|
||||||
bool hasSpaceProximity(const int x, const int y) const;
|
bool hasSpaceProximity(const int x, const int y) const;
|
||||||
int getNormalizedSquaredDistance(const int inputIndex, const int proximityIndex) const;
|
int getNormalizedSquaredDistance(const int inputIndex, const int proximityIndex) const;
|
||||||
|
float getNormalizedSquaredDistanceFromCenterFloat(
|
||||||
|
const int keyId, const int x, const int y) const;
|
||||||
bool sameAsTyped(const unsigned short *word, int length) const;
|
bool sameAsTyped(const unsigned short *word, int length) const;
|
||||||
int squaredDistanceToEdge(const int keyId, const int x, const int y) const;
|
int squaredDistanceToEdge(const int keyId, const int x, const int y) const;
|
||||||
bool isOnKey(const int keyId, const int x, const int y) const {
|
bool isOnKey(const int keyId, const int x, const int y) const {
|
||||||
|
|
Loading…
Reference in a new issue