OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/display/display_controller.h" | 5 #include "ash/display/display_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "ash/ash_root_window_transformer.h" | 10 #include "ash/ash_root_window_transformer.h" |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 return; | 135 return; |
136 root_window->SetProperty(kRotationPropertyKey, info.rotation()); | 136 root_window->SetProperty(kRotationPropertyKey, info.rotation()); |
137 #endif | 137 #endif |
138 gfx::Transform rotate; | 138 gfx::Transform rotate; |
139 // TODO(oshima): Manually complute the inverse of the | 139 // TODO(oshima): Manually complute the inverse of the |
140 // rotate+translate matrix to compensate for computation error in | 140 // rotate+translate matrix to compensate for computation error in |
141 // the inverted matrix. Ideally, SkMatrix should have special | 141 // the inverted matrix. Ideally, SkMatrix should have special |
142 // case handling for rotate+translate case. crbug.com/222483. | 142 // case handling for rotate+translate case. crbug.com/222483. |
143 gfx::Transform reverse_rotate; | 143 gfx::Transform reverse_rotate; |
144 | 144 |
145 // The origin is (0, 0), so the translate width/height must be reduced by 1. | 145 // The origin is (0, 0), so the translate width/height must be reduced by |
| 146 // 1 pixel. |
| 147 float one_pixel = 1.0f / display.device_scale_factor(); |
146 switch (info.rotation()) { | 148 switch (info.rotation()) { |
147 case gfx::Display::ROTATE_0: | 149 case gfx::Display::ROTATE_0: |
148 break; | 150 break; |
149 case gfx::Display::ROTATE_90: | 151 case gfx::Display::ROTATE_90: |
150 rotate.Translate(display.bounds().height() - 1, 0); | 152 rotate.Translate(display.bounds().height() - one_pixel, 0); |
151 rotate.Rotate(90); | 153 rotate.Rotate(90); |
152 // Rotate 270 instead of 90 as it will cause calcuration error. | 154 // Rotate 270 instead of 90 as it will cause calcuration error. |
153 reverse_rotate.Rotate(270); | 155 reverse_rotate.Rotate(270); |
154 reverse_rotate.Translate(-(display.bounds().height() - 1), 0); | 156 reverse_rotate.Translate(-(display.bounds().height() - one_pixel), 0); |
155 break; | 157 break; |
156 case gfx::Display::ROTATE_270: | 158 case gfx::Display::ROTATE_270: |
157 rotate.Translate(0, display.bounds().width() - 1); | 159 rotate.Translate(0, display.bounds().width() - one_pixel); |
158 rotate.Rotate(270); | 160 rotate.Rotate(270); |
159 reverse_rotate.Rotate(90); | 161 reverse_rotate.Rotate(90); |
160 reverse_rotate.Translate(0, -(display.bounds().width() - 1)); | 162 reverse_rotate.Translate(0, -(display.bounds().width() - one_pixel)); |
161 break; | 163 break; |
162 case gfx::Display::ROTATE_180: | 164 case gfx::Display::ROTATE_180: |
163 rotate.Translate(display.bounds().width() - 1, | 165 rotate.Translate(display.bounds().width() - one_pixel, |
164 display.bounds().height() - 1); | 166 display.bounds().height() - one_pixel); |
165 rotate.Rotate(180); | 167 rotate.Rotate(180); |
166 reverse_rotate.Rotate(180); | 168 reverse_rotate.Rotate(180); |
167 reverse_rotate.Translate(-(display.bounds().width() - 1), | 169 reverse_rotate.Translate(-(display.bounds().width() - one_pixel), |
168 -(display.bounds().height() - 1)); | 170 -(display.bounds().height() - one_pixel)); |
169 break; | 171 break; |
170 } | 172 } |
171 scoped_ptr<aura::RootWindowTransformer> transformer( | 173 scoped_ptr<aura::RootWindowTransformer> transformer( |
172 new AshRootWindowTransformer(root_window, | 174 new AshRootWindowTransformer(root_window, |
173 rotate, | 175 rotate, |
174 reverse_rotate, | 176 reverse_rotate, |
175 info.GetOverscanInsetsInPixel(), | 177 info.GetOverscanInsetsInPixel(), |
176 info.ui_scale())); | 178 info.ui_scale())); |
177 root_window->SetRootWindowTransformer(transformer.Pass()); | 179 root_window->SetRootWindowTransformer(transformer.Pass()); |
178 } | 180 } |
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
938 } | 940 } |
939 | 941 |
940 void DisplayController::OnFadeOutForSwapDisplayFinished() { | 942 void DisplayController::OnFadeOutForSwapDisplayFinished() { |
941 #if defined(OS_CHROMEOS) | 943 #if defined(OS_CHROMEOS) |
942 SetPrimaryDisplay(ScreenAsh::GetSecondaryDisplay()); | 944 SetPrimaryDisplay(ScreenAsh::GetSecondaryDisplay()); |
943 Shell::GetInstance()->output_configurator_animation()->StartFadeInAnimation(); | 945 Shell::GetInstance()->output_configurator_animation()->StartFadeInAnimation(); |
944 #endif | 946 #endif |
945 } | 947 } |
946 | 948 |
947 } // namespace ash | 949 } // namespace ash |
OLD | NEW |