summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2012-06-25 17:37:06 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-25 17:37:06 -0700
commit041c36686dd986834990d85f7f93fe2ee4e5fca5 (patch)
tree14c4aa005c797c254221509131e7aa5632d225e3
parentdebee3942cffdcd6875b097986dffae3566cc18b (diff)
parent037f727f49ddf4f5575f6440799261bd1289eb6e (diff)
downloadframeworks_base-041c36686dd986834990d85f7f93fe2ee4e5fca5.zip
frameworks_base-041c36686dd986834990d85f7f93fe2ee4e5fca5.tar.gz
frameworks_base-041c36686dd986834990d85f7f93fe2ee4e5fca5.tar.bz2
Merge "Improve handling of size and orientation."
-rw-r--r--services/input/InputReader.cpp21
-rw-r--r--services/input/InputReader.h2
2 files changed, 15 insertions, 8 deletions
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index cd6a2ec..6d63998 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -2620,7 +2620,6 @@ void TouchInputMapper::dump(String8& dump) {
dump.appendFormat(INDENT4 "GeometricScale: %0.3f\n", mGeometricScale);
dump.appendFormat(INDENT4 "PressureScale: %0.3f\n", mPressureScale);
dump.appendFormat(INDENT4 "SizeScale: %0.3f\n", mSizeScale);
- dump.appendFormat(INDENT4 "OrientationCenter: %0.3f\n", mOrientationCenter);
dump.appendFormat(INDENT4 "OrientationScale: %0.3f\n", mOrientationScale);
dump.appendFormat(INDENT4 "DistanceScale: %0.3f\n", mDistanceScale);
dump.appendFormat(INDENT4 "HaveTilt: %s\n", toString(mHaveTilt));
@@ -3051,7 +3050,6 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {
}
// Orientation
- mOrientationCenter = 0;
mOrientationScale = 0;
if (mHaveTilt) {
mOrientedRanges.haveOrientation = true;
@@ -3067,10 +3065,13 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {
if (mCalibration.orientationCalibration
== Calibration::ORIENTATION_CALIBRATION_INTERPOLATED) {
if (mRawPointerAxes.orientation.valid) {
- mOrientationCenter = avg(mRawPointerAxes.orientation.minValue,
- mRawPointerAxes.orientation.maxValue);
- mOrientationScale = M_PI / (mRawPointerAxes.orientation.maxValue -
- mRawPointerAxes.orientation.minValue);
+ if (mRawPointerAxes.orientation.maxValue > 0) {
+ mOrientationScale = M_PI_2 / mRawPointerAxes.orientation.maxValue;
+ } else if (mRawPointerAxes.orientation.minValue < 0) {
+ mOrientationScale = -M_PI_2 / mRawPointerAxes.orientation.minValue;
+ } else {
+ mOrientationScale = 0;
+ }
}
}
@@ -3284,6 +3285,8 @@ void TouchInputMapper::parseCalibration() {
out.sizeCalibration = Calibration::SIZE_CALIBRATION_GEOMETRIC;
} else if (sizeCalibrationString == "diameter") {
out.sizeCalibration = Calibration::SIZE_CALIBRATION_DIAMETER;
+ } else if (sizeCalibrationString == "box") {
+ out.sizeCalibration = Calibration::SIZE_CALIBRATION_BOX;
} else if (sizeCalibrationString == "area") {
out.sizeCalibration = Calibration::SIZE_CALIBRATION_AREA;
} else if (sizeCalibrationString != "default") {
@@ -3404,6 +3407,9 @@ void TouchInputMapper::dumpCalibration(String8& dump) {
case Calibration::SIZE_CALIBRATION_DIAMETER:
dump.append(INDENT4 "touch.size.calibration: diameter\n");
break;
+ case Calibration::SIZE_CALIBRATION_BOX:
+ dump.append(INDENT4 "touch.size.calibration: box\n");
+ break;
case Calibration::SIZE_CALIBRATION_AREA:
dump.append(INDENT4 "touch.size.calibration: area\n");
break;
@@ -3954,6 +3960,7 @@ void TouchInputMapper::cookPointerData() {
switch (mCalibration.sizeCalibration) {
case Calibration::SIZE_CALIBRATION_GEOMETRIC:
case Calibration::SIZE_CALIBRATION_DIAMETER:
+ case Calibration::SIZE_CALIBRATION_BOX:
case Calibration::SIZE_CALIBRATION_AREA:
if (mRawPointerAxes.touchMajor.valid && mRawPointerAxes.toolMajor.valid) {
touchMajor = in.touchMajor;
@@ -4050,7 +4057,7 @@ void TouchInputMapper::cookPointerData() {
switch (mCalibration.orientationCalibration) {
case Calibration::ORIENTATION_CALIBRATION_INTERPOLATED:
- orientation = (in.orientation - mOrientationCenter) * mOrientationScale;
+ orientation = in.orientation * mOrientationScale;
break;
case Calibration::ORIENTATION_CALIBRATION_VECTOR: {
int32_t c1 = signExtendNybble((in.orientation & 0xf0) >> 4);
diff --git a/services/input/InputReader.h b/services/input/InputReader.h
index 122a2ab..6c06986 100644
--- a/services/input/InputReader.h
+++ b/services/input/InputReader.h
@@ -1162,6 +1162,7 @@ protected:
SIZE_CALIBRATION_NONE,
SIZE_CALIBRATION_GEOMETRIC,
SIZE_CALIBRATION_DIAMETER,
+ SIZE_CALIBRATION_BOX,
SIZE_CALIBRATION_AREA,
};
@@ -1294,7 +1295,6 @@ private:
float mSizeScale;
- float mOrientationCenter;
float mOrientationScale;
float mDistanceScale;