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