| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/cursor_window_controller.h" | 5 #include "ash/display/cursor_window_controller.h" |
| 6 | 6 |
| 7 #include "ash/common/shell_window_ids.h" | 7 #include "ash/common/shell_window_ids.h" |
| 8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
| 9 #include "ash/display/mirror_window_controller.h" | 9 #include "ash/display/mirror_window_controller.h" |
| 10 #include "ash/display/window_tree_host_manager.h" | 10 #include "ash/display/window_tree_host_manager.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 | 77 |
| 78 DISALLOW_COPY_AND_ASSIGN(CursorWindowDelegate); | 78 DISALLOW_COPY_AND_ASSIGN(CursorWindowDelegate); |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 CursorWindowController::CursorWindowController() | 81 CursorWindowController::CursorWindowController() |
| 82 : is_cursor_compositing_enabled_(false), | 82 : is_cursor_compositing_enabled_(false), |
| 83 container_(NULL), | 83 container_(NULL), |
| 84 cursor_type_(ui::kCursorNone), | 84 cursor_type_(ui::kCursorNone), |
| 85 visible_(true), | 85 visible_(true), |
| 86 cursor_set_(ui::CURSOR_SET_NORMAL), | 86 cursor_set_(ui::CURSOR_SET_NORMAL), |
| 87 delegate_(new CursorWindowDelegate()) { | 87 delegate_(new CursorWindowDelegate()) {} |
| 88 } | |
| 89 | 88 |
| 90 CursorWindowController::~CursorWindowController() { | 89 CursorWindowController::~CursorWindowController() { |
| 91 SetContainer(NULL); | 90 SetContainer(NULL); |
| 92 } | 91 } |
| 93 | 92 |
| 94 void CursorWindowController::SetCursorCompositingEnabled(bool enabled) { | 93 void CursorWindowController::SetCursorCompositingEnabled(bool enabled) { |
| 95 if (is_cursor_compositing_enabled_ != enabled) { | 94 if (is_cursor_compositing_enabled_ != enabled) { |
| 96 is_cursor_compositing_enabled_ = enabled; | 95 is_cursor_compositing_enabled_ = enabled; |
| 97 if (display_.is_valid()) | 96 if (display_.is_valid()) |
| 98 UpdateCursorImage(); | 97 UpdateCursorImage(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 return; | 131 return; |
| 133 } | 132 } |
| 134 | 133 |
| 135 display_ = display; | 134 display_ = display; |
| 136 aura::Window* root_window = Shell::GetInstance() | 135 aura::Window* root_window = Shell::GetInstance() |
| 137 ->window_tree_host_manager() | 136 ->window_tree_host_manager() |
| 138 ->GetRootWindowForDisplayId(display.id()); | 137 ->GetRootWindowForDisplayId(display.id()); |
| 139 if (!root_window) | 138 if (!root_window) |
| 140 return; | 139 return; |
| 141 | 140 |
| 142 SetContainer(GetRootWindowController(root_window)->GetContainer( | 141 SetContainer(GetRootWindowController(root_window) |
| 143 kShellWindowId_MouseCursorContainer)); | 142 ->GetContainer(kShellWindowId_MouseCursorContainer)); |
| 144 SetBoundsInScreen(display.bounds()); | 143 SetBoundsInScreen(display.bounds()); |
| 145 // Updates the hot point based on the current display. | 144 // Updates the hot point based on the current display. |
| 146 UpdateCursorImage(); | 145 UpdateCursorImage(); |
| 147 } | 146 } |
| 148 | 147 |
| 149 void CursorWindowController::UpdateLocation() { | 148 void CursorWindowController::UpdateLocation() { |
| 150 if (!cursor_window_) | 149 if (!cursor_window_) |
| 151 return; | 150 return; |
| 152 gfx::Point point = aura::Env::GetInstance()->last_mouse_location(); | 151 gfx::Point point = aura::Env::GetInstance()->last_mouse_location(); |
| 153 if (!is_cursor_compositing_enabled_) { | 152 if (!is_cursor_compositing_enabled_) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 const gfx::ImageSkia* image = | 231 const gfx::ImageSkia* image = |
| 233 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); | 232 ResourceBundle::GetSharedInstance().GetImageSkiaNamed(resource_id); |
| 234 if (!is_cursor_compositing_enabled_) { | 233 if (!is_cursor_compositing_enabled_) { |
| 235 gfx::ImageSkia rotated = *image; | 234 gfx::ImageSkia rotated = *image; |
| 236 switch (display_.rotation()) { | 235 switch (display_.rotation()) { |
| 237 case display::Display::ROTATE_0: | 236 case display::Display::ROTATE_0: |
| 238 break; | 237 break; |
| 239 case display::Display::ROTATE_90: | 238 case display::Display::ROTATE_90: |
| 240 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( | 239 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( |
| 241 *image, SkBitmapOperations::ROTATION_90_CW); | 240 *image, SkBitmapOperations::ROTATION_90_CW); |
| 242 hot_point_.SetPoint( | 241 hot_point_.SetPoint(rotated.width() - hot_point_.y(), hot_point_.x()); |
| 243 rotated.width() - hot_point_.y(), | |
| 244 hot_point_.x()); | |
| 245 break; | 242 break; |
| 246 case display::Display::ROTATE_180: | 243 case display::Display::ROTATE_180: |
| 247 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( | 244 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( |
| 248 *image, SkBitmapOperations::ROTATION_180_CW); | 245 *image, SkBitmapOperations::ROTATION_180_CW); |
| 249 hot_point_.SetPoint( | 246 hot_point_.SetPoint(rotated.height() - hot_point_.x(), |
| 250 rotated.height() - hot_point_.x(), | 247 rotated.width() - hot_point_.y()); |
| 251 rotated.width() - hot_point_.y()); | |
| 252 break; | 248 break; |
| 253 case display::Display::ROTATE_270: | 249 case display::Display::ROTATE_270: |
| 254 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( | 250 rotated = gfx::ImageSkiaOperations::CreateRotatedImage( |
| 255 *image, SkBitmapOperations::ROTATION_270_CW); | 251 *image, SkBitmapOperations::ROTATION_270_CW); |
| 256 hot_point_.SetPoint( | 252 hot_point_.SetPoint(hot_point_.y(), rotated.height() - hot_point_.x()); |
| 257 hot_point_.y(), | |
| 258 rotated.height() - hot_point_.x()); | |
| 259 break; | 253 break; |
| 260 } | 254 } |
| 261 // Note that mirror window's scale factor is always 1.0f, therefore we | 255 // Note that mirror window's scale factor is always 1.0f, therefore we |
| 262 // need to take 2x's image and paint as if it's 1x image. | 256 // need to take 2x's image and paint as if it's 1x image. |
| 263 const gfx::ImageSkiaRep& image_rep = | 257 const gfx::ImageSkiaRep& image_rep = |
| 264 rotated.GetRepresentation(cursor_scale); | 258 rotated.GetRepresentation(cursor_scale); |
| 265 delegate_->SetCursorImage( | 259 delegate_->SetCursorImage( |
| 266 image_rep.pixel_size(), | 260 image_rep.pixel_size(), |
| 267 gfx::ImageSkia::CreateFrom1xBitmap(image_rep.sk_bitmap())); | 261 gfx::ImageSkia::CreateFrom1xBitmap(image_rep.sk_bitmap())); |
| 268 } else { | 262 } else { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 288 cursor_window_->Show(); | 282 cursor_window_->Show(); |
| 289 else | 283 else |
| 290 cursor_window_->Hide(); | 284 cursor_window_->Hide(); |
| 291 } | 285 } |
| 292 | 286 |
| 293 const gfx::ImageSkia& CursorWindowController::GetCursorImageForTest() const { | 287 const gfx::ImageSkia& CursorWindowController::GetCursorImageForTest() const { |
| 294 return delegate_->cursor_image(); | 288 return delegate_->cursor_image(); |
| 295 } | 289 } |
| 296 | 290 |
| 297 } // namespace ash | 291 } // namespace ash |
| OLD | NEW |