From 4be38891d89b60a4f8e8d5f268036f904f55a509 Mon Sep 17 00:00:00 2001 From: David Hart Date: Sun, 18 Dec 2016 21:53:53 +0100 Subject: [PATCH] transformed style values into properties and removed enums that were implementation details --- YogaKit/UIView+YogaKit.h | 49 ++++---- YogaKit/UIView+YogaKit.m | 105 ++++++++++++++++++ YogaKit/YKEnums.h | 36 ------ .../UserInterfaceState.xcuserstate | Bin 24126 -> 24187 bytes YogaKit/YogaKit/YogaKit/YogaKit.h | 1 + enums.py | 25 +++-- 6 files changed, 148 insertions(+), 68 deletions(-) diff --git a/YogaKit/UIView+YogaKit.h b/YogaKit/UIView+YogaKit.h index 08fc4bd0..9d6b1f27 100644 --- a/YogaKit/UIView+YogaKit.h +++ b/YogaKit/UIView+YogaKit.h @@ -15,44 +15,47 @@ /** The property that decides if we should include this view when calculating layout. Defaults to YES. */ -@property (nonatomic, readwrite, assign, setter=yk_setIncludeInLayout:) BOOL yk_includeInLayout; +@property (nonatomic, setter=yk_setIncludeInLayout:) BOOL yk_includeInLayout; /** The property that decides during layout/sizing whether or not yk_* properties should be applied. Defaults to NO. */ -@property (nonatomic, readwrite, assign, setter=yk_setUsesYoga:) BOOL yk_usesYoga; +@property (nonatomic, setter=yk_setUsesYoga:) BOOL yk_usesYoga; -- (void)yk_setDirection:(YKDirection)direction; -- (void)yk_setFlexDirection:(YKFlexDirection)flexDirection; -- (void)yk_setJustifyContent:(YKJustify)justifyContent; -- (void)yk_setAlignContent:(YKAlign)alignContent; -- (void)yk_setAlignItems:(YKAlign)alignItems; -- (void)yk_setAlignSelf:(YKAlign)alignSelf; -- (void)yk_setPositionType:(YKPositionType)positionType; -- (void)yk_setFlexWrap:(YKWrap)flexWrap; +@property (nonatomic, setter=yk_setDirection:) YKDirection yk_direction; +@property (nonatomic, setter=yk_setFlexDirection:) YKFlexDirection yk_flexDirection; +@property (nonatomic, setter=yk_setJustifyContent:) YKJustify yk_justifyContent; +@property (nonatomic, setter=yk_setAlignContent:) YKAlign yk_alignContent; +@property (nonatomic, setter=yk_setAlignItems:) YKAlign yk_alignItems; +@property (nonatomic, setter=yk_setAlignSelf:) YKAlign yk_alignSelf; +@property (nonatomic, setter=yk_setPositionType:) YKPositionType yk_positionType; +@property (nonatomic, setter=yk_setFlexWrap:) YKWrap yk_flexWrap; -- (void)yk_setFlexGrow:(CGFloat)flexGrow; -- (void)yk_setFlexShrink:(CGFloat)flexShrink; -- (void)yk_setFlexBasis:(CGFloat)flexBasis; +@property (nonatomic, setter=yk_setFlexGrow:) CGFloat yk_flexGrow; +@property (nonatomic, setter=yk_setFlexShrink:) CGFloat yk_flexShrink; +@property (nonatomic, setter=yk_setFlexBasis:) CGFloat yk_flexBasis; +- (void)yk_positionForEdge:(YKEdge)edge; - (void)yk_setPosition:(CGFloat)position forEdge:(YKEdge)edge; +- (void)yk_marginForEdge:(YKEdge)edge; - (void)yk_setMargin:(CGFloat)margin forEdge:(YKEdge)edge; +- (void)yk_paddingForEdge:(YKEdge)edge; - (void)yk_setPadding:(CGFloat)padding forEdge:(YKEdge)edge; -- (void)yk_setWidth:(CGFloat)width; -- (void)yk_setHeight:(CGFloat)height; -- (void)yk_setMinWidth:(CGFloat)minWidth; -- (void)yk_setMinHeight:(CGFloat)minHeight; -- (void)yk_setMaxWidth:(CGFloat)maxWidth; -- (void)yk_setMaxHeight:(CGFloat)maxHeight; +@property (nonatomic, setter=yk_setWidth:) CGFloat yk_width; +@property (nonatomic, setter=yk_setHeight:) CGFloat yk_height; +@property (nonatomic, setter=yk_setMinWidth:) CGFloat yk_minWidth; +@property (nonatomic, setter=yk_setMinHeight:) CGFloat yk_minHeight; +@property (nonatomic, setter=yk_setMaxWidth:) CGFloat yk_maxWidth; +@property (nonatomic, setter=yk_setMaxHeight:) CGFloat yk_maxHeight; // Yoga specific properties, not compatible with flexbox specification -- (void)yk_setAspectRatio:(CGFloat)aspectRatio; +@property (nonatomic, setter=yk_setAspectRatio:) CGFloat yk_aspectRatio; /** Get the resolved direction of this node. This won't be YGDirectionInherit */ -- (YKDirection)yk_resolvedDirection; +@property (nonatomic, readonly) CGFloat yk_resolvedDirection; /** Perform a layout calculation and update the frames of the views in the hierarchy with the results @@ -62,11 +65,11 @@ /** Returns the size of the view if no constraints were given. This could equivalent to calling [self sizeThatFits:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)]; */ -- (CGSize)yk_intrinsicSize; +@property (nonatomic, readonly) CGSize yk_intrinsicSize; /** Returns the number of children that are using Flexbox. */ -- (NSUInteger)yk_numberOfChildren; +@property (nonatomic, readonly) NSUInteger yk_numberOfChildren; @end diff --git a/YogaKit/UIView+YogaKit.m b/YogaKit/UIView+YogaKit.m index 46239f8f..e56e7689 100644 --- a/YogaKit/UIView+YogaKit.m +++ b/YogaKit/UIView+YogaKit.m @@ -76,106 +76,211 @@ OBJC_ASSOCIATION_RETAIN_NONATOMIC); } +- (YKDirection)yk_direction +{ + return (YKDirection)YGNodeStyleGetDirection([self ygNode]); +} + - (void)yk_setDirection:(YKDirection)direction { YGNodeStyleSetDirection([self ygNode], (YGDirection)direction); } +- (YKFlexDirection)yk_flexDirection +{ + return (YKFlexDirection)YGNodeStyleGetFlexDirection([self ygNode]); +} + - (void)yk_setFlexDirection:(YKFlexDirection)flexDirection { YGNodeStyleSetFlexDirection([self ygNode], (YGFlexDirection)flexDirection); } +- (YKJustify)yk_justifyContent +{ + return (YKJustify)YGNodeStyleGetJustifyContent([self ygNode]); +} + - (void)yk_setJustifyContent:(YKJustify)justifyContent { YGNodeStyleSetJustifyContent([self ygNode], (YGJustify)justifyContent); } +- (YKAlign)yk_alignContent +{ + return (YKAlign)YGNodeStyleGetAlignContent([self ygNode]); +} + - (void)yk_setAlignContent:(YKAlign)alignContent { YGNodeStyleSetAlignContent([self ygNode], (YGAlign)alignContent); } +- (YKAlign)yk_alignItems +{ + return (YKAlign)YGNodeStyleGetAlignItems([self ygNode]); +} + - (void)yk_setAlignItems:(YKAlign)alignItems { YGNodeStyleSetAlignItems([self ygNode], (YGAlign)alignItems); } +- (YKAlign)yk_alignSelf +{ + return (YKAlign)YGNodeStyleGetAlignSelf([self ygNode]); +} + - (void)yk_setAlignSelf:(YKAlign)alignSelf { YGNodeStyleSetAlignSelf([self ygNode], (YGAlign)alignSelf); } +- (YKPositionType)yk_positionType +{ + return (YKPositionType)YGNodeStyleGetPositionType([self ygNode]); +} + - (void)yk_setPositionType:(YKPositionType)positionType { YGNodeStyleSetPositionType([self ygNode], (YGPositionType)positionType); } +- (YKWrap)yk_flexWrap +{ + return (YKWrap)YGNodeStyleGetFlexWrap([self ygNode]); +} + - (void)yk_setFlexWrap:(YKWrap)flexWrap { YGNodeStyleSetFlexWrap([self ygNode], (YGWrap)flexWrap); } +- (CGFloat)yk_flexGrow +{ + return YGNodeStyleGetFlexGrow([self ygNode]); +} + - (void)yk_setFlexGrow:(CGFloat)flexGrow { YGNodeStyleSetFlexGrow([self ygNode], flexGrow); } +- (CGFloat)yk_flexShrink +{ + return YGNodeStyleGetFlexShrink([self ygNode]); +} + - (void)yk_setFlexShrink:(CGFloat)flexShrink { YGNodeStyleSetFlexShrink([self ygNode], flexShrink); } +- (CGFloat)yk_flexBasis +{ + return YGNodeStyleGetFlexBasis([self ygNode]); +} + - (void)yk_setFlexBasis:(CGFloat)flexBasis { YGNodeStyleSetFlexBasis([self ygNode], flexBasis); } +- (CGFloat)yk_positionForEdge:(YKEdge)edge +{ + return YGNodeStyleGetPosition([self ygNode], (YGEdge)edge); +} + - (void)yk_setPosition:(CGFloat)position forEdge:(YKEdge)edge { YGNodeStyleSetPosition([self ygNode], (YGEdge)edge, position); } +- (CGFloat)yk_marginForEdge:(YKEdge)edge +{ + return YGNodeStyleGetMargin([self ygNode], (YGEdge)edge); +} + - (void)yk_setMargin:(CGFloat)margin forEdge:(YKEdge)edge { YGNodeStyleSetMargin([self ygNode], (YGEdge)edge, margin); } +- (CGFloat)yk_paddingForEdge:(YKEdge)edge +{ + return YGNodeStyleGetPadding([self ygNode], (YGEdge)edge); +} + - (void)yk_setPadding:(CGFloat)padding forEdge:(YKEdge)edge { YGNodeStyleSetPadding([self ygNode], (YGEdge)edge, padding); } +- (CGFloat)yk_width +{ + return YGNodeStyleGetWidth([self ygNode]); +} + - (void)yk_setWidth:(CGFloat)width { YGNodeStyleSetWidth([self ygNode], width); } +- (CGFloat)yk_height +{ + return YGNodeStyleGetHeight([self ygNode]); +} + - (void)yk_setHeight:(CGFloat)height { YGNodeStyleSetHeight([self ygNode], height); } +- (CGFloat)yk_minWidth +{ + return YGNodeStyleGetMinWidth([self ygNode]); +} + - (void)yk_setMinWidth:(CGFloat)minWidth { YGNodeStyleSetMinWidth([self ygNode], minWidth); } +- (CGFloat)yk_minHeight +{ + return YGNodeStyleGetMinHeight([self ygNode]); +} + - (void)yk_setMinHeight:(CGFloat)minHeight { YGNodeStyleSetMinHeight([self ygNode], minHeight); } +- (CGFloat)yk_maxWidth +{ + return YGNodeStyleGetMaxWidth([self ygNode]); +} + - (void)yk_setMaxWidth:(CGFloat)maxWidth { YGNodeStyleSetMaxWidth([self ygNode], maxWidth); } +- (CGFloat)yk_maxHeight +{ + return YGNodeStyleGetMaxHeight([self ygNode]); +} + - (void)yk_setMaxHeight:(CGFloat)maxHeight { YGNodeStyleSetMaxHeight([self ygNode], maxHeight); } +- (CGFloat)yk_aspectRatio +{ + return YGNodeStyleGetAspectRatio([self ygNode]); +} + - (void)yk_setAspectRatio:(CGFloat)aspectRatio { YGNodeStyleSetAspectRatio([self ygNode], aspectRatio); diff --git a/YogaKit/YKEnums.h b/YogaKit/YKEnums.h index cc148d2b..3e684fdc 100644 --- a/YogaKit/YKEnums.h +++ b/YogaKit/YKEnums.h @@ -14,18 +14,6 @@ typedef NS_ENUM(NSInteger, YKFlexDirection) { YKFlexDirectionRowReverse, }; -typedef NS_ENUM(NSInteger, YKMeasureMode) { - YKMeasureModeUndefined, - YKMeasureModeExactly, - YKMeasureModeAtMost, -}; - -typedef NS_ENUM(NSInteger, YKPrintOptions) { - YKPrintOptionsLayout = 1, - YKPrintOptionsStyle = 2, - YKPrintOptionsChildren = 4, -}; - typedef NS_ENUM(NSInteger, YKEdge) { YKEdgeLeft, YKEdgeTop, @@ -43,11 +31,6 @@ typedef NS_ENUM(NSInteger, YKPositionType) { YKPositionTypeAbsolute, }; -typedef NS_ENUM(NSInteger, YKDimension) { - YKDimensionWidth, - YKDimensionHeight, -}; - typedef NS_ENUM(NSInteger, YKJustify) { YKJustifyFlexStart, YKJustifyCenter, @@ -62,30 +45,11 @@ typedef NS_ENUM(NSInteger, YKDirection) { YKDirectionRightToLeft, }; -typedef NS_ENUM(NSInteger, YKLogLevel) { - YKLogLevelError, - YKLogLevelWarn, - YKLogLevelInfo, - YKLogLevelDebug, - YKLogLevelVerbose, -}; - typedef NS_ENUM(NSInteger, YKWrap) { YKWrapNoWrap, YKWrapWrap, }; -typedef NS_ENUM(NSInteger, YKOverflow) { - YKOverflowVisible, - YKOverflowHidden, - YKOverflowScroll, -}; - -typedef NS_ENUM(NSInteger, YKExperimentalFeature) { - YKExperimentalFeatureRounding, - YKExperimentalFeatureWebFlexBasis, -}; - typedef NS_ENUM(NSInteger, YKAlign) { YKAlignAuto, YKAlignFlexStart, diff --git a/YogaKit/YogaKit/YogaKit.xcodeproj/project.xcworkspace/xcuserdata/david.xcuserdatad/UserInterfaceState.xcuserstate b/YogaKit/YogaKit/YogaKit.xcodeproj/project.xcworkspace/xcuserdata/david.xcuserdatad/UserInterfaceState.xcuserstate index 33536713a50be1596623da79b922b35bc5b5f981..a338638b9bc1097d2c7c479e8bb6f41b64c5f9d7 100644 GIT binary patch delta 13533 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 R?}A|0d)@ym`9J6S{|DM=ap(X5 diff --git a/YogaKit/YogaKit/YogaKit/YogaKit.h b/YogaKit/YogaKit/YogaKit/YogaKit.h index c059a0de..6b4620b9 100644 --- a/YogaKit/YogaKit/YogaKit/YogaKit.h +++ b/YogaKit/YogaKit/YogaKit/YogaKit.h @@ -15,3 +15,4 @@ FOUNDATION_EXPORT double YogaKitVersionNumber; FOUNDATION_EXPORT const unsigned char YogaKitVersionString[]; #import +#import diff --git a/enums.py b/enums.py index b12203f0..2a3c7c01 100644 --- a/enums.py +++ b/enums.py @@ -94,7 +94,13 @@ OBJC_ENUMS = { 'Inherit', 'LeftToRight', 'RightToLeft', - ] + ], + 'MeasureMode': None, + 'PrintOptions': None, + 'Dimension': None, + 'LogLevel': None, + 'Overflow': None, + 'ExperimentalFeature': None } LICENSE = """/** @@ -202,11 +208,12 @@ with open(root + '/YogaKit/YKEnums.h', 'w') as f: objc_enums.update(OBJC_ENUMS) f.write(LICENSE) for name, values in objc_enums.items(): - f.write('typedef NS_ENUM(NSInteger, YK%s) {\n' % name) - for value in values: - if isinstance(value, tuple): - f.write(' YK%s%s = %d,\n' % (name, value[0], value[1])) - else: - f.write(' YK%s%s,\n' % (name, value)) - f.write('};\n') - f.write('\n') + if values is not None: + f.write('typedef NS_ENUM(NSInteger, YK%s) {\n' % name) + for value in values: + if isinstance(value, tuple): + f.write(' YK%s%s = %d,\n' % (name, value[0], value[1])) + else: + f.write(' YK%s%s,\n' % (name, value)) + f.write('};\n') + f.write('\n')