| Index: aura/window.h | 
| diff --git a/aura/window.h b/aura/window.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..14c3ea4c2bb0d5739ae96d7d201ad1b911c16617 | 
| --- /dev/null | 
| +++ b/aura/window.h | 
| @@ -0,0 +1,92 @@ | 
| +// Copyright (c) 2011 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 AURA_WINDOW_H_ | 
| +#define AURA_WINDOW_H_ | 
| +#pragma once | 
| + | 
| +#include "base/basictypes.h" | 
| +#include "base/memory/scoped_ptr.h" | 
| +#include "ui/gfx/native_widget_types.h" | 
| +#include "ui/gfx/rect.h" | 
| + | 
| +class SkCanvas; | 
| + | 
| +namespace ui { | 
| +class Layer; | 
| +} | 
| + | 
| +namespace aura { | 
| + | 
| +class Desktop; | 
| +class WindowDelegate; | 
| + | 
| +// Aura window implementation. Interesting events are sent to the | 
| +// WindowDelegate. | 
| +class Window { | 
| + public: | 
| +  enum Visibility { | 
| +    // Don't display the window onscreen and don't let it receive mouse | 
| +    // events. This is the default. | 
| +    VISIBILITY_HIDDEN = 1, | 
| + | 
| +    // Display the window and let it receive mouse events. | 
| +    VISIBILITY_SHOWN = 2, | 
| + | 
| +    // Display the window but prevent it from receiving mouse events. | 
| +    VISIBILITY_SHOWN_NO_INPUT = 3, | 
| +  }; | 
| + | 
| +  explicit Window(Desktop* desktop); | 
| +  ~Window(); | 
| + | 
| +  void set_delegate(WindowDelegate* d) { delegate_ = d; } | 
| + | 
| +  // Changes the visbility of the window. | 
| +  void SetVisibility(Visibility visibility); | 
| +  Visibility visibility() const { return visibility_; } | 
| + | 
| +  // Changes the bounds of the window. | 
| +  void SetBounds(const gfx::Rect& bounds, int anim_ms); | 
| +  const gfx::Rect& bounds() const { return bounds_; } | 
| + | 
| +  // Marks the window as needing to be painted. | 
| +  void SchedulePaint(const gfx::Rect& bounds); | 
| + | 
| +  // Sets the contents of the window. | 
| +  void SetCanvas(const SkCanvas& canvas, const gfx::Point& origin); | 
| + | 
| +  // If the window is visible its layer is drawn. | 
| +  void Draw(); | 
| + | 
| +  // If SchedulePaint has been invoked on the Window the delegate is notified. | 
| +  void UpdateLayerCanvas(); | 
| + | 
| + private: | 
| +  // The desktop we're in. | 
| +  Desktop* desktop_; | 
| + | 
| +  WindowDelegate* delegate_; | 
| + | 
| +  Visibility visibility_; | 
| + | 
| +  scoped_ptr<ui::Layer> layer_; | 
| + | 
| +  // Union of regions passed to SchedulePaint. Cleaned when UpdateLayerCanvas is | 
| +  // invoked. | 
| +  gfx::Rect dirty_rect_; | 
| + | 
| +  // If true UpdateLayerCanvas paints all. This is set when the window is first | 
| +  // created to trigger painting the complete bounds. | 
| +  bool needs_paint_all_; | 
| + | 
| +  // Bounds of the window in the desktop's coordinate system. | 
| +  gfx::Rect bounds_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(Window); | 
| +}; | 
| + | 
| +}  // namespace aura | 
| + | 
| +#endif  // AURA_WINDOW_H_ | 
|  |