Files
react-native/packages/react-native/ReactCommon/react/renderer/components/view/BaseTouch.h
T
Nick Gerleman d2e91599c8 PointerAlignment: Left
Summary:
This changes Clang format config to enforce left pointer alignment instead of right, in accordance with https://www.internalfb.com/intern/wiki/Cpp/CppStyle/

Changelog: [Internal]

bypass-github-export-checks

Reviewed By: sammy-SC

Differential Revision: D48952040

fbshipit-source-id: 108329b2f11d2041a31dee3334c7801d69a3f1ad
2023-09-04 10:55:18 -07:00

92 lines
2.2 KiB
C++

/*
* Copyright (c) Meta Platforms, Inc. and 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 <jsi/jsi.h>
#include <react/renderer/core/ReactPrimitives.h>
#include <react/renderer/debug/DebugStringConvertible.h>
#include <react/renderer/graphics/Point.h>
namespace facebook::react {
/*
* Describes an individual touch point for a touch event.
* See https://www.w3.org/TR/touch-events/ for more details.
*/
struct BaseTouch {
/*
* The coordinate of point relative to the root component in points.
*/
Point pagePoint;
/*
* The coordinate of point relative to the target component in points.
*/
Point offsetPoint;
/*
* The coordinate of point relative to the screen component in points.
*/
Point screenPoint;
/*
* An identification number for each touch point.
*/
int identifier;
/*
* The tag of a component on which the touch point started when it was first
* placed on the surface, even if the touch point has since moved outside the
* interactive area of that element.
*/
Tag target;
/*
* The force of the touch.
*/
Float force;
/*
* The time in seconds when the touch occurred or when it was last mutated.
*/
Float timestamp;
/*
* The particular implementation of `Hasher` and (especially) `Comparator`
* make sense only when `Touch` object is used as a *key* in indexed
* collections. Because of that they are expressed as separate classes.
*/
struct Hasher {
size_t operator()(const BaseTouch& touch) const {
return std::hash<decltype(touch.identifier)>()(touch.identifier);
}
};
struct Comparator {
bool operator()(const BaseTouch& lhs, const BaseTouch& rhs) const {
return lhs.identifier == rhs.identifier;
}
};
};
void setTouchPayloadOnObject(
jsi::Object& object,
jsi::Runtime& runtime,
const BaseTouch& touch);
#if RN_DEBUG_STRING_CONVERTIBLE
std::string getDebugName(const BaseTouch& touch);
std::vector<DebugStringConvertibleObject> getDebugProps(
const BaseTouch& touch,
DebugStringConvertibleOptions options);
#endif
} // namespace facebook::react