Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / dropdown_bar_view.h
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   ~DropdownBarView() override;
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   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   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 SetBorderFromIds(int left_border_image_id,
46                         int middle_border_image_id,
47                         int right_border_image_id);
48
49  private:
50   // The dropdown bar host that controls this view.
51   DropdownBarHost* host_;
52
53   // While animating, the host clips the widget and draws only the bottom
54   // part of it. The view needs to know the pixel offset at which we are drawing
55   // the widget so that we can draw the curved edges that attach to the toolbar
56   // in the right location.
57   int animation_offset_;
58
59   DISALLOW_COPY_AND_ASSIGN(DropdownBarView);
60 };
61 #endif  // CHROME_BROWSER_UI_VIEWS_DROPDOWN_BAR_VIEW_H_