• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "ui/snapshot/snapshot.h"
6 
7 #include "ui/base/android/view_android.h"
8 #include "ui/base/android/window_android.h"
9 #include "ui/gfx/display.h"
10 #include "ui/gfx/rect.h"
11 #include "ui/gfx/screen.h"
12 
13 namespace ui {
14 
GrabViewSnapshot(gfx::NativeView view,std::vector<unsigned char> * png_representation,const gfx::Rect & snapshot_bounds)15 bool GrabViewSnapshot(gfx::NativeView view,
16                       std::vector<unsigned char>* png_representation,
17                       const gfx::Rect& snapshot_bounds) {
18   return GrabWindowSnapshot(
19       view->GetWindowAndroid(), png_representation, snapshot_bounds);
20 }
21 
GrabWindowSnapshot(gfx::NativeWindow window,std::vector<unsigned char> * png_representation,const gfx::Rect & snapshot_bounds)22 bool GrabWindowSnapshot(gfx::NativeWindow window,
23                         std::vector<unsigned char>* png_representation,
24                         const gfx::Rect& snapshot_bounds) {
25   gfx::Display display =
26       gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
27   gfx::Rect scaled_bounds =
28       gfx::ScaleToEnclosingRect(snapshot_bounds,
29                                 display.device_scale_factor());
30   return window->GrabSnapshot(
31       scaled_bounds.x(), scaled_bounds.y(), scaled_bounds.width(),
32       scaled_bounds.height(), png_representation);
33 }
34 
35 }  // namespace ui
36