#ifndef CC_INPUT_SCROLLBAR_H_
#define CC_INPUT_SCROLLBAR_H_
#include "base/memory/ref_counted.h"
#include "cc/cc_export.h"
#include "cc/paint/paint_canvas.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/rect.h"
static constexpr float kAutoscrollMultiplier = 20.f;
static constexpr base::TimeDelta kInitialAutoscrollTimerDelay =
base::Milliseconds(250);
static constexpr int kOffSideMultiplier = 8;
static constexpr int kDefaultWinScrollbarThickness = 17;
namespace cc {
enum class ScrollbarOrientation { HORIZONTAL, VERTICAL };
enum class ScrollbarPart {
THUMB,
TRACK_BUTTONS_TICKMARKS,
BACK_BUTTON,
FORWARD_BUTTON,
BACK_TRACK,
FORWARD_TRACK,
NO_PART,
};
class Scrollbar : public base::RefCounted<Scrollbar> {
public:
virtual bool IsSame(const Scrollbar&) const = 0;
virtual ScrollbarOrientation Orientation() const = 0;
virtual bool IsLeftSideVerticalScrollbar() const = 0;
virtual bool IsSolidColor() const = 0;
virtual bool IsOverlay() const = 0;
virtual bool HasThumb() const = 0;
virtual bool SupportsDragSnapBack() const = 0;
virtual bool JumpOnTrackClick() const = 0;
virtual gfx::Rect ThumbRect() const = 0;
virtual gfx::Rect TrackRect() const = 0;
virtual gfx::Rect BackButtonRect() const = 0;
virtual gfx::Rect ForwardButtonRect() const = 0;
virtual float Opacity() const = 0;
virtual bool HasTickmarks() const = 0;
virtual bool NeedsRepaintPart(ScrollbarPart part) const = 0;
virtual void PaintPart(PaintCanvas* canvas,
ScrollbarPart part,
const gfx::Rect& rect) = 0;
virtual bool NeedsUpdateDisplay() const = 0;
virtual void ClearNeedsUpdateDisplay() = 0;
virtual bool UsesNinePatchThumbResource() const = 0;
virtual gfx::Size NinePatchThumbCanvasSize() const = 0;
virtual gfx::Rect NinePatchThumbAperture() const = 0;
protected:
friend class base::RefCounted<Scrollbar>;
virtual ~Scrollbar() {}
};
}
#endif