123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- * 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.
- */
- #import "RCTShadowView+Layout.h"
- #import <yoga/Yoga.h>
- #import "RCTAssert.h"
- @implementation RCTShadowView (Layout)
- #pragma mark - Computed Layout-Inferred Metrics
- - (UIEdgeInsets)paddingAsInsets
- {
- YGNodeRef yogaNode = self.yogaNode;
- return (UIEdgeInsets){RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeTop)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeLeft)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeBottom)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeRight))};
- }
- - (UIEdgeInsets)borderAsInsets
- {
- YGNodeRef yogaNode = self.yogaNode;
- return (UIEdgeInsets){RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeTop)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeLeft)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeBottom)),
- RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeRight))};
- }
- - (UIEdgeInsets)compoundInsets
- {
- UIEdgeInsets borderAsInsets = self.borderAsInsets;
- UIEdgeInsets paddingAsInsets = self.paddingAsInsets;
- return (UIEdgeInsets){borderAsInsets.top + paddingAsInsets.top,
- borderAsInsets.left + paddingAsInsets.left,
- borderAsInsets.bottom + paddingAsInsets.bottom,
- borderAsInsets.right + paddingAsInsets.right};
- }
- - (CGSize)availableSize
- {
- return self.layoutMetrics.contentFrame.size;
- }
- - (CGRect)contentFrame
- {
- return self.layoutMetrics.contentFrame;
- }
- #pragma mark - Dirty Propagation Control
- - (void)dirtyLayout
- {
- // The default implementation does nothing.
- }
- - (void)clearLayout
- {
- // The default implementation does nothing.
- }
- @end
|