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

Unified Diff: ui/display/chromeos/display_configurator.cc

Issue 280833002: Re-land "Issue 191223007: Move touch CTM from X into Chrome" (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: adding missing file again Created 6 years, 7 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 | « ui/display/chromeos/display_configurator.h ('k') | ui/display/chromeos/display_configurator_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/display/chromeos/display_configurator.cc
diff --git a/ui/display/chromeos/display_configurator.cc b/ui/display/chromeos/display_configurator.cc
index 1283b58a2b108b1180e020e83abc1169055d3e35..a2281a8c8a24a9dd98e30246024f8b38849808e3 100644
--- a/ui/display/chromeos/display_configurator.cc
+++ b/ui/display/chromeos/display_configurator.cc
@@ -89,12 +89,6 @@ int GetDisplayPower(
} // namespace
-DisplayConfigurator::CoordinateTransformation::CoordinateTransformation()
- : x_scale(1.0),
- x_offset(0.0),
- y_scale(1.0),
- y_offset(0.0) {}
-
DisplayConfigurator::DisplayState::DisplayState()
: display(NULL),
touch_device_id(0),
@@ -796,11 +790,8 @@ bool DisplayConfigurator::EnterState(MultipleDisplayState display_state,
DisplayState* state = &cached_displays_[i];
new_mode[i] = display_power[i] ? state->mirror_mode : NULL;
if (state->touch_device_id) {
- // CTM needs to be calculated if aspect preserving scaling is used.
- // Otherwise, assume it is full screen, and use identity CTM.
if (state->mirror_mode != state->display->native_mode() &&
state->display->is_aspect_preserving_scaling()) {
- state->transform = GetMirrorModeCTM(*state);
mirrored_display_area_ratio_map_[state->touch_device_id] =
GetMirroredDisplayAreaRatio(*state);
}
@@ -833,12 +824,6 @@ bool DisplayConfigurator::EnterState(MultipleDisplayState display_state,
size.set_height(size.height() + (size.height() ? kVerticalGap : 0) +
mode_info->size().height());
}
-
- for (size_t i = 0; i < cached_displays_.size(); ++i) {
- DisplayState* state = &cached_displays_[i];
- if (state->touch_device_id)
- state->transform = GetExtendedModeCTM(*state, new_origins[i], size);
- }
break;
}
}
@@ -886,13 +871,8 @@ bool DisplayConfigurator::EnterState(MultipleDisplayState display_state,
break;
}
- if (configure_succeeded) {
- if (state.touch_device_id)
- touchscreen_delegate_->ConfigureCTM(state.touch_device_id,
- state.transform);
- } else {
+ if (!configure_succeeded)
all_succeeded = false;
- }
// If we are trying to set mirror mode and one of the modesets fails,
// then the two monitors will be mis-matched. In this case, return
@@ -907,6 +887,7 @@ bool DisplayConfigurator::EnterState(MultipleDisplayState display_state,
if (all_succeeded) {
display_state_ = display_state;
power_state_ = power_state;
+ framebuffer_size_ = size;
}
return all_succeeded;
}
@@ -945,82 +926,6 @@ MultipleDisplayState DisplayConfigurator::ChooseDisplayState(
return MULTIPLE_DISPLAY_STATE_INVALID;
}
-DisplayConfigurator::CoordinateTransformation
-DisplayConfigurator::GetMirrorModeCTM(const DisplayState& display_state) {
- CoordinateTransformation ctm; // Default to identity
- const DisplayMode* native_mode_info = display_state.display->native_mode();
- const DisplayMode* mirror_mode_info = display_state.mirror_mode;
-
- if (!native_mode_info || !mirror_mode_info ||
- native_mode_info->size().height() == 0 ||
- mirror_mode_info->size().height() == 0 ||
- native_mode_info->size().width() == 0 ||
- mirror_mode_info->size().width() == 0)
- return ctm;
-
- float native_mode_ar = static_cast<float>(native_mode_info->size().width()) /
- static_cast<float>(native_mode_info->size().height());
- float mirror_mode_ar = static_cast<float>(mirror_mode_info->size().width()) /
- static_cast<float>(mirror_mode_info->size().height());
-
- if (mirror_mode_ar > native_mode_ar) { // Letterboxing
- ctm.x_scale = 1.0;
- ctm.x_offset = 0.0;
- ctm.y_scale = mirror_mode_ar / native_mode_ar;
- ctm.y_offset = (native_mode_ar / mirror_mode_ar - 1.0) * 0.5;
- return ctm;
- }
- if (native_mode_ar > mirror_mode_ar) { // Pillarboxing
- ctm.y_scale = 1.0;
- ctm.y_offset = 0.0;
- ctm.x_scale = native_mode_ar / mirror_mode_ar;
- ctm.x_offset = (mirror_mode_ar / native_mode_ar - 1.0) * 0.5;
- return ctm;
- }
-
- return ctm; // Same aspect ratio - return identity
-}
-
-DisplayConfigurator::CoordinateTransformation
-DisplayConfigurator::GetExtendedModeCTM(const DisplayState& display_state,
- const gfx::Point& new_origin,
- const gfx::Size& framebuffer_size) {
- CoordinateTransformation ctm; // Default to identity
- const DisplayMode* mode_info = display_state.selected_mode;
- DCHECK(mode_info);
- if (!mode_info)
- return ctm;
- // An example of how to calculate the CTM.
- // Suppose we have 2 monitors, the first one has size 1366 x 768.
- // The second one has size 2560 x 1600
- // The total size of framebuffer is 2560 x 2428
- // where 2428 = 768 + 60 (hidden gap) + 1600
- // and the sceond monitor is translated to Point (0, 828) in the
- // framebuffer.
- // X will first map input event location to [0, 2560) x [0, 2428),
- // then apply CTM on it.
- // So to compute CTM, for monitor1, we have
- // x_scale = (1366 - 1) / (2560 - 1)
- // x_offset = 0 / (2560 - 1)
- // y_scale = (768 - 1) / (2428 - 1)
- // y_offset = 0 / (2428 -1)
- // For Monitor 2, we have
- // x_scale = (2560 - 1) / (2560 - 1)
- // x_offset = 0 / (2560 - 1)
- // y_scale = (1600 - 1) / (2428 - 1)
- // y_offset = 828 / (2428 -1)
- // See the unittest DisplayConfiguratorTest.CTMForMultiScreens.
- ctm.x_scale = static_cast<float>(mode_info->size().width() - 1) /
- (framebuffer_size.width() - 1);
- ctm.x_offset =
- static_cast<float>(new_origin.x()) / (framebuffer_size.width() - 1);
- ctm.y_scale = static_cast<float>(mode_info->size().height() - 1) /
- (framebuffer_size.height() - 1);
- ctm.y_offset =
- static_cast<float>(new_origin.y()) / (framebuffer_size.height() - 1);
- return ctm;
-}
-
float DisplayConfigurator::GetMirroredDisplayAreaRatio(
const DisplayState& display_state) {
float area_ratio = 1.0f;
« no previous file with comments | « ui/display/chromeos/display_configurator.h ('k') | ui/display/chromeos/display_configurator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698