[Layout] Rename ASLayoutable to ASLayoutElement (#2290)

* [Layout API] Rename ASLayoutable to ASLayoutElement

* arg

* fix wrapperWithLayoutElement

* [Layout API] Rename ASLayoutable to ASLayoutElement

* arg

* address Michael's comments

* Remove ASLayoutValidation files that were deleted on master since this diff was created.
This commit is contained in:
Hannah Troisi
2016-09-29 00:02:47 -07:00
committed by appleguy
parent 1abc1a833c
commit 7551627b58
50 changed files with 719 additions and 723 deletions

View File

@@ -16,34 +16,34 @@
#import "ASLayoutSpecUtilities.h"
static CGFloat resolveCrossDimensionMaxForStretchChild(const ASStackLayoutSpecStyle &style,
const id<ASLayoutable>child,
const id<ASLayoutElement>child,
const CGFloat stackMax,
const CGFloat crossMax)
{
// stretched children may have a cross direction max that is smaller than the minimum size constraint of the parent.
const CGFloat computedMax = (style.direction == ASStackLayoutDirectionVertical ?
ASLayoutableSizeResolve(child.style.size, ASLayoutableParentSizeUndefined).max.width :
ASLayoutableSizeResolve(child.style.size, ASLayoutableParentSizeUndefined).max.height);
ASLayoutElementSizeResolve(child.style.size, ASLayoutElementParentSizeUndefined).max.width :
ASLayoutElementSizeResolve(child.style.size, ASLayoutElementParentSizeUndefined).max.height);
return computedMax == INFINITY ? crossMax : computedMax;
}
static CGFloat resolveCrossDimensionMinForStretchChild(const ASStackLayoutSpecStyle &style,
const id<ASLayoutable>child,
const id<ASLayoutElement>child,
const CGFloat stackMax,
const CGFloat crossMin)
{
// stretched children will have a cross dimension of at least crossMin, unless they explicitly define a child size
// that is smaller than the constraint of the parent.
return (style.direction == ASStackLayoutDirectionVertical ?
ASLayoutableSizeResolve(child.style.size, ASLayoutableParentSizeUndefined).min.width :
ASLayoutableSizeResolve(child.style.size, ASLayoutableParentSizeUndefined).min.height) ?: crossMin;
ASLayoutElementSizeResolve(child.style.size, ASLayoutElementParentSizeUndefined).min.width :
ASLayoutElementSizeResolve(child.style.size, ASLayoutElementParentSizeUndefined).min.height) ?: crossMin;
}
/**
Sizes the child given the parameters specified, and returns the computed layout.
*/
static ASLayout *crossChildLayout(const id<ASLayoutable> child,
static ASLayout *crossChildLayout(const id<ASLayoutElement> child,
const ASStackLayoutSpecStyle style,
const CGFloat stackMin,
const CGFloat stackMax,
@@ -60,7 +60,7 @@ static ASLayout *crossChildLayout(const id<ASLayoutable> child,
const ASSizeRange childSizeRange = directionSizeRange(style.direction, stackMin, stackMax, childCrossMin, childCrossMax);
ASLayout *layout = [child layoutThatFits:childSizeRange parentSize:size];
ASDisplayNodeCAssertNotNil(layout, @"ASLayout returned from measureWithSizeRange: must not be nil: %@", child);
return layout ? : [ASLayout layoutWithLayoutable:child size:{0, 0}];
return layout ? : [ASLayout layoutWithLayoutElement:child size:{0, 0}];
}
/**
@@ -207,7 +207,7 @@ static std::function<CGFloat(const ASStackUnpositionedItem &, BOOL)> flexAdjustm
}
}
ASDISPLAYNODE_INLINE BOOL isFlexibleInBothDirections(id<ASLayoutable> child)
ASDISPLAYNODE_INLINE BOOL isFlexibleInBothDirections(id<ASLayoutElement> child)
{
return child.style.flexGrow > 0 && child.style.flexShrink > 0;
}
@@ -222,7 +222,7 @@ static void layoutFlexibleChildrenAtZeroSize(std::vector<ASStackUnpositionedItem
const CGSize size)
{
for (ASStackUnpositionedItem &item : items) {
const id<ASLayoutable> child = item.child;
const id<ASLayoutElement> child = item.child;
if (isFlexibleInBothDirections(child)) {
item.layout = crossChildLayout(child,
style,
@@ -257,7 +257,7 @@ static CGFloat computeStackDimensionSum(const std::vector<ASStackUnpositionedIte
// Start from default spacing between each child:
children.empty() ? 0 : style.spacing * (children.size() - 1),
[&](CGFloat x, const ASStackUnpositionedItem &l) {
const id<ASLayoutable> child = l.child;
const id<ASLayoutElement> child = l.child;
return x + child.style.spacingBefore + child.style.spacingAfter;
});
@@ -318,7 +318,7 @@ static CGFloat computeViolation(const CGFloat stackDimensionSum,
If we have a single flexible (both shrinkable and growable) child, and our allowed size range is set to a specific
number then we may avoid the first "intrinsic" size calculation.
*/
ASDISPLAYNODE_INLINE BOOL useOptimizedFlexing(const std::vector<id<ASLayoutable>> &children,
ASDISPLAYNODE_INLINE BOOL useOptimizedFlexing(const std::vector<id<ASLayoutElement>> &children,
const ASStackLayoutSpecStyle &style,
const ASSizeRange &sizeRange)
{
@@ -389,7 +389,7 @@ static void flexChildrenAlongStackDimension(std::vector<ASStackUnpositionedItem>
Performs the first unconstrained layout of the children, generating the unpositioned items that are then flexed and
stretched.
*/
static std::vector<ASStackUnpositionedItem> layoutChildrenAlongUnconstrainedStackDimension(const std::vector<id<ASLayoutable>> &children,
static std::vector<ASStackUnpositionedItem> layoutChildrenAlongUnconstrainedStackDimension(const std::vector<id<ASLayoutElement>> &children,
const ASStackLayoutSpecStyle &style,
const ASSizeRange &sizeRange,
const CGSize size,
@@ -397,9 +397,9 @@ static std::vector<ASStackUnpositionedItem> layoutChildrenAlongUnconstrainedStac
{
const CGFloat minCrossDimension = crossDimension(style.direction, sizeRange.min);
const CGFloat maxCrossDimension = crossDimension(style.direction, sizeRange.max);
return AS::map(children, [&](id<ASLayoutable> child) -> ASStackUnpositionedItem {
return AS::map(children, [&](id<ASLayoutElement> child) -> ASStackUnpositionedItem {
if (useOptimizedFlexing && isFlexibleInBothDirections(child)) {
return { child, [ASLayout layoutWithLayoutable:child size:{0, 0}] };
return { child, [ASLayout layoutWithLayoutElement:child size:{0, 0}] };
} else {
return {
child,
@@ -415,15 +415,15 @@ static std::vector<ASStackUnpositionedItem> layoutChildrenAlongUnconstrainedStac
});
}
ASStackUnpositionedLayout ASStackUnpositionedLayout::compute(const std::vector<id<ASLayoutable>> &children,
ASStackUnpositionedLayout ASStackUnpositionedLayout::compute(const std::vector<id<ASLayoutElement>> &children,
const ASStackLayoutSpecStyle &style,
const ASSizeRange &sizeRange)
{
// If we have a fixed size in either dimension, pass it to children so they can resolve percentages against it.
// Otherwise, we pass ASLayoutableParentDimensionUndefined since it will depend on the content.
// Otherwise, we pass ASLayoutElementParentDimensionUndefined since it will depend on the content.
const CGSize size = {
(sizeRange.min.width == sizeRange.max.width) ? sizeRange.min.width : ASLayoutableParentDimensionUndefined,
(sizeRange.min.height == sizeRange.max.height) ? sizeRange.min.height : ASLayoutableParentDimensionUndefined,
(sizeRange.min.width == sizeRange.max.width) ? sizeRange.min.width : ASLayoutElementParentDimensionUndefined,
(sizeRange.min.height == sizeRange.max.height) ? sizeRange.min.height : ASLayoutElementParentDimensionUndefined,
};
// We may be able to avoid some redundant layout passes