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
10namespace gfx {
11class Canvas;
12}
13
14namespace ash {
15
16// Helper class for painting the window header.
17class 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  // Updates the x inset of the leftmost view in the header.
45  virtual void UpdateLeftViewXInset(int left_view_x_inset) = 0;
46};
47
48}  // namespace ash
49
50#endif  // ASH_FRAME_HEADER_PAINTER_H_
51