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

Unified Diff: chromeos/display/output_configurator.cc

Issue 14279002: Scale TouchEvent's radius when touchscreen is in mirror mode (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: including chromeos/display/output_configurator.h only when defined(OS_CHROMEOS) Created 7 years, 8 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
« no previous file with comments | « chromeos/display/output_configurator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/display/output_configurator.cc
diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc
index 94b603f9b2806b5a9a57fa0f67774560544eef07..903f49b7e9368736c07080d9017ed03f425b0a9e 100644
--- a/chromeos/display/output_configurator.cc
+++ b/chromeos/display/output_configurator.cc
@@ -428,6 +428,8 @@ bool OutputConfigurator::EnterState(
if (outputs[i].mirror_mode != outputs[i].native_mode &&
outputs[i].is_aspect_preserving_scaling) {
ctm = GetMirrorModeCTM(&outputs[i]);
+ mirrored_display_area_ratio_map_[outputs[i].touch_device_id] =
+ GetMirroredDisplayAreaRatio(&outputs[i]);
}
delegate_->ConfigureCTM(outputs[i].touch_device_id, ctm);
}
@@ -562,4 +564,28 @@ OutputConfigurator::GetMirrorModeCTM(
return ctm; // Same aspect ratio - return identity
}
+float OutputConfigurator::GetMirroredDisplayAreaRatio(
+ const OutputConfigurator::OutputSnapshot* output) {
+ float area_ratio = 1.0f;
+ int native_mode_width = 0, native_mode_height = 0;
+ int mirror_mode_width = 0, mirror_mode_height = 0;
+ if (!delegate_->GetModeDetails(output->native_mode,
+ &native_mode_width, &native_mode_height, NULL) ||
+ !delegate_->GetModeDetails(output->mirror_mode,
+ &mirror_mode_width, &mirror_mode_height, NULL))
+ return area_ratio;
+
+ if (native_mode_height == 0 || mirror_mode_height == 0 ||
+ native_mode_width == 0 || mirror_mode_width == 0)
+ return area_ratio;
+
+ float width_ratio = static_cast<float>(mirror_mode_width) /
+ static_cast<float>(native_mode_width);
+ float height_ratio = static_cast<float>(mirror_mode_height) /
+ static_cast<float>(native_mode_height);
+
+ area_ratio = width_ratio * height_ratio;
+ return area_ratio;
+}
+
} // namespace chromeos
« no previous file with comments | « chromeos/display/output_configurator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698