c8c801514b01409abfc7198cd5c4f8571b147cdf
[platform/framework/web/crosswalk.git] / src / ash / frame / header_painter.h
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_