Home | History | Annotate | Download | only in views
      1 // Copyright (c) 2012 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 CHROME_BROWSER_UI_VIEWS_DROPDOWN_BAR_VIEW_H_
      6 #define CHROME_BROWSER_UI_VIEWS_DROPDOWN_BAR_VIEW_H_
      7 
      8 #include "chrome/browser/ui/views/dropdown_bar_host.h"
      9 #include "chrome/browser/ui/views/dropdown_bar_host_delegate.h"
     10 #include "ui/views/accessible_pane_view.h"
     11 
     12 namespace gfx {
     13 class Canvas;
     14 class ImageSkia;
     15 }  // namespace gfx
     16 
     17 ////////////////////////////////////////////////////////////////////////////////
     18 //
     19 // The DropdownBarView is an abstract view to draw the UI controls of the
     20 // DropdownBarHost.
     21 //
     22 ////////////////////////////////////////////////////////////////////////////////
     23 class DropdownBarView : public views::AccessiblePaneView,
     24                         public DropdownBarHostDelegate {
     25  public:
     26   explicit DropdownBarView(DropdownBarHost* host);
     27   virtual ~DropdownBarView();
     28 
     29   // Updates the view to let it know where the host is clipping the
     30   // dropdown widget (while animating the opening or closing of the widget).
     31   virtual void SetAnimationOffset(int offset) OVERRIDE;
     32 
     33   // Returns the offset used while animating.
     34   int animation_offset() const { return animation_offset_; }
     35 
     36  protected:
     37   // views::View:
     38   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
     39 
     40   // Returns the DropdownBarHost that manages this view.
     41   DropdownBarHost* host() const { return host_; }
     42 
     43   void SetBackground(const gfx::ImageSkia* left_alpha_mask,
     44                      const gfx::ImageSkia* right_alpha_mask);
     45   void SetBorder(int left_border_image_id, int middle_border_image_id,
     46                  int right_border_image_id);
     47 
     48  private:
     49   // The dropdown bar host that controls this view.
     50   DropdownBarHost* host_;
     51 
     52   // While animating, the host clips the widget and draws only the bottom
     53   // part of it. The view needs to know the pixel offset at which we are drawing
     54   // the widget so that we can draw the curved edges that attach to the toolbar
     55   // in the right location.
     56   int animation_offset_;
     57 
     58   DISALLOW_COPY_AND_ASSIGN(DropdownBarView);
     59 };
     60 #endif  // CHROME_BROWSER_UI_VIEWS_DROPDOWN_BAR_VIEW_H_
     61