| 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 "ui/aura/test/test_screen.h" | 5 #include "ui/aura/test/test_screen.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "ui/aura/env.h" | 8 #include "ui/aura/env.h" |
| 9 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
| 10 #include "ui/aura/window_event_dispatcher.h" | 10 #include "ui/aura/window_event_dispatcher.h" |
| 11 #include "ui/aura/window_tree_host.h" | 11 #include "ui/aura/window_tree_host.h" |
| 12 #include "ui/gfx/geometry/size_conversions.h" | 12 #include "ui/gfx/geometry/size_conversions.h" |
| 13 #include "ui/gfx/native_widget_types.h" | 13 #include "ui/gfx/native_widget_types.h" |
| 14 #include "ui/gfx/rect_conversions.h" | 14 #include "ui/gfx/rect_conversions.h" |
| 15 #include "ui/gfx/screen.h" | 15 #include "ui/gfx/screen.h" |
| 16 | 16 |
| 17 namespace aura { | 17 namespace aura { |
| 18 | 18 |
| 19 namespace { | |
| 20 | |
| 21 bool IsRotationPortrait(gfx::Display::Rotation rotation) { | |
| 22 return rotation == gfx::Display::ROTATE_90 || | |
| 23 rotation == gfx::Display::ROTATE_270; | |
| 24 } | |
| 25 | |
| 26 } // namespace | |
| 27 | |
| 28 // static | 19 // static |
| 29 TestScreen* TestScreen::Create(const gfx::Size& size) { | 20 TestScreen* TestScreen::Create(const gfx::Size& size) { |
| 30 const gfx::Size kDefaultSize(800, 600); | 21 const gfx::Size kDefaultSize(800, 600); |
| 31 // Use (0,0) because the desktop aura tests are executed in | 22 // Use (0,0) because the desktop aura tests are executed in |
| 32 // native environment where the display's origin is (0,0). | 23 // native environment where the display's origin is (0,0). |
| 33 return new TestScreen(gfx::Rect(size.IsEmpty() ? kDefaultSize : size)); | 24 return new TestScreen(gfx::Rect(size.IsEmpty() ? kDefaultSize : size)); |
| 34 } | 25 } |
| 35 | 26 |
| 36 // static | 27 // static |
| 37 TestScreen* TestScreen::CreateFullscreen() { | 28 TestScreen* TestScreen::CreateFullscreen() { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 49 return host_; | 40 return host_; |
| 50 } | 41 } |
| 51 | 42 |
| 52 void TestScreen::SetDeviceScaleFactor(float device_scale_factor) { | 43 void TestScreen::SetDeviceScaleFactor(float device_scale_factor) { |
| 53 gfx::Rect bounds_in_pixel(display_.GetSizeInPixel()); | 44 gfx::Rect bounds_in_pixel(display_.GetSizeInPixel()); |
| 54 display_.SetScaleAndBounds(device_scale_factor, bounds_in_pixel); | 45 display_.SetScaleAndBounds(device_scale_factor, bounds_in_pixel); |
| 55 host_->OnHostResized(bounds_in_pixel.size()); | 46 host_->OnHostResized(bounds_in_pixel.size()); |
| 56 } | 47 } |
| 57 | 48 |
| 58 void TestScreen::SetDisplayRotation(gfx::Display::Rotation rotation) { | 49 void TestScreen::SetDisplayRotation(gfx::Display::Rotation rotation) { |
| 59 gfx::Rect bounds_in_pixel(display_.GetSizeInPixel()); | |
| 60 gfx::Rect new_bounds(bounds_in_pixel); | |
| 61 if (IsRotationPortrait(rotation) != IsRotationPortrait(display_.rotation())) { | |
| 62 new_bounds.set_width(bounds_in_pixel.height()); | |
| 63 new_bounds.set_height(bounds_in_pixel.width()); | |
| 64 } | |
| 65 display_.set_rotation(rotation); | 50 display_.set_rotation(rotation); |
| 66 display_.SetScaleAndBounds(display_.device_scale_factor(), new_bounds); | 51 // TODO(oshima|mukai): Update the display_ as well. |
| 67 host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform()); | 52 host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform()); |
| 68 } | 53 } |
| 69 | 54 |
| 70 void TestScreen::SetUIScale(float ui_scale) { | 55 void TestScreen::SetUIScale(float ui_scale) { |
| 71 ui_scale_ = ui_scale; | 56 ui_scale_ = ui_scale; |
| 72 gfx::Rect bounds_in_pixel(display_.GetSizeInPixel()); | 57 gfx::Rect bounds_in_pixel(display_.GetSizeInPixel()); |
| 73 gfx::Rect new_bounds = gfx::ToNearestRect( | 58 gfx::Rect new_bounds = gfx::ToNearestRect( |
| 74 gfx::ScaleRect(bounds_in_pixel, 1.0f / ui_scale)); | 59 gfx::ScaleRect(bounds_in_pixel, 1.0f / ui_scale)); |
| 75 display_.SetScaleAndBounds(display_.device_scale_factor(), new_bounds); | 60 display_.SetScaleAndBounds(display_.device_scale_factor(), new_bounds); |
| 76 host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform()); | 61 host_->SetRootTransform(GetRotationTransform() * GetUIScaleTransform()); |
| 77 } | 62 } |
| 78 | 63 |
| 79 gfx::Transform TestScreen::GetRotationTransform() const { | 64 gfx::Transform TestScreen::GetRotationTransform() const { |
| 80 gfx::Transform rotate; | 65 gfx::Transform rotate; |
| 66 float one_pixel = 1.0f / display_.device_scale_factor(); |
| 81 switch (display_.rotation()) { | 67 switch (display_.rotation()) { |
| 82 case gfx::Display::ROTATE_0: | 68 case gfx::Display::ROTATE_0: |
| 83 break; | 69 break; |
| 84 case gfx::Display::ROTATE_90: | 70 case gfx::Display::ROTATE_90: |
| 85 rotate.Translate(display_.bounds().height(), 0); | 71 rotate.Translate(display_.bounds().height() - one_pixel, 0); |
| 86 rotate.Rotate(90); | 72 rotate.Rotate(90); |
| 87 break; | 73 break; |
| 88 case gfx::Display::ROTATE_270: | 74 case gfx::Display::ROTATE_270: |
| 89 rotate.Translate(0, display_.bounds().width()); | 75 rotate.Translate(0, display_.bounds().width() - one_pixel); |
| 90 rotate.Rotate(270); | 76 rotate.Rotate(270); |
| 91 break; | 77 break; |
| 92 case gfx::Display::ROTATE_180: | 78 case gfx::Display::ROTATE_180: |
| 93 rotate.Translate(display_.bounds().width(), | 79 rotate.Translate(display_.bounds().width() - one_pixel, |
| 94 display_.bounds().height()); | 80 display_.bounds().height() - one_pixel); |
| 95 rotate.Rotate(180); | 81 rotate.Rotate(180); |
| 96 break; | 82 break; |
| 97 } | 83 } |
| 98 | 84 |
| 99 return rotate; | 85 return rotate; |
| 100 } | 86 } |
| 101 | 87 |
| 102 gfx::Transform TestScreen::GetUIScaleTransform() const { | 88 gfx::Transform TestScreen::GetUIScaleTransform() const { |
| 103 gfx::Transform ui_scale; | 89 gfx::Transform ui_scale; |
| 104 ui_scale.Scale(1.0f / ui_scale_, 1.0f / ui_scale_); | 90 ui_scale.Scale(1.0f / ui_scale_, 1.0f / ui_scale_); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 | 152 |
| 167 TestScreen::TestScreen(const gfx::Rect& screen_bounds) | 153 TestScreen::TestScreen(const gfx::Rect& screen_bounds) |
| 168 : host_(NULL), | 154 : host_(NULL), |
| 169 ui_scale_(1.0f) { | 155 ui_scale_(1.0f) { |
| 170 static int64 synthesized_display_id = 2000; | 156 static int64 synthesized_display_id = 2000; |
| 171 display_.set_id(synthesized_display_id++); | 157 display_.set_id(synthesized_display_id++); |
| 172 display_.SetScaleAndBounds(1.0f, screen_bounds); | 158 display_.SetScaleAndBounds(1.0f, screen_bounds); |
| 173 } | 159 } |
| 174 | 160 |
| 175 } // namespace aura | 161 } // namespace aura |
| OLD | NEW |