// 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 #if USE(ACCELERATED_COMPOSITING) #include "LayerChromium.h" #if defined(OS_CHROMEOS) #include "caching_bitmap_canvas_layer_texture_updater.h" #else #include "BitmapCanvasLayerTextureUpdater.h" #endif #include #include #include namespace cc { class Scrollbar; class ScrollbarThemeComposite; class CCTextureUpdateQueue; #if defined(OS_CHROMEOS) typedef CachingBitmapCanvasLayerTextureUpdater ScrollLayerTextureUpdater; #else typedef BitmapCanvasLayerTextureUpdater ScrollLayerTextureUpdater; #endif class ScrollbarLayerChromium : public LayerChromium { public: virtual PassOwnPtr createCCLayerImpl() OVERRIDE; static PassRefPtr create(PassOwnPtr, WebKit::WebScrollbarThemePainter, PassOwnPtr, int scrollLayerId); virtual ~ScrollbarLayerChromium(); // LayerChromium interface virtual bool needsContentsScale() const OVERRIDE; virtual IntSize contentBounds() const OVERRIDE; virtual void setTexturePriorities(const CCPriorityCalculator&) OVERRIDE; virtual void update(CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&) OVERRIDE; virtual void setLayerTreeHost(CCLayerTreeHost*) OVERRIDE; virtual void pushPropertiesTo(CCLayerImpl*) OVERRIDE; int scrollLayerId() const { return m_scrollLayerId; } void setScrollLayerId(int id) { m_scrollLayerId = id; } virtual ScrollbarLayerChromium* toScrollbarLayerChromium() OVERRIDE; protected: ScrollbarLayerChromium(PassOwnPtr, WebKit::WebScrollbarThemePainter, PassOwnPtr, int scrollLayerId); private: void updatePart(ScrollLayerTextureUpdater*, LayerTextureUpdater::Texture*, const IntRect&, CCTextureUpdateQueue&, CCRenderingStats&); void createTextureUpdaterIfNeeded(); OwnPtr m_scrollbar; WebKit::WebScrollbarThemePainter m_painter; OwnPtr m_geometry; int m_scrollLayerId; GC3Denum m_textureFormat; RefPtr m_backTrackUpdater; RefPtr m_foreTrackUpdater; RefPtr m_thumbUpdater; // All the parts of the scrollbar except the thumb OwnPtr m_backTrack; OwnPtr m_foreTrack; OwnPtr m_thumb; }; } #endif // USE(ACCELERATED_COMPOSITING) #endif