// 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 CCScrollbarLayerImpl_h #define CCScrollbarLayerImpl_h #if USE(ACCELERATED_COMPOSITING) #include "CCLayerImpl.h" #include "CCScrollbarGeometryFixedThumb.h" #include #include #include namespace cc { class ScrollView; class CCScrollbarLayerImpl : public CCLayerImpl { public: static PassOwnPtr create(int id); virtual ~CCScrollbarLayerImpl(); CCScrollbarGeometryFixedThumb* scrollbarGeometry() const { return m_geometry.get(); } void setScrollbarGeometry(PassOwnPtr); void setScrollbarData(WebKit::WebScrollbar*); void setBackTrackResourceId(CCResourceProvider::ResourceId id) { m_backTrackResourceId = id; } void setForeTrackResourceId(CCResourceProvider::ResourceId id) { m_foreTrackResourceId = id; } void setThumbResourceId(CCResourceProvider::ResourceId id) { m_thumbResourceId = id; } float currentPos() const { return m_currentPos; } void setCurrentPos(float currentPos) { m_currentPos = currentPos; } int totalSize() const { return m_totalSize; } void setTotalSize(int totalSize) { m_totalSize = totalSize; } int maximum() const { return m_maximum; } void setMaximum(int maximum) { m_maximum = maximum; } WebKit::WebScrollbar::Orientation orientation() const { return m_orientation; } virtual void appendQuads(CCQuadSink&, CCAppendQuadsData&) OVERRIDE; virtual void didLoseContext() OVERRIDE; protected: explicit CCScrollbarLayerImpl(int id); private: // nested class only to avoid namespace problem class CCScrollbar : public WebKit::WebScrollbar { public: explicit CCScrollbar(CCScrollbarLayerImpl* owner) : m_owner(owner) { } // WebScrollbar implementation virtual bool isOverlay() const; virtual int value() const; virtual WebKit::WebPoint location() const; virtual WebKit::WebSize size() const; virtual bool enabled() const; virtual int maximum() const; virtual int totalSize() const; virtual bool isScrollViewScrollbar() const; virtual bool isScrollableAreaActive() const; virtual void getTickmarks(WebKit::WebVector& tickmarks) const; virtual WebScrollbar::ScrollbarControlSize controlSize() const; virtual WebScrollbar::ScrollbarPart pressedPart() const; virtual WebScrollbar::ScrollbarPart hoveredPart() const; virtual WebScrollbar::ScrollbarOverlayStyle scrollbarOverlayStyle() const; virtual WebScrollbar::Orientation orientation() const; virtual bool isCustomScrollbar() const; private: CCScrollbarLayerImpl* m_owner; }; virtual const char* layerTypeAsString() const OVERRIDE; CCScrollbar m_scrollbar; CCResourceProvider::ResourceId m_backTrackResourceId; CCResourceProvider::ResourceId m_foreTrackResourceId; CCResourceProvider::ResourceId m_thumbResourceId; OwnPtr m_geometry; // Data to implement CCScrollbar WebKit::WebScrollbar::ScrollbarOverlayStyle m_scrollbarOverlayStyle; WebKit::WebVector m_tickmarks; WebKit::WebScrollbar::Orientation m_orientation; WebKit::WebScrollbar::ScrollbarControlSize m_controlSize; WebKit::WebScrollbar::ScrollbarPart m_pressedPart; WebKit::WebScrollbar::ScrollbarPart m_hoveredPart; float m_currentPos; int m_totalSize; int m_maximum; bool m_isScrollableAreaActive; bool m_isScrollViewScrollbar; bool m_enabled; bool m_isCustomScrollbar; bool m_isOverlayScrollbar; }; } #endif // USE(ACCELERATED_COMPOSITING) #endif