Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: Source/core/platform/mac/ScrollAnimatorMac.h

Issue 99103006: Moving GraphicsContext and dependencies from core to platform. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final patch - fixes Android Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #ifndef ScrollAnimatorMac_h
27 #define ScrollAnimatorMac_h
28
29 #include "core/platform/ScrollAnimator.h"
30 #include "core/platform/mac/ScrollElasticityController.h"
31 #include "platform/Timer.h"
32 #include "platform/geometry/FloatPoint.h"
33 #include "platform/geometry/FloatSize.h"
34 #include "platform/geometry/IntRect.h"
35 #include "wtf/RetainPtr.h"
36
37 OBJC_CLASS WebScrollAnimationHelperDelegate;
38 OBJC_CLASS WebScrollbarPainterControllerDelegate;
39 OBJC_CLASS WebScrollbarPainterDelegate;
40
41 typedef id ScrollbarPainterController;
42
43 #if !USE(RUBBER_BANDING)
44 class ScrollElasticityControllerClient { };
45 #endif
46
47 namespace WebCore {
48
49 class Scrollbar;
50
51 class ScrollAnimatorMac : public ScrollAnimator, private ScrollElasticityControl lerClient {
52
53 public:
54 ScrollAnimatorMac(ScrollableArea*);
55 virtual ~ScrollAnimatorMac();
56
57 void immediateScrollToPointForScrollAnimation(const FloatPoint& newPosition) ;
58 bool haveScrolledSincePageLoad() const { return m_haveScrolledSincePageLoad; }
59
60 void updateScrollerStyle();
61
62 bool scrollbarPaintTimerIsActive() const;
63 void startScrollbarPaintTimer();
64 void stopScrollbarPaintTimer();
65
66 void sendContentAreaScrolledSoon(const FloatSize& scrollDelta);
67
68 void setVisibleScrollerThumbRect(const IntRect&);
69
70 static bool canUseCoordinatedScrollbar();
71
72 private:
73 RetainPtr<id> m_scrollAnimationHelper;
74 RetainPtr<WebScrollAnimationHelperDelegate> m_scrollAnimationHelperDelegate;
75
76 RetainPtr<ScrollbarPainterController> m_scrollbarPainterController;
77 RetainPtr<WebScrollbarPainterControllerDelegate> m_scrollbarPainterControlle rDelegate;
78 RetainPtr<WebScrollbarPainterDelegate> m_horizontalScrollbarPainterDelegate;
79 RetainPtr<WebScrollbarPainterDelegate> m_verticalScrollbarPainterDelegate;
80
81 void initialScrollbarPaintTimerFired(Timer<ScrollAnimatorMac>*);
82 Timer<ScrollAnimatorMac> m_initialScrollbarPaintTimer;
83
84 void sendContentAreaScrolledTimerFired(Timer<ScrollAnimatorMac>*);
85 Timer<ScrollAnimatorMac> m_sendContentAreaScrolledTimer;
86 FloatSize m_contentAreaScrolledTimerScrollDelta;
87
88 virtual bool scroll(ScrollbarOrientation, ScrollGranularity, float step, flo at multiplier);
89 virtual void scrollToOffsetWithoutAnimation(const FloatPoint&);
90
91 #if USE(RUBBER_BANDING)
92 virtual bool handleWheelEvent(const PlatformWheelEvent&) OVERRIDE;
93 #endif
94
95 virtual void handleWheelEventPhase(PlatformWheelEventPhase) OVERRIDE;
96
97 virtual void cancelAnimations();
98 virtual void setIsActive();
99
100 virtual void notifyPositionChanged(const FloatSize& delta);
101 virtual void contentAreaWillPaint() const;
102 virtual void mouseEnteredContentArea() const;
103 virtual void mouseExitedContentArea() const;
104 virtual void mouseMovedInContentArea() const;
105 virtual void mouseEnteredScrollbar(Scrollbar*) const;
106 virtual void mouseExitedScrollbar(Scrollbar*) const;
107 virtual void willStartLiveResize();
108 virtual void contentsResized() const;
109 virtual void willEndLiveResize();
110 virtual void contentAreaDidShow() const;
111 virtual void contentAreaDidHide() const;
112 void didBeginScrollGesture() const;
113 void didEndScrollGesture() const;
114 void mayBeginScrollGesture() const;
115
116 virtual void finishCurrentScrollAnimations();
117
118 virtual void didAddVerticalScrollbar(Scrollbar*);
119 virtual void willRemoveVerticalScrollbar(Scrollbar*);
120 virtual void didAddHorizontalScrollbar(Scrollbar*);
121 virtual void willRemoveHorizontalScrollbar(Scrollbar*);
122
123 virtual bool shouldScrollbarParticipateInHitTesting(Scrollbar*);
124
125 virtual void notifyContentAreaScrolled(const FloatSize& delta) OVERRIDE;
126
127 FloatPoint adjustScrollPositionIfNecessary(const FloatPoint&) const;
128
129 void immediateScrollTo(const FloatPoint&);
130
131 virtual bool isRubberBandInProgress() const OVERRIDE;
132
133 #if USE(RUBBER_BANDING)
134 /// ScrollElasticityControllerClient member functions.
135 virtual IntSize stretchAmount() OVERRIDE;
136 virtual bool allowsHorizontalStretching() OVERRIDE;
137 virtual bool allowsVerticalStretching() OVERRIDE;
138 virtual bool pinnedInDirection(const FloatSize&) OVERRIDE;
139 virtual bool canScrollHorizontally() OVERRIDE;
140 virtual bool canScrollVertically() OVERRIDE;
141 virtual bool shouldRubberBandInDirection(ScrollDirection) OVERRIDE;
142 virtual WebCore::IntPoint absoluteScrollPosition() OVERRIDE;
143 virtual void immediateScrollByWithoutContentEdgeConstraints(const FloatSize& ) OVERRIDE;
144 virtual void immediateScrollBy(const FloatSize&) OVERRIDE;
145 virtual void startSnapRubberbandTimer() OVERRIDE;
146 virtual void stopSnapRubberbandTimer() OVERRIDE;
147
148 bool pinnedInDirection(float deltaX, float deltaY);
149 void snapRubberBandTimerFired(Timer<ScrollAnimatorMac>*);
150
151 ScrollElasticityController m_scrollElasticityController;
152 Timer<ScrollAnimatorMac> m_snapRubberBandTimer;
153 #endif
154
155 bool m_haveScrolledSincePageLoad;
156 bool m_needsScrollerStyleUpdate;
157 IntRect m_visibleScrollerThumbRect;
158 };
159
160 } // namespace WebCore
161
162 #endif // ScrollAnimatorMac_h
OLDNEW
« no previous file with comments | « Source/core/platform/mac/NSScrollerImpDetails.mm ('k') | Source/core/platform/mac/ScrollAnimatorMac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698