зеркало из https://github.com/mozilla/gecko-dev.git
52 строки
2.0 KiB
C++
52 строки
2.0 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_ScrollTypes_h
|
|
#define mozilla_ScrollTypes_h
|
|
|
|
// Types used in main-thread scrolling interfaces such as nsIScrollableFrame.
|
|
|
|
namespace mozilla {
|
|
|
|
/**
|
|
* Scroll modes for main-thread scroll operations. These are mostly used
|
|
* by nsIScrollableFrame methods.
|
|
*
|
|
* When a scroll operation is requested, we ask for instant, smooth,
|
|
* smooth msd, or normal scrolling.
|
|
*
|
|
* |eSmooth| scrolls have a symmetrical acceleration and deceleration curve
|
|
* modeled with a set of splines that guarantee that the destination will be
|
|
* reached over a fixed time interval. |eSmooth| will only be smooth if smooth
|
|
* scrolling is actually enabled. This behavior is utilized by keyboard and
|
|
* mouse wheel scrolling events.
|
|
*
|
|
* |eSmoothMsd| implements a physically based model that approximates the
|
|
* behavior of a mass-spring-damper system. |eSmoothMsd| scrolls have a
|
|
* non-symmetrical acceleration and deceleration curve, can potentially
|
|
* overshoot the destination on intermediate frames, and complete over a
|
|
* variable time interval. |eSmoothMsd| will only be smooth if cssom-view
|
|
* smooth-scrolling is enabled.
|
|
*
|
|
* |eInstant| is always synchronous, |eNormal| can be asynchronous.
|
|
*
|
|
* If an |eInstant| scroll request happens while a |eSmooth| or async scroll is
|
|
* already in progress, the async scroll is interrupted and we instantly
|
|
* scroll to the destination.
|
|
*
|
|
* If an |eInstant| or |eSmooth| scroll request happens while a |eSmoothMsd|
|
|
* scroll is already in progress, the |eSmoothMsd| scroll is interrupted without
|
|
* first scrolling to the destination.
|
|
*/
|
|
enum class ScrollMode { Instant, Smooth, SmoothMsd, Normal };
|
|
|
|
/**
|
|
* When scrolling by a relative amount, we can choose various units.
|
|
*/
|
|
enum class ScrollUnit { DEVICE_PIXELS, LINES, PAGES, WHOLE };
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_ScrollTypes_h
|