mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
4a12efad02
Summary: Node region bounds are assumed to equal the underlying node bounds. In the case of hit slop, these need to be abstracted. Reviewed By: ahmedre Differential Revision: D3713430
136 lines
3.2 KiB
Java
136 lines
3.2 KiB
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.flat;
|
|
|
|
/* package */ class NodeRegion {
|
|
/* package */ static final NodeRegion[] EMPTY_ARRAY = new NodeRegion[0];
|
|
/* package */ static final NodeRegion EMPTY = new NodeRegion(0, 0, 0, 0, -1, false);
|
|
|
|
private final float mLeft;
|
|
private final float mTop;
|
|
private final float mRight;
|
|
private final float mBottom;
|
|
/* package */ final int mTag;
|
|
/* package */ final boolean mIsVirtual;
|
|
|
|
/* package */ NodeRegion(
|
|
float left,
|
|
float top,
|
|
float right,
|
|
float bottom,
|
|
int tag,
|
|
boolean isVirtual) {
|
|
mLeft = left;
|
|
mTop = top;
|
|
mRight = right;
|
|
mBottom = bottom;
|
|
mTag = tag;
|
|
mIsVirtual = isVirtual;
|
|
}
|
|
|
|
/* package */ final boolean matches(
|
|
float left,
|
|
float top,
|
|
float right,
|
|
float bottom,
|
|
boolean isVirtual) {
|
|
return left == mLeft && top == mTop && right == mRight && bottom == mBottom &&
|
|
isVirtual == mIsVirtual;
|
|
}
|
|
|
|
/**
|
|
* The left bound of the underlying node.
|
|
*
|
|
* @return The node bound.
|
|
*/
|
|
/* package */ final float getLeft() {
|
|
return mLeft;
|
|
}
|
|
|
|
/**
|
|
* The top bound of the underlying node.
|
|
*
|
|
* @return The node bound.
|
|
*/
|
|
/* package */ final float getTop() {
|
|
return mTop;
|
|
}
|
|
|
|
/**
|
|
* The right bound of the underlying node.
|
|
*
|
|
* @return The node bound.
|
|
*/
|
|
/* package */ final float getRight() {
|
|
return mRight;
|
|
}
|
|
|
|
/**
|
|
* The bottom bound of the underlying node.
|
|
*
|
|
* @return The node bound.
|
|
*/
|
|
/* package */ final float getBottom() {
|
|
return mBottom;
|
|
}
|
|
|
|
/**
|
|
* The left bound of the region for the purpose of touch. This is usually the bound of the
|
|
* underlying node, except in the case of hit slop.
|
|
*
|
|
* @return The touch bound.
|
|
*/
|
|
/* package */ float getTouchableLeft() {
|
|
return getLeft();
|
|
}
|
|
|
|
/**
|
|
* The top bound of the region for the purpose of touch. This is usually the bound of the
|
|
* underlying node, except in the case of hit slop.
|
|
*
|
|
* @return The touch bound.
|
|
*/
|
|
/* package */ float getTouchableTop() {
|
|
return getTop();
|
|
}
|
|
|
|
/**
|
|
* The right bound of the region for the purpose of touch. This is usually the bound of the
|
|
* underlying node, except in the case of hit slop.
|
|
*
|
|
* @return The touch bound.
|
|
*/
|
|
/* package */ float getTouchableRight() {
|
|
return getRight();
|
|
}
|
|
|
|
/**
|
|
* The bottom bound of the region for the purpose of touch. This is usually the bound of the
|
|
* underlying node, except in the case of hit slop.
|
|
*
|
|
* @return The touch bound.
|
|
*/
|
|
/* package */ float getTouchableBottom() {
|
|
return getBottom();
|
|
}
|
|
|
|
/* package */ boolean withinBounds(float touchX, float touchY) {
|
|
return mLeft <= touchX && touchX < mRight && mTop <= touchY && touchY < mBottom;
|
|
}
|
|
|
|
/* package */ int getReactTag(float touchX, float touchY) {
|
|
return mTag;
|
|
}
|
|
|
|
/* package */ boolean matchesTag(int tag) {
|
|
return mTag == tag;
|
|
}
|
|
}
|