Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef ASH_WM_HEADER_PAINTER_H_ | 5 #ifndef ASH_WM_HEADER_PAINTER_H_ |
| 6 #define ASH_WM_HEADER_PAINTER_H_ | 6 #define ASH_WM_HEADER_PAINTER_H_ |
| 7 | 7 |
| 8 #include "ash/ash_export.h" | 8 #include "ash/ash_export.h" |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/compiler_specific.h" // OVERRIDE | 10 #include "base/compiler_specific.h" // OVERRIDE |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 class View; | 25 class View; |
| 26 class Widget; | 26 class Widget; |
| 27 } | 27 } |
| 28 | 28 |
| 29 namespace ash { | 29 namespace ash { |
| 30 class FrameCaptionButtonContainerView; | 30 class FrameCaptionButtonContainerView; |
| 31 | 31 |
| 32 // Helper class for painting the window header. | 32 // Helper class for painting the window header. |
| 33 class ASH_EXPORT HeaderPainter : public gfx::AnimationDelegate { | 33 class ASH_EXPORT HeaderPainter : public gfx::AnimationDelegate { |
| 34 public: | 34 public: |
| 35 enum Mode { | |
|
James Cook
2014/02/03 18:46:35
Maybe comment that this is the window active state
| |
| 36 MODE_ACTIVE, | |
| 37 MODE_INACTIVE | |
| 38 }; | |
| 39 | |
| 35 // TODO(pkotwicz): Move code related to "browser" windows out of ash. | 40 // TODO(pkotwicz): Move code related to "browser" windows out of ash. |
| 36 enum Style { | 41 enum Style { |
| 37 // Header style used for browser windows. | 42 // Header style used for browser windows. |
| 38 STYLE_BROWSER, | 43 STYLE_BROWSER, |
| 39 | 44 |
| 40 // Header style used for apps and miscellaneous windows (e.g. task manager). | 45 // Header style used for apps and miscellaneous windows (e.g. task manager). |
| 41 STYLE_OTHER | 46 STYLE_OTHER |
| 42 }; | 47 }; |
| 43 | 48 |
| 44 HeaderPainter(); | 49 HeaderPainter(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 76 | 81 |
| 77 // Returns the inset from the right edge. | 82 // Returns the inset from the right edge. |
| 78 int GetRightInset() const; | 83 int GetRightInset() const; |
| 79 | 84 |
| 80 // Returns the amount that the theme background should be inset. | 85 // Returns the amount that the theme background should be inset. |
| 81 int GetThemeBackgroundXInset() const; | 86 int GetThemeBackgroundXInset() const; |
| 82 | 87 |
| 83 // Paints the header. | 88 // Paints the header. |
| 84 // |theme_frame_overlay_id| is 0 if no overlay image should be used. | 89 // |theme_frame_overlay_id| is 0 if no overlay image should be used. |
| 85 void PaintHeader(gfx::Canvas* canvas, | 90 void PaintHeader(gfx::Canvas* canvas, |
| 91 Mode mode, | |
| 86 int theme_frame_id, | 92 int theme_frame_id, |
| 87 int theme_frame_overlay_id); | 93 int theme_frame_overlay_id); |
| 88 | 94 |
| 89 // Paints the header/content separator line. Exists as a separate function | 95 // Paints the header/content separator line for non-browser windows. |
| 90 // because some windows with complex headers (e.g. browsers with tab strips) | 96 void PaintHeaderContentSeparator(gfx::Canvas* canvas, Mode mode); |
| 91 // need to draw their own line. | |
| 92 void PaintHeaderContentSeparator(gfx::Canvas* canvas); | |
| 93 | 97 |
| 94 // Returns size of the header/content separator line in pixels. | 98 // Returns size of the header/content separator line for non-browser windows |
| 99 // in pixels. | |
| 95 int HeaderContentSeparatorSize() const; | 100 int HeaderContentSeparatorSize() const; |
| 96 | 101 |
| 97 // Paint the title bar, primarily the title string. | 102 // Paint the title bar, primarily the title string. |
| 98 void PaintTitleBar(gfx::Canvas* canvas, const gfx::FontList& title_font_list); | 103 void PaintTitleBar(gfx::Canvas* canvas, const gfx::FontList& title_font_list); |
| 99 | 104 |
| 100 // Performs layout for the header based on |frame_|'s show state. | 105 // Performs layout for the header based on |frame_|'s show state. |
| 101 void LayoutHeader(); | 106 void LayoutHeader(); |
| 102 | 107 |
| 103 // Sets the height of the header. The height of the header affects painting, | 108 // Sets the height of the header. The height of the header affects painting, |
| 104 // and non client hit tests. It does not affect layout. | 109 // and non client hit tests. It does not affect layout. |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 116 | 121 |
| 117 // Called when the browser theme changes. | 122 // Called when the browser theme changes. |
| 118 void OnThemeChanged(); | 123 void OnThemeChanged(); |
| 119 | 124 |
| 120 // Overridden from gfx::AnimationDelegate | 125 // Overridden from gfx::AnimationDelegate |
| 121 virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; | 126 virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; |
| 122 | 127 |
| 123 private: | 128 private: |
| 124 FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, TitleIconAlignment); | 129 FRIEND_TEST_ALL_PREFIXES(HeaderPainterTest, TitleIconAlignment); |
| 125 | 130 |
| 131 // Paints the border around the header. | |
| 132 void PaintBorder(gfx::Canvas* canvas, Mode mode); | |
| 133 | |
| 126 // Updates the images used for the minimize, restore and close buttons. | 134 // Updates the images used for the minimize, restore and close buttons. |
| 127 void UpdateCaptionButtonImages(); | 135 void UpdateCaptionButtonImages(); |
| 128 | 136 |
| 129 // Returns the header bounds in the coordinates of |header_view_|. The header | 137 // Returns the header bounds in the coordinates of |header_view_|. The header |
| 130 // is assumed to be positioned at the top left corner of |header_view_| and to | 138 // is assumed to be positioned at the top left corner of |header_view_| and to |
| 131 // have the same width as |header_view_|. | 139 // have the same width as |header_view_|. |
| 132 gfx::Rect GetHeaderLocalBounds() const; | 140 gfx::Rect GetHeaderLocalBounds() const; |
| 133 | 141 |
| 134 // Returns the offset between window left edge and title string. | 142 // Returns the offset between window left edge and title string. |
| 135 int GetTitleOffsetX() const; | 143 int GetTitleOffsetX() const; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 149 | 157 |
| 150 // Not owned | 158 // Not owned |
| 151 views::Widget* frame_; | 159 views::Widget* frame_; |
| 152 views::View* header_view_; | 160 views::View* header_view_; |
| 153 views::View* window_icon_; // May be NULL. | 161 views::View* window_icon_; // May be NULL. |
| 154 FrameCaptionButtonContainerView* caption_button_container_; | 162 FrameCaptionButtonContainerView* caption_button_container_; |
| 155 | 163 |
| 156 // The height of the header. | 164 // The height of the header. |
| 157 int header_height_; | 165 int header_height_; |
| 158 | 166 |
| 159 // Window frame header/caption parts. | |
| 160 const gfx::ImageSkia* top_left_corner_; | |
| 161 const gfx::ImageSkia* top_edge_; | |
| 162 const gfx::ImageSkia* top_right_corner_; | |
| 163 const gfx::ImageSkia* header_left_edge_; | |
| 164 const gfx::ImageSkia* header_right_edge_; | |
| 165 | |
| 166 // Image ids and opacity last used for painting header. | 167 // Image ids and opacity last used for painting header. |
| 167 int previous_theme_frame_id_; | 168 int previous_theme_frame_id_; |
| 168 int previous_theme_frame_overlay_id_; | 169 int previous_theme_frame_overlay_id_; |
| 169 | 170 |
| 170 // Image ids and opacity we are crossfading from. | 171 // Image ids and opacity we are crossfading from. |
| 171 int crossfade_theme_frame_id_; | 172 int crossfade_theme_frame_id_; |
| 172 int crossfade_theme_frame_overlay_id_; | 173 int crossfade_theme_frame_overlay_id_; |
| 173 | 174 |
| 174 scoped_ptr<gfx::SlideAnimation> crossfade_animation_; | 175 scoped_ptr<gfx::SlideAnimation> crossfade_animation_; |
| 175 | 176 |
| 176 DISALLOW_COPY_AND_ASSIGN(HeaderPainter); | 177 DISALLOW_COPY_AND_ASSIGN(HeaderPainter); |
| 177 }; | 178 }; |
| 178 | 179 |
| 179 } // namespace ash | 180 } // namespace ash |
| 180 | 181 |
| 181 #endif // ASH_WM_HEADER_PAINTER_H_ | 182 #endif // ASH_WM_HEADER_PAINTER_H_ |
| OLD | NEW |