rewrote macros to simplify them and satisfy the requirement of having the shorthand edge getters return YGUndefined
This commit is contained in:
@@ -10,69 +10,94 @@
|
|||||||
#import "YGLayout+Private.h"
|
#import "YGLayout+Private.h"
|
||||||
#import "UIView+Yoga.h"
|
#import "UIView+Yoga.h"
|
||||||
|
|
||||||
#define YG_STYLE_PROPERTY_IMPL(type, lowercased_name, capitalized_name) \
|
#define YG_PROPERTY(type, lowercased_name, capitalized_name) \
|
||||||
- (type)lowercased_name \
|
- (type)lowercased_name \
|
||||||
{ \
|
{ \
|
||||||
return YGNodeStyleGet##capitalized_name(self.node); \
|
return YGNodeStyleGet##capitalized_name(self.node); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
- (void)set##capitalized_name:(type)lowercased_name \
|
- (void)set##capitalized_name:(type)lowercased_name \
|
||||||
{ \
|
{ \
|
||||||
YGNodeStyleSet##capitalized_name(self.node, lowercased_name); \
|
YGNodeStyleSet##capitalized_name(self.node, lowercased_name); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_STYLE_EDGE_PROPERTY_IMPL(lowercased_name, capitalized_name, property, edge) \
|
#define YG_VALUE_PROPERTY(lowercased_name, capitalized_name) \
|
||||||
- (CGFloat)lowercased_name { \
|
- (CGFloat)lowercased_name \
|
||||||
return YGNodeStyleGet##property(self.node, edge); \
|
{ \
|
||||||
} \
|
YGValue value = YGNodeStyleGet##capitalized_name(self.node); \
|
||||||
\
|
if (value.unit == YGUnitPixel) { \
|
||||||
- (void)set##capitalized_name:(CGFloat)lowercased_name { \
|
return value.value; \
|
||||||
YGNodeStyleSet##property(self.node, edge, lowercased_name); \
|
} else { \
|
||||||
|
return YGUndefined; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
- (void)set##capitalized_name:(CGFloat)lowercased_name \
|
||||||
|
{ \
|
||||||
|
YGNodeStyleSet##capitalized_name(self.node, lowercased_name); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_STYLE_VALUE_PROPERTY_IMPL(lowercased_name, capitalized_name) \
|
#define YG_EDGE_PROPERTY_GETTER(lowercased_name, capitalized_name, property, edge) \
|
||||||
- (CGFloat)lowercased_name \
|
- (CGFloat)lowercased_name \
|
||||||
{ \
|
{ \
|
||||||
YGValue value = YGNodeStyleGet##capitalized_name(self.node); \
|
return YGNodeStyleGet##property(self.node, edge); \
|
||||||
if (value.unit == YGUnitPixel) { \
|
|
||||||
return value.value; \
|
|
||||||
} else { \
|
|
||||||
return YGUndefined; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
- (void)set##capitalized_name:(CGFloat)lowercased_name \
|
|
||||||
{ \
|
|
||||||
YGNodeStyleSet##capitalized_name(self.node, lowercased_name); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(objc_lowercased_name, objc_capitalized_name, c_name, edge) \
|
#define YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \
|
||||||
- (CGFloat)objc_lowercased_name \
|
- (CGFloat)lowercased_name \
|
||||||
{ \
|
{ \
|
||||||
if (edge <= YGEdgeEnd) { \
|
return YGUndefined; \
|
||||||
YGValue value = YGNodeStyleGet##c_name(self.node, edge); \
|
|
||||||
if (value.unit == YGUnitPixel) { \
|
|
||||||
return value.value; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
return YGUndefined; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
- (void)set##objc_capitalized_name:(CGFloat)objc_lowercased_name \
|
|
||||||
{ \
|
|
||||||
YGNodeStyleSet##c_name(self.node, edge, objc_lowercased_name); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_STYLE_ALL_EDGE_PROPERTY_UNIT_IMPL(lowercased_name, capitalized_name) \
|
#define YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge) \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Left, capitalized_name##Left, capitalized_name, YGEdgeLeft) \
|
- (void)set##capitalized_name:(CGFloat)lowercased_name \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Top, capitalized_name##Top, capitalized_name, YGEdgeTop) \
|
{ \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Right, capitalized_name##Right, capitalized_name, YGEdgeRight) \
|
YGNodeStyleSet##property(self.node, edge, lowercased_name); \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Bottom, capitalized_name##Bottom, capitalized_name, YGEdgeBottom) \
|
}
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Start, capitalized_name##Start, capitalized_name, YGEdgeStart) \
|
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##End, capitalized_name##End, capitalized_name, YGEdgeEnd) \
|
#define YG_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Horizontal, capitalized_name##Horizontal, capitalized_name, YGEdgeHorizontal) \
|
YG_EDGE_PROPERTY_GETTER(lowercased_name, capitalized_name, property, edge) \
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name##Vertical, capitalized_name##Vertical, capitalized_name, YGEdgeVertical) \
|
YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name, capitalized_name, capitalized_name, YGEdgeAll)
|
|
||||||
|
#define YG_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \
|
||||||
|
YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \
|
||||||
|
YG_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge)
|
||||||
|
|
||||||
|
#define YG_VALUE_EDGE_PROPERTY_GETTER(objc_lowercased_name, objc_capitalized_name, c_name, edge) \
|
||||||
|
- (CGFloat)objc_lowercased_name \
|
||||||
|
{ \
|
||||||
|
YGValue value = YGNodeStyleGet##c_name(self.node, edge); \
|
||||||
|
if (value.unit == YGUnitPixel) { \
|
||||||
|
return value.value; \
|
||||||
|
} else { \
|
||||||
|
return YGUndefined; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define YG_VALUE_EDGE_PROPERTY_SETTER(objc_lowercased_name, objc_capitalized_name, c_name, edge) \
|
||||||
|
- (void)set##objc_capitalized_name:(CGFloat)objc_lowercased_name \
|
||||||
|
{ \
|
||||||
|
YGNodeStyleSet##c_name(self.node, edge, objc_lowercased_name); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define YG_VALUE_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY_GETTER(lowercased_name, capitalized_name, property, edge) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge)
|
||||||
|
|
||||||
|
#define YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, property, edge) \
|
||||||
|
YG_SHORTHAND_EDGE_PROPERTY_GETTER(lowercased_name) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY_SETTER(lowercased_name, capitalized_name, property, edge)
|
||||||
|
|
||||||
|
#define YG_VALUE_EDGES_PROPERTIES(lowercased_name, capitalized_name) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##Left, capitalized_name##Left, capitalized_name, YGEdgeLeft) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##Top, capitalized_name##Top, capitalized_name, YGEdgeTop) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##Right, capitalized_name##Right, capitalized_name, YGEdgeRight) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##Bottom, capitalized_name##Bottom, capitalized_name, YGEdgeBottom) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##Start, capitalized_name##Start, capitalized_name, YGEdgeStart) \
|
||||||
|
YG_VALUE_EDGE_PROPERTY(lowercased_name##End, capitalized_name##End, capitalized_name, YGEdgeEnd) \
|
||||||
|
YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name##Horizontal, capitalized_name##Horizontal, capitalized_name, YGEdgeHorizontal) \
|
||||||
|
YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name##Vertical, capitalized_name##Vertical, capitalized_name, YGEdgeVertical) \
|
||||||
|
YG_VALUE_SHORTHAND_EDGE_PROPERTY(lowercased_name, capitalized_name, capitalized_name, YGEdgeAll)
|
||||||
|
|
||||||
@interface YGLayout ()
|
@interface YGLayout ()
|
||||||
|
|
||||||
@@ -148,43 +173,43 @@ YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(lowercased_name, capitalized_name, capitalized_
|
|||||||
YGNodeStyleSetPositionType(self.node, position);
|
YGNodeStyleSetPositionType(self.node, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
YG_STYLE_PROPERTY_IMPL(YGDirection, direction, Direction)
|
YG_PROPERTY(YGDirection, direction, Direction)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGFlexDirection, flexDirection, FlexDirection)
|
YG_PROPERTY(YGFlexDirection, flexDirection, FlexDirection)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGJustify, justifyContent, JustifyContent)
|
YG_PROPERTY(YGJustify, justifyContent, JustifyContent)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGAlign, alignContent, AlignContent)
|
YG_PROPERTY(YGAlign, alignContent, AlignContent)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGAlign, alignItems, AlignItems)
|
YG_PROPERTY(YGAlign, alignItems, AlignItems)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGAlign, alignSelf, AlignSelf)
|
YG_PROPERTY(YGAlign, alignSelf, AlignSelf)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGWrap, flexWrap, FlexWrap)
|
YG_PROPERTY(YGWrap, flexWrap, FlexWrap)
|
||||||
YG_STYLE_PROPERTY_IMPL(YGOverflow, overflow, Overflow)
|
YG_PROPERTY(YGOverflow, overflow, Overflow)
|
||||||
|
|
||||||
YG_STYLE_PROPERTY_IMPL(CGFloat, flexGrow, FlexGrow)
|
YG_PROPERTY(CGFloat, flexGrow, FlexGrow)
|
||||||
YG_STYLE_PROPERTY_IMPL(CGFloat, flexShrink, FlexShrink)
|
YG_PROPERTY(CGFloat, flexShrink, FlexShrink)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(flexBasis, FlexBasis)
|
YG_VALUE_PROPERTY(flexBasis, FlexBasis)
|
||||||
|
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(left, Left, Position, YGEdgeLeft)
|
YG_VALUE_EDGE_PROPERTY(left, Left, Position, YGEdgeLeft)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(top, Top, Position, YGEdgeTop)
|
YG_VALUE_EDGE_PROPERTY(top, Top, Position, YGEdgeTop)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(right, Right, Position, YGEdgeRight)
|
YG_VALUE_EDGE_PROPERTY(right, Right, Position, YGEdgeRight)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(bottom, Bottom, Position, YGEdgeBottom)
|
YG_VALUE_EDGE_PROPERTY(bottom, Bottom, Position, YGEdgeBottom)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(start, Start, Position, YGEdgeStart)
|
YG_VALUE_EDGE_PROPERTY(start, Start, Position, YGEdgeStart)
|
||||||
YG_STYLE_EDGE_PROPERTY_UNIT_IMPL(end, End, Position, YGEdgeEnd)
|
YG_VALUE_EDGE_PROPERTY(end, End, Position, YGEdgeEnd)
|
||||||
YG_STYLE_ALL_EDGE_PROPERTY_UNIT_IMPL(margin, Margin)
|
YG_VALUE_EDGES_PROPERTIES(margin, Margin)
|
||||||
YG_STYLE_ALL_EDGE_PROPERTY_UNIT_IMPL(padding, Padding)
|
YG_VALUE_EDGES_PROPERTIES(padding, Padding)
|
||||||
|
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderLeftWidth, BorderLeftWidth, Border, YGEdgeLeft)
|
YG_EDGE_PROPERTY(borderLeftWidth, BorderLeftWidth, Border, YGEdgeLeft)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderTopWidth, BorderTopWidth, Border, YGEdgeTop)
|
YG_EDGE_PROPERTY(borderTopWidth, BorderTopWidth, Border, YGEdgeTop)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderRightWidth, BorderRightWidth, Border, YGEdgeRight)
|
YG_EDGE_PROPERTY(borderRightWidth, BorderRightWidth, Border, YGEdgeRight)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderBottomWidth, BorderBottomWidth, Border, YGEdgeBottom)
|
YG_EDGE_PROPERTY(borderBottomWidth, BorderBottomWidth, Border, YGEdgeBottom)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderStartWidth, BorderStartWidth, Border, YGEdgeStart)
|
YG_EDGE_PROPERTY(borderStartWidth, BorderStartWidth, Border, YGEdgeStart)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderEndWidth, BorderEndWidth, Border, YGEdgeEnd)
|
YG_EDGE_PROPERTY(borderEndWidth, BorderEndWidth, Border, YGEdgeEnd)
|
||||||
YG_STYLE_EDGE_PROPERTY_IMPL(borderWidth, BorderWidth, Border, YGEdgeAll)
|
YG_SHORTHAND_EDGE_PROPERTY(borderWidth, BorderWidth, Border, YGEdgeAll)
|
||||||
|
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(width, Width)
|
YG_VALUE_PROPERTY(width, Width)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(height, Height)
|
YG_VALUE_PROPERTY(height, Height)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(minWidth, MinWidth)
|
YG_VALUE_PROPERTY(minWidth, MinWidth)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(minHeight, MinHeight)
|
YG_VALUE_PROPERTY(minHeight, MinHeight)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(maxWidth, MaxWidth)
|
YG_VALUE_PROPERTY(maxWidth, MaxWidth)
|
||||||
YG_STYLE_VALUE_PROPERTY_IMPL(maxHeight, MaxHeight)
|
YG_VALUE_PROPERTY(maxHeight, MaxHeight)
|
||||||
YG_STYLE_PROPERTY_IMPL(CGFloat, aspectRatio, AspectRatio)
|
YG_PROPERTY(CGFloat, aspectRatio, AspectRatio)
|
||||||
|
|
||||||
#pragma mark - Layout and Sizing
|
#pragma mark - Layout and Sizing
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user