13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/cc_export.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "cc/input/scrollbar.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "cc/layers/scrollbar_layer_impl_base.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "cc/resources/ui_resource_client.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class LayerTreeImpl; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ScrollView; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class CC_EXPORT PaintedScrollbarLayerImpl : public ScrollbarLayerImplBase { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static scoped_ptr<PaintedScrollbarLayerImpl> Create( 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerTreeImpl* tree_impl, 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int id, 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ScrollbarOrientation orientation); 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ~PaintedScrollbarLayerImpl(); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // LayerImpl implementation. 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) OVERRIDE; 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual bool WillDraw(DrawMode draw_mode, 32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ResourceProvider* resource_provider) OVERRIDE; 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void AppendQuads(RenderPass* render_pass, 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const OcclusionTracker<LayerImpl>& occlusion_tracker, 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) AppendQuadsData* append_quads_data) OVERRIDE; 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetThumbThickness(int thumb_thickness); 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetThumbLength(int thumb_length); 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetTrackStart(int track_start); 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetTrackLength(int track_length); 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void set_track_ui_resource_id(UIResourceId uid) { 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) track_ui_resource_id_ = uid; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void set_thumb_ui_resource_id(UIResourceId uid) { 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) thumb_ui_resource_id_ = uid; 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) PaintedScrollbarLayerImpl(LayerTreeImpl* tree_impl, 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int id, 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ScrollbarOrientation orientation); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // ScrollbarLayerImplBase implementation. 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual int ThumbThickness() const OVERRIDE; 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual int ThumbLength() const OVERRIDE; 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual float TrackLength() const OVERRIDE; 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual int TrackStart() const OVERRIDE; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool IsThumbResizable() const OVERRIDE; 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual const char* LayerTypeAsString() const OVERRIDE; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UIResourceId track_ui_resource_id_; 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UIResourceId thumb_ui_resource_id_; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int thumb_thickness_; 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int thumb_length_; 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int track_start_; 7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int track_length_; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Difference between the clip layer's height and the visible viewport 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // height (which may differ in the presence of top-controls hiding). 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float vertical_adjust_; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int scroll_layer_id_; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PaintedScrollbarLayerImpl); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 83