Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Unified Diff: ui/events/ozone/evdev/touch_event_converter_evdev.cc

Issue 509713002: ozone: evdev: Fix TouchEvent radius (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add test Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/ozone/evdev/touch_event_converter_evdev.cc
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev.cc b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
index c24c50a5c93291789a60bea3395d463ab5c2c692..8d6a0b5568ca6228527030965ca1abe59352d2f6 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
@@ -30,10 +30,6 @@
namespace {
-// Number is determined empirically.
-// TODO(rjkroege): Configure this per device.
-const float kFingerWidth = 25.f;
-
struct TouchCalibration {
int bezel_left;
int bezel_right;
@@ -68,6 +64,10 @@ float TuxelsToPixels(float val,
return min_pixels + (val - min_tuxels) * num_pixels / num_tuxels;
}
+float TuxelToPixelSize(float val, float num_tuxels, float num_pixels) {
+ return val * num_pixels / num_tuxels;
+}
+
} // namespace
namespace ui {
@@ -201,7 +201,16 @@ void TouchEventConverterEvdev::ProcessAbs(const input_event& input) {
switch (input.code) {
case ABS_MT_TOUCH_MAJOR:
altered_slots_.set(current_slot_);
- events_[current_slot_].major_ = input.value;
+ // TODO(spang): If we have all of major, minor, and orientation,
+ // we can scale the ellipse correctly. However on the Pixel we get
+ // neither minor nor orientation, so this is all we can do.
+ events_[current_slot_].radius_x_ =
+ TuxelToPixelSize(input.value, x_num_tuxels_, x_num_pixels_) / 2.0f;
+ break;
+ case ABS_MT_TOUCH_MINOR:
+ altered_slots_.set(current_slot_);
+ events_[current_slot_].radius_y_ =
+ TuxelToPixelSize(input.value, y_num_tuxels_, y_num_pixels_) / 2.0f;
break;
case ABS_MT_POSITION_X:
altered_slots_.set(current_slot_);
@@ -285,8 +294,8 @@ void TouchEventConverterEvdev::ReportEvents(base::TimeDelta delta) {
/* flags */ 0,
/* touch_id */ events_[i].finger_,
delta,
- events_[i].pressure_ * kFingerWidth,
- events_[i].pressure_ * kFingerWidth,
+ /* radius_x */ events_[i].radius_x_,
+ /* radius_y */ events_[i].radius_y_,
/* angle */ 0.,
events_[i].pressure_);
DispatchEventToCallback(&evt);
« no previous file with comments | « ui/events/ozone/evdev/touch_event_converter_evdev.h ('k') | ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698