From c3ec27ede12cf50fedc158e9e14b3a64ef56433e Mon Sep 17 00:00:00 2001 From: vvveiii Date: Fri, 14 Aug 2020 21:52:54 +0800 Subject: [PATCH] [YogaKit] build YogaKit with ObjC++17 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - remove YGRoundPixelValue for view’s origin - check view’s isYogaEnabled before check view.yoga.isEnabled --- YogaKit/Source/YGLayout.m | 21 +++++++++------------ YogaKit/YogaKit.xcodeproj/project.pbxproj | 8 ++++++-- YogaKit/YogaKitSample/Podfile.lock | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/YogaKit/Source/YGLayout.m b/YogaKit/Source/YGLayout.m index 647a3a34..317f5caa 100644 --- a/YogaKit/Source/YGLayout.m +++ b/YogaKit/Source/YGLayout.m @@ -243,9 +243,11 @@ static YGConfigRef YGGlobalConfig() { @"This method must be called on the main thread."); if (self.isEnabled) { for (UIView* subview in self.view.subviews) { - YGLayout* const yoga = subview.yoga; - if (yoga.isEnabled && yoga.isIncludedInLayout) { - return NO; + if (subview.isYogaEnabled) { + YGLayout* const yoga = subview.yoga; + if (yoga.isEnabled && yoga.isIncludedInLayout) { + return NO; + } } } } @@ -460,7 +462,7 @@ static void YGAttachNodesFromViewHierachy(UIView* const view) { NSMutableArray* subviewsToInclude = [[NSMutableArray alloc] initWithCapacity:view.subviews.count]; for (UIView* subview in view.subviews) { - if (subview.yoga.isEnabled && subview.yoga.isIncludedInLayout) { + if (subview.isYogaEnabled && subview.yoga.isEnabled && subview.yoga.isIncludedInLayout) { [subviewsToInclude addObject:subview]; } } @@ -486,11 +488,6 @@ static void YGRemoveAllChildren(const YGNodeRef node) { YGNodeRemoveAllChildren(node); } -static CGFloat YGRoundPixelValue(CGFloat value) { - CGFloat scale = YGScaleFactor(); - return round(value * scale) / scale; -} - static CGFloat YGAlignPixelValue(CGFloat value) { CGFloat scale = YGScaleFactor(); return ceil(value * scale) / scale; @@ -559,7 +556,7 @@ static void YGApplyLayoutToViewHierarchy(UIView* view, BOOL preserveOrigin) { } view.frame = (CGRect) { - .origin = CGPointMake(YGRoundPixelValue(frame.origin.x), YGRoundPixelValue(frame.origin.y)), + .origin = frame.origin, .size = CGSizeMake(YGAlignPixelValue(frame.size.width), YGAlignPixelValue(frame.size.height)) }; #else @@ -569,8 +566,8 @@ static void YGApplyLayoutToViewHierarchy(UIView* view, BOOL preserveOrigin) { }; view.center = (CGPoint) { - .x = YGRoundPixelValue(CGRectGetMinX(frame) + CGRectGetWidth(frame) * 0.5), - .y = YGRoundPixelValue(CGRectGetMinY(frame) + CGRectGetHeight(frame) * 0.5) + .x = CGRectGetMinX(frame) + CGRectGetWidth(frame) * 0.5, + .y = CGRectGetMinY(frame) + CGRectGetHeight(frame) * 0.5 }; #endif diff --git a/YogaKit/YogaKit.xcodeproj/project.pbxproj b/YogaKit/YogaKit.xcodeproj/project.pbxproj index f9825805..53edb680 100644 --- a/YogaKit/YogaKit.xcodeproj/project.pbxproj +++ b/YogaKit/YogaKit.xcodeproj/project.pbxproj @@ -564,7 +564,7 @@ "ARCHS[sdk=macosx*]" = x86_64; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -641,7 +641,7 @@ "ARCHS[sdk=macosx*]" = x86_64; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -706,6 +706,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -729,6 +730,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -750,6 +752,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -772,6 +775,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/YogaKit/YogaKitSample/Podfile.lock b/YogaKit/YogaKitSample/Podfile.lock index 077c4596..048f6dde 100644 --- a/YogaKit/YogaKitSample/Podfile.lock +++ b/YogaKit/YogaKitSample/Podfile.lock @@ -30,4 +30,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: e8d71f0fe05bb5e3cfd81b54d07bd1a904e18968 -COCOAPODS: 1.9.1 +COCOAPODS: 1.9.3