12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #pragma once
- #include <memory>
- #include <folly/dynamic.h>
- #include <react/components/view/ViewEventEmitter.h>
- #include <react/core/EventEmitter.h>
- #include <react/graphics/Geometry.h>
- namespace facebook {
- namespace react {
- class ScrollViewMetrics {
- public:
- Size contentSize;
- Point contentOffset;
- EdgeInsets contentInset;
- Size containerSize;
- Float zoomScale;
- };
- class ScrollViewEventEmitter;
- using SharedScrollViewEventEmitter =
- std::shared_ptr<const ScrollViewEventEmitter>;
- class ScrollViewEventEmitter : public ViewEventEmitter {
- public:
- using ViewEventEmitter::ViewEventEmitter;
- void onScroll(const ScrollViewMetrics &scrollViewMetrics) const;
- void onScrollBeginDrag(const ScrollViewMetrics &scrollViewMetrics) const;
- void onScrollEndDrag(const ScrollViewMetrics &scrollViewMetrics) const;
- void onMomentumScrollBegin(const ScrollViewMetrics &scrollViewMetrics) const;
- void onMomentumScrollEnd(const ScrollViewMetrics &scrollViewMetrics) const;
- private:
- void dispatchScrollViewEvent(
- const std::string &name,
- const ScrollViewMetrics &scrollViewMetrics,
- EventPriority priority = EventPriority::AsynchronousBatched) const;
- };
- } // namespace react
- } // namespace facebook
|