[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:
Michael Schneider
2017-01-24 11:54:05 -08:00
committed by GitHub
parent 9a5f6d3ece
commit d9be4783e5
43 changed files with 229 additions and 199 deletions

View File

@@ -11,7 +11,6 @@
//
#import <AsyncDisplayKit/ASCollectionNode.h>
#import <AsyncDisplayKit/ASDataController.h>
@class ASPagerNode;
@class ASPagerFlowLayout;

View File

@@ -13,6 +13,20 @@
NS_ASSUME_NONNULL_BEGIN
ASDISPLAYNODE_EXTERN_C_BEGIN
FOUNDATION_EXPORT ASRangeTuningParameters const ASRangeTuningParametersZero;
FOUNDATION_EXPORT BOOL ASRangeTuningParametersEqualToRangeTuningParameters(ASRangeTuningParameters lhs, ASRangeTuningParameters rhs);
FOUNDATION_EXPORT ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferHorizontal(ASScrollDirection scrollDirection, ASRangeTuningParameters rangeTuningParameters);
FOUNDATION_EXPORT ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferVertical(ASScrollDirection scrollDirection, ASRangeTuningParameters rangeTuningParameters);
FOUNDATION_EXPORT CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect, ASRangeTuningParameters tuningParameters, ASScrollDirection scrollableDirections, ASScrollDirection scrollDirection);
ASDISPLAYNODE_EXTERN_C_END
@interface ASAbstractLayoutController : NSObject <ASLayoutController>
@end

View File

