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 CC_INPUT_SCROLLBAR_H_
6#define CC_INPUT_SCROLLBAR_H_
7
8#include "cc/base/cc_export.h"
9#include "ui/gfx/point.h"
10#include "ui/gfx/rect.h"
11
12class SkCanvas;
13
14namespace cc {
15
16enum ScrollbarOrientation { HORIZONTAL, VERTICAL };
17enum ScrollDirection { SCROLL_BACKWARD, SCROLL_FORWARD };
18// For now, TRACK includes everything but the thumb including background and
19// buttons.
20enum ScrollbarPart { THUMB, TRACK };
21
22class Scrollbar {
23 public:
24  virtual ~Scrollbar() {}
25
26  virtual ScrollbarOrientation Orientation() const = 0;
27  virtual bool IsLeftSideVerticalScrollbar() const = 0;
28  virtual gfx::Point Location() const = 0;
29  virtual bool IsOverlay() const = 0;
30  virtual bool HasThumb() const = 0;
31  virtual int ThumbThickness() const = 0;
32  virtual int ThumbLength() const = 0;
33  virtual gfx::Rect TrackRect() const = 0;
34  virtual void PaintPart(SkCanvas* canvas,
35                         ScrollbarPart part,
36                         const gfx::Rect& content_rect) = 0;
37};
38
39}  // namespace cc
40
41#endif  // CC_INPUT_SCROLLBAR_H_
42