// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_SNAPSHOT_H_
#define CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_SNAPSHOT_H_
#pragma once

#include "third_party/skia/include/core/SkBitmap.h"
#include "views/controls/image_view.h"
#include "views/view.h"
#include "views/widget/widget_gtk.h"

class Browser;

namespace chromeos {

// WmOverviewSnapshot contains a snapshot image of the tab at the
// given index.
class WmOverviewSnapshot : public views::WidgetGtk {
 public:
  WmOverviewSnapshot();
  void Init(const gfx::Size& size, Browser* browser, int index);

  void SetImage(const SkBitmap& image);

  void UpdateIndex(Browser* browser, int index);
  int index() const { return index_; }

  // Returns the size of the snapshot widget.
  gfx::Size size() const {
    // TODO(beng): this should not be written as an accessor...
    return GetClientAreaScreenBounds().size();
  }

  // Has the snapshot been configured? This is true after SetSnapshot
  // is invoked.
  bool configured_snapshot() const { return configured_snapshot_; }

  // This resets the configured_snapshot flag for this snapshot so it will
  // get reloaded the next time we check.
  void reload_snapshot() { configured_snapshot_ = false; }

 private:
  // This control is the contents view for this widget.
  views::ImageView* snapshot_view_;

  // This is the tab index of the snapshot in the associated browser.
  int index_;

  // This indicates whether or not the snapshot has been configured.
  bool configured_snapshot_;

  DISALLOW_COPY_AND_ASSIGN(WmOverviewSnapshot);
};

}  // namespace chromeos

#endif  // CHROME_BROWSER_CHROMEOS_WM_OVERVIEW_SNAPSHOT_H_