diff options
Diffstat (limited to 'Source/WebCore/platform/mac/ScrollAnimatorMac.h')
-rw-r--r-- | Source/WebCore/platform/mac/ScrollAnimatorMac.h | 79 |
1 files changed, 76 insertions, 3 deletions
diff --git a/Source/WebCore/platform/mac/ScrollAnimatorMac.h b/Source/WebCore/platform/mac/ScrollAnimatorMac.h index f05db40..3f7612a 100644 --- a/Source/WebCore/platform/mac/ScrollAnimatorMac.h +++ b/Source/WebCore/platform/mac/ScrollAnimatorMac.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Apple Inc. All rights reserved. + * Copyright (C) 2010, 2011 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,17 +28,30 @@ #if ENABLE(SMOOTH_SCROLLING) +#include "FloatPoint.h" +#include "FloatSize.h" +#include "HeaderDetection.h" #include "ScrollAnimator.h" +#include "Timer.h" +#include "WebCoreSystemInterface.h" #include <wtf/RetainPtr.h> #ifdef __OBJC__ @class ScrollAnimationHelperDelegate; +@class ScrollbarPainterDelegate; +@class ScrollbarPainterControllerDelegate; +@class ScrollbarPainterDelegate; #else class ScrollAnimationHelperDelegate; +class ScrollbarPainterDelegate; +class ScrollbarPainterControllerDelegate; +class ScrollbarPainterDelegate; #endif namespace WebCore { +class Scrollbar; + class ScrollAnimatorMac : public ScrollAnimator { public: ScrollAnimatorMac(ScrollableArea*); @@ -47,12 +60,72 @@ public: virtual bool scroll(ScrollbarOrientation, ScrollGranularity, float step, float multiplier); virtual void scrollToOffsetWithoutAnimation(const FloatPoint&); - // Called by the ScrollAnimationHelperDelegate. - void immediateScrollToPoint(const FloatPoint& newPosition); +#if ENABLE(RUBBER_BANDING) + virtual void handleWheelEvent(PlatformWheelEvent&); +#if ENABLE(GESTURE_EVENTS) + virtual void handleGestureEvent(const PlatformGestureEvent&); +#endif +#endif + void immediateScrollToPoint(const FloatPoint& newPosition); + void immediateScrollByDeltaX(float deltaX); + void immediateScrollByDeltaY(float deltaY); + private: RetainPtr<id> m_scrollAnimationHelper; RetainPtr<ScrollAnimationHelperDelegate> m_scrollAnimationHelperDelegate; + +#if defined(USE_WK_SCROLLBAR_PAINTER_AND_CONTROLLER) + RetainPtr<WKScrollbarPainterControllerRef> m_scrollbarPainterController; + RetainPtr<ScrollbarPainterControllerDelegate> m_scrollbarPainterControllerDelegate; + RetainPtr<id> m_scrollbarPainterDelegate; +#endif + + virtual void notityPositionChanged(); + virtual void contentAreaWillPaint() const; + virtual void mouseEnteredContentArea() const; + virtual void mouseExitedContentArea() const; + virtual void mouseMovedInContentArea() const; + virtual void willStartLiveResize(); + virtual void contentsResized() const; + virtual void willEndLiveResize(); + virtual void contentAreaDidShow() const; + virtual void contentAreaDidHide() const; + + virtual void didAddVerticalScrollbar(Scrollbar*); + virtual void willRemoveVerticalScrollbar(Scrollbar*); + virtual void didAddHorizontalScrollbar(Scrollbar*); + virtual void willRemoveHorizontalScrollbar(Scrollbar*); + + float adjustScrollXPositionIfNecessary(float) const; + float adjustScrollYPositionIfNecessary(float) const; + FloatPoint adjustScrollPositionIfNecessary(const FloatPoint&) const; + +#if ENABLE(RUBBER_BANDING) + bool allowsVerticalStretching() const; + bool allowsHorizontalStretching() const; + bool pinnedInDirection(float deltaX, float deltaY); + void snapRubberBand(); + void snapRubberBandTimerFired(Timer<ScrollAnimatorMac>*); + void smoothScrollWithEvent(PlatformWheelEvent&); + void beginScrollGesture(); + void endScrollGesture(); + + bool m_inScrollGesture; + bool m_momentumScrollInProgress; + bool m_ignoreMomentumScrolls; + CFTimeInterval m_lastMomemtumScrollTimestamp; + FloatSize m_overflowScrollDelta; + FloatSize m_stretchScrollForce; + FloatSize m_momentumVelocity; + + // Rubber band state. + CFTimeInterval m_startTime; + FloatSize m_startStretch; + FloatPoint m_origOrigin; + FloatSize m_origVelocity; + Timer<ScrollAnimatorMac> m_snapRubberBandTimer; +#endif }; } // namespace WebCore |