ScrollingTreeState.h [plain text]
#ifndef ScrollingTreeState_h
#define ScrollingTreeState_h
#if ENABLE(THREADED_SCROLLING)
#include "GraphicsLayer.h"
#include "IntRect.h"
#include "Region.h"
#include "ScrollTypes.h"
#include <wtf/PassOwnPtr.h>
#if PLATFORM(MAC)
#include <wtf/RetainPtr.h>
#endif
namespace WebCore {
class ScrollingTreeState {
public:
static PassOwnPtr<ScrollingTreeState> create();
~ScrollingTreeState();
enum ChangedProperty {
ViewportRect = 1 << 0,
ContentsSize = 1 << 1,
NonFastScrollableRegion = 1 << 2,
WheelEventHandlerCount = 1 << 3,
ShouldUpdateScrollLayerPositionOnMainThread = 1 << 4,
HorizontalScrollElasticity = 1 << 5,
VerticalScrollElasticity = 1 << 6,
HasEnabledHorizontalScrollbar = 1 << 7,
HasEnabledVerticalScrollbar = 1 << 8,
HorizontalScrollbarMode = 1 << 9,
VerticalScrollbarMode = 1 << 10,
ScrollOrigin = 1 << 11,
ScrollLayer = 1 << 12,
RequestedScrollPosition = 1 << 13,
};
bool hasChangedProperties() const { return m_changedProperties; }
unsigned changedProperties() const { return m_changedProperties; }
const IntRect& viewportRect() const { return m_viewportRect; }
void setViewportRect(const IntRect&);
const IntSize& contentsSize() const { return m_contentsSize; }
void setContentsSize(const IntSize&);
const Region& nonFastScrollableRegion() const { return m_nonFastScrollableRegion; }
void setNonFastScrollableRegion(const Region&);
unsigned wheelEventHandlerCount() const { return m_wheelEventHandlerCount; }
void setWheelEventHandlerCount(unsigned);
bool shouldUpdateScrollLayerPositionOnMainThread() const { return m_shouldUpdateScrollLayerPositionOnMainThread; }
void setShouldUpdateScrollLayerPositionOnMainThread(bool);
ScrollElasticity horizontalScrollElasticity() const { return m_horizontalScrollElasticity; }
void setHorizontalScrollElasticity(ScrollElasticity);
ScrollElasticity verticalScrollElasticity() const { return m_verticalScrollElasticity; }
void setVerticalScrollElasticity(ScrollElasticity);
bool hasEnabledHorizontalScrollbar() const { return m_hasEnabledHorizontalScrollbar; }
void setHasEnabledHorizontalScrollbar(bool);
bool hasEnabledVerticalScrollbar() const { return m_hasEnabledVerticalScrollbar; }
void setHasEnabledVerticalScrollbar(bool);
ScrollbarMode horizontalScrollbarMode() const { return m_horizontalScrollbarMode; }
void setHorizontalScrollbarMode(ScrollbarMode);
ScrollbarMode verticalScrollbarMode() const { return m_verticalScrollbarMode; }
void setVerticalScrollbarMode(ScrollbarMode);
PlatformLayer* platformScrollLayer() const;
void setScrollLayer(const GraphicsLayer*);
const IntPoint& requestedScrollPosition() const { return m_requestedScrollPosition; }
void setRequestedScrollPosition(const IntPoint&, bool representsProgrammaticScroll);
const IntPoint& scrollOrigin() const { return m_scrollOrigin; }
void setScrollOrigin(const IntPoint&);
bool requestedScrollPositionRepresentsProgrammaticScroll() const { return m_requestedScrollPositionRepresentsProgrammaticScroll; }
PassOwnPtr<ScrollingTreeState> commit();
private:
ScrollingTreeState();
unsigned m_changedProperties;
IntRect m_viewportRect;
IntSize m_contentsSize;
Region m_nonFastScrollableRegion;
unsigned m_wheelEventHandlerCount;
bool m_shouldUpdateScrollLayerPositionOnMainThread;
ScrollElasticity m_horizontalScrollElasticity;
ScrollElasticity m_verticalScrollElasticity;
bool m_hasEnabledHorizontalScrollbar;
bool m_hasEnabledVerticalScrollbar;
bool m_requestedScrollPositionRepresentsProgrammaticScroll;
ScrollbarMode m_horizontalScrollbarMode;
ScrollbarMode m_verticalScrollbarMode;
IntPoint m_requestedScrollPosition;
IntPoint m_scrollOrigin;
#if PLATFORM(MAC)
RetainPtr<PlatformLayer> m_platformScrollLayer;
#endif
};
}
#endif // ENABLE(THREADED_SCROLLING)
#endif // ScrollingTreeState_h