Swiftgram/AsyncDisplayKit/Private/ASStackLayoutSpecUtilities.h
Hannah Troisi c857e809f4 Clean up header comments (for consistent Facebook licensing info) (#1741)
[Licensing] Clean up header comments (for consistent Facebook licensing info)
2016-06-11 23:31:39 -07:00

131 lines
4.4 KiB
Objective-C

//
// ASStackLayoutSpecUtilities.h
// AsyncDisplayKit
//
// Copyright (c) 2014-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.
//
#import "ASStackLayoutSpec.h"
typedef struct {
ASStackLayoutDirection direction;
CGFloat spacing;
ASStackLayoutJustifyContent justifyContent;
ASStackLayoutAlignItems alignItems;
BOOL baselineRelativeArrangement;
} ASStackLayoutSpecStyle;
inline CGFloat stackDimension(const ASStackLayoutDirection direction, const CGSize size)
{
return (direction == ASStackLayoutDirectionVertical) ? size.height : size.width;
}
inline CGFloat crossDimension(const ASStackLayoutDirection direction, const CGSize size)
{
return (direction == ASStackLayoutDirectionVertical) ? size.width : size.height;
}
inline BOOL compareCrossDimension(const ASStackLayoutDirection direction, const CGSize a, const CGSize b)
{
return crossDimension(direction, a) < crossDimension(direction, b);
}
inline CGPoint directionPoint(const ASStackLayoutDirection direction, const CGFloat stack, const CGFloat cross)
{
return (direction == ASStackLayoutDirectionVertical) ? CGPointMake(cross, stack) : CGPointMake(stack, cross);
}
inline CGSize directionSize(const ASStackLayoutDirection direction, const CGFloat stack, const CGFloat cross)
{
return (direction == ASStackLayoutDirectionVertical) ? CGSizeMake(cross, stack) : CGSizeMake(stack, cross);
}
inline ASSizeRange directionSizeRange(const ASStackLayoutDirection direction,
const CGFloat stackMin,
const CGFloat stackMax,
const CGFloat crossMin,
const CGFloat crossMax)
{
return {directionSize(direction, stackMin, crossMin), directionSize(direction, stackMax, crossMax)};
}
inline ASStackLayoutAlignItems alignment(ASStackLayoutAlignSelf childAlignment, ASStackLayoutAlignItems stackAlignment)
{
switch (childAlignment) {
case ASStackLayoutAlignSelfCenter:
return ASStackLayoutAlignItemsCenter;
case ASStackLayoutAlignSelfEnd:
return ASStackLayoutAlignItemsEnd;
case ASStackLayoutAlignSelfStart:
return ASStackLayoutAlignItemsStart;
case ASStackLayoutAlignSelfStretch:
return ASStackLayoutAlignItemsStretch;
case ASStackLayoutAlignSelfAuto:
default:
return stackAlignment;
}
}
inline ASStackLayoutAlignItems alignment(ASHorizontalAlignment alignment, ASStackLayoutAlignItems defaultAlignment)
{
switch (alignment) {
case ASHorizontalAlignmentLeft:
return ASStackLayoutAlignItemsStart;
case ASHorizontalAlignmentMiddle:
return ASStackLayoutAlignItemsCenter;
case ASHorizontalAlignmentRight:
return ASStackLayoutAlignItemsEnd;
case ASHorizontalAlignmentNone:
default:
return defaultAlignment;
}
}
inline ASStackLayoutAlignItems alignment(ASVerticalAlignment alignment, ASStackLayoutAlignItems defaultAlignment)
{
switch (alignment) {
case ASVerticalAlignmentTop:
return ASStackLayoutAlignItemsStart;
case ASVerticalAlignmentCenter:
return ASStackLayoutAlignItemsCenter;
case ASVerticalAlignmentBottom:
return ASStackLayoutAlignItemsEnd;
case ASVerticalAlignmentNone:
default:
return defaultAlignment;
}
}
inline ASStackLayoutJustifyContent justifyContent(ASHorizontalAlignment alignment, ASStackLayoutJustifyContent defaultJustifyContent)
{
switch (alignment) {
case ASHorizontalAlignmentLeft:
return ASStackLayoutJustifyContentStart;
case ASHorizontalAlignmentMiddle:
return ASStackLayoutJustifyContentCenter;
case ASHorizontalAlignmentRight:
return ASStackLayoutJustifyContentEnd;
case ASHorizontalAlignmentNone:
default:
return defaultJustifyContent;
}
}
inline ASStackLayoutJustifyContent justifyContent(ASVerticalAlignment alignment, ASStackLayoutJustifyContent defaultJustifyContent)
{
switch (alignment) {
case ASVerticalAlignmentTop:
return ASStackLayoutJustifyContentStart;
case ASVerticalAlignmentCenter:
return ASStackLayoutJustifyContentCenter;
case ASVerticalAlignmentBottom:
return ASStackLayoutJustifyContentEnd;
case ASVerticalAlignmentNone:
default:
return defaultJustifyContent;
}
}