Chromium Code Reviews| 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/views/widget/desktop_aura/desktop_window_tree_host_win.h" | 5 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h" |
| 6 | 6 |
| 7 #include "base/win/metro.h" | 7 #include "base/win/metro.h" |
| 8 #include "third_party/skia/include/core/SkPath.h" | 8 #include "third_party/skia/include/core/SkPath.h" |
| 9 #include "third_party/skia/include/core/SkRegion.h" | 9 #include "third_party/skia/include/core/SkRegion.h" |
| 10 #include "ui/aura/client/aura_constants.h" | 10 #include "ui/aura/client/aura_constants.h" |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 273 monitor_info.cbSize = sizeof(monitor_info); | 273 monitor_info.cbSize = sizeof(monitor_info); |
| 274 GetMonitorInfo(MonitorFromWindow(message_handler_->hwnd(), | 274 GetMonitorInfo(MonitorFromWindow(message_handler_->hwnd(), |
| 275 MONITOR_DEFAULTTONEAREST), | 275 MONITOR_DEFAULTTONEAREST), |
| 276 &monitor_info); | 276 &monitor_info); |
| 277 gfx::Rect pixel_bounds = gfx::Rect(monitor_info.rcWork); | 277 gfx::Rect pixel_bounds = gfx::Rect(monitor_info.rcWork); |
| 278 return gfx::win::ScreenToDIPRect(pixel_bounds); | 278 return gfx::win::ScreenToDIPRect(pixel_bounds); |
| 279 } | 279 } |
| 280 | 280 |
| 281 void DesktopWindowTreeHostWin::SetShape(gfx::NativeRegion native_region) { | 281 void DesktopWindowTreeHostWin::SetShape(gfx::NativeRegion native_region) { |
| 282 if (native_region) { | 282 if (native_region) { |
| 283 message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*native_region)); | 283 |
|
sky
2014/09/04 13:23:05
nit: no newline here.
Wez
2014/09/04 17:50:50
Done.
| |
| 284 // TODO(wez): This would be a lot simpler if we were passed an SkPath. | |
| 285 // See crbug.com/410593. | |
| 286 gfx::NativeRegion shape = native_region; | |
| 287 SkRegion device_region; | |
| 288 if (gfx::IsInHighDPIMode()) { | |
| 289 shape = &device_region; | |
| 290 const float& scale = gfx::win::GetDeviceScaleFactor(); | |
|
sky
2014/09/04 13:23:05
I think you want GetDPIScale() and no &, just cons
sky
2014/09/04 17:40:09
Actually, both are the same, so it shouldn't matte
Wez
2014/09/04 17:50:50
Re GetDPIScale: Done.
Re const float&: We want to
| |
| 291 std::vector<SkIRect> rects; | |
| 292 for (SkRegion::Iterator it(*native_region); !it.done(); it.next()) { | |
| 293 const SkIRect& rect = it.rect(); | |
| 294 SkRect scaled_rect = | |
| 295 SkRect::MakeLTRB(rect.left() * scale, rect.top() * scale, | |
| 296 rect.right() * scale, rect.bottom() * scale); | |
| 297 SkIRect rounded_scaled_rect; | |
| 298 scaled_rect.roundOut(&rounded_scaled_rect); | |
| 299 rects.push_back(rounded_scaled_rect); | |
| 300 } | |
| 301 if (!rects.empty()) { | |
|
sky
2014/09/04 13:23:05
nit: no {}
Wez
2014/09/04 17:50:50
Done.
| |
| 302 device_region.setRects(&rects[0], rects.size()); | |
| 303 } | |
| 304 } | |
| 305 | |
| 306 message_handler_->SetRegion(gfx::CreateHRGNFromSkRegion(*shape)); | |
| 284 } else { | 307 } else { |
| 285 message_handler_->SetRegion(NULL); | 308 message_handler_->SetRegion(NULL); |
| 286 } | 309 } |
| 287 | 310 |
| 288 delete native_region; | 311 delete native_region; |
| 289 } | 312 } |
| 290 | 313 |
| 291 void DesktopWindowTreeHostWin::Activate() { | 314 void DesktopWindowTreeHostWin::Activate() { |
| 292 message_handler_->Activate(); | 315 message_handler_->Activate(); |
| 293 } | 316 } |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 939 | 962 |
| 940 // static | 963 // static |
| 941 DesktopWindowTreeHost* DesktopWindowTreeHost::Create( | 964 DesktopWindowTreeHost* DesktopWindowTreeHost::Create( |
| 942 internal::NativeWidgetDelegate* native_widget_delegate, | 965 internal::NativeWidgetDelegate* native_widget_delegate, |
| 943 DesktopNativeWidgetAura* desktop_native_widget_aura) { | 966 DesktopNativeWidgetAura* desktop_native_widget_aura) { |
| 944 return new DesktopWindowTreeHostWin(native_widget_delegate, | 967 return new DesktopWindowTreeHostWin(native_widget_delegate, |
| 945 desktop_native_widget_aura); | 968 desktop_native_widget_aura); |
| 946 } | 969 } |
| 947 | 970 |
| 948 } // namespace views | 971 } // namespace views |
| OLD | NEW |