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

Unified Diff: Source/core/platform/ScrollableArea.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/platform/ScrollView.cpp ('k') | Source/core/platform/ScrollableArea.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/platform/ScrollableArea.h
diff --git a/Source/core/platform/ScrollableArea.h b/Source/core/platform/ScrollableArea.h
deleted file mode 100644
index 1dc7b2eb9b3e1bd636e3543f17e6557b75f5fba9..0000000000000000000000000000000000000000
--- a/Source/core/platform/ScrollableArea.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2008, 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
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ScrollableArea_h
-#define ScrollableArea_h
-
-#include "core/platform/Scrollbar.h"
-#include "wtf/Vector.h"
-
-namespace WebCore {
-
-class FloatPoint;
-class GraphicsContext;
-class GraphicsLayer;
-class PlatformGestureEvent;
-class PlatformWheelEvent;
-class ScrollAnimator;
-
-class ScrollableArea {
-public:
- static int pixelsPerLineStep();
- static float minFractionToStepWhenPaging();
- static int maxOverlapBetweenPages();
-
- bool scroll(ScrollDirection, ScrollGranularity, float multiplier = 1);
- void scrollToOffsetWithoutAnimation(const FloatPoint&);
- void scrollToOffsetWithoutAnimation(ScrollbarOrientation, float offset);
-
- // Should be called when the scroll position changes externally, for example if the scroll layer position
- // is updated on the scrolling thread and we need to notify the main thread.
- void notifyScrollPositionChanged(const IntPoint&);
-
- bool handleWheelEvent(const PlatformWheelEvent&);
-
- // Functions for controlling if you can scroll past the end of the document.
- bool constrainsScrollingToContentEdge() const { return m_constrainsScrollingToContentEdge; }
- void setConstrainsScrollingToContentEdge(bool constrainsScrollingToContentEdge) { m_constrainsScrollingToContentEdge = constrainsScrollingToContentEdge; }
-
- void setVerticalScrollElasticity(ScrollElasticity scrollElasticity) { m_verticalScrollElasticity = scrollElasticity; }
- ScrollElasticity verticalScrollElasticity() const { return static_cast<ScrollElasticity>(m_verticalScrollElasticity); }
-
- void setHorizontalScrollElasticity(ScrollElasticity scrollElasticity) { m_horizontalScrollElasticity = scrollElasticity; }
- ScrollElasticity horizontalScrollElasticity() const { return static_cast<ScrollElasticity>(m_horizontalScrollElasticity); }
-
- bool inLiveResize() const { return m_inLiveResize; }
- void willStartLiveResize();
- void willEndLiveResize();
-
- void contentAreaWillPaint() const;
- void mouseEnteredContentArea() const;
- void mouseExitedContentArea() const;
- void mouseMovedInContentArea() const;
- void mouseEnteredScrollbar(Scrollbar*) const;
- void mouseExitedScrollbar(Scrollbar*) const;
- void contentAreaDidShow() const;
- void contentAreaDidHide() const;
-
- void finishCurrentScrollAnimations() const;
-
- virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation);
- virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation);
-
- virtual void contentsResized();
-
- bool hasOverlayScrollbars() const;
- void setScrollbarOverlayStyle(ScrollbarOverlayStyle);
- ScrollbarOverlayStyle scrollbarOverlayStyle() const { return static_cast<ScrollbarOverlayStyle>(m_scrollbarOverlayStyle); }
-
- // This getter will create a ScrollAnimator if it doesn't already exist.
- ScrollAnimator* scrollAnimator() const;
-
- // This getter will return null if the ScrollAnimator hasn't been created yet.
- ScrollAnimator* existingScrollAnimator() const { return m_scrollAnimator.get(); }
-
- const IntPoint& scrollOrigin() const { return m_scrollOrigin; }
- bool scrollOriginChanged() const { return m_scrollOriginChanged; }
-
- virtual bool isActive() const = 0;
- virtual int scrollSize(ScrollbarOrientation) const = 0;
- virtual void invalidateScrollbar(Scrollbar*, const IntRect&);
- virtual bool isScrollCornerVisible() const = 0;
- virtual IntRect scrollCornerRect() const = 0;
- virtual void invalidateScrollCorner(const IntRect&);
- virtual void getTickmarks(Vector<IntRect>&) const { }
-
- // Convert points and rects between the scrollbar and its containing view.
- // The client needs to implement these in order to be aware of layout effects
- // like CSS transforms.
- virtual IntRect convertFromScrollbarToContainingView(const Scrollbar* scrollbar, const IntRect& scrollbarRect) const
- {
- return scrollbar->Widget::convertToContainingView(scrollbarRect);
- }
- virtual IntRect convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntRect& parentRect) const
- {
- return scrollbar->Widget::convertFromContainingView(parentRect);
- }
- virtual IntPoint convertFromScrollbarToContainingView(const Scrollbar* scrollbar, const IntPoint& scrollbarPoint) const
- {
- return scrollbar->Widget::convertToContainingView(scrollbarPoint);
- }
- virtual IntPoint convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntPoint& parentPoint) const
- {
- return scrollbar->Widget::convertFromContainingView(parentPoint);
- }
-
- virtual Scrollbar* horizontalScrollbar() const { return 0; }
- virtual Scrollbar* verticalScrollbar() const { return 0; }
-
- // scrollPosition is relative to the scrollOrigin. i.e. If the page is RTL
- // then scrollPosition will be negative.
- virtual IntPoint scrollPosition() const = 0;
- virtual IntPoint minimumScrollPosition() const = 0;
- virtual IntPoint maximumScrollPosition() const = 0;
-
- enum IncludeScrollbarsInRect { ExcludeScrollbars, IncludeScrollbars };
- virtual IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollbars) const;
- virtual int visibleHeight() const = 0;
- virtual int visibleWidth() const = 0;
- virtual IntSize contentsSize() const = 0;
- virtual IntSize overhangAmount() const { return IntSize(); }
- virtual IntPoint lastKnownMousePosition() const { return IntPoint(); }
-
- virtual bool shouldSuspendScrollAnimations() const { return true; }
- virtual void scrollbarStyleChanged(int /*newStyle*/, bool /*forceUpdate*/) { }
-
- virtual bool scrollbarsCanBeActive() const = 0;
-
- // Note that this only returns scrollable areas that can actually be scrolled.
- virtual ScrollableArea* enclosingScrollableArea() const = 0;
-
- // Returns the bounding box of this scrollable area, in the coordinate system of the enclosing scroll view.
- virtual IntRect scrollableAreaBoundingBox() const = 0;
-
- virtual bool shouldRubberBandInDirection(ScrollDirection) const { return true; }
- virtual bool isRubberBandInProgress() const { return false; }
-
- virtual bool scrollAnimatorEnabled() const { return false; }
-
- // NOTE: Only called from Internals for testing.
- void setScrollOffsetFromInternals(const IntPoint&);
-
- IntPoint clampScrollPosition(const IntPoint&) const;
-
- // Let subclasses provide a way of asking for and servicing scroll
- // animations.
- virtual bool scheduleAnimation() { return false; }
- void serviceScrollAnimations();
-
- virtual bool usesCompositedScrolling() const { return false; }
- virtual void updateNeedsCompositedScrolling() { }
- virtual void updateHasVisibleNonLayerContent() { }
-
- virtual bool userInputScrollable(ScrollbarOrientation) const = 0;
- virtual bool shouldPlaceVerticalScrollbarOnLeft() const = 0;
-
- // Convenience functions
- int scrollPosition(ScrollbarOrientation orientation) { return orientation == HorizontalScrollbar ? scrollPosition().x() : scrollPosition().y(); }
- int minimumScrollPosition(ScrollbarOrientation orientation) { return orientation == HorizontalScrollbar ? minimumScrollPosition().x() : minimumScrollPosition().y(); }
- int maximumScrollPosition(ScrollbarOrientation orientation) { return orientation == HorizontalScrollbar ? maximumScrollPosition().x() : maximumScrollPosition().y(); }
- int clampScrollPosition(ScrollbarOrientation orientation, int pos) { return std::max(std::min(pos, maximumScrollPosition(orientation)), minimumScrollPosition(orientation)); }
-
-protected:
- ScrollableArea();
- virtual ~ScrollableArea();
-
- void setScrollOrigin(const IntPoint&);
- void resetScrollOriginChanged() { m_scrollOriginChanged = false; }
-
- virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&) = 0;
- virtual void invalidateScrollCornerRect(const IntRect&) = 0;
-
- friend class ScrollingCoordinator;
- virtual GraphicsLayer* layerForScrolling() const { return 0; }
- virtual GraphicsLayer* layerForHorizontalScrollbar() const { return 0; }
- virtual GraphicsLayer* layerForVerticalScrollbar() const { return 0; }
- virtual GraphicsLayer* layerForScrollCorner() const { return 0; }
- bool hasLayerForHorizontalScrollbar() const;
- bool hasLayerForVerticalScrollbar() const;
- bool hasLayerForScrollCorner() const;
-
-private:
- void scrollPositionChanged(const IntPoint&);
-
- // NOTE: Only called from the ScrollAnimator.
- friend class ScrollAnimator;
- void setScrollOffsetFromAnimation(const IntPoint&);
-
- // This function should be overriden by subclasses to perform the actual
- // scroll of the content.
- virtual void setScrollOffset(const IntPoint&) = 0;
-
- virtual int lineStep(ScrollbarOrientation) const;
- virtual int pageStep(ScrollbarOrientation) const = 0;
- virtual int documentStep(ScrollbarOrientation) const;
- virtual float pixelStep(ScrollbarOrientation) const;
-
- mutable OwnPtr<ScrollAnimator> m_scrollAnimator;
- unsigned m_constrainsScrollingToContentEdge : 1;
-
- unsigned m_inLiveResize : 1;
-
- unsigned m_verticalScrollElasticity : 2; // ScrollElasticity
- unsigned m_horizontalScrollElasticity : 2; // ScrollElasticity
-
- unsigned m_scrollbarOverlayStyle : 2; // ScrollbarOverlayStyle
-
- unsigned m_scrollOriginChanged : 1;
-
- // There are 8 possible combinations of writing mode and direction. Scroll origin will be non-zero in the x or y axis
- // if there is any reversed direction or writing-mode. The combinations are:
- // writing-mode / direction scrollOrigin.x() set scrollOrigin.y() set
- // horizontal-tb / ltr NO NO
- // horizontal-tb / rtl YES NO
- // horizontal-bt / ltr NO YES
- // horizontal-bt / rtl YES YES
- // vertical-lr / ltr NO NO
- // vertical-lr / rtl NO YES
- // vertical-rl / ltr YES NO
- // vertical-rl / rtl YES YES
- IntPoint m_scrollOrigin;
-};
-
-} // namespace WebCore
-
-#endif // ScrollableArea_h
« no previous file with comments | « Source/core/platform/ScrollView.cpp ('k') | Source/core/platform/ScrollableArea.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698