@@ -9,7 +9,9 @@
//
#import "ASAbstractLayoutController.h"
#import "ASAssert.h"
#include <vector>
extern ASRangeTuningParameters const ASRangeTuningParametersZero = {};
@@ -19,6 +21,68 @@ extern BOOL ASRangeTuningParametersEqualToRangeTuningParameters(ASRangeTuningPar
return lhs.leadingBufferScreenfuls == rhs.leadingBufferScreenfuls && lhs.trailingBufferScreenfuls == rhs.trailingBufferScreenfuls;
}
extern ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferHorizontal(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters)
{
ASDirectionalScreenfulBuffer horizontalBuffer = {0, 0};
BOOL movingRight = ASScrollDirectionContainsRight(scrollDirection);
horizontalBuffer.positiveDirection = movingRight ? rangeTuningParameters.leadingBufferScreenfuls
: rangeTuningParameters.trailingBufferScreenfuls;
horizontalBuffer.negativeDirection = movingRight ? rangeTuningParameters.trailingBufferScreenfuls
: rangeTuningParameters.leadingBufferScreenfuls;
return horizontalBuffer;
}
extern ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferVertical(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters)
{
ASDirectionalScreenfulBuffer verticalBuffer = {0, 0};
BOOL movingDown = ASScrollDirectionContainsDown(scrollDirection);
verticalBuffer.positiveDirection = movingDown ? rangeTuningParameters.leadingBufferScreenfuls
: rangeTuningParameters.trailingBufferScreenfuls;
verticalBuffer.negativeDirection = movingDown ? rangeTuningParameters.trailingBufferScreenfuls
: rangeTuningParameters.leadingBufferScreenfuls;
return verticalBuffer;
}
extern CGRect CGRectExpandHorizontally(CGRect rect, ASDirectionalScreenfulBuffer buffer)
{
CGFloat negativeDirectionWidth = buffer.negativeDirection * rect.size.width;
CGFloat positiveDirectionWidth = buffer.positiveDirection * rect.size.width;
rect.size.width = negativeDirectionWidth + rect.size.width + positiveDirectionWidth;
rect.origin.x -= negativeDirectionWidth;
return rect;
}
extern CGRect CGRectExpandVertically(CGRect rect, ASDirectionalScreenfulBuffer buffer)
{
CGFloat negativeDirectionHeight = buffer.negativeDirection * rect.size.height;
CGFloat positiveDirectionHeight = buffer.positiveDirection * rect.size.height;
rect.size.height = negativeDirectionHeight + rect.size.height + positiveDirectionHeight;
rect.origin.y -= negativeDirectionHeight;
return rect;
}
extern CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect, ASRangeTuningParameters tuningParameters,
ASScrollDirection scrollableDirections, ASScrollDirection scrollDirection)
{
// Can scroll horizontally - expand the range appropriately
if (ASScrollDirectionContainsHorizontalDirection(scrollableDirections)) {
ASDirectionalScreenfulBuffer horizontalBuffer = ASDirectionalScreenfulBufferHorizontal(scrollDirection, tuningParameters);
rect = CGRectExpandHorizontally(rect, horizontalBuffer);
}
// Can scroll vertically - expand the range appropriately
if (ASScrollDirectionContainsVerticalDirection(scrollableDirections)) {
ASDirectionalScreenfulBuffer verticalBuffer = ASDirectionalScreenfulBufferVertical(scrollDirection, tuningParameters);
rect = CGRectExpandVertically(rect, verticalBuffer);
}
return rect;
}
@interface ASAbstractLayoutController () {
std::vector<std::vector<ASRangeTuningParameters>> _tuningParameters;
CGSize _viewportSize;

View File

@@ -10,7 +10,7 @@
#pragma once
#include "ASCollectionViewLayoutInspector.h"
#import "ASCollectionViewLayoutInspector.h"
NS_ASSUME_NONNULL_BEGIN

View File

@@ -18,14 +18,20 @@ NS_ASSUME_NONNULL_BEGIN
@class ASCellNode;
ASDISPLAYNODE_EXTERN_C_BEGIN
typedef struct {
CGFloat leadingBufferScreenfuls;
CGFloat trailingBufferScreenfuls;
} ASRangeTuningParameters;
FOUNDATION_EXPORT ASRangeTuningParameters const ASRangeTuningParametersZero;
struct ASDirectionalScreenfulBuffer {
CGFloat positiveDirection; // Positive relative to iOS Core Animation layer coordinate space.
CGFloat negativeDirection;
};
typedef struct ASDirectionalScreenfulBuffer ASDirectionalScreenfulBuffer;
FOUNDATION_EXPORT BOOL ASRangeTuningParametersEqualToRangeTuningParameters(ASRangeTuningParameters lhs, ASRangeTuningParameters rhs);
ASDISPLAYNODE_EXTERN_C_END
@protocol ASLayoutController <NSObject>

View File

@@ -9,10 +9,9 @@
//
#import <Foundation/Foundation.h>
#import <CoreGraphics/CGAffineTransform.h>
#import "ASBaseDefines.h"
#include <CoreGraphics/CGAffineTransform.h>
#import <AsyncDisplayKit/ASBaseDefines.h>
NS_ASSUME_NONNULL_BEGIN

View File

@@ -9,11 +9,12 @@
//
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import "ASBaseDefines.h"
#import "ASLayoutController.h"
#include "tgmath.h"
#import <CoreGraphics/CoreGraphics.h>
#import <tgmath.h>
#import <AsyncDisplayKit/ASBaseDefines.h>
#ifndef CGFLOAT_EPSILON
#if CGFLOAT_IS_DOUBLE
@@ -50,23 +51,6 @@ ASDISPLAYNODE_INLINE BOOL CGSizeEqualToSizeWithIn(CGSize size1, CGSize size2, CG
return fabs(size1.width - size2.width) < delta && fabs(size1.height - size2.height) < delta;
};
struct ASDirectionalScreenfulBuffer {
CGFloat positiveDirection; // Positive relative to iOS Core Animation layer coordinate space.
CGFloat negativeDirection;
};
typedef struct ASDirectionalScreenfulBuffer ASDirectionalScreenfulBuffer;
ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferHorizontal(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters);
ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferVertical(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters);
CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect,
ASRangeTuningParameters tuningParameters,
ASScrollDirection scrollableDirections,
ASScrollDirection scrollDirection);
ASDISPLAYNODE_EXTERN_C_END
NS_ASSUME_NONNULL_END

View File

