| Index: ash/frame/header_painter.h
|
| diff --git a/ash/frame/header_painter.h b/ash/frame/header_painter.h
|
| index f4f8d367df408820b48986c3864452beb5cd06f7..c8c801514b01409abfc7198cd5c4f8571b147cdf 100644
|
| --- a/ash/frame/header_painter.h
|
| +++ b/ash/frame/header_painter.h
|
| @@ -6,181 +6,40 @@
|
| #define ASH_FRAME_HEADER_PAINTER_H_
|
|
|
| #include "ash/ash_export.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/compiler_specific.h" // OVERRIDE
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "ui/gfx/animation/animation_delegate.h"
|
| -#include "ui/gfx/geometry/rect.h"
|
|
|
| namespace gfx {
|
| class Canvas;
|
| -class FontList;
|
| -class ImageSkia;
|
| -class Point;
|
| -class Size;
|
| -class SlideAnimation;
|
| -}
|
| -namespace views {
|
| -class View;
|
| -class Widget;
|
| }
|
|
|
| namespace ash {
|
| -class FrameCaptionButtonContainerView;
|
|
|
| // Helper class for painting the window header.
|
| -class ASH_EXPORT HeaderPainter : public gfx::AnimationDelegate {
|
| +class ASH_EXPORT HeaderPainter {
|
| public:
|
| enum Mode {
|
| MODE_ACTIVE,
|
| MODE_INACTIVE
|
| };
|
|
|
| - // TODO(pkotwicz): Move code related to "browser" windows out of ash.
|
| - enum Style {
|
| - // Header style used for browser windows.
|
| - STYLE_BROWSER,
|
| -
|
| - // Header style used for apps and miscellaneous windows (e.g. task manager).
|
| - STYLE_OTHER
|
| - };
|
| -
|
| - HeaderPainter();
|
| - virtual ~HeaderPainter();
|
| -
|
| - // None of the parameters are owned.
|
| - void Init(Style style,
|
| - views::Widget* frame,
|
| - views::View* header_view,
|
| - views::View* window_icon,
|
| - FrameCaptionButtonContainerView* caption_button_container);
|
| -
|
| - // Returns the bounds of the client view for a window with |header_height|
|
| - // and |window_bounds|. The return value and |window_bounds| are in the
|
| - // views::NonClientView's coordinates.
|
| - static gfx::Rect GetBoundsForClientView(int header_height,
|
| - const gfx::Rect& window_bounds);
|
| -
|
| - // Returns the bounds of the window given |header_height| and |client_bounds|.
|
| - // The return value and |client_bounds| are in the views::NonClientView's
|
| - // coordinates.
|
| - static gfx::Rect GetWindowBoundsForClientBounds(
|
| - int header_height,
|
| - const gfx::Rect& client_bounds);
|
| -
|
| - // Determines the window HT* code at |point|. Returns HTNOWHERE if |point| is
|
| - // not within the top |header_height_| of |header_view_|. |point| is in the
|
| - // coordinates of |header_view_|'s widget. The client view must be hittested
|
| - // before calling this method because a browser's tabs are in the top
|
| - // |header_height_| of |header_view_|.
|
| - int NonClientHitTest(const gfx::Point& point) const;
|
| + virtual ~HeaderPainter() {
|
| + }
|
|
|
| // Returns the header's minimum width.
|
| - int GetMinimumHeaderWidth() const;
|
| -
|
| - // Returns the inset from the right edge.
|
| - int GetRightInset() const;
|
| -
|
| - // Returns the amount that the theme background should be inset.
|
| - int GetThemeBackgroundXInset() const;
|
| + virtual int GetMinimumHeaderWidth() const = 0;
|
|
|
| // Paints the header.
|
| - // |theme_frame_overlay_id| is 0 if no overlay image should be used.
|
| - // |mode| indicates whether the window should be painted as active.
|
| - void PaintHeader(gfx::Canvas* canvas,
|
| - Mode mode,
|
| - int theme_frame_id,
|
| - int theme_frame_overlay_id);
|
| -
|
| - // Paints the header/content separator line for non-browser windows.
|
| - void PaintHeaderContentSeparator(gfx::Canvas* canvas, Mode mode);
|
| + virtual void PaintHeader(gfx::Canvas* canvas, Mode mode) = 0;
|
|
|
| - // Returns size of the header/content separator line for non-browser windows
|
| - // in pixels.
|
| - int HeaderContentSeparatorSize() const;
|
| + // Performs layout for the header.
|
| + virtual void LayoutHeader() = 0;
|
|
|
| - // Paint the title bar, primarily the title string.
|
| - void PaintTitleBar(gfx::Canvas* canvas, const gfx::FontList& title_font_list);
|
| -
|
| - // Performs layout for the header based on |frame_|'s show state.
|
| - void LayoutHeader();
|
| -
|
| - // Sets the height of the header. The height of the header affects painting,
|
| - // and non client hit tests. It does not affect layout.
|
| - void set_header_height(int header_height) {
|
| - header_height_ = header_height;
|
| - }
|
| -
|
| - // Returns the header height.
|
| - int header_height() const {
|
| - return header_height_;
|
| - }
|
| + // Gets / sets how much of the header is painted. This allows the tabstrip to
|
| + // affect the header height. This height does not affect LayoutHeader().
|
| + virtual int GetHeaderHeightForPainting() const = 0;
|
| + virtual void SetHeaderHeightForPainting(int height_for_painting) = 0;
|
|
|
| // Schedule a re-paint of the entire title.
|
| - void SchedulePaintForTitle(const gfx::FontList& title_font_list);
|
| -
|
| - // Called when the browser theme changes.
|
| - void OnThemeChanged();
|
| -
|
| - // Overridden from gfx::AnimationDelegate
|
| - virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE;
|
| -
|
| - private:
|
| - FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, TitleIconAlignment);
|
| -
|
| - // Paints highlight around the edge of the header for restored browser
|
| - // windows.
|
| - void PaintHighlightForRestoredBrowserWindow(gfx::Canvas* canvas);
|
| -
|
| - // Paints highlight around the edge of the header for inactive restored
|
| - // non-browser windows.
|
| - void PaintHighlightForInactiveRestoredWindow(gfx::Canvas* canvas);
|
| -
|
| - // Updates the images used for the minimize, restore and close buttons.
|
| - void UpdateCaptionButtonImages();
|
| -
|
| - // Returns the header bounds in the coordinates of |header_view_|. The header
|
| - // is assumed to be positioned at the top left corner of |header_view_| and to
|
| - // have the same width as |header_view_|.
|
| - gfx::Rect GetHeaderLocalBounds() const;
|
| -
|
| - // Returns the offset between window left edge and title string.
|
| - int GetTitleOffsetX() const;
|
| -
|
| - // Returns the vertical center of the caption button container in window
|
| - // coordinates.
|
| - int GetCaptionButtonContainerCenterY() const;
|
| -
|
| - // Returns the radius of the header's top corners.
|
| - int GetHeaderCornerRadius() const;
|
| -
|
| - // Get the bounds for the title. The provided |title_font_list| is used to
|
| - // determine the correct dimensions.
|
| - gfx::Rect GetTitleBounds(const gfx::FontList& title_font_list);
|
| -
|
| - Style style_;
|
| -
|
| - // Not owned
|
| - views::Widget* frame_;
|
| - views::View* header_view_;
|
| - views::View* window_icon_; // May be NULL.
|
| - FrameCaptionButtonContainerView* caption_button_container_;
|
| -
|
| - // The height of the header.
|
| - int header_height_;
|
| -
|
| - // Image ids and opacity last used for painting header.
|
| - int previous_theme_frame_id_;
|
| - int previous_theme_frame_overlay_id_;
|
| -
|
| - // Image ids and opacity we are crossfading from.
|
| - int crossfade_theme_frame_id_;
|
| - int crossfade_theme_frame_overlay_id_;
|
| -
|
| - scoped_ptr<gfx::SlideAnimation> crossfade_animation_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(HeaderPainter);
|
| + virtual void SchedulePaintForTitle() = 0;
|
| };
|
|
|
| } // namespace ash
|
|
|