ScrollingTreeScrollingNode.h [plain text]
#ifndef ScrollingTreeScrollingNode_h
#define ScrollingTreeScrollingNode_h
#if ENABLE(THREADED_SCROLLING)
#include "IntRect.h"
#include "ScrollTypes.h"
#include "ScrollingCoordinator.h"
#include "ScrollingTreeNode.h"
#include <wtf/PassOwnPtr.h>
namespace WebCore {
class PlatformWheelEvent;
class ScrollingTree;
class ScrollingStateScrollingNode;
class ScrollingTreeScrollingNode : public ScrollingTreeNode {
public:
static PassOwnPtr<ScrollingTreeScrollingNode> create(ScrollingTree*, ScrollingNodeID);
virtual ~ScrollingTreeScrollingNode();
virtual void updateBeforeChildren(ScrollingStateNode*) OVERRIDE;
virtual void parentScrollPositionDidChange(const IntRect& , const FloatSize& ) OVERRIDE { }
virtual void handleWheelEvent(const PlatformWheelEvent&) = 0;
virtual void setScrollPosition(const IntPoint&) = 0;
MainThreadScrollingReasons shouldUpdateScrollLayerPositionOnMainThread() const { return m_shouldUpdateScrollLayerPositionOnMainThread; }
protected:
explicit ScrollingTreeScrollingNode(ScrollingTree*, ScrollingNodeID);
const IntRect& viewportRect() const { return m_viewportRect; }
const IntSize& totalContentsSize() const { return m_totalContentsSize; }
float frameScaleFactor() const { return m_frameScaleFactor; }
ScrollElasticity horizontalScrollElasticity() const { return m_horizontalScrollElasticity; }
ScrollElasticity verticalScrollElasticity() const { return m_verticalScrollElasticity; }
bool hasEnabledHorizontalScrollbar() const { return m_hasEnabledHorizontalScrollbar; }
bool hasEnabledVerticalScrollbar() const { return m_hasEnabledVerticalScrollbar; }
bool canHaveScrollbars() const { return m_horizontalScrollbarMode != ScrollbarAlwaysOff || m_verticalScrollbarMode != ScrollbarAlwaysOff; }
const IntPoint& scrollOrigin() const { return m_scrollOrigin; }
int headerHeight() const { return m_headerHeight; }
int footerHeight() const { return m_footerHeight; }
private:
IntRect m_viewportRect;
IntSize m_totalContentsSize;
IntPoint m_scrollOrigin;
float m_frameScaleFactor;
MainThreadScrollingReasons m_shouldUpdateScrollLayerPositionOnMainThread;
ScrollElasticity m_horizontalScrollElasticity;
ScrollElasticity m_verticalScrollElasticity;
bool m_hasEnabledHorizontalScrollbar;
bool m_hasEnabledVerticalScrollbar;
ScrollbarMode m_horizontalScrollbarMode;
ScrollbarMode m_verticalScrollbarMode;
int m_headerHeight;
int m_footerHeight;
};
}
#endif // ENABLE(THREADED_SCROLLING)
#endif // ScrollingTreeScrollingNode_h