@@ -10,65 +10,3 @@
#import "CoreGraphics+ASConvenience.h"
ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferHorizontal(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters)
{
ASDirectionalScreenfulBuffer horizontalBuffer = {0, 0};
BOOL movingRight = ASScrollDirectionContainsRight(scrollDirection);
horizontalBuffer.positiveDirection = movingRight ? rangeTuningParameters.leadingBufferScreenfuls
: rangeTuningParameters.trailingBufferScreenfuls;
horizontalBuffer.negativeDirection = movingRight ? rangeTuningParameters.trailingBufferScreenfuls
: rangeTuningParameters.leadingBufferScreenfuls;
return horizontalBuffer;
}
ASDirectionalScreenfulBuffer ASDirectionalScreenfulBufferVertical(ASScrollDirection scrollDirection,
ASRangeTuningParameters rangeTuningParameters)
{
ASDirectionalScreenfulBuffer verticalBuffer = {0, 0};
BOOL movingDown = ASScrollDirectionContainsDown(scrollDirection);
verticalBuffer.positiveDirection = movingDown ? rangeTuningParameters.leadingBufferScreenfuls
: rangeTuningParameters.trailingBufferScreenfuls;
verticalBuffer.negativeDirection = movingDown ? rangeTuningParameters.trailingBufferScreenfuls
: rangeTuningParameters.leadingBufferScreenfuls;
return verticalBuffer;
}
CGRect CGRectExpandHorizontally(CGRect rect, ASDirectionalScreenfulBuffer buffer)
{
CGFloat negativeDirectionWidth = buffer.negativeDirection * rect.size.width;
CGFloat positiveDirectionWidth = buffer.positiveDirection * rect.size.width;
rect.size.width = negativeDirectionWidth + rect.size.width + positiveDirectionWidth;
rect.origin.x -= negativeDirectionWidth;
return rect;
}
CGRect CGRectExpandVertically(CGRect rect, ASDirectionalScreenfulBuffer buffer)
{
CGFloat negativeDirectionHeight = buffer.negativeDirection * rect.size.height;
CGFloat positiveDirectionHeight = buffer.positiveDirection * rect.size.height;
rect.size.height = negativeDirectionHeight + rect.size.height + positiveDirectionHeight;
rect.origin.y -= negativeDirectionHeight;
return rect;
}
CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect, ASRangeTuningParameters tuningParameters,
ASScrollDirection scrollableDirections, ASScrollDirection scrollDirection)
{
// Can scroll horizontally - expand the range appropriately
if (ASScrollDirectionContainsHorizontalDirection(scrollableDirections)) {
ASDirectionalScreenfulBuffer horizontalBuffer = ASDirectionalScreenfulBufferHorizontal(scrollDirection, tuningParameters);
rect = CGRectExpandHorizontally(rect, horizontalBuffer);
}
// Can scroll vertically - expand the range appropriately
if (ASScrollDirectionContainsVerticalDirection(scrollableDirections)) {
ASDirectionalScreenfulBuffer verticalBuffer = ASDirectionalScreenfulBufferVertical(scrollDirection, tuningParameters);
rect = CGRectExpandVertically(rect, verticalBuffer);
}
return rect;
}

View File

@@ -9,7 +9,9 @@
//
#import "ASBackgroundLayoutSpec.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
static NSUInteger const kForegroundChildIndex = 0;

View File

@@ -10,6 +10,7 @@
#pragma once
#import <UIKit/UIKit.h>
#import <AsyncDisplayKit/ASBaseDefines.h>
#import <AsyncDisplayKit/ASAssert.h>

View File

@@ -9,9 +9,11 @@
//
#import "ASDimension.h"
#import "ASAssert.h"
#import "CoreGraphics+ASConvenience.h"
#import "ASAssert.h"
#pragma mark - ASDimension
ASDimension const ASDimensionAuto = {ASDimensionUnitAuto, 0};

View File

@@ -9,8 +9,10 @@
//
#import "ASInsetLayoutSpec.h"
#import "ASAssert.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
#import "ASInternalHelpers.h"
@interface ASInsetLayoutSpec ()

View File

@@ -11,9 +11,11 @@
#pragma once
#import <UIKit/UIKit.h>
#import <AsyncDisplayKit/ASAssert.h>
#import <AsyncDisplayKit/ASLayoutElement.h>
#import <AsyncDisplayKit/ASDimension.h>
#import <AsyncDisplayKit/ASLayoutElement.h>
#import <AsyncDisplayKit/ASAssert.h>
NS_ASSUME_NONNULL_BEGIN

View File

@@ -8,12 +8,13 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import <queue>
#import "ASDimension.h"
#import "ASInternalHelpers.h"
#import "ASLayoutSpecUtilities.h"
#import "ASLayoutSpec+Subclasses.h"
#import <queue>
#import "ASInternalHelpers.h"
#import "ASObjectDescriptionHelpers.h"
CGPoint const CGPointNull = {NAN, NAN};

View File

@@ -8,13 +8,14 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import <AsyncDisplayKit/ASLayoutElementPrivate.h>
#import <AsyncDisplayKit/ASLayoutElementExtensibility.h>
#import <AsyncDisplayKit/ASDimensionInternal.h>
#import <AsyncDisplayKit/ASStackLayoutDefines.h>
#import <AsyncDisplayKit/ASStackLayoutElement.h>
#import <AsyncDisplayKit/ASAbsoluteLayoutElement.h>
#import <AsyncDisplayKit/ASLayoutElementPrivate.h>
#import <AsyncDisplayKit/ASEnvironment.h>
#import <AsyncDisplayKit/ASLayoutElementExtensibility.h>
@class ASLayout;
@class ASLayoutSpec;

View File

@@ -7,6 +7,7 @@
//
#import "ASLayoutSpec+Subclasses.h"
#import "ASLayoutSpec.h"
#import "ASLayoutSpecPrivate.h"

View File

@@ -10,10 +10,12 @@
#import "ASLayoutSpec.h"
#import "ASLayoutSpecPrivate.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASLayoutElementStylePrivate.h"
#import "ASLayoutSpec+Debug.h"
#import "ASLayoutElementStylePrivate.h"
#import <objc/runtime.h>
#import <map>
#import <vector>

