// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ScrollbarLayerChromium_h #define ScrollbarLayerChromium_h #include "caching_bitmap_content_layer_updater.h" #include "cc/layer.h" #include #include #include namespace cc { class ResourceUpdateQueue; class Scrollbar; class ScrollbarThemeComposite; class ScrollbarLayer : public Layer { public: virtual scoped_ptr createLayerImpl() OVERRIDE; static scoped_refptr create(scoped_ptr, WebKit::WebScrollbarThemePainter, scoped_ptr, int scrollLayerId); // Layer interface virtual bool needsContentsScale() const OVERRIDE; virtual IntSize contentBounds() const OVERRIDE; virtual void setTexturePriorities(const PriorityCalculator&) OVERRIDE; virtual void update(ResourceUpdateQueue&, const OcclusionTracker*, RenderingStats&) OVERRIDE; virtual void setLayerTreeHost(LayerTreeHost*) OVERRIDE; virtual void pushPropertiesTo(LayerImpl*) OVERRIDE; int scrollLayerId() const { return m_scrollLayerId; } void setScrollLayerId(int id) { m_scrollLayerId = id; } virtual ScrollbarLayer* toScrollbarLayer() OVERRIDE; protected: ScrollbarLayer(scoped_ptr, WebKit::WebScrollbarThemePainter, scoped_ptr, int scrollLayerId); virtual ~ScrollbarLayer(); private: void updatePart(CachingBitmapContentLayerUpdater*, LayerUpdater::Resource*, const IntRect&, ResourceUpdateQueue&, RenderingStats&); void createUpdaterIfNeeded(); scoped_ptr m_scrollbar; WebKit::WebScrollbarThemePainter m_painter; scoped_ptr m_geometry; int m_scrollLayerId; GLenum m_textureFormat; scoped_refptr m_backTrackUpdater; scoped_refptr m_foreTrackUpdater; scoped_refptr m_thumbUpdater; // All the parts of the scrollbar except the thumb scoped_ptr m_backTrack; scoped_ptr m_foreTrack; scoped_ptr m_thumb; }; } #endif