158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CC_LAYERS_SOLID_COLOR_SCROLLBAR_LAYER_IMPL_H_
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CC_LAYERS_SOLID_COLOR_SCROLLBAR_LAYER_IMPL_H_
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/base/cc_export.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/layers/scrollbar_layer_impl_base.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace cc {
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class CC_EXPORT SolidColorScrollbarLayerImpl : public ScrollbarLayerImplBase {
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static scoped_ptr<SolidColorScrollbarLayerImpl> Create(
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      LayerTreeImpl* tree_impl,
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      int id,
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      ScrollbarOrientation orientation,
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      int thumb_thickness,
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      int track_start,
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      bool is_left_side_vertical_scrollbar,
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      bool is_overlay);
2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~SolidColorScrollbarLayerImpl();
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // LayerImpl overrides.
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      OVERRIDE;
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void AppendQuads(RenderPass* render_pass,
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                           const OcclusionTracker<LayerImpl>& occlusion_tracker,
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                           AppendQuadsData* append_quads_data) OVERRIDE;
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected:
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  SolidColorScrollbarLayerImpl(LayerTreeImpl* tree_impl,
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                               int id,
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                               ScrollbarOrientation orientation,
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                               int thumb_thickness,
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                               int track_start,
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                               bool is_left_side_vertical_scrollbar,
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                               bool is_overlay);
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // ScrollbarLayerImplBase implementation.
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual int ThumbThickness() const OVERRIDE;
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual int ThumbLength() const OVERRIDE;
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual float TrackLength() const OVERRIDE;
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual int TrackStart() const OVERRIDE;
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual bool IsThumbResizable() const OVERRIDE;
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int thumb_thickness_;
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  int track_start_;
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  SkColor color_;
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace cc
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // CC_LAYERS_SOLID_COLOR_SCROLLBAR_LAYER_IMPL_H_
59