mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
[ASLayout] General Layout Cleanup (#2920)
* Remove duplicate import * Move `ASLayoutController` related code out of CoreGraphics+ASConvenience * Further cleanup * Move private layout files to Privat/Layout * Move ASLayoutElementStylePrivate into Private/Layout * Further cleanup * Move tvOS related files to tvOS folder * Further cleanup
This commit is contained in:
committed by
GitHub
parent
9a5f6d3ece
commit
d9be4783e5
129
AsyncDisplayKit/Private/Layout/ASStackLayoutSpecUtilities.h
Normal file
129
AsyncDisplayKit/Private/Layout/ASStackLayoutSpecUtilities.h
Normal file
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// 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;
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user