[ASLayout] Improve ASLayout (#2404)

* Add internal header for ASLayout and change position to readonly publicly

* Don't copy sublayouts during tree filtering

* Revert "Don't copy sublayouts during tree filtering"

This reverts commit 6b0d54d5ffe5bb3941ec13696c9c45b0098b6ba1.
This commit is contained in:
Michael Schneider
2016-10-18 08:36:38 -07:00
committed by Adlai Holler
parent 093653b507
commit d407663e3f
14 changed files with 42 additions and 11 deletions

View File

@@ -196,6 +196,7 @@
68FC85EA1CE29C7D00EDD713 /* ASVisibilityProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 68FC85E71CE29C7D00EDD713 /* ASVisibilityProtocols.h */; settings = {ATTRIBUTES = (Public, ); }; };
68FC85EB1CE29C7D00EDD713 /* ASVisibilityProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = 68FC85E81CE29C7D00EDD713 /* ASVisibilityProtocols.m */; };
68FC85EC1CE29C7D00EDD713 /* ASVisibilityProtocols.m in Sources */ = {isa = PBXBuildFile; fileRef = 68FC85E81CE29C7D00EDD713 /* ASVisibilityProtocols.m */; };
690457F71DB5131A00B5EE68 /* ASLayoutPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 690457F61DB5131A00B5EE68 /* ASLayoutPrivate.h */; };
6959433E1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
6959433F1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
695943401D70815300B0EE1F /* ASDisplayNodeLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 6959433D1D70815300B0EE1F /* ASDisplayNodeLayout.h */; };
@@ -978,6 +979,7 @@
68FC85E11CE29B7E00EDD713 /* ASTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASTabBarController.m; sourceTree = "<group>"; };
68FC85E71CE29C7D00EDD713 /* ASVisibilityProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASVisibilityProtocols.h; sourceTree = "<group>"; };
68FC85E81CE29C7D00EDD713 /* ASVisibilityProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASVisibilityProtocols.m; sourceTree = "<group>"; };
690457F61DB5131A00B5EE68 /* ASLayoutPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASLayoutPrivate.h; path = AsyncDisplayKit/Layout/ASLayoutPrivate.h; sourceTree = "<group>"; };
6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASDisplayNodeLayout.mm; sourceTree = "<group>"; };
6959433D1D70815300B0EE1F /* ASDisplayNodeLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDisplayNodeLayout.h; sourceTree = "<group>"; };
696FCB301D6E46050093471E /* ASBackgroundLayoutSpecSnapshotTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASBackgroundLayoutSpecSnapshotTests.mm; sourceTree = "<group>"; };
@@ -1108,8 +1110,8 @@
BDC2D162BD55A807C1475DA5 /* Pods-AsyncDisplayKitTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AsyncDisplayKitTests.profile.xcconfig"; path = "Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests.profile.xcconfig"; sourceTree = "<group>"; };
CC051F1E1D7A286A006434CB /* ASCALayerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASCALayerTests.m; sourceTree = "<group>"; };
CC0AEEA31D66316E005D1C78 /* ASUICollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASUICollectionViewTests.m; sourceTree = "<group>"; };
CC2E317F1DAC353700EEE891 /* ASCollectionView+Undeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASCollectionView+Undeprecated.h"; sourceTree = "<group>"; };
CC11F9791DB181180024D77B /* ASNetworkImageNodeTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASNetworkImageNodeTests.m; sourceTree = "<group>"; };
CC2E317F1DAC353700EEE891 /* ASCollectionView+Undeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASCollectionView+Undeprecated.h"; sourceTree = "<group>"; };
CC3B20811C3F76D600798563 /* ASPendingStateController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASPendingStateController.h; sourceTree = "<group>"; };
CC3B20821C3F76D600798563 /* ASPendingStateController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASPendingStateController.mm; sourceTree = "<group>"; };
CC3B20871C3F7A5400798563 /* ASWeakSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASWeakSet.h; sourceTree = "<group>"; };
@@ -1710,6 +1712,7 @@
9C49C36E1B853957000B0DD5 /* ASStackLayoutElement.h */,
ACF6ED161B17843500DA7C62 /* ASStackLayoutSpec.h */,
ACF6ED171B17843500DA7C62 /* ASStackLayoutSpec.mm */,
690457F61DB5131A00B5EE68 /* ASLayoutPrivate.h */,
);
name = Layout;
path = ..;
@@ -1759,6 +1762,7 @@
9C70F20D1CDBE9CB007D6C76 /* ASDefaultPlayButton.h in Headers */,
68355B411CB57A6C001D4E68 /* ASImageContainerProtocolCategories.h in Headers */,
7630FFA81C9E267E007A7C0E /* ASVideoNode.h in Headers */,
690457F71DB5131A00B5EE68 /* ASLayoutPrivate.h in Headers */,
B350623F1B010EFD0018CF92 /* _ASAsyncTransactionContainer.h in Headers */,
B13CA1011C52004900E031AB /* ASCollectionNode+Beta.h in Headers */,
254C6B7E1BF94DF4003EC431 /* ASTextKitTailTruncater.h in Headers */,

