| 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 // Stores the paint invalidations for the scrollbars during layout. |
| 264 IntRect m_horizontalBarDamage; |
| 265 IntRect m_verticalBarDamage; |
| 266 |
| 271 struct ScrollableAreaAnimators { | 267 struct ScrollableAreaAnimators { |
| 272 OwnPtr<ScrollAnimator> scrollAnimator; | 268 OwnPtr<ScrollAnimator> scrollAnimator; |
| 273 OwnPtr<ProgrammaticScrollAnimator> programmaticScrollAnimator; | 269 OwnPtr<ProgrammaticScrollAnimator> programmaticScrollAnimator; |
| 274 }; | 270 }; |
| 275 | 271 |
| 276 mutable OwnPtr<ScrollableAreaAnimators> m_animators; | 272 mutable OwnPtr<ScrollableAreaAnimators> m_animators; |
| 277 unsigned m_constrainsScrollingToContentEdge : 1; | 273 unsigned m_constrainsScrollingToContentEdge : 1; |
| 278 | 274 |
| 279 unsigned m_inLiveResize : 1; | 275 unsigned m_inLiveResize : 1; |
| 280 | 276 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 295 // vertical-lr / ltr NO NO | 291 // vertical-lr / ltr NO NO |
| 296 // vertical-lr / rtl NO YES | 292 // vertical-lr / rtl NO YES |
| 297 // vertical-rl / ltr YES NO | 293 // vertical-rl / ltr YES NO |
| 298 // vertical-rl / rtl YES YES | 294 // vertical-rl / rtl YES YES |
| 299 IntPoint m_scrollOrigin; | 295 IntPoint m_scrollOrigin; |
| 300 }; | 296 }; |
| 301 | 297 |
| 302 } // namespace blink | 298 } // namespace blink |
| 303 | 299 |
| 304 #endif // ScrollableArea_h | 300 #endif // ScrollableArea_h |
| OLD | NEW |