// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_SNAPSHOT_SNAPSHOT_H_ #define UI_SNAPSHOT_SNAPSHOT_H_ #include "base/functional/callback_forward.h" #include "base/memory/ref_counted.h" #include "base/memory/ref_counted_memory.h" #include "ui/gfx/native_widget_types.h" #include "ui/snapshot/snapshot_export.h" namespace gfx { class Rect; class Image; class Size; } // Utility functions to grab snapshots of views and windows. These functions do // no security checks, so these are useful for debugging purposes where no // BrowserProcess instance is available (ie. tests), and other user-driven // scenarios. namespace ui { GrabSnapshotImageCallback; GrabSnapshotDataCallback; // These functions take a snapshot of the specified view or window, within // `source_rect`, specified in layer space coordinates (DIP for desktop, // physical pixels for Android). // // Returns the snapshot via the provided `callback`. In case of an error, an // empty image (`gfx::Image::IsEmpty()`) will be returned. SNAPSHOT_EXPORT void GrabWindowSnapshot(gfx::NativeWindow window, const gfx::Rect& source_rect, GrabSnapshotImageCallback callback); SNAPSHOT_EXPORT void GrabViewSnapshot(gfx::NativeView view, const gfx::Rect& source_rect, GrabSnapshotImageCallback callback); // Takes a snapshot as with `GrabWindowSnapshot()` and scales it to // `target_size` (in physical pixels). // // Returns the snapshot via the provided `callback`. In case of an error, an // empty image (`gfx::Image::IsEmpty()`) will be returned. SNAPSHOT_EXPORT void GrabWindowSnapshotAndScale( gfx::NativeWindow window, const gfx::Rect& source_rect, const gfx::Size& target_size, GrabSnapshotImageCallback callback); // Takes a snapshot as with `GrabWindowSnapshot()` and encodes it as PNG data. // // Returns the data via the provided `callback`. In case of an error, a null // pointer will be returned. SNAPSHOT_EXPORT void GrabWindowSnapshotAsPNG(gfx::NativeWindow window, const gfx::Rect& source_rect, GrabSnapshotDataCallback callback); // Takes a snapshot as with `GrabWindowSnapshot()` and encodes it as JPEG data. // // Returns the data via the provided `callback`. In case of an error, a null // pointer will be returned. SNAPSHOT_EXPORT void GrabWindowSnapshotAsJPEG( gfx::NativeWindow window, const gfx::Rect& source_rect, GrabSnapshotDataCallback callback); } // namespace ui #endif // UI_SNAPSHOT_SNAPSHOT_H_