View File

@@ -10,9 +10,7 @@
#import "ASOverlayLayoutSpec.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
#import "ASLayoutSpec+Subclasses.h"
static NSUInteger const kUnderlayChildIndex = 0;
static NSUInteger const kOverlayChildIndex = 1;

View File

@@ -9,6 +9,7 @@
//
#import <AsyncDisplayKit/ASLayoutSpec.h>
#import <AsyncDisplayKit/ASLayoutElement.h>
NS_ASSUME_NONNULL_BEGIN

View File

@@ -14,11 +14,11 @@
#import <tgmath.h>
#import <vector>
#import "ASAssert.h"
#import "ASInternalHelpers.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
#import "ASInternalHelpers.h"
#pragma mark - ASRatioLayoutSpec
@implementation ASRatioLayoutSpec

View File

@@ -12,9 +12,10 @@
#import "ASRelativeLayoutSpec.h"
#import "ASInternalHelpers.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASInternalHelpers.h"
@implementation ASRelativeLayoutSpec
- (instancetype)initWithHorizontalPosition:(ASRelativeLayoutSpecPosition)horizontalPosition verticalPosition:(ASRelativeLayoutSpecPosition)verticalPosition sizingOption:(ASRelativeLayoutSpecSizingOption)sizingOption child:(id<ASLayoutElement>)child

View File

@@ -8,8 +8,9 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import "ASDimension.h"
#import "ASStackLayoutDefines.h"
#import <AsyncDisplayKit/ASDimension.h>
#import <AsyncDisplayKit/ASStackLayoutDefines.h>
NS_ASSUME_NONNULL_BEGIN

View File

@@ -8,18 +8,20 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import "ASStackLayoutSpec.h"
#import <numeric>
#import <vector>
#import "ASStackLayoutSpec.h"
#import "ASDimension.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASLayoutElement.h"
#import "ASLayoutElementStylePrivate.h"
#import "ASLayoutSpecUtilities.h"
#import "ASStackPositionedLayout.h"
#import "ASStackUnpositionedLayout.h"
#import "ASInternalHelpers.h"
#import "ASThread.h"
@implementation ASStackLayoutSpec

View File

@@ -10,7 +10,7 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#include "ASDisplayNodeLayout.h"
#import "ASDisplayNodeLayout.h"
BOOL ASDisplayNodeLayout::isDirty()
{

View File

@@ -8,10 +8,9 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import <UIKit/UIKit.h>
#import <AsyncDisplayKit/ASBaseDefines.h>
#include <UIKit/UIKit.h>
ASDISPLAYNODE_EXTERN_C_BEGIN

View File

@@ -9,6 +9,7 @@
//
#import "ASImageNode+CGExtras.h"
#import <tgmath.h>
// TODO rewrite these to be closer to the intended use -- take UIViewContentMode as param, CGRect destinationBounds, CGSize sourceSize.

View File

@@ -9,13 +9,13 @@
//
#import "ASInternalHelpers.h"
#import "ASRunLoopQueue.h"
#import <objc/runtime.h>
#import "ASThread.h"
#import <tgmath.h>
#import "ASRunLoopQueue.h"
#import "ASThread.h"
BOOL ASSubclassOverridesSelector(Class superclass, Class subclass, SEL selector)
{
if (superclass == subclass) return NO; // Even if the class implements the selector, it doesn't override itself.

View File

@@ -11,16 +11,17 @@
//
#import "ASLayoutTransition.h"
#import "ASLayout.h"
#import "ASThread.h"
#import "ASDisplayNode+Beta.h"
#import "ASDisplayNode+Beta.h"
#import "NSArray+Diffing.h"
#import "ASLayout.h"
#import "ASDisplayNodeInternal.h" // Required for _insertSubnode... / _removeFromSupernode.
#import <queue>
#import <memory>
#import "NSArray+Diffing.h"
#import "ASThread.h"
#import "ASEqualityHelpers.h"
/**

View File

@@ -12,8 +12,9 @@
#import "ASInternalHelpers.h"
#import "ASEnvironmentInternal.h"
#import "ASThread.h"
#import "ASEnvironmentInternal.h"
NS_ASSUME_NONNULL_BEGIN

View File

@@ -8,13 +8,13 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import <UIKit/UIKit.h>
#import <algorithm>
#import <functional>
#import <type_traits>
#import <vector>
#import <UIKit/UIKit.h>
namespace AS {
// adopted from http://stackoverflow.com/questions/14945223/map-function-with-c11-constructs
// Takes an iterable, applies a function to every element,

View File

@@ -11,7 +11,6 @@
//
#import "UIImage+ASConvenience.h"
#import <UIKit/UIKit.h>
#import "ASInternalHelpers.h"
#import "ASAssert.h"