OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008, 2011 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
197 | 197 |
198 virtual bool userInputScrollable(ScrollbarOrientation) const = 0; | 198 virtual bool userInputScrollable(ScrollbarOrientation) const = 0; |
199 virtual bool shouldPlaceVerticalScrollbarOnLeft() const = 0; | 199 virtual bool shouldPlaceVerticalScrollbarOnLeft() const = 0; |
200 | 200 |
201 // Convenience functions | 201 // Convenience functions |
202 int scrollPosition(ScrollbarOrientation orientation) { return orientation == HorizontalScrollbar ? scrollPosition().x() : scrollPosition().y(); } | 202 int scrollPosition(ScrollbarOrientation orientation) { return orientation == HorizontalScrollbar ? scrollPosition().x() : scrollPosition().y(); } |
203 int minimumScrollPosition(ScrollbarOrientation orientation) { return orienta tion == HorizontalScrollbar ? minimumScrollPosition().x() : minimumScrollPositio n().y(); } | 203 int minimumScrollPosition(ScrollbarOrientation orientation) { return orienta tion == HorizontalScrollbar ? minimumScrollPosition().x() : minimumScrollPositio n().y(); } |
204 int maximumScrollPosition(ScrollbarOrientation orientation) { return orienta tion == HorizontalScrollbar ? maximumScrollPosition().x() : maximumScrollPositio n().y(); } | 204 int maximumScrollPosition(ScrollbarOrientation orientation) { return orienta tion == HorizontalScrollbar ? maximumScrollPosition().x() : maximumScrollPositio n().y(); } |
205 int clampScrollPosition(ScrollbarOrientation orientation, int pos) { return std::max(std::min(pos, maximumScrollPosition(orientation)), minimumScrollPositi on(orientation)); } | 205 int clampScrollPosition(ScrollbarOrientation orientation, int pos) { return std::max(std::min(pos, maximumScrollPosition(orientation)), minimumScrollPositi on(orientation)); } |
206 | 206 |
207 bool hasVerticalBarDamage() const { return m_hasVerticalBarDamage; } | 207 bool hasVerticalBarDamage() const { return !m_verticalBarDamage.isEmpty(); } |
208 bool hasHorizontalBarDamage() const { return m_hasHorizontalBarDamage; } | 208 bool hasHorizontalBarDamage() const { return !m_horizontalBarDamage.isEmpty( ); } |
209 const IntRect& verticalBarDamage() const { return m_verticalBarDamage; } | |
210 const IntRect& horizontalBarDamage() const { return m_horizontalBarDamage; } | |
209 | 211 |
210 const IntRect& verticalBarDamage() const | 212 void addScrollbarDamage(Scrollbar* scrollbar, const IntRect& rect) |
211 { | 213 { |
212 ASSERT(m_hasVerticalBarDamage); | 214 if (scrollbar == horizontalScrollbar()) |
213 return m_verticalBarDamage; | 215 m_horizontalBarDamage.unite(rect); |
214 } | 216 else |
215 | 217 m_verticalBarDamage.unite(rect); |
216 const IntRect& horizontalBarDamage() const | |
217 { | |
218 ASSERT(m_hasHorizontalBarDamage); | |
219 return m_horizontalBarDamage; | |
220 } | 218 } |
221 | 219 |
222 void resetScrollbarDamage() | 220 void resetScrollbarDamage() |
223 { | 221 { |
224 m_hasVerticalBarDamage = false; | 222 m_verticalBarDamage = IntRect(); |
225 m_hasHorizontalBarDamage = false; | 223 m_horizontalBarDamage = IntRect(); |
226 } | 224 } |
225 | |
227 virtual GraphicsLayer* layerForContainer() const; | 226 virtual GraphicsLayer* layerForContainer() const; |
228 virtual GraphicsLayer* layerForScrolling() const { return 0; } | 227 virtual GraphicsLayer* layerForScrolling() const { return 0; } |
229 virtual GraphicsLayer* layerForHorizontalScrollbar() const { return 0; } | 228 virtual GraphicsLayer* layerForHorizontalScrollbar() const { return 0; } |
230 virtual GraphicsLayer* layerForVerticalScrollbar() const { return 0; } | 229 virtual GraphicsLayer* layerForVerticalScrollbar() const { return 0; } |
231 virtual GraphicsLayer* layerForScrollCorner() const { return 0; } | 230 virtual GraphicsLayer* layerForScrollCorner() const { return 0; } |
232 bool hasLayerForHorizontalScrollbar() const; | 231 bool hasLayerForHorizontalScrollbar() const; |
233 bool hasLayerForVerticalScrollbar() const; | 232 bool hasLayerForVerticalScrollbar() const; |
234 bool hasLayerForScrollCorner() const; | 233 bool hasLayerForScrollCorner() const; |
235 | 234 |
236 void cancelProgrammaticScrollAnimation(); | 235 void cancelProgrammaticScrollAnimation(); |
237 | 236 |
238 protected: | 237 protected: |
239 ScrollableArea(); | 238 ScrollableArea(); |
240 virtual ~ScrollableArea(); | 239 virtual ~ScrollableArea(); |
241 | 240 |
242 void setScrollOrigin(const IntPoint&); | 241 void setScrollOrigin(const IntPoint&); |
243 void resetScrollOriginChanged() { m_scrollOriginChanged = false; } | 242 void resetScrollOriginChanged() { m_scrollOriginChanged = false; } |
244 | 243 |
245 virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&) = 0; | 244 virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&) = 0; |
246 virtual void invalidateScrollCornerRect(const IntRect&) = 0; | 245 virtual void invalidateScrollCornerRect(const IntRect&) = 0; |
247 | 246 |
248 // For repaint after layout, stores the damage to be repainted for the | |
249 // scrollbars. | |
250 unsigned m_hasHorizontalBarDamage : 1; | |
251 unsigned m_hasVerticalBarDamage : 1; | |
252 IntRect m_horizontalBarDamage; | |
253 IntRect m_verticalBarDamage; | |
254 | |
255 private: | 247 private: |
256 void scrollPositionChanged(const IntPoint&); | 248 void scrollPositionChanged(const IntPoint&); |
257 | 249 |
258 // NOTE: Only called from the ScrollAnimator. | 250 // NOTE: Only called from the ScrollAnimator. |
259 friend class ScrollAnimator; | 251 friend class ScrollAnimator; |
260 void setScrollOffsetFromAnimation(const IntPoint&); | 252 void setScrollOffsetFromAnimation(const IntPoint&); |
261 | 253 |
262 // This function should be overriden by subclasses to perform the actual | 254 // This function should be overriden by subclasses to perform the actual |
263 // scroll of the content. | 255 // scroll of the content. |
264 virtual void setScrollOffset(const IntPoint&) = 0; | 256 virtual void setScrollOffset(const IntPoint&) = 0; |
265 | 257 |
266 virtual int lineStep(ScrollbarOrientation) const; | 258 virtual int lineStep(ScrollbarOrientation) const; |
267 virtual int pageStep(ScrollbarOrientation) const; | 259 virtual int pageStep(ScrollbarOrientation) const; |
268 virtual int documentStep(ScrollbarOrientation) const; | 260 virtual int documentStep(ScrollbarOrientation) const; |
269 virtual float pixelStep(ScrollbarOrientation) const; | 261 virtual float pixelStep(ScrollbarOrientation) const; |
270 | 262 |
263 // For repaint after layout, stores the damage to be repainted for the | |
dsinclair
2014/07/25 14:33:45
Since repaint-after-layout is the only invalidatio
Xianzhu
2014/07/25 17:28:25
Done.
| |
264 // scrollbars. | |
265 IntRect m_horizontalBarDamage; | |
266 IntRect m_verticalBarDamage; | |
267 | |
271 struct ScrollableAreaAnimators { | 268 struct ScrollableAreaAnimators { |
272 OwnPtr<ScrollAnimator> scrollAnimator; | 269 OwnPtr<ScrollAnimator> scrollAnimator; |
273 OwnPtr<ProgrammaticScrollAnimator> programmaticScrollAnimator; | 270 OwnPtr<ProgrammaticScrollAnimator> programmaticScrollAnimator; |
274 }; | 271 }; |
275 | 272 |
276 mutable OwnPtr<ScrollableAreaAnimators> m_animators; | 273 mutable OwnPtr<ScrollableAreaAnimators> m_animators; |
277 unsigned m_constrainsScrollingToContentEdge : 1; | 274 unsigned m_constrainsScrollingToContentEdge : 1; |
278 | 275 |
279 unsigned m_inLiveResize : 1; | 276 unsigned m_inLiveResize : 1; |
280 | 277 |
(...skipping 14 matching lines...) Expand all Loading... | |
295 // vertical-lr / ltr NO NO | 292 // vertical-lr / ltr NO NO |
296 // vertical-lr / rtl NO YES | 293 // vertical-lr / rtl NO YES |
297 // vertical-rl / ltr YES NO | 294 // vertical-rl / ltr YES NO |
298 // vertical-rl / rtl YES YES | 295 // vertical-rl / rtl YES YES |
299 IntPoint m_scrollOrigin; | 296 IntPoint m_scrollOrigin; |
300 }; | 297 }; |
301 | 298 |
302 } // namespace blink | 299 } // namespace blink |
303 | 300 |
304 #endif // ScrollableArea_h | 301 #endif // ScrollableArea_h |
OLD | NEW |