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_H_
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CC_LAYERS_SOLID_COLOR_SCROLLBAR_LAYER_H_
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/base/cc_export.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/layers/layer.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/layers/scrollbar_layer_interface.h"
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace cc {
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class CC_EXPORT SolidColorScrollbarLayer : public ScrollbarLayerInterface,
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                           public Layer {
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      OVERRIDE;
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static scoped_refptr<SolidColorScrollbarLayer> Create(
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      ScrollbarOrientation orientation,
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      int thumb_thickness,
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      int track_start,
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      bool is_left_side_vertical_scrollbar,
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      int scroll_layer_id);
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Layer overrides.
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OpacityCanAnimateOnImplThread() const OVERRIDE;
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ScrollbarLayerInterface* ToScrollbarLayer() OVERRIDE;
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void PushScrollClipPropertiesTo(LayerImpl* layer) OVERRIDE;
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void SetNeedsDisplayRect(const gfx::RectF&) OVERRIDE;
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // ScrollbarLayerInterface
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual int ScrollLayerId() const OVERRIDE;
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void SetScrollLayer(int layer_id) OVERRIDE;
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void SetClipLayer(int layer_id) OVERRIDE;
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ScrollbarOrientation orientation() const OVERRIDE;
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected:
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  SolidColorScrollbarLayer(ScrollbarOrientation orientation,
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                           int thumb_thickness,
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                           int track_start,
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                           bool is_left_side_vertical_scrollbar,
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                           int scroll_layer_id);
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~SolidColorScrollbarLayer();
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int scroll_layer_id_;
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  int clip_layer_id_;
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ScrollbarOrientation orientation_;
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int thumb_thickness_;
56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  int track_start_;
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool is_left_side_vertical_scrollbar_;
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SolidColorScrollbarLayer);
6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace cc
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // CC_LAYERS_SOLID_COLOR_SCROLLBAR_LAYER_H_
65