Fix incorrect pixel-rounding in RCTShadowView.
Reviewed By: emilsjolander Differential Revision: D4133643 fbshipit-source-id: 28a4408ba8da797138b9e100fa1555ddb0856ceb
This commit is contained in:
parent
7839a9fd60
commit
4d35f65eb7
|
@ -129,7 +129,7 @@ DEFINE_PROCESS_META_PROPS(Border);
|
||||||
//
|
//
|
||||||
// After passing in the absolutePosition of {106.667, y}, we do the following calculations:
|
// After passing in the absolutePosition of {106.667, y}, we do the following calculations:
|
||||||
// absoluteLeft = round(absolutePosition.x + viewPosition.left) = round(106.667 + 0) = 106.5
|
// absoluteLeft = round(absolutePosition.x + viewPosition.left) = round(106.667 + 0) = 106.5
|
||||||
// absoluteRight = round(absolutePosition.x + viewPosition.left + viewSize.left) + round(106.667 + 0 + 106.667) = 213.5
|
// absoluteRight = round(absolutePosition.x + viewPosition.left + viewSize.width) + round(106.667 + 0 + 106.667) = 213.5
|
||||||
// width = 213.5 - 106.5 = 107
|
// width = 213.5 - 106.5 = 107
|
||||||
// You'll notice that this is the same width we calculated for the parent view because we've taken its position into account.
|
// You'll notice that this is the same width we calculated for the parent view because we've taken its position into account.
|
||||||
|
|
||||||
|
@ -152,22 +152,22 @@ DEFINE_PROCESS_META_PROPS(Border);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CGPoint absoluteTopLeft = {
|
const CGPoint absoluteTopLeft = {
|
||||||
absolutePosition.x + CSSNodeLayoutGetLeft(node),
|
absolutePosition.x + CSSNodeLayoutGetLeft(node),
|
||||||
absolutePosition.y + CSSNodeLayoutGetTop(node)
|
absolutePosition.y + CSSNodeLayoutGetTop(node)
|
||||||
};
|
};
|
||||||
|
|
||||||
CGPoint absoluteBottomRight = {
|
const CGPoint absoluteBottomRight = {
|
||||||
absolutePosition.x + CSSNodeLayoutGetLeft(node) + CSSNodeLayoutGetWidth(node),
|
absoluteTopLeft.x + CSSNodeLayoutGetWidth(node),
|
||||||
absolutePosition.y + CSSNodeLayoutGetTop(node) + CSSNodeLayoutGetHeight(node)
|
absoluteTopLeft.y + CSSNodeLayoutGetHeight(node)
|
||||||
};
|
};
|
||||||
|
|
||||||
CGRect frame = {{
|
const CGRect frame = {{
|
||||||
RCTRoundPixelValue(CSSNodeLayoutGetLeft(node)),
|
RCTRoundPixelValue(CSSNodeLayoutGetLeft(node)),
|
||||||
RCTRoundPixelValue(CSSNodeLayoutGetTop(node)),
|
RCTRoundPixelValue(CSSNodeLayoutGetTop(node)),
|
||||||
}, {
|
}, {
|
||||||
RCTRoundPixelValue(absoluteBottomRight.x - absoluteTopLeft.x),
|
RCTRoundPixelValue(absoluteBottomRight.x) - RCTRoundPixelValue(absoluteTopLeft.x),
|
||||||
RCTRoundPixelValue(absoluteBottomRight.y - absoluteTopLeft.y)
|
RCTRoundPixelValue(absoluteBottomRight.y) - RCTRoundPixelValue(absoluteTopLeft.y),
|
||||||
}};
|
}};
|
||||||
|
|
||||||
if (!CGRectEqualToRect(frame, _frame)) {
|
if (!CGRectEqualToRect(frame, _frame)) {
|
||||||
|
|
Loading…
Reference in New Issue