diff options
Diffstat (limited to 'cc/ScrollbarLayerChromium.h')
-rw-r--r-- | cc/ScrollbarLayerChromium.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/cc/ScrollbarLayerChromium.h b/cc/ScrollbarLayerChromium.h new file mode 100644 index 0000000..f5f7d78 --- /dev/null +++ b/cc/ScrollbarLayerChromium.h @@ -0,0 +1,66 @@ +// 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" +#include "LayerTextureUpdater.h" +#include <public/WebScrollbar.h> +#include <public/WebScrollbarThemeGeometry.h> +#include <public/WebScrollbarThemePainter.h> + +namespace WebCore { + +class Scrollbar; +class ScrollbarThemeComposite; +class CCTextureUpdateQueue; + +class ScrollbarLayerChromium : public LayerChromium { +public: + virtual PassOwnPtr<CCLayerImpl> createCCLayerImpl() OVERRIDE; + static PassRefPtr<ScrollbarLayerChromium> create(PassOwnPtr<WebKit::WebScrollbar>, WebKit::WebScrollbarThemePainter, PassOwnPtr<WebKit::WebScrollbarThemeGeometry>, int scrollLayerId); + + // LayerChromium interface + 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 { return this; } + +protected: + ScrollbarLayerChromium(PassOwnPtr<WebKit::WebScrollbar>, WebKit::WebScrollbarThemePainter, PassOwnPtr<WebKit::WebScrollbarThemeGeometry>, int scrollLayerId); + +private: + void updatePart(LayerTextureUpdater*, LayerTextureUpdater::Texture*, const IntRect&, CCTextureUpdateQueue&, CCRenderingStats&); + void createTextureUpdaterIfNeeded(); + + OwnPtr<WebKit::WebScrollbar> m_scrollbar; + WebKit::WebScrollbarThemePainter m_painter; + OwnPtr<WebKit::WebScrollbarThemeGeometry> m_geometry; + int m_scrollLayerId; + + GC3Denum m_textureFormat; + + RefPtr<LayerTextureUpdater> m_backTrackUpdater; + RefPtr<LayerTextureUpdater> m_foreTrackUpdater; + RefPtr<LayerTextureUpdater> m_thumbUpdater; + + // All the parts of the scrollbar except the thumb + OwnPtr<LayerTextureUpdater::Texture> m_backTrack; + OwnPtr<LayerTextureUpdater::Texture> m_foreTrack; + OwnPtr<LayerTextureUpdater::Texture> m_thumb; +}; + +} +#endif // USE(ACCELERATED_COMPOSITING) + +#endif |