1// Copyright (c) 2006-2008 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#ifndef CHROME_BROWSER_UI_VIEWS_TABS_NATIVE_VIEW_PHOTOBOOTH_H_ 6#define CHROME_BROWSER_UI_VIEWS_TABS_NATIVE_VIEW_PHOTOBOOTH_H_ 7#pragma once 8 9#include "base/compiler_specific.h" 10#include "ui/gfx/native_widget_types.h" 11 12namespace gfx { 13class Canvas; 14class Rect; 15} 16/////////////////////////////////////////////////////////////////////////////// 17// NativeViewPhotobooth 18// 19// An object that a NativeView "steps into" to have its picture taken. This is 20// used to generate a full size screen shot of the contents of a NativeView 21// including any child windows. 22// 23// Implementation note: This causes the NativeView to be re-parented to a 24// mostly off-screen layered window. 25// 26class NativeViewPhotobooth { 27 public: 28 // Creates the photo booth. Constructs a nearly off-screen window, parents 29 // the view, then shows it. The caller is responsible for destroying this 30 // photo-booth, since the photo-booth will detach it before it is destroyed. 31 static NativeViewPhotobooth* Create(gfx::NativeView initial_view); 32 33 // Destroys the photo booth window. 34 virtual ~NativeViewPhotobooth() {} 35 36 // Replaces the view in the photo booth with the specified one. 37 virtual void Replace(gfx::NativeView new_view) = 0; 38 39 // Paints the current display image of the window into |canvas|, clipped to 40 // |target_bounds|. 41 virtual void PaintScreenshotIntoCanvas(gfx::Canvas* canvas, 42 const gfx::Rect& target_bounds) = 0; 43}; 44 45#endif // CHROME_BROWSER_UI_VIEWS_TABS_NATIVE_VIEW_PHOTOBOOTH_H_ 46