View File

@@ -30,7 +30,7 @@
#import "ASLayoutElementStylePrivate.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
#import "ASLayoutSpec.h"
#import "ASCellNode+Internal.h"
#import "ASWeakProxy.h"

View File

@@ -11,7 +11,7 @@
#import "ASAbsoluteLayoutSpec.h"
#import "ASLayoutSpecUtilities.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
#import "ASLayoutElementStylePrivate.h"
@implementation ASAbsoluteLayoutSpec

View File

@@ -12,7 +12,7 @@
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
static NSUInteger const kForegroundChildIndex = 0;
static NSUInteger const kBackgroundChildIndex = 1;

View File

@@ -13,7 +13,7 @@
#import "ASAssert.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
@interface ASInsetLayoutSpec ()
{

View File

@@ -65,7 +65,7 @@ ASDISPLAYNODE_EXTERN_C_END
*
* @discussion When being used as a sublayout, this property must not equal CGPointNull.
*/
@property (nonatomic, assign, readwrite) CGPoint position;
@property (nonatomic, assign, readonly) CGPoint position;
/**
* Array of ASLayouts. Each must have a valid non-null position.

View File

@@ -8,7 +8,7 @@
// of patent rights can be found in the PATENTS file in the same directory.
//
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
#import "ASDimension.h"
#import "ASInternalHelpers.h"

View File

@@ -0,0 +1,25 @@
//
// ASLayoutPrivate.h
// AsyncDisplayKit
//
// Created by Michael Schneider on 10/17/16.
// Copyright © 2016 Facebook. All rights reserved.
//
#pragma once
#import "ASLayout.h"
/**
* Private header of ASLayout for internal usage in the framework
*/
@interface ASLayout ()
/**
* Position in parent. Default to CGPointNull.
*
* @discussion When being used as a sublayout, this property must not equal CGPointNull.
*/
@property (nonatomic, assign, readwrite) CGPoint position;
@end

View File

@@ -11,7 +11,7 @@
#import "ASLayoutSpec.h"
#import "ASLayoutSpecPrivate.h"
#import "ASLayoutSpec+Subclasses.h"
#import "ASLayoutPrivate.h"
#import "ASLayoutElementStylePrivate.h"
@implementation ASLayoutSpec

View File

@@ -12,7 +12,7 @@
#import "ASLayoutSpec+Subclasses.h"
#import "ASAssert.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
static NSUInteger const kUnderlayChildIndex = 0;
static NSUInteger const kOverlayChildIndex = 1;

View File

@@ -17,7 +17,7 @@
#import "ASAssert.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
@implementation ASRatioLayoutSpec
{

View File

@@ -13,7 +13,7 @@
#import "ASRelativeLayoutSpec.h"
#import "ASInternalHelpers.h"
#import "ASLayout.h"
#import "ASLayoutPrivate.h"
@implementation ASRelativeLayoutSpec

View File

@@ -11,6 +11,7 @@
#import "ASStackBaselinePositionedLayout.h"
#import "ASLayoutSpecUtilities.h"
#import "ASLayoutPrivate.h"
static CGFloat baselineForItem(const ASStackLayoutSpecStyle &style,
const ASLayout *layout) {

View File

@@ -14,6 +14,7 @@
#import "ASInternalHelpers.h"
#import "ASLayoutSpecUtilities.h"
#import "ASLayoutPrivate.h"
static CGFloat crossOffset(const ASStackLayoutSpecStyle &style,
const ASStackUnpositionedItem &l,