Index: ui/views/window/frame_background.h |
diff --git a/ui/views/window/frame_background.h b/ui/views/window/frame_background.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8df2a09ac03de5629937f757b6790aa471ec7bcf |
--- /dev/null |
+++ b/ui/views/window/frame_background.h |
@@ -0,0 +1,118 @@ |
+// 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 UI_VIEWS_WINDOW_FRAME_BACKGROUND_H_ |
+#define UI_VIEWS_WINDOW_FRAME_BACKGROUND_H_ |
+#pragma once |
+ |
+#include "base/basictypes.h" |
+#include "third_party/skia/include/core/SkColor.h" |
+#include "ui/views/views_export.h" |
+ |
+class SkBitmap; |
+namespace gfx { |
+class Canvas; |
+} |
+ |
+namespace views { |
+ |
+class View; |
+ |
+// FrameBackground handles painting for all the various window frames we |
+// support in Chrome. It intends to consolidate paint code that historically |
+// was copied. One frame to rule them all! |
+class VIEWS_EXPORT FrameBackground { |
+ public: |
+ FrameBackground(); |
+ ~FrameBackground(); |
+ |
+ // Sets the color to draw under the frame bitmaps. |
+ void set_frame_color(SkColor color) { frame_color_ = color; } |
+ |
+ // Sets the theme bitmap for the top of the window. May be NULL. |
+ // Memory is owned by the caller. |
+ void set_theme_bitmap(SkBitmap* bitmap) { theme_bitmap_ = bitmap; } |
+ |
+ // Sets an image that overlays the top window bitmap. Usually used to add |
+ // edge highlighting to provide the illusion of depth. May be NULL. |
+ // Memory is owned by the caller. |
+ void set_theme_overlay_bitmap(SkBitmap* bitmap) { |
+ theme_overlay_bitmap_ = bitmap; |
+ } |
+ |
+ // Sets the height of the top area to fill with the default frame color, |
+ // which must extend behind the tab strip. |
+ void set_top_area_height(int height) { top_area_height_ = height; } |
+ |
+ // Only used if we have an overlay image for the theme. |
+ void set_theme_background_y(int y) { theme_background_y_ = y; } |
+ |
+ // Vertical offset for theme image when drawing maximized. |
+ void set_maximized_top_offset(int offset) { maximized_top_offset_ = offset; } |
+ |
+ // Sets images used when drawing the sides of the frame. |
+ // Caller owns the memory. |
+ void SetSideImages(SkBitmap* left, |
+ SkBitmap* top, |
+ SkBitmap* right, |
+ SkBitmap* bottom); |
+ |
+ // Sets images used when drawing the corners of the frame. |
+ // Caller owns the memory. |
+ void SetCornerImages(SkBitmap* top_left, |
+ SkBitmap* top_right, |
+ SkBitmap* bottom_left, |
+ SkBitmap* bottom_right); |
+ |
+ // Sets attributes to paint top-left and top-right corners for maximized |
+ // windows. Use 0 and NULL if you don't want special corners. |
+ // TODO(jamescook): This is the remnant of a ChromeOS window hack, and should |
+ // be removed. |
+ void SetMaximizedCorners(SkBitmap* top_left, |
+ SkBitmap* top_right, |
+ int top_offset); |
+ |
+ // Paints the border for a standard, non-maximized window. Also paints the |
+ // background of the title bar area, since the top frame border and the |
+ // title bar background are a contiguous component. |
+ void PaintRestored(gfx::Canvas* canvas, View* view) const; |
+ |
+ // Paints the border for a maximized window, which does not include the |
+ // window edges. |
+ void PaintMaximized(gfx::Canvas* canvas, View* view) const; |
+ |
+ private: |
+ // Fills the frame area with the frame color. |
+ void PaintFrameColor(gfx::Canvas* canvas, View* view) const; |
+ |
+ SkColor frame_color_; |
+ SkBitmap* theme_bitmap_; |
+ SkBitmap* theme_overlay_bitmap_; |
+ int top_area_height_; |
+ |
+ // Images for the sides of the frame. |
+ SkBitmap* left_edge_; |
+ SkBitmap* top_edge_; |
+ SkBitmap* right_edge_; |
+ SkBitmap* bottom_edge_; |
+ |
+ // Images for the corners of the frame. |
+ SkBitmap* top_left_corner_; |
+ SkBitmap* top_right_corner_; |
+ SkBitmap* bottom_left_corner_; |
+ SkBitmap* bottom_right_corner_; |
+ |
+ // Attributes for maximized window painting. |
+ // TODO(jamescook): Remove all these. |
+ SkBitmap* maximized_top_left_; |
+ SkBitmap* maximized_top_right_; |
+ int maximized_top_offset_; |
+ int theme_background_y_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FrameBackground); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // UI_VIEWS_WINDOW_FRAME_BACKGROUND_H_ |