ScrollingTreeNode.h [plain text]
#ifndef ScrollingTreeNode_h
#define ScrollingTreeNode_h
#if ENABLE(THREADED_SCROLLING)
#include "IntRect.h"
#include "ScrollTypes.h"
#include <wtf/PassOwnPtr.h>
namespace WebCore {
class PlatformWheelEvent;
class ScrollingTree;
class ScrollingTreeState;
class ScrollingTreeNode {
public:
static PassOwnPtr<ScrollingTreeNode> create(ScrollingTree*);
virtual ~ScrollingTreeNode();
virtual void update(ScrollingTreeState*);
virtual void handleWheelEvent(const PlatformWheelEvent&) = 0;
virtual void setScrollPosition(const IntPoint&) = 0;
bool shouldUpdateScrollLayerPositionOnMainThread() const { return m_shouldUpdateScrollLayerPositionOnMainThread; }
protected:
explicit ScrollingTreeNode(ScrollingTree*);
ScrollingTree* scrollingTree() const { return m_scrollingTree; }
const IntRect& viewportRect() const { return m_viewportRect; }
const IntSize& contentsSize() const { return m_contentsSize; }
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; }
private:
ScrollingTree* m_scrollingTree;
IntRect m_viewportRect;
IntSize m_contentsSize;
IntPoint m_scrollOrigin;
bool m_shouldUpdateScrollLayerPositionOnMainThread;
ScrollElasticity m_horizontalScrollElasticity;
ScrollElasticity m_verticalScrollElasticity;
bool m_hasEnabledHorizontalScrollbar;
bool m_hasEnabledVerticalScrollbar;
ScrollbarMode m_horizontalScrollbarMode;
ScrollbarMode m_verticalScrollbarMode;
};
}
#endif // ENABLE(THREADED_SCROLLING)
#endif // ScrollingTreeNode_h