mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-11 08:50:24 +00:00
[ASDimension] Simplify header file to focus on the most essential types for app developers. (#2794)
* First round of cleanups for ASDimension.mm/h * Add ASDimensionDeprecated and ASDimensionInternal to Copy Files build phase
This commit is contained in:
parent
c85aa11dbb
commit
cdf7f70747
@ -203,8 +203,16 @@
|
|||||||
6907C2581DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6907C2561DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
6907C2581DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6907C2561DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
6907C2591DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */; };
|
6907C2591DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */; };
|
||||||
6907C25A1DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */; };
|
6907C25A1DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */; };
|
||||||
|
690C35611E055C5D00069B91 /* ASDimensionInternal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 690C35601E055C5D00069B91 /* ASDimensionInternal.mm */; };
|
||||||
|
690C35621E055C5D00069B91 /* ASDimensionInternal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 690C35601E055C5D00069B91 /* ASDimensionInternal.mm */; };
|
||||||
|
690C35641E055C7B00069B91 /* ASDimensionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 690C35631E055C7B00069B91 /* ASDimensionInternal.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
690C35661E0567C600069B91 /* ASDimensionDeprecated.mm in Sources */ = {isa = PBXBuildFile; fileRef = 690C35651E0567C600069B91 /* ASDimensionDeprecated.mm */; };
|
||||||
|
690C35671E0567C600069B91 /* ASDimensionDeprecated.mm in Sources */ = {isa = PBXBuildFile; fileRef = 690C35651E0567C600069B91 /* ASDimensionDeprecated.mm */; };
|
||||||
|
690C356B1E05680300069B91 /* ASDimensionDeprecated.h in Headers */ = {isa = PBXBuildFile; fileRef = 690C356A1E05680300069B91 /* ASDimensionDeprecated.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
69127CFE1DD2B387004BF6E2 /* ASEventLog.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 696F01EA1DD2AF450049FBD5 /* ASEventLog.h */; };
|
69127CFE1DD2B387004BF6E2 /* ASEventLog.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 696F01EA1DD2AF450049FBD5 /* ASEventLog.h */; };
|
||||||
693117CE1DC7C72700DE4784 /* ASDisplayNode+Deprecated.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 683489271D70DE3400327501 /* ASDisplayNode+Deprecated.h */; };
|
693117CE1DC7C72700DE4784 /* ASDisplayNode+Deprecated.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 683489271D70DE3400327501 /* ASDisplayNode+Deprecated.h */; };
|
||||||
|
693DA50F1E2536A600F66DF4 /* ASDimensionInternal.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 690C35631E055C7B00069B91 /* ASDimensionInternal.h */; };
|
||||||
|
693DA5141E25373100F66DF4 /* ASDimensionDeprecated.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 690C356A1E05680300069B91 /* ASDimensionDeprecated.h */; };
|
||||||
69527B121DC84292004785FB /* ASLayoutElementStylePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 69527B111DC84292004785FB /* ASLayoutElementStylePrivate.h */; };
|
69527B121DC84292004785FB /* ASLayoutElementStylePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 69527B111DC84292004785FB /* ASLayoutElementStylePrivate.h */; };
|
||||||
6959433E1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
|
6959433E1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
|
||||||
6959433F1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
|
6959433F1D70815300B0EE1F /* ASDisplayNodeLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */; };
|
||||||
@ -673,6 +681,8 @@
|
|||||||
dstPath = "include/$(PRODUCT_NAME)";
|
dstPath = "include/$(PRODUCT_NAME)";
|
||||||
dstSubfolderSpec = 16;
|
dstSubfolderSpec = 16;
|
||||||
files = (
|
files = (
|
||||||
|
693DA5141E25373100F66DF4 /* ASDimensionDeprecated.h in CopyFiles */,
|
||||||
|
693DA50F1E2536A600F66DF4 /* ASDimensionInternal.h in CopyFiles */,
|
||||||
68C2155C1DE11AA80019C4BC /* ASObjectDescriptionHelpers.h in CopyFiles */,
|
68C2155C1DE11AA80019C4BC /* ASObjectDescriptionHelpers.h in CopyFiles */,
|
||||||
68C2155B1DE11A790019C4BC /* ASCollectionViewLayoutInspector.h in CopyFiles */,
|
68C2155B1DE11A790019C4BC /* ASCollectionViewLayoutInspector.h in CopyFiles */,
|
||||||
DEB8ED7E1DD007F400DBDE55 /* ASLayoutElementInspectorNode.h in CopyFiles */,
|
DEB8ED7E1DD007F400DBDE55 /* ASLayoutElementInspectorNode.h in CopyFiles */,
|
||||||
@ -1003,6 +1013,10 @@
|
|||||||
68FC85E81CE29C7D00EDD713 /* ASVisibilityProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASVisibilityProtocols.m; sourceTree = "<group>"; };
|
68FC85E81CE29C7D00EDD713 /* ASVisibilityProtocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASVisibilityProtocols.m; sourceTree = "<group>"; };
|
||||||
6907C2561DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASObjectDescriptionHelpers.h; sourceTree = "<group>"; };
|
6907C2561DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASObjectDescriptionHelpers.h; sourceTree = "<group>"; };
|
||||||
6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASObjectDescriptionHelpers.m; sourceTree = "<group>"; };
|
6907C2571DC4ECFE00374C66 /* ASObjectDescriptionHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASObjectDescriptionHelpers.m; sourceTree = "<group>"; };
|
||||||
|
690C35601E055C5D00069B91 /* ASDimensionInternal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASDimensionInternal.mm; path = AsyncDisplayKit/Layout/ASDimensionInternal.mm; sourceTree = "<group>"; };
|
||||||
|
690C35631E055C7B00069B91 /* ASDimensionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASDimensionInternal.h; path = AsyncDisplayKit/Layout/ASDimensionInternal.h; sourceTree = "<group>"; };
|
||||||
|
690C35651E0567C600069B91 /* ASDimensionDeprecated.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASDimensionDeprecated.mm; path = AsyncDisplayKit/Layout/ASDimensionDeprecated.mm; sourceTree = "<group>"; };
|
||||||
|
690C356A1E05680300069B91 /* ASDimensionDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASDimensionDeprecated.h; path = AsyncDisplayKit/Layout/ASDimensionDeprecated.h; sourceTree = "<group>"; };
|
||||||
69527B111DC84292004785FB /* ASLayoutElementStylePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASLayoutElementStylePrivate.h; path = AsyncDisplayKit/Layout/ASLayoutElementStylePrivate.h; sourceTree = SOURCE_ROOT; };
|
69527B111DC84292004785FB /* ASLayoutElementStylePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASLayoutElementStylePrivate.h; path = AsyncDisplayKit/Layout/ASLayoutElementStylePrivate.h; sourceTree = SOURCE_ROOT; };
|
||||||
6959433C1D70815300B0EE1F /* ASDisplayNodeLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASDisplayNodeLayout.mm; 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>"; };
|
6959433D1D70815300B0EE1F /* ASDisplayNodeLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDisplayNodeLayout.h; sourceTree = "<group>"; };
|
||||||
@ -1731,6 +1745,10 @@
|
|||||||
ACF6ED041B17843500DA7C62 /* ASCenterLayoutSpec.mm */,
|
ACF6ED041B17843500DA7C62 /* ASCenterLayoutSpec.mm */,
|
||||||
ACF6ED071B17843500DA7C62 /* ASDimension.h */,
|
ACF6ED071B17843500DA7C62 /* ASDimension.h */,
|
||||||
ACF6ED081B17843500DA7C62 /* ASDimension.mm */,
|
ACF6ED081B17843500DA7C62 /* ASDimension.mm */,
|
||||||
|
690C356A1E05680300069B91 /* ASDimensionDeprecated.h */,
|
||||||
|
690C35651E0567C600069B91 /* ASDimensionDeprecated.mm */,
|
||||||
|
690C35631E055C7B00069B91 /* ASDimensionInternal.h */,
|
||||||
|
690C35601E055C5D00069B91 /* ASDimensionInternal.mm */,
|
||||||
ACF6ED091B17843500DA7C62 /* ASInsetLayoutSpec.h */,
|
ACF6ED091B17843500DA7C62 /* ASInsetLayoutSpec.h */,
|
||||||
ACF6ED0A1B17843500DA7C62 /* ASInsetLayoutSpec.mm */,
|
ACF6ED0A1B17843500DA7C62 /* ASInsetLayoutSpec.mm */,
|
||||||
ACF6ED0B1B17843500DA7C62 /* ASLayout.h */,
|
ACF6ED0B1B17843500DA7C62 /* ASLayout.h */,
|
||||||
@ -1808,6 +1826,8 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
696F01EC1DD2AF450049FBD5 /* ASEventLog.h in Headers */,
|
696F01EC1DD2AF450049FBD5 /* ASEventLog.h in Headers */,
|
||||||
|
690C35641E055C7B00069B91 /* ASDimensionInternal.h in Headers */,
|
||||||
|
690C356B1E05680300069B91 /* ASDimensionDeprecated.h in Headers */,
|
||||||
683489281D70DE3400327501 /* ASDisplayNode+Deprecated.h in Headers */,
|
683489281D70DE3400327501 /* ASDisplayNode+Deprecated.h in Headers */,
|
||||||
6907C2581DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h in Headers */,
|
6907C2581DC4ECFE00374C66 /* ASObjectDescriptionHelpers.h in Headers */,
|
||||||
69E0E8A71D356C9400627613 /* ASEqualityHelpers.h in Headers */,
|
69E0E8A71D356C9400627613 /* ASEqualityHelpers.h in Headers */,
|
||||||
@ -2192,6 +2212,7 @@
|
|||||||
8B0768B41CE752EC002E1453 /* ASDefaultPlaybackButton.m in Sources */,
|
8B0768B41CE752EC002E1453 /* ASDefaultPlaybackButton.m in Sources */,
|
||||||
E55D86321CA8A14000A0C26F /* ASLayoutElement.mm in Sources */,
|
E55D86321CA8A14000A0C26F /* ASLayoutElement.mm in Sources */,
|
||||||
68FC85E41CE29B7E00EDD713 /* ASTabBarController.m in Sources */,
|
68FC85E41CE29B7E00EDD713 /* ASTabBarController.m in Sources */,
|
||||||
|
690C35661E0567C600069B91 /* ASDimensionDeprecated.mm in Sources */,
|
||||||
058D0A23195D050800B7D73C /* _ASAsyncTransactionContainer.m in Sources */,
|
058D0A23195D050800B7D73C /* _ASAsyncTransactionContainer.m in Sources */,
|
||||||
058D0A24195D050800B7D73C /* _ASAsyncTransactionGroup.m in Sources */,
|
058D0A24195D050800B7D73C /* _ASAsyncTransactionGroup.m in Sources */,
|
||||||
68355B3A1CB57A5A001D4E68 /* ASPINRemoteImageDownloader.m in Sources */,
|
68355B3A1CB57A5A001D4E68 /* ASPINRemoteImageDownloader.m in Sources */,
|
||||||
@ -2296,6 +2317,7 @@
|
|||||||
92074A691CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
92074A691CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
||||||
ACF6ED321B17843500DA7C62 /* ASAbsoluteLayoutSpec.mm in Sources */,
|
ACF6ED321B17843500DA7C62 /* ASAbsoluteLayoutSpec.mm in Sources */,
|
||||||
AC026B6B1BD57D6F00BBC17E /* ASChangeSetDataController.mm in Sources */,
|
AC026B6B1BD57D6F00BBC17E /* ASChangeSetDataController.mm in Sources */,
|
||||||
|
690C35611E055C5D00069B91 /* ASDimensionInternal.mm in Sources */,
|
||||||
68355B311CB5799E001D4E68 /* ASImageNode+AnimatedImage.mm in Sources */,
|
68355B311CB5799E001D4E68 /* ASImageNode+AnimatedImage.mm in Sources */,
|
||||||
68C215591DE10D330019C4BC /* ASCollectionViewLayoutInspector.m in Sources */,
|
68C215591DE10D330019C4BC /* ASCollectionViewLayoutInspector.m in Sources */,
|
||||||
9CFFC6C01CCAC73C006A6476 /* ASViewController.mm in Sources */,
|
9CFFC6C01CCAC73C006A6476 /* ASViewController.mm in Sources */,
|
||||||
@ -2383,6 +2405,7 @@
|
|||||||
9C70F2091CDABA36007D6C76 /* ASViewController.mm in Sources */,
|
9C70F2091CDABA36007D6C76 /* ASViewController.mm in Sources */,
|
||||||
8BBBAB8D1CEBAF1E00107FC6 /* ASDefaultPlaybackButton.m in Sources */,
|
8BBBAB8D1CEBAF1E00107FC6 /* ASDefaultPlaybackButton.m in Sources */,
|
||||||
B30BF6541C59D889004FCD53 /* ASLayoutManager.m in Sources */,
|
B30BF6541C59D889004FCD53 /* ASLayoutManager.m in Sources */,
|
||||||
|
690C35671E0567C600069B91 /* ASDimensionDeprecated.mm in Sources */,
|
||||||
92DD2FE71BF4D0850074C9DD /* ASMapNode.mm in Sources */,
|
92DD2FE71BF4D0850074C9DD /* ASMapNode.mm in Sources */,
|
||||||
636EA1A51C7FF4EF00EE152F /* ASDefaultPlayButton.m in Sources */,
|
636EA1A51C7FF4EF00EE152F /* ASDefaultPlayButton.m in Sources */,
|
||||||
9B92C8861BC2EB7600EE46B2 /* ASCollectionViewFlowLayoutInspector.m in Sources */,
|
9B92C8861BC2EB7600EE46B2 /* ASCollectionViewFlowLayoutInspector.m in Sources */,
|
||||||
@ -2487,6 +2510,7 @@
|
|||||||
AC026B6C1BD57D6F00BBC17E /* ASChangeSetDataController.mm in Sources */,
|
AC026B6C1BD57D6F00BBC17E /* ASChangeSetDataController.mm in Sources */,
|
||||||
34EFC7741B701D0A00AD841F /* ASAbsoluteLayoutSpec.mm in Sources */,
|
34EFC7741B701D0A00AD841F /* ASAbsoluteLayoutSpec.mm in Sources */,
|
||||||
92074A6A1CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
92074A6A1CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
||||||
|
690C35621E055C5D00069B91 /* ASDimensionInternal.mm in Sources */,
|
||||||
68C2155A1DE10D330019C4BC /* ASCollectionViewLayoutInspector.m in Sources */,
|
68C2155A1DE10D330019C4BC /* ASCollectionViewLayoutInspector.m in Sources */,
|
||||||
DB78412E1C6BCE1600A9E2B4 /* _ASTransitionContext.m in Sources */,
|
DB78412E1C6BCE1600A9E2B4 /* _ASTransitionContext.m in Sources */,
|
||||||
B350620B1B010EFD0018CF92 /* ASTableView.mm in Sources */,
|
B350620B1B010EFD0018CF92 /* ASTableView.mm in Sources */,
|
||||||
|
|||||||
@ -48,6 +48,8 @@
|
|||||||
|
|
||||||
#import <AsyncDisplayKit/ASLayout.h>
|
#import <AsyncDisplayKit/ASLayout.h>
|
||||||
#import <AsyncDisplayKit/ASDimension.h>
|
#import <AsyncDisplayKit/ASDimension.h>
|
||||||
|
#import <AsyncDisplayKit/ASDimensionInternal.h>
|
||||||
|
#import <AsyncDisplayKit/ASDimensionDeprecated.h>
|
||||||
#import <AsyncDisplayKit/ASEnvironment.h>
|
#import <AsyncDisplayKit/ASEnvironment.h>
|
||||||
#import <AsyncDisplayKit/ASLayoutElement.h>
|
#import <AsyncDisplayKit/ASLayoutElement.h>
|
||||||
#import <AsyncDisplayKit/ASLayoutSpec.h>
|
#import <AsyncDisplayKit/ASLayoutSpec.h>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import <AsyncDisplayKit/ASBaseDefines.h>
|
#import <AsyncDisplayKit/ASBaseDefines.h>
|
||||||
#import <AsyncDisplayKit/ASDimension.h>
|
#import <AsyncDisplayKit/ASDimensionDeprecated.h>
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,11 @@
|
|||||||
#import <AsyncDisplayKit/ASBaseDefines.h>
|
#import <AsyncDisplayKit/ASBaseDefines.h>
|
||||||
#import <AsyncDisplayKit/ASAssert.h>
|
#import <AsyncDisplayKit/ASAssert.h>
|
||||||
|
|
||||||
|
ASDISPLAYNODE_EXTERN_C_BEGIN
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
|
||||||
ASDISPLAYNODE_INLINE BOOL AS_WARN_UNUSED_RESULT ASPointsValidForLayout(CGFloat points)
|
ASDISPLAYNODE_INLINE BOOL AS_WARN_UNUSED_RESULT ASPointsValidForLayout(CGFloat points)
|
||||||
{
|
{
|
||||||
return ((isnormal(points) || points == 0.0) && points >= 0.0 && points < (CGFLOAT_MAX / 2.0));
|
return ((isnormal(points) || points == 0.0) && points >= 0.0 && points < (CGFLOAT_MAX / 2.0));
|
||||||
@ -33,6 +38,8 @@ ASDISPLAYNODE_INLINE BOOL AS_WARN_UNUSED_RESULT ASIsCGSizeValidForSize(CGSize si
|
|||||||
return (ASPointsValidForSize(size.width) && ASPointsValidForSize(size.height));
|
return (ASPointsValidForSize(size.width) && ASPointsValidForSize(size.height));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - ASDimension
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A dimension relative to constraints to be provided in the future.
|
* A dimension relative to constraints to be provided in the future.
|
||||||
* A ASDimension can be one of three types:
|
* A ASDimension can be one of three types:
|
||||||
@ -58,42 +65,10 @@ typedef struct {
|
|||||||
} ASDimension;
|
} ASDimension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Expresses an inclusive range of sizes. Used to provide a simple constraint to layout.
|
* Represents auto as ASDimension
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
|
||||||
CGSize min;
|
|
||||||
CGSize max;
|
|
||||||
} ASSizeRange;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A struct specifying a ASLayoutElement's size. Example:
|
|
||||||
*
|
|
||||||
* ASLayoutElementSize size = (ASLayoutElementSize){
|
|
||||||
* .width = ASDimensionMakeWithFraction(0.25),
|
|
||||||
* .maxWidth = ASDimensionMakeWithPoints(200),
|
|
||||||
* .minHeight = ASDimensionMakeWithFraction(0.50)
|
|
||||||
* };
|
|
||||||
*
|
|
||||||
* Description: <ASLayoutElementSize: exact={25%, Auto}, min={Auto, 50%}, max={200pt, Auto}>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
ASDimension width;
|
|
||||||
ASDimension height;
|
|
||||||
ASDimension minWidth;
|
|
||||||
ASDimension maxWidth;
|
|
||||||
ASDimension minHeight;
|
|
||||||
ASDimension maxHeight;
|
|
||||||
} ASLayoutElementSize;
|
|
||||||
|
|
||||||
extern ASDimension const ASDimensionAuto;
|
extern ASDimension const ASDimensionAuto;
|
||||||
|
|
||||||
ASDISPLAYNODE_EXTERN_C_BEGIN
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASDimension
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a dimension with the specified type and value.
|
* Returns a dimension with the specified type and value.
|
||||||
*/
|
*/
|
||||||
@ -173,15 +148,6 @@ ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT CGFloat ASDimensionResolve(ASDimensio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - NSNumber+ASDimension
|
|
||||||
|
|
||||||
@interface NSNumber (ASDimension)
|
|
||||||
@property (nonatomic, readonly) ASDimension as_pointDimension;
|
|
||||||
@property (nonatomic, readonly) ASDimension as_fractionDimension;
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASLayoutSize
|
#pragma mark - ASLayoutSize
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,6 +171,15 @@ ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASLayoutSize ASLayoutSizeMake(ASDimen
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve this relative size relative to a parent size.
|
||||||
|
*/
|
||||||
|
ASDISPLAYNODE_INLINE CGSize ASLayoutSizeResolveSize(ASLayoutSize layoutSize, CGSize parentSize, CGSize autoSize)
|
||||||
|
{
|
||||||
|
return CGSizeMake(ASDimensionResolve(layoutSize.width, parentSize.width, autoSize.width),
|
||||||
|
ASDimensionResolve(layoutSize.height, parentSize.height, autoSize.height));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a string representation of a relative size.
|
* Returns a string representation of a relative size.
|
||||||
*/
|
*/
|
||||||
@ -217,6 +192,14 @@ ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT NSString *NSStringFromASLayoutSize(AS
|
|||||||
|
|
||||||
#pragma mark - ASSizeRange
|
#pragma mark - ASSizeRange
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expresses an inclusive range of sizes. Used to provide a simple constraint to layout.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
CGSize min;
|
||||||
|
CGSize max;
|
||||||
|
} ASSizeRange;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an ASSizeRange with provided min and max size.
|
* Creates an ASSizeRange with provided min and max size.
|
||||||
*/
|
*/
|
||||||
@ -272,149 +255,5 @@ ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT BOOL ASSizeRangeEqualToSizeRange(ASSi
|
|||||||
*/
|
*/
|
||||||
extern AS_WARN_UNUSED_RESULT NSString *NSStringFromASSizeRange(ASSizeRange sizeRange);
|
extern AS_WARN_UNUSED_RESULT NSString *NSStringFromASSizeRange(ASSizeRange sizeRange);
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASLayoutElementSize
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an ASLayoutElementSize with default values.
|
|
||||||
*/
|
|
||||||
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASLayoutElementSize ASLayoutElementSizeMake()
|
|
||||||
{
|
|
||||||
return (ASLayoutElementSize){
|
|
||||||
.width = ASDimensionAuto,
|
|
||||||
.height = ASDimensionAuto,
|
|
||||||
.minWidth = ASDimensionAuto,
|
|
||||||
.maxWidth = ASDimensionAuto,
|
|
||||||
.minHeight = ASDimensionAuto,
|
|
||||||
.maxHeight = ASDimensionAuto
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an ASLayoutElementSize with the specified CGSize values as width and height.
|
|
||||||
*/
|
|
||||||
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASLayoutElementSize ASLayoutElementSizeMakeFromCGSize(CGSize size)
|
|
||||||
{
|
|
||||||
ASLayoutElementSize s = ASLayoutElementSizeMake();
|
|
||||||
s.width = ASDimensionMakeWithPoints(size.width);
|
|
||||||
s.height = ASDimensionMakeWithPoints(size.height);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether two sizes are equal.
|
|
||||||
*/
|
|
||||||
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT BOOL ASLayoutElementSizeEqualToLayoutElementSize(ASLayoutElementSize lhs, ASLayoutElementSize rhs)
|
|
||||||
{
|
|
||||||
return (ASDimensionEqualToDimension(lhs.width, rhs.width)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.height, rhs.height)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.minWidth, rhs.minWidth)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.maxWidth, rhs.maxWidth)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.minHeight, rhs.minHeight)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.maxHeight, rhs.maxHeight));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string formatted to contain the data from an ASLayoutElementSize.
|
|
||||||
*/
|
|
||||||
extern AS_WARN_UNUSED_RESULT NSString *NSStringFromASLayoutElementSize(ASLayoutElementSize size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolve the given size relative to a parent size and an auto size.
|
|
||||||
* From the given size uses width, height to resolve the exact size constraint, uses the minHeight and minWidth to
|
|
||||||
* resolve the min size constraint and the maxHeight and maxWidth to resolve the max size constraint. For every
|
|
||||||
* dimension with unit ASDimensionUnitAuto the given autoASSizeRange value will be used.
|
|
||||||
* Based on the calculated exact, min and max size constraints the final size range will be calculated.
|
|
||||||
*/
|
|
||||||
extern AS_WARN_UNUSED_RESULT ASSizeRange ASLayoutElementSizeResolveAutoSize(ASLayoutElementSize size, const CGSize parentSize, ASSizeRange autoASSizeRange);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolve the given size to a parent size. Uses internally ASLayoutElementSizeResolveAutoSize with {INFINITY, INFINITY} as
|
|
||||||
* as autoASSizeRange. For more information look at ASLayoutElementSizeResolveAutoSize.
|
|
||||||
*/
|
|
||||||
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASSizeRange ASLayoutElementSizeResolve(ASLayoutElementSize size, const CGSize parentSize)
|
|
||||||
{
|
|
||||||
return ASLayoutElementSizeResolveAutoSize(size, parentSize, ASSizeRangeMake(CGSizeZero, CGSizeMake(INFINITY, INFINITY)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Deprecated
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A dimension relative to constraints to be provided in the future.
|
|
||||||
* A ASDimension can be one of three types:
|
|
||||||
*
|
|
||||||
* "Auto" - This indicated "I have no opinion" and may be resolved in whatever way makes most sense given the circumstances.
|
|
||||||
*
|
|
||||||
* "Points" - Just a number. It will always resolve to exactly this amount.
|
|
||||||
*
|
|
||||||
* "Percent" - Multiplied to a provided parent amount to resolve a final amount.
|
|
||||||
*/
|
|
||||||
typedef NS_ENUM(NSInteger, ASRelativeDimensionType) {
|
|
||||||
/** This indicates "I have no opinion" and may be resolved in whatever way makes most sense given the circumstances. */
|
|
||||||
ASRelativeDimensionTypeAuto,
|
|
||||||
/** Just a number. It will always resolve to exactly this amount. This is the default type. */
|
|
||||||
ASRelativeDimensionTypePoints,
|
|
||||||
/** Multiplied to a provided parent amount to resolve a final amount. */
|
|
||||||
ASRelativeDimensionTypeFraction,
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ASRelativeDimension ASDimension
|
|
||||||
#define ASRelativeSize ASLayoutSize
|
|
||||||
#define ASRelativeDimensionMakeWithPoints ASDimensionMakeWithPoints
|
|
||||||
#define ASRelativeDimensionMakeWithFraction ASDimensionMakeWithFraction
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function is deprecated. Use ASSizeRangeMake instead.
|
|
||||||
*/
|
|
||||||
extern AS_WARN_UNUSED_RESULT ASSizeRange ASSizeRangeMakeExactSize(CGSize size) ASDISPLAYNODE_DEPRECATED_MSG("Use ASSizeRangeMake instead.");
|
|
||||||
|
|
||||||
/**
|
|
||||||
Expresses an inclusive range of relative sizes. Used to provide additional constraint to layout.
|
|
||||||
Used by ASStaticLayoutSpec.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
ASLayoutSize min;
|
|
||||||
ASLayoutSize max;
|
|
||||||
} ASRelativeSizeRange;
|
|
||||||
|
|
||||||
extern ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained;
|
|
||||||
|
|
||||||
#pragma mark - ASRelativeDimension
|
|
||||||
|
|
||||||
extern ASDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
#pragma mark - ASRelativeSize
|
|
||||||
|
|
||||||
extern ASLayoutSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
/** Convenience constructor to provide size in points. */
|
|
||||||
extern ASLayoutSize ASRelativeSizeMakeWithCGSize(CGSize size) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
/** Convenience constructor to provide size as a fraction. */
|
|
||||||
extern ASLayoutSize ASRelativeSizeMakeWithFraction(CGFloat fraction) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern BOOL ASRelativeSizeEqualToRelativeSize(ASLayoutSize lhs, ASLayoutSize rhs) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern NSString *NSStringFromASRelativeSize(ASLayoutSize size) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
#pragma mark - ASRelativeSizeRange
|
|
||||||
|
|
||||||
extern ASRelativeSizeRange ASRelativeSizeRangeMake(ASLayoutSize min, ASLayoutSize max) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
#pragma mark Convenience constructors to provide an exact size (min == max).
|
|
||||||
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeSize(ASLayoutSize exact) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactFraction(CGFloat fraction) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
extern BOOL ASRelativeSizeRangeEqualToRelativeSizeRange(ASRelativeSizeRange lhs, ASRelativeSizeRange rhs) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
/** Provided a parent size, compute final dimensions for this RelativeSizeRange to arrive at a SizeRange. */
|
|
||||||
extern ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange, CGSize parentSize) ASDISPLAYNODE_DEPRECATED;
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
ASDISPLAYNODE_EXTERN_C_END
|
ASDISPLAYNODE_EXTERN_C_END
|
||||||
|
|||||||
@ -52,91 +52,10 @@ NSString *NSStringFromASDimension(ASDimension dimension)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - NSNumber+ASDimension
|
|
||||||
|
|
||||||
@implementation NSNumber (ASDimension)
|
|
||||||
|
|
||||||
- (ASDimension)as_pointDimension
|
|
||||||
{
|
|
||||||
return ASDimensionMake(ASDimensionUnitPoints, ASCGFloatFromNumber(self));
|
|
||||||
}
|
|
||||||
|
|
||||||
- (ASDimension)as_fractionDimension
|
|
||||||
{
|
|
||||||
return ASDimensionMake(ASDimensionUnitFraction, ASCGFloatFromNumber(self));
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASLayoutSize
|
#pragma mark - ASLayoutSize
|
||||||
|
|
||||||
ASLayoutSize const ASLayoutSizeAuto = {ASDimensionAuto, ASDimensionAuto};
|
ASLayoutSize const ASLayoutSizeAuto = {ASDimensionAuto, ASDimensionAuto};
|
||||||
|
|
||||||
// ** Resolve this relative size relative to a parent size. */
|
|
||||||
ASDISPLAYNODE_INLINE CGSize ASLayoutSizeResolveSize(ASLayoutSize layoutSize, CGSize parentSize, CGSize autoSize)
|
|
||||||
{
|
|
||||||
return CGSizeMake(ASDimensionResolve(layoutSize.width, parentSize.width, autoSize.width),
|
|
||||||
ASDimensionResolve(layoutSize.height, parentSize.height, autoSize.height));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASLayoutElementSize
|
|
||||||
|
|
||||||
NSString *NSStringFromASLayoutElementSize(ASLayoutElementSize size)
|
|
||||||
{
|
|
||||||
return [NSString stringWithFormat:
|
|
||||||
@"<ASLayoutElementSize: exact=%@, min=%@, max=%@>",
|
|
||||||
NSStringFromASLayoutSize(ASLayoutSizeMake(size.width, size.height)),
|
|
||||||
NSStringFromASLayoutSize(ASLayoutSizeMake(size.minWidth, size.minHeight)),
|
|
||||||
NSStringFromASLayoutSize(ASLayoutSizeMake(size.maxWidth, size.maxHeight))];
|
|
||||||
}
|
|
||||||
|
|
||||||
ASDISPLAYNODE_INLINE void ASLayoutElementSizeConstrain(CGFloat minVal, CGFloat exactVal, CGFloat maxVal, CGFloat *outMin, CGFloat *outMax)
|
|
||||||
{
|
|
||||||
NSCAssert(!isnan(minVal), @"minVal must not be NaN");
|
|
||||||
NSCAssert(!isnan(maxVal), @"maxVal must not be NaN");
|
|
||||||
// Avoid use of min/max primitives since they're harder to reason
|
|
||||||
// about in the presence of NaN (in exactVal)
|
|
||||||
// Follow CSS: min overrides max overrides exact.
|
|
||||||
|
|
||||||
// Begin with the min/max range
|
|
||||||
*outMin = minVal;
|
|
||||||
*outMax = maxVal;
|
|
||||||
if (maxVal <= minVal) {
|
|
||||||
// min overrides max and exactVal is irrelevant
|
|
||||||
*outMax = minVal;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (isnan(exactVal)) {
|
|
||||||
// no exact value, so leave as a min/max range
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (exactVal > maxVal) {
|
|
||||||
// clip to max value
|
|
||||||
*outMin = maxVal;
|
|
||||||
} else if (exactVal < minVal) {
|
|
||||||
// clip to min value
|
|
||||||
*outMax = minVal;
|
|
||||||
} else {
|
|
||||||
// use exact value
|
|
||||||
*outMin = *outMax = exactVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSizeRange ASLayoutElementSizeResolveAutoSize(ASLayoutElementSize size, const CGSize parentSize, ASSizeRange autoASSizeRange)
|
|
||||||
{
|
|
||||||
CGSize resolvedExact = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.width, size.height), parentSize, {NAN, NAN});
|
|
||||||
CGSize resolvedMin = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.minWidth, size.minHeight), parentSize, autoASSizeRange.min);
|
|
||||||
CGSize resolvedMax = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.maxWidth, size.maxHeight), parentSize, autoASSizeRange.max);
|
|
||||||
|
|
||||||
CGSize rangeMin, rangeMax;
|
|
||||||
ASLayoutElementSizeConstrain(resolvedMin.width, resolvedExact.width, resolvedMax.width, &rangeMin.width, &rangeMax.width);
|
|
||||||
ASLayoutElementSizeConstrain(resolvedMin.height, resolvedExact.height, resolvedMax.height, &rangeMin.height, &rangeMax.height);
|
|
||||||
return {rangeMin, rangeMax};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASSizeRange
|
#pragma mark - ASSizeRange
|
||||||
|
|
||||||
@ -178,90 +97,3 @@ NSString *NSStringFromASSizeRange(ASSizeRange sizeRange)
|
|||||||
NSStringFromCGSize(sizeRange.min),
|
NSStringFromCGSize(sizeRange.min),
|
||||||
NSStringFromCGSize(sizeRange.max)];
|
NSStringFromCGSize(sizeRange.max)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Deprecated
|
|
||||||
|
|
||||||
ASDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value)
|
|
||||||
{
|
|
||||||
if (type == ASRelativeDimensionTypePoints) {
|
|
||||||
return ASDimensionMakeWithPoints(value);
|
|
||||||
} else if (type == ASRelativeDimensionTypeFraction) {
|
|
||||||
return ASDimensionMakeWithFraction(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASDisplayNodeCAssert(NO, @"ASRelativeDimensionMake does not support the given ASRelativeDimensionType");
|
|
||||||
return ASDimensionMakeWithPoints(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSizeRange ASSizeRangeMakeExactSize(CGSize size)
|
|
||||||
{
|
|
||||||
return ASSizeRangeMake(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained = {};
|
|
||||||
|
|
||||||
#pragma mark - ASRelativeSize
|
|
||||||
|
|
||||||
ASLayoutSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height)
|
|
||||||
{
|
|
||||||
return ASLayoutSizeMake(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASLayoutSize ASRelativeSizeMakeWithCGSize(CGSize size)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeMake(ASRelativeDimensionMakeWithPoints(size.width),
|
|
||||||
ASRelativeDimensionMakeWithPoints(size.height));
|
|
||||||
}
|
|
||||||
|
|
||||||
ASLayoutSize ASRelativeSizeMakeWithFraction(CGFloat fraction)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeMake(ASRelativeDimensionMakeWithFraction(fraction),
|
|
||||||
ASRelativeDimensionMakeWithFraction(fraction));
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL ASRelativeSizeEqualToRelativeSize(ASLayoutSize lhs, ASLayoutSize rhs)
|
|
||||||
{
|
|
||||||
return ASDimensionEqualToDimension(lhs.width, rhs.width)
|
|
||||||
&& ASDimensionEqualToDimension(lhs.height, rhs.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - ASRelativeSizeRange
|
|
||||||
|
|
||||||
ASRelativeSizeRange ASRelativeSizeRangeMake(ASLayoutSize min, ASLayoutSize max)
|
|
||||||
{
|
|
||||||
ASRelativeSizeRange sizeRange; sizeRange.min = min; sizeRange.max = max; return sizeRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeSize(ASLayoutSize exact)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeRangeMake(exact, exact);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithCGSize(exact));
|
|
||||||
}
|
|
||||||
|
|
||||||
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactFraction(CGFloat fraction)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithFraction(fraction));
|
|
||||||
}
|
|
||||||
|
|
||||||
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMake(exactWidth, exactHeight));
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL ASRelativeSizeRangeEqualToRelativeSizeRange(ASRelativeSizeRange lhs, ASRelativeSizeRange rhs)
|
|
||||||
{
|
|
||||||
return ASRelativeSizeEqualToRelativeSize(lhs.min, rhs.min) && ASRelativeSizeEqualToRelativeSize(lhs.max, rhs.max);
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange,
|
|
||||||
CGSize parentSize)
|
|
||||||
{
|
|
||||||
return ASSizeRangeMake(ASLayoutSizeResolveSize(relativeSizeRange.min, parentSize, parentSize),
|
|
||||||
ASLayoutSizeResolveSize(relativeSizeRange.max, parentSize, parentSize));
|
|
||||||
}
|
|
||||||
|
|||||||
95
AsyncDisplayKit/Layout/ASDimensionDeprecated.h
Normal file
95
AsyncDisplayKit/Layout/ASDimensionDeprecated.h
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
//
|
||||||
|
// ASDimensionDeprecated.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.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#import <AsyncDisplayKit/ASBaseDefines.h>
|
||||||
|
#import <AsyncDisplayKit/ASDimension.h>
|
||||||
|
|
||||||
|
ASDISPLAYNODE_EXTERN_C_BEGIN
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A dimension relative to constraints to be provided in the future.
|
||||||
|
* A ASDimension can be one of three types:
|
||||||
|
*
|
||||||
|
* "Auto" - This indicated "I have no opinion" and may be resolved in whatever way makes most sense given the circumstances.
|
||||||
|
*
|
||||||
|
* "Points" - Just a number. It will always resolve to exactly this amount.
|
||||||
|
*
|
||||||
|
* "Percent" - Multiplied to a provided parent amount to resolve a final amount.
|
||||||
|
*/
|
||||||
|
typedef NS_ENUM(NSInteger, ASRelativeDimensionType) {
|
||||||
|
/** This indicates "I have no opinion" and may be resolved in whatever way makes most sense given the circumstances. */
|
||||||
|
ASRelativeDimensionTypeAuto,
|
||||||
|
/** Just a number. It will always resolve to exactly this amount. This is the default type. */
|
||||||
|
ASRelativeDimensionTypePoints,
|
||||||
|
/** Multiplied to a provided parent amount to resolve a final amount. */
|
||||||
|
ASRelativeDimensionTypeFraction,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ASRelativeDimension ASDimension
|
||||||
|
#define ASRelativeSize ASLayoutSize
|
||||||
|
#define ASRelativeDimensionMakeWithPoints ASDimensionMakeWithPoints
|
||||||
|
#define ASRelativeDimensionMakeWithFraction ASDimensionMakeWithFraction
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function is deprecated. Use ASSizeRangeMake instead.
|
||||||
|
*/
|
||||||
|
extern AS_WARN_UNUSED_RESULT ASSizeRange ASSizeRangeMakeExactSize(CGSize size) ASDISPLAYNODE_DEPRECATED_MSG("Use ASSizeRangeMake instead.");
|
||||||
|
|
||||||
|
/**
|
||||||
|
Expresses an inclusive range of relative sizes. Used to provide additional constraint to layout.
|
||||||
|
Used by ASStaticLayoutSpec.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
ASLayoutSize min;
|
||||||
|
ASLayoutSize max;
|
||||||
|
} ASRelativeSizeRange;
|
||||||
|
|
||||||
|
extern ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained;
|
||||||
|
|
||||||
|
#pragma mark - ASRelativeDimension
|
||||||
|
|
||||||
|
extern ASDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
#pragma mark - ASRelativeSize
|
||||||
|
|
||||||
|
extern ASLayoutSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
/** Convenience constructor to provide size in points. */
|
||||||
|
extern ASLayoutSize ASRelativeSizeMakeWithCGSize(CGSize size) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
/** Convenience constructor to provide size as a fraction. */
|
||||||
|
extern ASLayoutSize ASRelativeSizeMakeWithFraction(CGFloat fraction) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern BOOL ASRelativeSizeEqualToRelativeSize(ASLayoutSize lhs, ASLayoutSize rhs) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern NSString *NSStringFromASRelativeSize(ASLayoutSize size) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
#pragma mark - ASRelativeSizeRange
|
||||||
|
|
||||||
|
extern ASRelativeSizeRange ASRelativeSizeRangeMake(ASLayoutSize min, ASLayoutSize max) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
#pragma mark Convenience constructors to provide an exact size (min == max).
|
||||||
|
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeSize(ASLayoutSize exact) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactFraction(CGFloat fraction) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
extern BOOL ASRelativeSizeRangeEqualToRelativeSizeRange(ASRelativeSizeRange lhs, ASRelativeSizeRange rhs) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
/** Provided a parent size, compute final dimensions for this RelativeSizeRange to arrive at a SizeRange. */
|
||||||
|
extern ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange, CGSize parentSize) ASDISPLAYNODE_DEPRECATED;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
ASDISPLAYNODE_EXTERN_C_END
|
||||||
95
AsyncDisplayKit/Layout/ASDimensionDeprecated.mm
Normal file
95
AsyncDisplayKit/Layout/ASDimensionDeprecated.mm
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
//
|
||||||
|
// ASDimensionDeprecated.mm
|
||||||
|
// 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 "ASDimensionDeprecated.h"
|
||||||
|
|
||||||
|
ASDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value)
|
||||||
|
{
|
||||||
|
if (type == ASRelativeDimensionTypePoints) {
|
||||||
|
return ASDimensionMakeWithPoints(value);
|
||||||
|
} else if (type == ASRelativeDimensionTypeFraction) {
|
||||||
|
return ASDimensionMakeWithFraction(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASDisplayNodeCAssert(NO, @"ASRelativeDimensionMake does not support the given ASRelativeDimensionType");
|
||||||
|
return ASDimensionMakeWithPoints(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSizeRange ASSizeRangeMakeExactSize(CGSize size)
|
||||||
|
{
|
||||||
|
return ASSizeRangeMake(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained = {};
|
||||||
|
|
||||||
|
#pragma mark - ASRelativeSize
|
||||||
|
|
||||||
|
ASLayoutSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height)
|
||||||
|
{
|
||||||
|
return ASLayoutSizeMake(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASLayoutSize ASRelativeSizeMakeWithCGSize(CGSize size)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeMake(ASRelativeDimensionMakeWithPoints(size.width),
|
||||||
|
ASRelativeDimensionMakeWithPoints(size.height));
|
||||||
|
}
|
||||||
|
|
||||||
|
ASLayoutSize ASRelativeSizeMakeWithFraction(CGFloat fraction)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeMake(ASRelativeDimensionMakeWithFraction(fraction),
|
||||||
|
ASRelativeDimensionMakeWithFraction(fraction));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL ASRelativeSizeEqualToRelativeSize(ASLayoutSize lhs, ASLayoutSize rhs)
|
||||||
|
{
|
||||||
|
return ASDimensionEqualToDimension(lhs.width, rhs.width)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.height, rhs.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - ASRelativeSizeRange
|
||||||
|
|
||||||
|
ASRelativeSizeRange ASRelativeSizeRangeMake(ASLayoutSize min, ASLayoutSize max)
|
||||||
|
{
|
||||||
|
ASRelativeSizeRange sizeRange; sizeRange.min = min; sizeRange.max = max; return sizeRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeSize(ASLayoutSize exact)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeRangeMake(exact, exact);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithCGSize(exact));
|
||||||
|
}
|
||||||
|
|
||||||
|
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactFraction(CGFloat fraction)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithFraction(fraction));
|
||||||
|
}
|
||||||
|
|
||||||
|
ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMake(exactWidth, exactHeight));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL ASRelativeSizeRangeEqualToRelativeSizeRange(ASRelativeSizeRange lhs, ASRelativeSizeRange rhs)
|
||||||
|
{
|
||||||
|
return ASRelativeSizeEqualToRelativeSize(lhs.min, rhs.min) && ASRelativeSizeEqualToRelativeSize(lhs.max, rhs.max);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange,
|
||||||
|
CGSize parentSize)
|
||||||
|
{
|
||||||
|
return ASSizeRangeMake(ASLayoutSizeResolveSize(relativeSizeRange.min, parentSize, parentSize),
|
||||||
|
ASLayoutSizeResolveSize(relativeSizeRange.max, parentSize, parentSize));
|
||||||
|
}
|
||||||
105
AsyncDisplayKit/Layout/ASDimensionInternal.h
Normal file
105
AsyncDisplayKit/Layout/ASDimensionInternal.h
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
//
|
||||||
|
// ASDimensionInternal.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.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#import <AsyncDisplayKit/ASBaseDefines.h>
|
||||||
|
#import <AsyncDisplayKit/ASDimension.h>
|
||||||
|
|
||||||
|
ASDISPLAYNODE_EXTERN_C_BEGIN
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
#pragma mark - ASLayoutElementSize
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A struct specifying a ASLayoutElement's size. Example:
|
||||||
|
*
|
||||||
|
* ASLayoutElementSize size = (ASLayoutElementSize){
|
||||||
|
* .width = ASDimensionMakeWithFraction(0.25),
|
||||||
|
* .maxWidth = ASDimensionMakeWithPoints(200),
|
||||||
|
* .minHeight = ASDimensionMakeWithFraction(0.50)
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* Description: <ASLayoutElementSize: exact={25%, Auto}, min={Auto, 50%}, max={200pt, Auto}>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
ASDimension width;
|
||||||
|
ASDimension height;
|
||||||
|
ASDimension minWidth;
|
||||||
|
ASDimension maxWidth;
|
||||||
|
ASDimension minHeight;
|
||||||
|
ASDimension maxHeight;
|
||||||
|
} ASLayoutElementSize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an ASLayoutElementSize with default values.
|
||||||
|
*/
|
||||||
|
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASLayoutElementSize ASLayoutElementSizeMake()
|
||||||
|
{
|
||||||
|
return (ASLayoutElementSize){
|
||||||
|
.width = ASDimensionAuto,
|
||||||
|
.height = ASDimensionAuto,
|
||||||
|
.minWidth = ASDimensionAuto,
|
||||||
|
.maxWidth = ASDimensionAuto,
|
||||||
|
.minHeight = ASDimensionAuto,
|
||||||
|
.maxHeight = ASDimensionAuto
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an ASLayoutElementSize with the specified CGSize values as width and height.
|
||||||
|
*/
|
||||||
|
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASLayoutElementSize ASLayoutElementSizeMakeFromCGSize(CGSize size)
|
||||||
|
{
|
||||||
|
ASLayoutElementSize s = ASLayoutElementSizeMake();
|
||||||
|
s.width = ASDimensionMakeWithPoints(size.width);
|
||||||
|
s.height = ASDimensionMakeWithPoints(size.height);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether two sizes are equal.
|
||||||
|
*/
|
||||||
|
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT BOOL ASLayoutElementSizeEqualToLayoutElementSize(ASLayoutElementSize lhs, ASLayoutElementSize rhs)
|
||||||
|
{
|
||||||
|
return (ASDimensionEqualToDimension(lhs.width, rhs.width)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.height, rhs.height)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.minWidth, rhs.minWidth)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.maxWidth, rhs.maxWidth)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.minHeight, rhs.minHeight)
|
||||||
|
&& ASDimensionEqualToDimension(lhs.maxHeight, rhs.maxHeight));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string formatted to contain the data from an ASLayoutElementSize.
|
||||||
|
*/
|
||||||
|
extern AS_WARN_UNUSED_RESULT NSString *NSStringFromASLayoutElementSize(ASLayoutElementSize size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve the given size relative to a parent size and an auto size.
|
||||||
|
* From the given size uses width, height to resolve the exact size constraint, uses the minHeight and minWidth to
|
||||||
|
* resolve the min size constraint and the maxHeight and maxWidth to resolve the max size constraint. For every
|
||||||
|
* dimension with unit ASDimensionUnitAuto the given autoASSizeRange value will be used.
|
||||||
|
* Based on the calculated exact, min and max size constraints the final size range will be calculated.
|
||||||
|
*/
|
||||||
|
extern AS_WARN_UNUSED_RESULT ASSizeRange ASLayoutElementSizeResolveAutoSize(ASLayoutElementSize size, const CGSize parentSize, ASSizeRange autoASSizeRange);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve the given size to a parent size. Uses internally ASLayoutElementSizeResolveAutoSize with {INFINITY, INFINITY} as
|
||||||
|
* as autoASSizeRange. For more information look at ASLayoutElementSizeResolveAutoSize.
|
||||||
|
*/
|
||||||
|
ASDISPLAYNODE_INLINE AS_WARN_UNUSED_RESULT ASSizeRange ASLayoutElementSizeResolve(ASLayoutElementSize size, const CGSize parentSize)
|
||||||
|
{
|
||||||
|
return ASLayoutElementSizeResolveAutoSize(size, parentSize, ASSizeRangeMake(CGSizeZero, CGSizeMake(INFINITY, INFINITY)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
ASDISPLAYNODE_EXTERN_C_END
|
||||||
66
AsyncDisplayKit/Layout/ASDimensionInternal.mm
Normal file
66
AsyncDisplayKit/Layout/ASDimensionInternal.mm
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
//
|
||||||
|
// ASDimensionInternal.mm
|
||||||
|
// 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 "ASDimensionInternal.h"
|
||||||
|
|
||||||
|
#pragma mark - ASLayoutElementSize
|
||||||
|
|
||||||
|
NSString *NSStringFromASLayoutElementSize(ASLayoutElementSize size)
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:
|
||||||
|
@"<ASLayoutElementSize: exact=%@, min=%@, max=%@>",
|
||||||
|
NSStringFromASLayoutSize(ASLayoutSizeMake(size.width, size.height)),
|
||||||
|
NSStringFromASLayoutSize(ASLayoutSizeMake(size.minWidth, size.minHeight)),
|
||||||
|
NSStringFromASLayoutSize(ASLayoutSizeMake(size.maxWidth, size.maxHeight))];
|
||||||
|
}
|
||||||
|
|
||||||
|
ASDISPLAYNODE_INLINE void ASLayoutElementSizeConstrain(CGFloat minVal, CGFloat exactVal, CGFloat maxVal, CGFloat *outMin, CGFloat *outMax)
|
||||||
|
{
|
||||||
|
NSCAssert(!isnan(minVal), @"minVal must not be NaN");
|
||||||
|
NSCAssert(!isnan(maxVal), @"maxVal must not be NaN");
|
||||||
|
// Avoid use of min/max primitives since they're harder to reason
|
||||||
|
// about in the presence of NaN (in exactVal)
|
||||||
|
// Follow CSS: min overrides max overrides exact.
|
||||||
|
|
||||||
|
// Begin with the min/max range
|
||||||
|
*outMin = minVal;
|
||||||
|
*outMax = maxVal;
|
||||||
|
if (maxVal <= minVal) {
|
||||||
|
// min overrides max and exactVal is irrelevant
|
||||||
|
*outMax = minVal;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (isnan(exactVal)) {
|
||||||
|
// no exact value, so leave as a min/max range
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (exactVal > maxVal) {
|
||||||
|
// clip to max value
|
||||||
|
*outMin = maxVal;
|
||||||
|
} else if (exactVal < minVal) {
|
||||||
|
// clip to min value
|
||||||
|
*outMax = minVal;
|
||||||
|
} else {
|
||||||
|
// use exact value
|
||||||
|
*outMin = *outMax = exactVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSizeRange ASLayoutElementSizeResolveAutoSize(ASLayoutElementSize size, const CGSize parentSize, ASSizeRange autoASSizeRange)
|
||||||
|
{
|
||||||
|
CGSize resolvedExact = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.width, size.height), parentSize, {NAN, NAN});
|
||||||
|
CGSize resolvedMin = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.minWidth, size.minHeight), parentSize, autoASSizeRange.min);
|
||||||
|
CGSize resolvedMax = ASLayoutSizeResolveSize(ASLayoutSizeMake(size.maxWidth, size.maxHeight), parentSize, autoASSizeRange.max);
|
||||||
|
|
||||||
|
CGSize rangeMin, rangeMax;
|
||||||
|
ASLayoutElementSizeConstrain(resolvedMin.width, resolvedExact.width, resolvedMax.width, &rangeMin.width, &rangeMax.width);
|
||||||
|
ASLayoutElementSizeConstrain(resolvedMin.height, resolvedExact.height, resolvedMax.height, &rangeMin.height, &rangeMax.height);
|
||||||
|
return {rangeMin, rangeMax};
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
// of patent rights can be found in the PATENTS file in the same directory.
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import <AsyncDisplayKit/ASDimension.h>
|
#import <AsyncDisplayKit/ASDimensionInternal.h>
|
||||||
#import <AsyncDisplayKit/ASStackLayoutDefines.h>
|
#import <AsyncDisplayKit/ASStackLayoutDefines.h>
|
||||||
#import <AsyncDisplayKit/ASStackLayoutElement.h>
|
#import <AsyncDisplayKit/ASStackLayoutElement.h>
|
||||||
#import <AsyncDisplayKit/ASAbsoluteLayoutElement.h>
|
#import <AsyncDisplayKit/ASAbsoluteLayoutElement.h>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user