/* * Copyright (C) 2006 Apple Computer, 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 COMPUTER, 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 COMPUTER, 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 THIRD_PARTY_BLINK_RENDERER_CORE_SCROLL_SCROLL_TYPES_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_SCROLL_SCROLL_TYPES_H_ #include "base/notreached.h" #include "third_party/blink/public/mojom/input/scroll_direction.mojom-blink.h" #include "third_party/blink/public/mojom/scroll/scroll_enums.mojom-blink.h" #include "ui/gfx/geometry/vector2d_conversions.h" #include "ui/gfx/geometry/vector2d_f.h" namespace blink { // A ScrollOffset represents an offset from the scroll origin of a // ScrollableArea. Note that "scroll origin" is not the same as the layout // concept of "location", nor is it necessarily coincident with the top/left of // the ScrollableArea's overflow rect. See core/layout/README.md for more // information. ScrollOffset; enum ScrollDirectionPhysical { … }; // An explicit scroll is one that was requested by the user or the webpage. // An implicit scroll is a side effect of a layout change. inline bool IsExplicitScrollType(mojom::blink::ScrollType scroll_type) { … } // Convert logical scroll direction to physical. Physical scroll directions are // unaffected. inline ScrollDirectionPhysical ToPhysicalDirection( mojom::blink::ScrollDirection direction, bool is_vertical, bool is_flipped) { … } inline mojom::blink::ScrollDirection ToScrollDirection( ScrollDirectionPhysical direction) { … } enum ScrollInertialPhase { … }; enum ScrollbarOrientation { … }; enum ScrollOrientation { … }; ScrollbarControlState; enum ScrollbarControlStateMask { … }; enum ScrollbarPart { … }; // The result of an attempt to scroll. If didScroll is true, then // unusedScrollDelta gives the amount of the scroll delta that was not consumed // by scrolling. struct ScrollResult { … }; inline ScrollOffset ToScrollDelta(ScrollbarOrientation orientation, float delta) { … } inline ScrollOffset ToScrollDelta(ScrollDirectionPhysical dir, float delta) { … } // ScrollableArea supports storing scroll offsets with subpixel precision; // however, the web has historically only allowed scroll offsets matching // physical pixels. inline gfx::Vector2d SnapScrollOffsetToPhysicalPixels( const gfx::Vector2dF& offset) { … } } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_SCROLL_SCROLL_TYPES_H_