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 3 // found in the LICENSE file. 4 5 #ifndef ASH_FRAME_HEADER_PAINTER_H_ 6 #define ASH_FRAME_HEADER_PAINTER_H_ 7 8 #include "ash/ash_export.h" 9 10 namespace gfx { 11 class Canvas; 12 } 13 14 namespace ash { 15 16 // Helper class for painting the window header. 17 class ASH_EXPORT HeaderPainter { 18 public: 19 enum Mode { 20 MODE_ACTIVE, 21 MODE_INACTIVE 22 }; 23 24 virtual ~HeaderPainter() { 25 } 26 27 // Returns the header's minimum width. 28 virtual int GetMinimumHeaderWidth() const = 0; 29 30 // Paints the header. 31 virtual void PaintHeader(gfx::Canvas* canvas, Mode mode) = 0; 32 33 // Performs layout for the header. 34 virtual void LayoutHeader() = 0; 35 36 // Gets / sets how much of the header is painted. This allows the tabstrip to 37 // affect the header height. This height does not affect LayoutHeader(). 38 virtual int GetHeaderHeightForPainting() const = 0; 39 virtual void SetHeaderHeightForPainting(int height_for_painting) = 0; 40 41 // Schedule a re-paint of the entire title. 42 virtual void SchedulePaintForTitle() = 0; 43 }; 44 45 } // namespace ash 46 47 #endif // ASH_FRAME_HEADER_PAINTER_H_ 48