Home | History | Annotate | Download | only in frame
      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   // 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