aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/proximity_info.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src/proximity_info.cpp')
-rw-r--r--native/jni/src/proximity_info.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/native/jni/src/proximity_info.cpp b/native/jni/src/proximity_info.cpp
index c9f83b62c..d6990325e 100644
--- a/native/jni/src/proximity_info.cpp
+++ b/native/jni/src/proximity_info.cpp
@@ -134,10 +134,22 @@ static inline float getNormalizedSquaredDistanceFloat(float x1, float y1, float
return (SQUARE_FLOAT(deltaX) + SQUARE_FLOAT(deltaY)) / SQUARE_FLOAT(scale);
}
-float ProximityInfo::getNormalizedSquaredDistanceFromCenterFloat(
+float ProximityInfo::getNormalizedSquaredDistanceFromCenterFloatG(
const int keyId, const int x, const int y) const {
- const float centerX = static_cast<float>(getKeyCenterXOfKeyIdG(keyId));
- const float centerY = static_cast<float>(getKeyCenterYOfKeyIdG(keyId));
+ const static float verticalSweetSpotScaleForGeometric = 1.1f;
+ const bool correctTouchPosition = hasTouchPositionCorrectionData();
+ const float centerX = static_cast<float>(correctTouchPosition
+ ? getSweetSpotCenterXAt(keyId)
+ : getKeyCenterXOfKeyIdG(keyId));
+ const float visualKeyCenterY = static_cast<float>(getKeyCenterYOfKeyIdG(keyId));
+ float centerY;
+ if (correctTouchPosition) {
+ const float sweetSpotCenterY = static_cast<float>(getSweetSpotCenterYAt(keyId));
+ const float gapY = sweetSpotCenterY - visualKeyCenterY;
+ centerY = visualKeyCenterY + gapY * verticalSweetSpotScaleForGeometric;
+ } else {
+ centerY = visualKeyCenterY;
+ }
const float touchX = static_cast<float>(x);
const float touchY = static_cast<float>(y);
const float keyWidth = static_cast<float>(getMostCommonKeyWidth());