mirror of
https://github.com/status-im/react-native.git
synced 2025-02-25 07:35:25 +00:00
Make YGNode as c++ struct with properties exposed through accessors
Reviewed By: emilsjolander Differential Revision: D6592257 fbshipit-source-id: 641e8b9462ad00731a094511f9f5608b23a6bb21
This commit is contained in:
parent
30da2622e2
commit
f1055bcac8
@ -74,7 +74,7 @@ static YGSize RCTMeasure(YGNodeRef node, float width, YGMeasureMode widthMode, f
|
||||
_writingDirection = NSWritingDirectionNatural;
|
||||
_cachedLayoutDirection = UIUserInterfaceLayoutDirectionLeftToRight;
|
||||
|
||||
YGNodeSetMeasureFunc(self.yogaNode, RCTMeasure);
|
||||
YGNodeSetMeasureFunc(self.yogaNode, RCTMeasure);
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(contentSizeMultiplierDidChange:)
|
||||
|
@ -15,17 +15,15 @@
|
||||
2D3B5F331D9B102D00451313 /* RCTTextSelection.m in Sources */ = {isa = PBXBuildFile; fileRef = 19FC5C841D41A4120090108F /* RCTTextSelection.m */; };
|
||||
2D3B5F341D9B103100451313 /* RCTRawTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511C71A9E6C5C00147676 /* RCTRawTextManager.m */; };
|
||||
2D3B5F351D9B103300451313 /* RCTShadowRawText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511C91A9E6C5C00147676 /* RCTShadowRawText.m */; };
|
||||
2D3B5F361D9B106F00451313 /* RCTShadowText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511CB1A9E6C5C00147676 /* RCTShadowText.m */; };
|
||||
2D3B5F371D9B106F00451313 /* RCTText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B512141A9E6EFF00147676 /* RCTText.m */; };
|
||||
2D3B5F381D9B106F00451313 /* RCTTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511CD1A9E6C5C00147676 /* RCTTextManager.m */; };
|
||||
2D3B5F391D9B106F00451313 /* RCTTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 1362F0FD1B4D51F400E06D8C /* RCTTextField.m */; };
|
||||
2D3B5F3A1D9B106F00451313 /* RCTTextFieldManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1362F0FF1B4D51F400E06D8C /* RCTTextFieldManager.m */; };
|
||||
2D3B5F3B1D9B106F00451313 /* RCTTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 131B6ABD1AF0CD0600FFC3E0 /* RCTTextView.m */; };
|
||||
2D3B5F3C1D9B106F00451313 /* RCTTextViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 131B6ABF1AF0CD0600FFC3E0 /* RCTTextViewManager.m */; };
|
||||
2DEAB2901F84BA4300FC6B42 /* RCTFontAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = A85C82991F742AA20036C019 /* RCTFontAttributes.m */; };
|
||||
5335D53F1FE8196200883D58 /* RCTShadowText.m in Sources */ = {isa = PBXBuildFile; fileRef = 5335D53E1FE8196100883D58 /* RCTShadowText.m */; };
|
||||
58B511CE1A9E6C5C00147676 /* RCTRawTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511C71A9E6C5C00147676 /* RCTRawTextManager.m */; };
|
||||
58B511CF1A9E6C5C00147676 /* RCTShadowRawText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511C91A9E6C5C00147676 /* RCTShadowRawText.m */; };
|
||||
58B511D01A9E6C5C00147676 /* RCTShadowText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511CB1A9E6C5C00147676 /* RCTShadowText.m */; };
|
||||
58B511D11A9E6C5C00147676 /* RCTTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B511CD1A9E6C5C00147676 /* RCTTextManager.m */; };
|
||||
58B512161A9E6EFF00147676 /* RCTText.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B512141A9E6EFF00147676 /* RCTText.m */; };
|
||||
598F41261F145D4900B8495B /* RCTBackedTextInputDelegateAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 598F41251F145D4900B8495B /* RCTBackedTextInputDelegateAdapter.m */; };
|
||||
@ -89,13 +87,13 @@
|
||||
19FC5C841D41A4120090108F /* RCTTextSelection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTextSelection.m; sourceTree = "<group>"; };
|
||||
19FC5C861D41A4220090108F /* RCTTextSelection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTextSelection.h; sourceTree = "<group>"; };
|
||||
2D2A287B1D9B048500D4039D /* libRCTText-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libRCTText-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5335D53E1FE8196100883D58 /* RCTShadowText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowText.m; sourceTree = "<group>"; };
|
||||
58B5119B1A9E6C1200147676 /* libRCTText.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTText.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
58B511C61A9E6C5C00147676 /* RCTRawTextManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTRawTextManager.h; sourceTree = "<group>"; };
|
||||
58B511C71A9E6C5C00147676 /* RCTRawTextManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTRawTextManager.m; sourceTree = "<group>"; };
|
||||
58B511C81A9E6C5C00147676 /* RCTShadowRawText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTShadowRawText.h; sourceTree = "<group>"; };
|
||||
58B511C91A9E6C5C00147676 /* RCTShadowRawText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowRawText.m; sourceTree = "<group>"; };
|
||||
58B511CA1A9E6C5C00147676 /* RCTShadowText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTShadowText.h; sourceTree = "<group>"; };
|
||||
58B511CB1A9E6C5C00147676 /* RCTShadowText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowText.m; sourceTree = "<group>"; };
|
||||
58B511CC1A9E6C5C00147676 /* RCTTextManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTextManager.h; sourceTree = "<group>"; };
|
||||
58B511CD1A9E6C5C00147676 /* RCTTextManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTextManager.m; sourceTree = "<group>"; };
|
||||
58B512141A9E6EFF00147676 /* RCTText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTText.m; sourceTree = "<group>"; };
|
||||
@ -125,6 +123,7 @@
|
||||
58B511921A9E6C1200147676 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5335D53E1FE8196100883D58 /* RCTShadowText.m */,
|
||||
58B5119C1A9E6C1200147676 /* Products */,
|
||||
598F41231F145D4900B8495B /* RCTBackedTextInputDelegate.h */,
|
||||
598F41241F145D4900B8495B /* RCTBackedTextInputDelegateAdapter.h */,
|
||||
@ -140,7 +139,6 @@
|
||||
58B511C81A9E6C5C00147676 /* RCTShadowRawText.h */,
|
||||
58B511C91A9E6C5C00147676 /* RCTShadowRawText.m */,
|
||||
58B511CA1A9E6C5C00147676 /* RCTShadowText.h */,
|
||||
58B511CB1A9E6C5C00147676 /* RCTShadowText.m */,
|
||||
59F60E8D1E661BDD0081153B /* RCTShadowTextField.h */,
|
||||
59F60E8E1E661BDD0081153B /* RCTShadowTextField.m */,
|
||||
59F60E8F1E661BDD0081153B /* RCTShadowTextView.h */,
|
||||
@ -259,7 +257,6 @@
|
||||
2D3B5F371D9B106F00451313 /* RCTText.m in Sources */,
|
||||
2D3B5F381D9B106F00451313 /* RCTTextManager.m in Sources */,
|
||||
2D3B5F391D9B106F00451313 /* RCTTextField.m in Sources */,
|
||||
2D3B5F361D9B106F00451313 /* RCTShadowText.m in Sources */,
|
||||
2D3B5F3B1D9B106F00451313 /* RCTTextView.m in Sources */,
|
||||
59AF89AB1EDCBCC700F004B1 /* RCTUITextField.m in Sources */,
|
||||
598F41271F145D4900B8495B /* RCTBackedTextInputDelegateAdapter.m in Sources */,
|
||||
@ -283,6 +280,7 @@
|
||||
files = (
|
||||
58B511D11A9E6C5C00147676 /* RCTTextManager.m in Sources */,
|
||||
131B6AC01AF0CD0600FFC3E0 /* RCTTextView.m in Sources */,
|
||||
5335D53F1FE8196200883D58 /* RCTShadowText.m in Sources */,
|
||||
58B511CE1A9E6C5C00147676 /* RCTRawTextManager.m in Sources */,
|
||||
19FC5C851D41A4120090108F /* RCTTextSelection.m in Sources */,
|
||||
1362F1001B4D51F400E06D8C /* RCTTextField.m in Sources */,
|
||||
@ -298,7 +296,6 @@
|
||||
131B6AC11AF0CD0600FFC3E0 /* RCTTextViewManager.m in Sources */,
|
||||
59F60E931E661BDD0081153B /* RCTShadowTextView.m in Sources */,
|
||||
58B511CF1A9E6C5C00147676 /* RCTShadowRawText.m in Sources */,
|
||||
58B511D01A9E6C5C00147676 /* RCTShadowText.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -432,6 +429,7 @@
|
||||
58B511B01A9E6C1300147676 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@ -442,6 +440,7 @@
|
||||
58B511B11A9E6C1300147676 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
@ -129,7 +129,6 @@
|
||||
13D9FEEB1CDCCECF00158BD7 /* RCTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 13D9FEEA1CDCCECF00158BD7 /* RCTEventEmitter.m */; };
|
||||
13D9FEEE1CDCD93000158BD7 /* RCTKeyboardObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 13D9FEED1CDCD93000158BD7 /* RCTKeyboardObserver.m */; };
|
||||
13E0674A1A70F434002CDEE1 /* RCTUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067491A70F434002CDEE1 /* RCTUIManager.m */; };
|
||||
13E067551A70F44B002CDEE1 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */; };
|
||||
13E067561A70F44B002CDEE1 /* RCTViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E0674E1A70F44B002CDEE1 /* RCTViewManager.m */; };
|
||||
13E067571A70F44B002CDEE1 /* RCTView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067501A70F44B002CDEE1 /* RCTView.m */; };
|
||||
13E067591A70F44B002CDEE1 /* UIView+React.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E067541A70F44B002CDEE1 /* UIView+React.m */; };
|
||||
@ -320,7 +319,6 @@
|
||||
2D3B5EE01D9B09AD00451313 /* RCTRootShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BCE8081C99CB9D00DD7AAD /* RCTRootShadowView.m */; };
|
||||
2D3B5EE31D9B09B700451313 /* RCTSegmentedControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 131B6AF11AF1093D00FFC3E0 /* RCTSegmentedControl.m */; };
|
||||
2D3B5EE41D9B09BB00451313 /* RCTSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 131B6AF31AF1093D00FFC3E0 /* RCTSegmentedControlManager.m */; };
|
||||
2D3B5EE51D9B09BE00451313 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */; };
|
||||
2D3B5EEA1D9B09CD00451313 /* RCTTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 137327E01AA5CF210034F82E /* RCTTabBar.m */; };
|
||||
2D3B5EEB1D9B09D000451313 /* RCTTabBarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 137327E21AA5CF210034F82E /* RCTTabBarItem.m */; };
|
||||
2D3B5EEC1D9B09D400451313 /* RCTTabBarItemManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 137327E41AA5CF210034F82E /* RCTTabBarItemManager.m */; };
|
||||
@ -959,6 +957,9 @@
|
||||
3DFE0D1B1DF8575800459392 /* YGMacros.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 130A77041DF767AF001F9587 /* YGMacros.h */; };
|
||||
3DFE0D1C1DF8575800459392 /* Yoga.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 130A77081DF767AF001F9587 /* Yoga.h */; };
|
||||
3EDCA8A51D3591E700450C31 /* RCTErrorInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EDCA8A41D3591E700450C31 /* RCTErrorInfo.m */; };
|
||||
5335D5411FE81A4700883D58 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5335D5401FE81A4700883D58 /* RCTShadowView.m */; };
|
||||
534D3F811FE7E277002E5E0D /* YGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53EC85DF1FDEC75A0051B2B5 /* YGNode.cpp */; };
|
||||
534D3F821FE7E296002E5E0D /* YGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC85DE1FDEC75A0051B2B5 /* YGNode.h */; };
|
||||
5376C5E41FC6DDBC0083513D /* YGNodePrint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5376C5E11FC6DDB20083513D /* YGNodePrint.cpp */; };
|
||||
5376C5E51FC6DDBD0083513D /* YGNodePrint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5376C5E11FC6DDB20083513D /* YGNodePrint.cpp */; };
|
||||
5376C5E61FC6DDC10083513D /* YGNodePrint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5376C5E01FC6DDB20083513D /* YGNodePrint.h */; };
|
||||
@ -971,6 +972,10 @@
|
||||
53D123A01FBF1EFF001B8A10 /* Yoga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53CBF1871FB4FE80002CBB31 /* Yoga.cpp */; };
|
||||
53D123A11FBF1EFF001B8A10 /* Yoga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53CBF1871FB4FE80002CBB31 /* Yoga.cpp */; };
|
||||
53D123B21FBF220F001B8A10 /* Yoga.h in Headers */ = {isa = PBXBuildFile; fileRef = 130A77081DF767AF001F9587 /* Yoga.h */; };
|
||||
53EC85E21FDEC75F0051B2B5 /* YGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53EC85DF1FDEC75A0051B2B5 /* YGNode.cpp */; };
|
||||
53EC85E31FDEC75F0051B2B5 /* YGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53EC85DF1FDEC75A0051B2B5 /* YGNode.cpp */; };
|
||||
53EC85E41FDEC7630051B2B5 /* YGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC85DE1FDEC75A0051B2B5 /* YGNode.h */; };
|
||||
53EC85E51FDEC7630051B2B5 /* YGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC85DE1FDEC75A0051B2B5 /* YGNode.h */; };
|
||||
58114A161AAE854800E7D092 /* RCTPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 58114A131AAE854800E7D092 /* RCTPicker.m */; };
|
||||
58114A171AAE854800E7D092 /* RCTPickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 58114A151AAE854800E7D092 /* RCTPickerManager.m */; };
|
||||
58114A501AAE93D500E7D092 /* RCTAsyncLocalStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 58114A4E1AAE93D500E7D092 /* RCTAsyncLocalStorage.m */; };
|
||||
@ -1085,18 +1090,18 @@
|
||||
59EB6DC01EBD70130072A5E7 /* RCTUIManagerObserverCoordinator.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */; };
|
||||
59EDBCA71FDF4E0C003573DE /* RCTScrollableProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */; };
|
||||
59EDBCA81FDF4E0C003573DE /* RCTScrollableProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */; };
|
||||
59EDBCA91FDF4E0C003573DE /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */; };
|
||||
59EDBCAA1FDF4E0C003573DE /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */; };
|
||||
59EDBCAB1FDF4E0C003573DE /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBC9E1FDF4E0C003573DE /* RCTScrollContentShadowView.m */; };
|
||||
59EDBCAC1FDF4E0C003573DE /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBC9E1FDF4E0C003573DE /* RCTScrollContentShadowView.m */; };
|
||||
59EDBCA91FDF4E0C003573DE /* (null) in Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCAA1FDF4E0C003573DE /* (null) in Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCAB1FDF4E0C003573DE /* (null) in Sources */ = {isa = PBXBuildFile; };
|
||||
59EDBCAC1FDF4E0C003573DE /* (null) in Sources */ = {isa = PBXBuildFile; };
|
||||
59EDBCAD1FDF4E0C003573DE /* RCTScrollContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */; };
|
||||
59EDBCAE1FDF4E0C003573DE /* RCTScrollContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */; };
|
||||
59EDBCAF1FDF4E0C003573DE /* RCTScrollContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA01FDF4E0C003573DE /* RCTScrollContentView.m */; };
|
||||
59EDBCB01FDF4E0C003573DE /* RCTScrollContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA01FDF4E0C003573DE /* RCTScrollContentView.m */; };
|
||||
59EDBCB11FDF4E0C003573DE /* RCTScrollContentViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */; };
|
||||
59EDBCB21FDF4E0C003573DE /* RCTScrollContentViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */; };
|
||||
59EDBCB31FDF4E0C003573DE /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA21FDF4E0C003573DE /* RCTScrollContentViewManager.m */; };
|
||||
59EDBCB41FDF4E0C003573DE /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA21FDF4E0C003573DE /* RCTScrollContentViewManager.m */; };
|
||||
59EDBCB11FDF4E0C003573DE /* (null) in Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCB21FDF4E0C003573DE /* (null) in Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCB31FDF4E0C003573DE /* (null) in Sources */ = {isa = PBXBuildFile; };
|
||||
59EDBCB41FDF4E0C003573DE /* (null) in Sources */ = {isa = PBXBuildFile; };
|
||||
59EDBCB51FDF4E0C003573DE /* RCTScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */; };
|
||||
59EDBCB61FDF4E0C003573DE /* RCTScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */; };
|
||||
59EDBCB71FDF4E0C003573DE /* RCTScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA41FDF4E0C003573DE /* RCTScrollView.m */; };
|
||||
@ -1106,15 +1111,15 @@
|
||||
59EDBCBB1FDF4E0C003573DE /* RCTScrollViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA61FDF4E0C003573DE /* RCTScrollViewManager.m */; };
|
||||
59EDBCBC1FDF4E0C003573DE /* RCTScrollViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59EDBCA61FDF4E0C003573DE /* RCTScrollViewManager.m */; };
|
||||
59EDBCBD1FDF4E43003573DE /* RCTScrollableProtocol.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */; };
|
||||
59EDBCBE1FDF4E43003573DE /* RCTScrollContentShadowView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */; };
|
||||
59EDBCBE1FDF4E43003573DE /* (null) in Copy Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCBF1FDF4E43003573DE /* RCTScrollContentView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */; };
|
||||
59EDBCC01FDF4E43003573DE /* RCTScrollContentViewManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */; };
|
||||
59EDBCC01FDF4E43003573DE /* (null) in Copy Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCC11FDF4E43003573DE /* RCTScrollView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */; };
|
||||
59EDBCC21FDF4E43003573DE /* RCTScrollViewManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA51FDF4E0C003573DE /* RCTScrollViewManager.h */; };
|
||||
59EDBCC31FDF4E55003573DE /* RCTScrollableProtocol.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */; };
|
||||
59EDBCC41FDF4E55003573DE /* RCTScrollContentShadowView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */; };
|
||||
59EDBCC41FDF4E55003573DE /* (null) in Copy Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCC51FDF4E55003573DE /* RCTScrollContentView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */; };
|
||||
59EDBCC61FDF4E55003573DE /* RCTScrollContentViewManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */; };
|
||||
59EDBCC61FDF4E55003573DE /* (null) in Copy Headers */ = {isa = PBXBuildFile; };
|
||||
59EDBCC71FDF4E55003573DE /* RCTScrollView.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */; };
|
||||
59EDBCC81FDF4E55003573DE /* RCTScrollViewManager.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 59EDBCA51FDF4E0C003573DE /* RCTScrollViewManager.h */; };
|
||||
657734841EE834C900A0E9EA /* RCTInspectorDevServerHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 657734821EE834C900A0E9EA /* RCTInspectorDevServerHelper.h */; };
|
||||
@ -1338,9 +1343,9 @@
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
59EDBCC31FDF4E55003573DE /* RCTScrollableProtocol.h in Copy Headers */,
|
||||
59EDBCC41FDF4E55003573DE /* RCTScrollContentShadowView.h in Copy Headers */,
|
||||
59EDBCC41FDF4E55003573DE /* (null) in Copy Headers */,
|
||||
59EDBCC51FDF4E55003573DE /* RCTScrollContentView.h in Copy Headers */,
|
||||
59EDBCC61FDF4E55003573DE /* RCTScrollContentViewManager.h in Copy Headers */,
|
||||
59EDBCC61FDF4E55003573DE /* (null) in Copy Headers */,
|
||||
59EDBCC71FDF4E55003573DE /* RCTScrollView.h in Copy Headers */,
|
||||
59EDBCC81FDF4E55003573DE /* RCTScrollViewManager.h in Copy Headers */,
|
||||
594F0A411FD233BD007FBE96 /* RCTSurface.h in Copy Headers */,
|
||||
@ -1569,9 +1574,9 @@
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
59EDBCBD1FDF4E43003573DE /* RCTScrollableProtocol.h in Copy Headers */,
|
||||
59EDBCBE1FDF4E43003573DE /* RCTScrollContentShadowView.h in Copy Headers */,
|
||||
59EDBCBE1FDF4E43003573DE /* (null) in Copy Headers */,
|
||||
59EDBCBF1FDF4E43003573DE /* RCTScrollContentView.h in Copy Headers */,
|
||||
59EDBCC01FDF4E43003573DE /* RCTScrollContentViewManager.h in Copy Headers */,
|
||||
59EDBCC01FDF4E43003573DE /* (null) in Copy Headers */,
|
||||
59EDBCC11FDF4E43003573DE /* RCTScrollView.h in Copy Headers */,
|
||||
59EDBCC21FDF4E43003573DE /* RCTScrollViewManager.h in Copy Headers */,
|
||||
594F0A381FD233A2007FBE96 /* RCTSurface.h in Copy Headers */,
|
||||
@ -1989,7 +1994,6 @@
|
||||
13E067481A70F434002CDEE1 /* RCTUIManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTUIManager.h; sourceTree = "<group>"; };
|
||||
13E067491A70F434002CDEE1 /* RCTUIManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTUIManager.m; sourceTree = "<group>"; };
|
||||
13E0674B1A70F44B002CDEE1 /* RCTShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTShadowView.h; sourceTree = "<group>"; };
|
||||
13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = "<group>"; };
|
||||
13E0674D1A70F44B002CDEE1 /* RCTViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTViewManager.h; sourceTree = "<group>"; };
|
||||
13E0674E1A70F44B002CDEE1 /* RCTViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTViewManager.m; sourceTree = "<group>"; };
|
||||
13E0674F1A70F44B002CDEE1 /* RCTView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTView.h; sourceTree = "<group>"; };
|
||||
@ -2135,12 +2139,15 @@
|
||||
3EDCA8A21D3591E700450C31 /* RCTErrorCustomizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTErrorCustomizer.h; sourceTree = "<group>"; };
|
||||
3EDCA8A31D3591E700450C31 /* RCTErrorInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTErrorInfo.h; sourceTree = "<group>"; };
|
||||
3EDCA8A41D3591E700450C31 /* RCTErrorInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTErrorInfo.m; sourceTree = "<group>"; };
|
||||
5335D5401FE81A4700883D58 /* RCTShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = "<group>"; };
|
||||
5376C5E01FC6DDB20083513D /* YGNodePrint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YGNodePrint.h; sourceTree = "<group>"; };
|
||||
5376C5E11FC6DDB20083513D /* YGNodePrint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YGNodePrint.cpp; sourceTree = "<group>"; };
|
||||
53CBF1851FB4FE80002CBB31 /* Yoga-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Yoga-internal.h"; sourceTree = "<group>"; };
|
||||
53CBF1861FB4FE80002CBB31 /* YGEnums.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YGEnums.cpp; sourceTree = "<group>"; };
|
||||
53CBF1871FB4FE80002CBB31 /* Yoga.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Yoga.cpp; sourceTree = "<group>"; };
|
||||
53D123831FBF1D49001B8A10 /* libyoga.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libyoga.a; path = "../../../../../../../../../Library/Developer/Xcode/DerivedData/yoga-hdfifpwsinitsibujacpiefkjfdy/Build/Products/Debug/libyoga.a"; sourceTree = "<group>"; };
|
||||
53EC85DE1FDEC75A0051B2B5 /* YGNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YGNode.h; sourceTree = "<group>"; };
|
||||
53EC85DF1FDEC75A0051B2B5 /* YGNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YGNode.cpp; sourceTree = "<group>"; };
|
||||
58114A121AAE854800E7D092 /* RCTPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTPicker.h; sourceTree = "<group>"; };
|
||||
58114A131AAE854800E7D092 /* RCTPicker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTPicker.m; sourceTree = "<group>"; };
|
||||
58114A141AAE854800E7D092 /* RCTPickerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTPickerManager.h; sourceTree = "<group>"; };
|
||||
@ -2188,12 +2195,8 @@
|
||||
59EB6DB91EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = "<group>"; };
|
||||
59EB6DBA1EBD6FC90072A5E7 /* RCTUIManagerObserverCoordinator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTUIManagerObserverCoordinator.mm; sourceTree = "<group>"; };
|
||||
59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollableProtocol.h; sourceTree = "<group>"; };
|
||||
59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = "<group>"; };
|
||||
59EDBC9E1FDF4E0C003573DE /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = "<group>"; };
|
||||
59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentView.h; sourceTree = "<group>"; };
|
||||
59EDBCA01FDF4E0C003573DE /* RCTScrollContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentView.m; sourceTree = "<group>"; };
|
||||
59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = "<group>"; };
|
||||
59EDBCA21FDF4E0C003573DE /* RCTScrollContentViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentViewManager.m; sourceTree = "<group>"; };
|
||||
59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollView.h; sourceTree = "<group>"; };
|
||||
59EDBCA41FDF4E0C003573DE /* RCTScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTScrollView.m; sourceTree = "<group>"; };
|
||||
59EDBCA51FDF4E0C003573DE /* RCTScrollViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewManager.h; sourceTree = "<group>"; };
|
||||
@ -2315,6 +2318,8 @@
|
||||
130A77021DF767AF001F9587 /* yoga */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
53EC85DF1FDEC75A0051B2B5 /* YGNode.cpp */,
|
||||
53EC85DE1FDEC75A0051B2B5 /* YGNode.h */,
|
||||
5376C5E11FC6DDB20083513D /* YGNodePrint.cpp */,
|
||||
5376C5E01FC6DDB20083513D /* YGNodePrint.h */,
|
||||
53CBF1861FB4FE80002CBB31 /* YGEnums.cpp */,
|
||||
@ -2503,6 +2508,7 @@
|
||||
13B07FF31A6947C200A75B9A /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5335D5401FE81A4700883D58 /* RCTShadowView.m */,
|
||||
B95154301D1B34B200FE7B80 /* RCTActivityIndicatorView.h */,
|
||||
B95154311D1B34B200FE7B80 /* RCTActivityIndicatorView.m */,
|
||||
13B080181A69489C00A75B9A /* RCTActivityIndicatorViewManager.h */,
|
||||
@ -2563,7 +2569,6 @@
|
||||
131B6AF21AF1093D00FFC3E0 /* RCTSegmentedControlManager.h */,
|
||||
131B6AF31AF1093D00FFC3E0 /* RCTSegmentedControlManager.m */,
|
||||
13E0674B1A70F44B002CDEE1 /* RCTShadowView.h */,
|
||||
13E0674C1A70F44B002CDEE1 /* RCTShadowView.m */,
|
||||
597633351F4E021D005BE8A4 /* RCTShadowView+Internal.h */,
|
||||
597633341F4E021D005BE8A4 /* RCTShadowView+Internal.m */,
|
||||
590D7BFB1EBD458B00D8A370 /* RCTShadowView+Layout.h */,
|
||||
@ -2800,12 +2805,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
59EDBC9C1FDF4E0C003573DE /* RCTScrollableProtocol.h */,
|
||||
59EDBC9D1FDF4E0C003573DE /* RCTScrollContentShadowView.h */,
|
||||
59EDBC9E1FDF4E0C003573DE /* RCTScrollContentShadowView.m */,
|
||||
59EDBC9F1FDF4E0C003573DE /* RCTScrollContentView.h */,
|
||||
59EDBCA01FDF4E0C003573DE /* RCTScrollContentView.m */,
|
||||
59EDBCA11FDF4E0C003573DE /* RCTScrollContentViewManager.h */,
|
||||
59EDBCA21FDF4E0C003573DE /* RCTScrollContentViewManager.m */,
|
||||
59EDBCA31FDF4E0C003573DE /* RCTScrollView.h */,
|
||||
59EDBCA41FDF4E0C003573DE /* RCTScrollView.m */,
|
||||
59EDBCA51FDF4E0C003573DE /* RCTScrollViewManager.h */,
|
||||
@ -3100,7 +3101,7 @@
|
||||
3D302F351DF828F800D6DDAE /* RCTErrorCustomizer.h in Headers */,
|
||||
3D302F361DF828F800D6DDAE /* RCTErrorInfo.h in Headers */,
|
||||
3D302F371DF828F800D6DDAE /* RCTEventDispatcher.h in Headers */,
|
||||
59EDBCAA1FDF4E0C003573DE /* RCTScrollContentShadowView.h in Headers */,
|
||||
59EDBCAA1FDF4E0C003573DE /* (null) in Headers */,
|
||||
594F0A371FD23228007FBE96 /* RCTSurfaceSizeMeasureMode.h in Headers */,
|
||||
3D302F381DF828F800D6DDAE /* RCTFrameUpdate.h in Headers */,
|
||||
3D302F391DF828F800D6DDAE /* RCTImageSource.h in Headers */,
|
||||
@ -3129,7 +3130,7 @@
|
||||
3D302F481DF828F800D6DDAE /* RCTRootView.h in Headers */,
|
||||
3D302F491DF828F800D6DDAE /* RCTRootViewDelegate.h in Headers */,
|
||||
3D302F4A1DF828F800D6DDAE /* RCTRootViewInternal.h in Headers */,
|
||||
59EDBCB21FDF4E0C003573DE /* RCTScrollContentViewManager.h in Headers */,
|
||||
59EDBCB21FDF4E0C003573DE /* (null) in Headers */,
|
||||
3D302F4B1DF828F800D6DDAE /* RCTTouchEvent.h in Headers */,
|
||||
59D031F21F8353D3008361F0 /* RCTSafeAreaView.h in Headers */,
|
||||
3D302F4C1DF828F800D6DDAE /* RCTTouchHandler.h in Headers */,
|
||||
@ -3233,6 +3234,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
53EC85E41FDEC7630051B2B5 /* YGNode.h in Headers */,
|
||||
53D1239F1FBF1EFB001B8A10 /* Yoga-internal.h in Headers */,
|
||||
3DFE0D161DF8574D00459392 /* YGEnums.h in Headers */,
|
||||
3DFE0D171DF8574D00459392 /* YGMacros.h in Headers */,
|
||||
@ -3310,6 +3312,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
53EC85E51FDEC7630051B2B5 /* YGNode.h in Headers */,
|
||||
53D1239E1FBF1EFB001B8A10 /* Yoga-internal.h in Headers */,
|
||||
133957881DF76D3500EC27BE /* YGEnums.h in Headers */,
|
||||
1339578B1DF76D3500EC27BE /* Yoga.h in Headers */,
|
||||
@ -3384,6 +3387,7 @@
|
||||
3D80DA1F1DF820620028D040 /* RCTPushNotificationManager.h in Headers */,
|
||||
3D80DA201DF820620028D040 /* RCTAssert.h in Headers */,
|
||||
3D80DA211DF820620028D040 /* RCTBridge.h in Headers */,
|
||||
534D3F821FE7E296002E5E0D /* YGNode.h in Headers */,
|
||||
13F880381E296D2800C3C7A1 /* JSCWrapper.h in Headers */,
|
||||
3D80DA221DF820620028D040 /* RCTBridge+Private.h in Headers */,
|
||||
599FAA461FB274980058CCF6 /* RCTSurfaceStage.h in Headers */,
|
||||
@ -3405,7 +3409,7 @@
|
||||
3D7BFD2D1EA8E3FA008DFB7A /* RCTReconnectingWebSocket.h in Headers */,
|
||||
3D80DA2C1DF820620028D040 /* RCTEventDispatcher.h in Headers */,
|
||||
3D80DA2D1DF820620028D040 /* RCTFrameUpdate.h in Headers */,
|
||||
59EDBCA91FDF4E0C003573DE /* RCTScrollContentShadowView.h in Headers */,
|
||||
59EDBCA91FDF4E0C003573DE /* (null) in Headers */,
|
||||
3D80DA2E1DF820620028D040 /* RCTImageSource.h in Headers */,
|
||||
3D80DA2F1DF820620028D040 /* RCTInvalidating.h in Headers */,
|
||||
598FD1971F817336006C54CB /* RCTModalManager.h in Headers */,
|
||||
@ -3427,7 +3431,7 @@
|
||||
53D123B21FBF220F001B8A10 /* Yoga.h in Headers */,
|
||||
3D80DA391DF820620028D040 /* RCTNullability.h in Headers */,
|
||||
3D80DA3A1DF820620028D040 /* RCTParserUtils.h in Headers */,
|
||||
59EDBCB11FDF4E0C003573DE /* RCTScrollContentViewManager.h in Headers */,
|
||||
59EDBCB11FDF4E0C003573DE /* (null) in Headers */,
|
||||
599FAA421FB274980058CCF6 /* RCTSurfaceRootView.h in Headers */,
|
||||
59D031F91F8353D3008361F0 /* RCTSafeAreaViewManager.h in Headers */,
|
||||
3D80DA3B1DF820620028D040 /* RCTPerformanceLogger.h in Headers */,
|
||||
@ -4088,7 +4092,7 @@
|
||||
2D3B5EA31D9B08BE00451313 /* RCTParserUtils.m in Sources */,
|
||||
59500D461F71C63F00B122B7 /* RCTUIManagerUtils.m in Sources */,
|
||||
599FAA4D1FB274980058CCF6 /* RCTSurfaceView.mm in Sources */,
|
||||
59EDBCB41FDF4E0C003573DE /* RCTScrollContentViewManager.m in Sources */,
|
||||
59EDBCB41FDF4E0C003573DE /* (null) in Sources */,
|
||||
2D3B5EA01D9B08B200451313 /* RCTLog.mm in Sources */,
|
||||
5960C1BC1F0804A00066FD5B /* RCTLayoutAnimationGroup.m in Sources */,
|
||||
2D3B5ECF1D9B096F00451313 /* RCTFont.mm in Sources */,
|
||||
@ -4154,7 +4158,7 @@
|
||||
2D3B5E941D9B087900451313 /* RCTBundleURLProvider.m in Sources */,
|
||||
2D3B5EB81D9B091B00451313 /* RCTSourceCode.m in Sources */,
|
||||
2D3B5EB51D9B091100451313 /* RCTDevMenu.m in Sources */,
|
||||
59EDBCAC1FDF4E0C003573DE /* RCTScrollContentShadowView.m in Sources */,
|
||||
59EDBCAC1FDF4E0C003573DE /* (null) in Sources */,
|
||||
2D3B5EBD1D9B092A00451313 /* RCTTiming.m in Sources */,
|
||||
135A9C041E7B0F6400587AEB /* RCTJSCErrorHandling.mm in Sources */,
|
||||
2D3B5EA81D9B08D300451313 /* RCTUtils.m in Sources */,
|
||||
@ -4195,7 +4199,6 @@
|
||||
2D3B5EC11D9B093900451313 /* RCTFPSGraph.m in Sources */,
|
||||
2D3B5E9A1D9B089D00451313 /* RCTEventDispatcher.m in Sources */,
|
||||
2D3B5ED61D9B098400451313 /* RCTModalHostViewManager.m in Sources */,
|
||||
2D3B5EE51D9B09BE00451313 /* RCTShadowView.m in Sources */,
|
||||
135A9C051E7B0F7500587AEB /* RCTJSCHelpers.mm in Sources */,
|
||||
2D3B5EC71D9B095600451313 /* RCTActivityIndicatorView.m in Sources */,
|
||||
2D3B5EB21D9B090300451313 /* RCTAsyncLocalStorage.m in Sources */,
|
||||
@ -4247,6 +4250,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
53D123A01FBF1EFF001B8A10 /* Yoga.cpp in Sources */,
|
||||
53EC85E21FDEC75F0051B2B5 /* YGNode.cpp in Sources */,
|
||||
53D1239A1FBF1EF2001B8A10 /* YGEnums.cpp in Sources */,
|
||||
5376C5E41FC6DDBC0083513D /* YGNodePrint.cpp in Sources */,
|
||||
);
|
||||
@ -4257,6 +4261,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
53D123A11FBF1EFF001B8A10 /* Yoga.cpp in Sources */,
|
||||
53EC85E31FDEC75F0051B2B5 /* YGNode.cpp in Sources */,
|
||||
53D1239B1FBF1EF4001B8A10 /* YGEnums.cpp in Sources */,
|
||||
5376C5E51FC6DDBD0083513D /* YGNodePrint.cpp in Sources */,
|
||||
);
|
||||
@ -4364,7 +4369,7 @@
|
||||
13A0C28A1B74F71200B29F6F /* RCTDevMenu.m in Sources */,
|
||||
13BCE8091C99CB9D00DD7AAD /* RCTRootShadowView.m in Sources */,
|
||||
006FC4141D9B20820057AAAD /* RCTMultipartDataTask.m in Sources */,
|
||||
59EDBCB31FDF4E0C003573DE /* RCTScrollContentViewManager.m in Sources */,
|
||||
59EDBCB31FDF4E0C003573DE /* (null) in Sources */,
|
||||
13CC8A821B17642100940AE7 /* RCTBorderDrawing.m in Sources */,
|
||||
C60128AD1F3D1258009DF9FF /* RCTCxxConvert.m in Sources */,
|
||||
83CBBA511A601E3B00E9B192 /* RCTAssert.m in Sources */,
|
||||
@ -4402,7 +4407,7 @@
|
||||
3D37B5821D522B190042D5B5 /* RCTFont.mm in Sources */,
|
||||
137327EA1AA5CF210034F82E /* RCTTabBarManager.m in Sources */,
|
||||
59EDBCB71FDF4E0C003573DE /* RCTScrollView.m in Sources */,
|
||||
59EDBCAB1FDF4E0C003573DE /* RCTScrollContentShadowView.m in Sources */,
|
||||
59EDBCAB1FDF4E0C003573DE /* (null) in Sources */,
|
||||
59EDBCBB1FDF4E0C003573DE /* RCTScrollViewManager.m in Sources */,
|
||||
369123E11DDC75850095B341 /* RCTJSCSamplingProfiler.m in Sources */,
|
||||
599FAA441FB274980058CCF6 /* RCTSurfaceRootView.mm in Sources */,
|
||||
@ -4447,12 +4452,12 @@
|
||||
13C156051AB1A2840079392D /* RCTWebView.m in Sources */,
|
||||
83CBBA601A601EAA00E9B192 /* RCTBridge.m in Sources */,
|
||||
590D7BFF1EBD458B00D8A370 /* RCTShadowView+Layout.m in Sources */,
|
||||
5335D5411FE81A4700883D58 /* RCTShadowView.m in Sources */,
|
||||
66CD94B31F1045E700CB3C7C /* RCTMaskedView.m in Sources */,
|
||||
13C156061AB1A2840079392D /* RCTWebViewManager.m in Sources */,
|
||||
58114A161AAE854800E7D092 /* RCTPicker.m in Sources */,
|
||||
137327E81AA5CF210034F82E /* RCTTabBarItem.m in Sources */,
|
||||
83A1FE8C1B62640A00BE0E65 /* RCTModalHostView.m in Sources */,
|
||||
13E067551A70F44B002CDEE1 /* RCTShadowView.m in Sources */,
|
||||
9936F3371F5F2F480010BF04 /* PrivateDataBase.cpp in Sources */,
|
||||
1450FF871BCFF28A00208362 /* RCTProfileTrampoline-arm.S in Sources */,
|
||||
131B6AF51AF1093D00FFC3E0 /* RCTSegmentedControlManager.m in Sources */,
|
||||
@ -4461,6 +4466,7 @@
|
||||
657734911EE8354A00A0E9EA /* RCTInspectorPackagerConnection.m in Sources */,
|
||||
68EFE4EE1CF6EB3900A1DE13 /* RCTBundleURLProvider.m in Sources */,
|
||||
B95154321D1B34B200FE7B80 /* RCTActivityIndicatorView.m in Sources */,
|
||||
534D3F811FE7E277002E5E0D /* YGNode.cpp in Sources */,
|
||||
5960C1BB1F0804A00066FD5B /* RCTLayoutAnimationGroup.m in Sources */,
|
||||
13B0801A1A69489C00A75B9A /* RCTNavigator.m in Sources */,
|
||||
137327E71AA5CF210034F82E /* RCTTabBar.m in Sources */,
|
||||
|
@ -10,11 +10,11 @@
|
||||
#import "RCTShadowView.h"
|
||||
|
||||
#import "RCTConvert.h"
|
||||
#import "RCTI18nUtil.h"
|
||||
#import "RCTLog.h"
|
||||
#import "RCTUtils.h"
|
||||
#import "UIView+Private.h"
|
||||
#import "UIView+React.h"
|
||||
#import "RCTI18nUtil.h"
|
||||
|
||||
typedef void (^RCTActionBlock)(RCTShadowView *shadowViewSelf, id value);
|
||||
typedef void (^RCTResetActionBlock)(RCTShadowView *shadowViewSelf);
|
||||
@ -369,8 +369,8 @@ static void RCTProcessMetaPropsBorder(const YGValue metaProps[META_PROP_COUNT],
|
||||
_reactSubviews = [NSMutableArray array];
|
||||
|
||||
_yogaNode = YGNodeNewWithConfig([[self class] yogaConfig]);
|
||||
YGNodeSetContext(_yogaNode, (__bridge void *)self);
|
||||
YGNodeSetPrintFunc(_yogaNode, RCTPrint);
|
||||
YGNodeSetContext(_yogaNode, (__bridge void *)self);
|
||||
YGNodeSetPrintFunc(_yogaNode, RCTPrint);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -8,8 +8,9 @@
|
||||
*/
|
||||
|
||||
#include <fb/fbjni.h>
|
||||
#include <iostream>
|
||||
#include <yoga/YGNode.h>
|
||||
#include <yoga/Yoga.h>
|
||||
#include <iostream>
|
||||
|
||||
using namespace facebook::jni;
|
||||
using namespace std;
|
||||
@ -19,7 +20,7 @@ struct JYogaNode : public JavaClass<JYogaNode> {
|
||||
};
|
||||
|
||||
static inline weak_ref<JYogaNode> *YGNodeJobject(YGNodeRef node) {
|
||||
return reinterpret_cast<weak_ref<JYogaNode> *>(YGNodeGetContext(node));
|
||||
return reinterpret_cast<weak_ref<JYogaNode>*>(node->getContext());
|
||||
}
|
||||
|
||||
static void YGTransferLayoutDirection(YGNodeRef node, alias_ref<jobject> javaNode) {
|
||||
@ -28,7 +29,7 @@ static void YGTransferLayoutDirection(YGNodeRef node, alias_ref<jobject> javaNod
|
||||
}
|
||||
|
||||
static void YGTransferLayoutOutputsRecursive(YGNodeRef root) {
|
||||
if (YGNodeGetHasNewLayout(root)) {
|
||||
if (root->getHasNewLayout()) {
|
||||
if (auto obj = YGNodeJobject(root)->lockLocal()) {
|
||||
static auto widthField = obj->getClass()->getField<jfloat>("mWidth");
|
||||
static auto heightField = obj->getClass()->getField<jfloat>("mHeight");
|
||||
@ -88,7 +89,7 @@ static void YGTransferLayoutOutputsRecursive(YGNodeRef root) {
|
||||
|
||||
obj->setFieldValue<jboolean>(hasNewLayoutField, true);
|
||||
YGTransferLayoutDirection(root, obj);
|
||||
YGNodeSetHasNewLayout(root, false);
|
||||
root->setHasNewLayout(false);
|
||||
|
||||
for (uint32_t i = 0; i < YGNodeGetChildCount(root); i++) {
|
||||
YGTransferLayoutOutputsRecursive(YGNodeGetChild(root, i));
|
||||
@ -188,15 +189,17 @@ static inline YGConfigRef _jlong2YGConfigRef(jlong addr) {
|
||||
|
||||
jlong jni_YGNodeNew(alias_ref<jobject> thiz) {
|
||||
const YGNodeRef node = YGNodeNew();
|
||||
YGNodeSetContext(node, new weak_ref<jobject>(make_weak(thiz)));
|
||||
YGNodeSetPrintFunc(node, YGPrint);
|
||||
node->setContext(new weak_ref<jobject>(make_weak(thiz)));
|
||||
// YGNodeSetContext(node, new weak_ref<jobject>(make_weak(thiz)));
|
||||
node->setPrintFunc(YGPrint);
|
||||
// YGNodeSetPrintFunc(node, YGPrint);
|
||||
return reinterpret_cast<jlong>(node);
|
||||
}
|
||||
|
||||
jlong jni_YGNodeNewWithConfig(alias_ref<jobject> thiz, jlong configPointer) {
|
||||
const YGNodeRef node = YGNodeNewWithConfig(_jlong2YGConfigRef(configPointer));
|
||||
YGNodeSetContext(node, new weak_ref<jobject>(make_weak(thiz)));
|
||||
YGNodeSetPrintFunc(node, YGPrint);
|
||||
node->setContext(new weak_ref<jobject>(make_weak(thiz)));
|
||||
node->setPrintFunc(YGPrint);
|
||||
return reinterpret_cast<jlong>(node);
|
||||
}
|
||||
|
||||
@ -208,10 +211,10 @@ void jni_YGNodeFree(alias_ref<jobject> thiz, jlong nativePointer) {
|
||||
|
||||
void jni_YGNodeReset(alias_ref<jobject> thiz, jlong nativePointer) {
|
||||
const YGNodeRef node = _jlong2YGNodeRef(nativePointer);
|
||||
void *context = YGNodeGetContext(node);
|
||||
void* context = node->getContext();
|
||||
YGNodeReset(node);
|
||||
YGNodeSetContext(node, context);
|
||||
YGNodeSetPrintFunc(node, YGPrint);
|
||||
node->setContext(context);
|
||||
node->setPrintFunc(YGPrint);
|
||||
}
|
||||
|
||||
void jni_YGNodePrint(alias_ref<jobject> thiz, jlong nativePointer) {
|
||||
@ -246,18 +249,19 @@ void jni_YGNodeMarkDirty(alias_ref<jobject>, jlong nativePointer) {
|
||||
}
|
||||
|
||||
jboolean jni_YGNodeIsDirty(alias_ref<jobject>, jlong nativePointer) {
|
||||
return (jboolean) YGNodeIsDirty(_jlong2YGNodeRef(nativePointer));
|
||||
return (jboolean)_jlong2YGNodeRef(nativePointer)->isDirty();
|
||||
}
|
||||
|
||||
void jni_YGNodeSetHasMeasureFunc(alias_ref<jobject>, jlong nativePointer, jboolean hasMeasureFunc) {
|
||||
YGNodeSetMeasureFunc(_jlong2YGNodeRef(nativePointer), hasMeasureFunc ? YGJNIMeasureFunc : NULL);
|
||||
_jlong2YGNodeRef(nativePointer)
|
||||
->setMeasureFunc(hasMeasureFunc ? YGJNIMeasureFunc : nullptr);
|
||||
}
|
||||
|
||||
void jni_YGNodeSetHasBaselineFunc(alias_ref<jobject>,
|
||||
jlong nativePointer,
|
||||
jboolean hasBaselineFunc) {
|
||||
YGNodeSetBaselineFunc(_jlong2YGNodeRef(nativePointer),
|
||||
hasBaselineFunc ? YGJNIBaselineFunc : NULL);
|
||||
_jlong2YGNodeRef(nativePointer)
|
||||
->setBaseLineFunc(hasBaselineFunc ? YGJNIBaselineFunc : nullptr);
|
||||
}
|
||||
|
||||
void jni_YGNodeCopyStyle(alias_ref<jobject>, jlong dstNativePointer, jlong srcNativePointer) {
|
||||
|
399
ReactCommon/yoga/yoga/YGNode.cpp
Normal file
399
ReactCommon/yoga/yoga/YGNode.cpp
Normal file
@ -0,0 +1,399 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "YGNode.h"
|
||||
#include <iostream>
|
||||
|
||||
void* YGNode::getContext() const {
|
||||
return context_;
|
||||
}
|
||||
|
||||
YGPrintFunc YGNode::getPrintFunc() const {
|
||||
return print_;
|
||||
}
|
||||
|
||||
bool YGNode::getHasNewLayout() const {
|
||||
return hasNewLayout_;
|
||||
}
|
||||
|
||||
YGNodeType YGNode::getNodeType() const {
|
||||
return nodeType_;
|
||||
}
|
||||
|
||||
YGMeasureFunc YGNode::getMeasure() const {
|
||||
return measure_;
|
||||
}
|
||||
|
||||
YGBaselineFunc YGNode::getBaseline() const {
|
||||
return baseline_;
|
||||
}
|
||||
|
||||
YGStyle YGNode::getStyle() const {
|
||||
return style_;
|
||||
}
|
||||
|
||||
YGLayout YGNode::getLayout() const {
|
||||
return layout_;
|
||||
}
|
||||
|
||||
YGLayout& YGNode::getLayoutRef() {
|
||||
return layout_;
|
||||
}
|
||||
|
||||
uint32_t YGNode::getLineIndex() const {
|
||||
return lineIndex_;
|
||||
}
|
||||
|
||||
YGNodeRef YGNode::getParent() const {
|
||||
return parent_;
|
||||
}
|
||||
|
||||
YGVector YGNode::getChildren() const {
|
||||
return children_;
|
||||
}
|
||||
|
||||
YGNodeRef YGNode::getChild(uint32_t index) const {
|
||||
return children_.at(index);
|
||||
}
|
||||
|
||||
YGNodeRef YGNode::getNextChild() const {
|
||||
return nextChild_;
|
||||
}
|
||||
|
||||
YGConfigRef YGNode::getConfig() const {
|
||||
return config_;
|
||||
}
|
||||
|
||||
bool YGNode::isDirty() const {
|
||||
return isDirty_;
|
||||
}
|
||||
|
||||
YGValue YGNode::getResolvedDimension(int index) {
|
||||
return resolvedDimensions_[index];
|
||||
}
|
||||
|
||||
std::array<YGValue, 2> YGNode::getResolvedDimensions() const {
|
||||
return resolvedDimensions_;
|
||||
}
|
||||
// Setters
|
||||
|
||||
void YGNode::setContext(void* context) {
|
||||
context_ = context;
|
||||
}
|
||||
|
||||
void YGNode::setPrintFunc(YGPrintFunc printFunc) {
|
||||
print_ = printFunc;
|
||||
}
|
||||
|
||||
void YGNode::setHasNewLayout(bool hasNewLayout) {
|
||||
hasNewLayout_ = hasNewLayout;
|
||||
}
|
||||
|
||||
void YGNode::setNodeType(YGNodeType nodeType) {
|
||||
nodeType_ = nodeType;
|
||||
}
|
||||
|
||||
void YGNode::setStyleFlexDirection(YGFlexDirection direction) {
|
||||
style_.flexDirection = direction;
|
||||
}
|
||||
|
||||
void YGNode::setStyleAlignContent(YGAlign alignContent) {
|
||||
style_.alignContent = alignContent;
|
||||
}
|
||||
|
||||
void YGNode::setMeasureFunc(YGMeasureFunc measureFunc) {
|
||||
if (measureFunc == nullptr) {
|
||||
measure_ = nullptr;
|
||||
// TODO: t18095186 Move nodeType to opt-in function and mark appropriate
|
||||
// places in Litho
|
||||
nodeType_ = YGNodeTypeDefault;
|
||||
} else {
|
||||
YGAssertWithNode(
|
||||
this,
|
||||
children_.size() == 0,
|
||||
"Cannot set measure function: Nodes with measure functions cannot have children.");
|
||||
measure_ = measureFunc;
|
||||
// TODO: t18095186 Move nodeType to opt-in function and mark appropriate
|
||||
// places in Litho
|
||||
setNodeType(YGNodeTypeText);
|
||||
}
|
||||
|
||||
measure_ = measureFunc;
|
||||
}
|
||||
|
||||
void YGNode::setBaseLineFunc(YGBaselineFunc baseLineFunc) {
|
||||
baseline_ = baseLineFunc;
|
||||
}
|
||||
|
||||
void YGNode::setStyle(YGStyle style) {
|
||||
style_ = style;
|
||||
}
|
||||
|
||||
void YGNode::setLayout(YGLayout layout) {
|
||||
layout_ = layout;
|
||||
}
|
||||
|
||||
void YGNode::setLineIndex(uint32_t lineIndex) {
|
||||
lineIndex_ = lineIndex;
|
||||
}
|
||||
|
||||
void YGNode::setParent(YGNodeRef parent) {
|
||||
parent_ = parent;
|
||||
}
|
||||
|
||||
void YGNode::setChildren(YGVector children) {
|
||||
children_ = children;
|
||||
}
|
||||
|
||||
void YGNode::setNextChild(YGNodeRef nextChild) {
|
||||
nextChild_ = nextChild;
|
||||
}
|
||||
|
||||
void YGNode::replaceChild(YGNodeRef child, uint32_t index) {
|
||||
children_[index] = child;
|
||||
}
|
||||
|
||||
void YGNode::insertChild(YGNodeRef child, uint32_t index) {
|
||||
children_.insert(children_.begin() + index, child);
|
||||
}
|
||||
|
||||
void YGNode::setConfig(YGConfigRef config) {
|
||||
config_ = config;
|
||||
}
|
||||
|
||||
void YGNode::setDirty(bool isDirty) {
|
||||
isDirty_ = isDirty;
|
||||
}
|
||||
|
||||
bool YGNode::removeChild(YGNodeRef child) {
|
||||
std::vector<YGNodeRef>::iterator p =
|
||||
std::find(children_.begin(), children_.end(), child);
|
||||
if (p != children_.end()) {
|
||||
children_.erase(p);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void YGNode::removeChild(uint32_t index) {
|
||||
children_.erase(children_.begin() + index);
|
||||
}
|
||||
|
||||
void YGNode::setLayoutDirection(YGDirection direction) {
|
||||
layout_.direction = direction;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutMargin(float margin, int index) {
|
||||
layout_.margin[index] = margin;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutBorder(float border, int index) {
|
||||
layout_.border[index] = border;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutPadding(float padding, int index) {
|
||||
layout_.padding[index] = padding;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutLastParentDirection(YGDirection direction) {
|
||||
layout_.lastParentDirection = direction;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutComputedFlexBasis(float computedFlexBasis) {
|
||||
layout_.computedFlexBasis = computedFlexBasis;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutPosition(float position, int index) {
|
||||
layout_.position[index] = position;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutComputedFlexBasisGeneration(
|
||||
uint32_t computedFlexBasisGeneration) {
|
||||
layout_.computedFlexBasisGeneration = computedFlexBasisGeneration;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutMeasuredDimension(float measuredDimension, int index) {
|
||||
layout_.measuredDimensions[index] = measuredDimension;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutHadOverflow(bool hadOverflow) {
|
||||
layout_.hadOverflow = hadOverflow;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutDimension(float dimension, int index) {
|
||||
layout_.dimensions[index] = dimension;
|
||||
}
|
||||
|
||||
YGNode::YGNode()
|
||||
: context_(nullptr),
|
||||
print_(nullptr),
|
||||
hasNewLayout_(true),
|
||||
nodeType_(YGNodeTypeDefault),
|
||||
measure_(nullptr),
|
||||
baseline_(nullptr),
|
||||
style_(gYGNodeStyleDefaults),
|
||||
layout_(gYGNodeLayoutDefaults),
|
||||
lineIndex_(0),
|
||||
parent_(nullptr),
|
||||
children_(YGVector()),
|
||||
nextChild_(nullptr),
|
||||
config_(nullptr),
|
||||
isDirty_(false),
|
||||
resolvedDimensions_({{YGValueUndefined, YGValueUndefined}}) {}
|
||||
|
||||
YGNode::YGNode(const YGNode& node)
|
||||
: context_(node.getContext()),
|
||||
print_(node.getPrintFunc()),
|
||||
hasNewLayout_(node.getHasNewLayout()),
|
||||
nodeType_(node.getNodeType()),
|
||||
measure_(node.getMeasure()),
|
||||
baseline_(node.getBaseline()),
|
||||
style_(node.getStyle()),
|
||||
layout_(node.getLayout()),
|
||||
lineIndex_(node.getLineIndex()),
|
||||
parent_(node.getParent()),
|
||||
children_(node.getChildren()),
|
||||
nextChild_(node.getNextChild()),
|
||||
config_(node.getConfig()),
|
||||
isDirty_(node.isDirty()),
|
||||
resolvedDimensions_(node.getResolvedDimensions()) {}
|
||||
|
||||
YGNode::YGNode(const YGConfigRef newConfig) : YGNode() {
|
||||
config_ = newConfig;
|
||||
}
|
||||
|
||||
YGNode::YGNode(
|
||||
void* context,
|
||||
YGPrintFunc print,
|
||||
bool hasNewLayout,
|
||||
YGNodeType nodeType,
|
||||
YGMeasureFunc measure,
|
||||
YGBaselineFunc baseline,
|
||||
YGStyle style,
|
||||
YGLayout layout,
|
||||
uint32_t lineIndex,
|
||||
YGNodeRef parent,
|
||||
YGVector children,
|
||||
YGNodeRef nextChild,
|
||||
YGConfigRef config,
|
||||
bool isDirty,
|
||||
std::array<YGValue, 2> resolvedDimensions)
|
||||
: context_(context),
|
||||
print_(print),
|
||||
hasNewLayout_(hasNewLayout),
|
||||
nodeType_(nodeType),
|
||||
measure_(measure),
|
||||
baseline_(baseline),
|
||||
style_(style),
|
||||
layout_(layout),
|
||||
lineIndex_(lineIndex),
|
||||
parent_(parent),
|
||||
children_(children),
|
||||
nextChild_(nextChild),
|
||||
config_(config),
|
||||
isDirty_(isDirty),
|
||||
resolvedDimensions_(resolvedDimensions) {}
|
||||
|
||||
YGNode& YGNode::operator=(const YGNode& node) {
|
||||
if (&node == this) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
for (auto child : children_) {
|
||||
delete child;
|
||||
}
|
||||
|
||||
context_ = node.getContext();
|
||||
print_ = node.getPrintFunc();
|
||||
hasNewLayout_ = node.getHasNewLayout();
|
||||
nodeType_ = node.getNodeType();
|
||||
measure_ = node.getMeasure();
|
||||
baseline_ = node.getBaseline();
|
||||
style_ = node.getStyle();
|
||||
layout_ = node.getLayout();
|
||||
lineIndex_ = node.getLineIndex();
|
||||
parent_ = node.getParent();
|
||||
children_ = node.getChildren();
|
||||
nextChild_ = node.getNextChild();
|
||||
config_ = node.getConfig();
|
||||
isDirty_ = node.isDirty();
|
||||
resolvedDimensions_ = node.getResolvedDimensions();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
YGValue YGNode::marginLeadingValue(const YGFlexDirection axis) const {
|
||||
if (YGFlexDirectionIsRow(axis) &&
|
||||
getStyle().margin[YGEdgeStart].unit != YGUnitUndefined) {
|
||||
return getStyle().margin[YGEdgeStart];
|
||||
} else {
|
||||
return getStyle().margin[leading[axis]];
|
||||
}
|
||||
}
|
||||
|
||||
YGValue YGNode::marginTrailingValue(const YGFlexDirection axis) const {
|
||||
if (YGFlexDirectionIsRow(axis) &&
|
||||
getStyle().margin[YGEdgeEnd].unit != YGUnitUndefined) {
|
||||
return getStyle().margin[YGEdgeEnd];
|
||||
} else {
|
||||
return getStyle().margin[trailing[axis]];
|
||||
}
|
||||
}
|
||||
|
||||
YGValue YGNode::resolveFlexBasisPtr() const {
|
||||
YGValue flexBasis = getStyle().flexBasis;
|
||||
if (flexBasis.unit != YGUnitAuto && flexBasis.unit != YGUnitUndefined) {
|
||||
return flexBasis;
|
||||
}
|
||||
if (!YGFloatIsUndefined(getStyle().flex) && getStyle().flex > 0.0f) {
|
||||
return config_->useWebDefaults ? YGValueAuto : YGValueZero;
|
||||
}
|
||||
return YGValueAuto;
|
||||
}
|
||||
|
||||
void YGNode::resolveDimension() {
|
||||
for (uint32_t dim = YGDimensionWidth; dim < YGDimensionCount; dim++) {
|
||||
if (getStyle().maxDimensions[dim].unit != YGUnitUndefined &&
|
||||
YGValueEqual(
|
||||
getStyle().maxDimensions[dim], getStyle().minDimensions[dim])) {
|
||||
resolvedDimensions_[dim] = getStyle().maxDimensions[dim];
|
||||
} else {
|
||||
resolvedDimensions_[dim] = getStyle().dimensions[dim];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void YGNode::clearChildren() {
|
||||
children_.clear();
|
||||
children_.shrink_to_fit();
|
||||
}
|
||||
|
||||
YGNode::~YGNode() {
|
||||
// All the member variables are deallocated externally, so no need to
|
||||
// deallocate here
|
||||
}
|
||||
|
||||
const YGNode& YGNode::defaultValue() {
|
||||
static const YGNode n = {nullptr,
|
||||
nullptr,
|
||||
true,
|
||||
YGNodeTypeDefault,
|
||||
nullptr,
|
||||
nullptr,
|
||||
gYGNodeStyleDefaults,
|
||||
gYGNodeLayoutDefaults,
|
||||
0,
|
||||
nullptr,
|
||||
YGVector(),
|
||||
nullptr,
|
||||
nullptr,
|
||||
false,
|
||||
{{YGValueUndefined, YGValueUndefined}}};
|
||||
return n;
|
||||
}
|
121
ReactCommon/yoga/yoga/YGNode.h
Normal file
121
ReactCommon/yoga/yoga/YGNode.h
Normal file
@ -0,0 +1,121 @@
|
||||
/**
|
||||
* 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
|
||||
#include <stdio.h>
|
||||
|
||||
#include "Yoga-internal.h"
|
||||
|
||||
struct YGNode {
|
||||
private:
|
||||
void* context_;
|
||||
YGPrintFunc print_;
|
||||
bool hasNewLayout_;
|
||||
YGNodeType nodeType_;
|
||||
YGMeasureFunc measure_;
|
||||
YGBaselineFunc baseline_;
|
||||
YGStyle style_;
|
||||
YGLayout layout_;
|
||||
uint32_t lineIndex_;
|
||||
YGNodeRef parent_;
|
||||
YGVector children_;
|
||||
YGNodeRef nextChild_;
|
||||
YGConfigRef config_;
|
||||
bool isDirty_;
|
||||
std::array<YGValue, 2> resolvedDimensions_;
|
||||
|
||||
public:
|
||||
YGNode();
|
||||
~YGNode();
|
||||
explicit YGNode(const YGConfigRef newConfig);
|
||||
YGNode(const YGNode& node);
|
||||
YGNode& operator=(const YGNode& node);
|
||||
YGNode(
|
||||
void* context,
|
||||
YGPrintFunc print,
|
||||
bool hasNewLayout,
|
||||
YGNodeType nodeType,
|
||||
YGMeasureFunc measure,
|
||||
YGBaselineFunc baseline,
|
||||
YGStyle style,
|
||||
YGLayout layout,
|
||||
uint32_t lineIndex,
|
||||
YGNodeRef parent,
|
||||
YGVector children,
|
||||
YGNodeRef nextChild,
|
||||
YGConfigRef config,
|
||||
bool isDirty,
|
||||
std::array<YGValue, 2> resolvedDimensions);
|
||||
|
||||
// Getters
|
||||
void* getContext() const;
|
||||
YGPrintFunc getPrintFunc() const;
|
||||
bool getHasNewLayout() const;
|
||||
YGNodeType getNodeType() const;
|
||||
YGMeasureFunc getMeasure() const;
|
||||
YGBaselineFunc getBaseline() const;
|
||||
YGStyle getStyle() const;
|
||||
YGLayout getLayout() const;
|
||||
YGLayout& getLayoutRef(); // TODO remove its use
|
||||
uint32_t getLineIndex() const;
|
||||
YGNodeRef getParent() const;
|
||||
YGVector getChildren() const;
|
||||
YGNodeRef getChild(uint32_t index) const;
|
||||
YGNodeRef getNextChild() const;
|
||||
YGConfigRef getConfig() const;
|
||||
bool isDirty() const;
|
||||
std::array<YGValue, 2> getResolvedDimensions() const;
|
||||
YGValue getResolvedDimension(int index);
|
||||
|
||||
// Setters
|
||||
|
||||
void setContext(void* context);
|
||||
void setPrintFunc(YGPrintFunc printFunc);
|
||||
void setHasNewLayout(bool hasNewLayout);
|
||||
void setNodeType(YGNodeType nodeTye);
|
||||
void setMeasureFunc(YGMeasureFunc measureFunc);
|
||||
void setBaseLineFunc(YGBaselineFunc baseLineFunc);
|
||||
void setStyle(YGStyle style);
|
||||
void setStyleFlexDirection(YGFlexDirection direction);
|
||||
void setStyleAlignContent(YGAlign alignContent);
|
||||
void setLayout(YGLayout layout);
|
||||
void setLineIndex(uint32_t lineIndex);
|
||||
void setParent(YGNodeRef parent);
|
||||
void setChildren(YGVector children);
|
||||
void setNextChild(YGNodeRef nextChild);
|
||||
void setConfig(YGConfigRef config);
|
||||
void setDirty(bool isDirty);
|
||||
void setLayoutLastParentDirection(YGDirection direction);
|
||||
void setLayoutComputedFlexBasis(float computedFlexBasis);
|
||||
void setLayoutComputedFlexBasisGeneration(
|
||||
uint32_t computedFlexBasisGeneration);
|
||||
void setLayoutMeasuredDimension(float measuredDimension, int index);
|
||||
void setLayoutHadOverflow(bool hadOverflow);
|
||||
void setLayoutDimension(float dimension, int index);
|
||||
|
||||
// Other methods
|
||||
YGValue marginLeadingValue(const YGFlexDirection axis) const;
|
||||
YGValue marginTrailingValue(const YGFlexDirection axis) const;
|
||||
YGValue resolveFlexBasisPtr() const;
|
||||
void resolveDimension();
|
||||
void clearChildren();
|
||||
void replaceChild(YGNodeRef child, uint32_t index);
|
||||
void insertChild(YGNodeRef child, uint32_t index);
|
||||
/// Removes the first occurrence of child
|
||||
bool removeChild(YGNodeRef child);
|
||||
void removeChild(uint32_t index);
|
||||
void setLayoutDirection(YGDirection direction);
|
||||
void setLayoutMargin(float margin, int index);
|
||||
void setLayoutBorder(float border, int index);
|
||||
void setLayoutPadding(float padding, int index);
|
||||
void setLayoutPosition(float position, int index);
|
||||
|
||||
// Static methods
|
||||
static const YGNode& defaultValue();
|
||||
};
|
@ -10,6 +10,7 @@
|
||||
#include "YGNodePrint.h"
|
||||
#include <stdarg.h>
|
||||
#include "YGEnums.h"
|
||||
#include "YGNode.h"
|
||||
#include "Yoga-internal.h"
|
||||
|
||||
namespace facebook {
|
||||
@ -22,7 +23,7 @@ static void indent(string* base, uint32_t level) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool areFourValuesEqual(const YGValue four[4]) {
|
||||
static bool areFourValuesEqual(const std::array<YGValue, YGEdgeCount>& four) {
|
||||
return YGValueEqual(four[0], four[1]) && YGValueEqual(four[0], four[2]) &&
|
||||
YGValueEqual(four[0], four[3]);
|
||||
}
|
||||
@ -50,54 +51,53 @@ appendFloatIfNotUndefined(string* base, const string key, const float num) {
|
||||
static void appendNumberIfNotUndefined(
|
||||
string* base,
|
||||
const string key,
|
||||
const YGValue* const number) {
|
||||
if (number->unit != YGUnitUndefined) {
|
||||
if (number->unit == YGUnitAuto) {
|
||||
const YGValue number) {
|
||||
if (number.unit != YGUnitUndefined) {
|
||||
if (number.unit == YGUnitAuto) {
|
||||
base->append(key + ": auto; ");
|
||||
} else {
|
||||
string unit = number->unit == YGUnitPoint ? "px" : "%%";
|
||||
string unit = number.unit == YGUnitPoint ? "px" : "%%";
|
||||
appendFormatedString(
|
||||
base, "%s: %g%s; ", key.c_str(), number->value, unit.c_str());
|
||||
base, "%s: %g%s; ", key.c_str(), number.value, unit.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void appendNumberIfNotAuto(
|
||||
string* base,
|
||||
const string key,
|
||||
const YGValue* const number) {
|
||||
if (number->unit != YGUnitAuto) {
|
||||
static void
|
||||
appendNumberIfNotAuto(string* base, const string& key, const YGValue number) {
|
||||
if (number.unit != YGUnitAuto) {
|
||||
appendNumberIfNotUndefined(base, key, number);
|
||||
}
|
||||
}
|
||||
|
||||
static void appendNumberIfNotZero(
|
||||
string* base,
|
||||
const string str,
|
||||
const YGValue* const number) {
|
||||
if (!YGFloatsEqual(number->value, 0)) {
|
||||
static void
|
||||
appendNumberIfNotZero(string* base, const string& str, const YGValue number) {
|
||||
if (!YGFloatsEqual(number.value, 0)) {
|
||||
appendNumberIfNotUndefined(base, str, number);
|
||||
}
|
||||
}
|
||||
|
||||
static void appendEdges(string* base, const string key, const YGValue* edges) {
|
||||
static void appendEdges(
|
||||
string* base,
|
||||
const string& key,
|
||||
const std::array<YGValue, YGEdgeCount>& edges) {
|
||||
if (areFourValuesEqual(edges)) {
|
||||
appendNumberIfNotZero(base, key, &edges[YGEdgeLeft]);
|
||||
appendNumberIfNotZero(base, key, edges[YGEdgeLeft]);
|
||||
} else {
|
||||
for (int edge = YGEdgeLeft; edge != YGEdgeAll; ++edge) {
|
||||
string str = key + "-" + YGEdgeToString(static_cast<YGEdge>(edge));
|
||||
appendNumberIfNotZero(base, str, &edges[edge]);
|
||||
appendNumberIfNotZero(base, str, edges[edge]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void appendEdgeIfNotUndefined(
|
||||
string* base,
|
||||
const string str,
|
||||
const YGValue* edges,
|
||||
const string& str,
|
||||
const std::array<YGValue, YGEdgeCount>& edges,
|
||||
const YGEdge edge) {
|
||||
appendNumberIfNotUndefined(
|
||||
base, str, YGComputedEdgeValue(edges, edge, &YGValueUndefined));
|
||||
base, str, *YGComputedEdgeValue(edges, edge, &YGValueUndefined));
|
||||
}
|
||||
|
||||
void YGNodeToString(
|
||||
@ -107,105 +107,112 @@ void YGNodeToString(
|
||||
uint32_t level) {
|
||||
indent(str, level);
|
||||
appendFormatedString(str, "<div ");
|
||||
if (node->print != nullptr) {
|
||||
node->print(node);
|
||||
if (node->getPrintFunc() != nullptr) {
|
||||
node->getPrintFunc()(node);
|
||||
}
|
||||
|
||||
if (options & YGPrintOptionsLayout) {
|
||||
appendFormatedString(str, "layout=\"");
|
||||
appendFormatedString(
|
||||
str, "width: %g; ", node->layout.dimensions[YGDimensionWidth]);
|
||||
str, "width: %g; ", node->getLayout().dimensions[YGDimensionWidth]);
|
||||
appendFormatedString(
|
||||
str, "height: %g; ", node->layout.dimensions[YGDimensionHeight]);
|
||||
appendFormatedString(str, "top: %g; ", node->layout.position[YGEdgeTop]);
|
||||
appendFormatedString(str, "left: %g;", node->layout.position[YGEdgeLeft]);
|
||||
str, "height: %g; ", node->getLayout().dimensions[YGDimensionHeight]);
|
||||
appendFormatedString(
|
||||
str, "top: %g; ", node->getLayout().position[YGEdgeTop]);
|
||||
appendFormatedString(
|
||||
str, "left: %g;", node->getLayout().position[YGEdgeLeft]);
|
||||
appendFormatedString(str, "\" ");
|
||||
}
|
||||
|
||||
if (options & YGPrintOptionsStyle) {
|
||||
appendFormatedString(str, "style=\"");
|
||||
if (node->style.flexDirection != gYGNodeDefaults.style.flexDirection) {
|
||||
if (node->getStyle().flexDirection != YGNode().getStyle().flexDirection) {
|
||||
appendFormatedString(
|
||||
str,
|
||||
"flex-direction: %s; ",
|
||||
YGFlexDirectionToString(node->style.flexDirection));
|
||||
YGFlexDirectionToString(node->getStyle().flexDirection));
|
||||
}
|
||||
if (node->style.justifyContent != gYGNodeDefaults.style.justifyContent) {
|
||||
if (node->getStyle().justifyContent != YGNode().getStyle().justifyContent) {
|
||||
appendFormatedString(
|
||||
str,
|
||||
"justify-content: %s; ",
|
||||
YGJustifyToString(node->style.justifyContent));
|
||||
YGJustifyToString(node->getStyle().justifyContent));
|
||||
}
|
||||
if (node->style.alignItems != gYGNodeDefaults.style.alignItems) {
|
||||
if (node->getStyle().alignItems != YGNode().getStyle().alignItems) {
|
||||
appendFormatedString(
|
||||
str, "align-items: %s; ", YGAlignToString(node->style.alignItems));
|
||||
str,
|
||||
"align-items: %s; ",
|
||||
YGAlignToString(node->getStyle().alignItems));
|
||||
}
|
||||
if (node->style.alignContent != gYGNodeDefaults.style.alignContent) {
|
||||
if (node->getStyle().alignContent != YGNode().getStyle().alignContent) {
|
||||
appendFormatedString(
|
||||
str,
|
||||
"align-content: %s; ",
|
||||
YGAlignToString(node->style.alignContent));
|
||||
YGAlignToString(node->getStyle().alignContent));
|
||||
}
|
||||
if (node->style.alignSelf != gYGNodeDefaults.style.alignSelf) {
|
||||
if (node->getStyle().alignSelf != YGNode().getStyle().alignSelf) {
|
||||
appendFormatedString(
|
||||
str, "align-self: %s; ", YGAlignToString(node->style.alignSelf));
|
||||
str, "align-self: %s; ", YGAlignToString(node->getStyle().alignSelf));
|
||||
}
|
||||
appendFloatIfNotUndefined(str, "flex-grow", node->style.flexGrow);
|
||||
appendFloatIfNotUndefined(str, "flex-shrink", node->style.flexShrink);
|
||||
appendNumberIfNotAuto(str, "flex-basis", &node->style.flexBasis);
|
||||
appendFloatIfNotUndefined(str, "flex", node->style.flex);
|
||||
appendFloatIfNotUndefined(str, "flex-grow", node->getStyle().flexGrow);
|
||||
appendFloatIfNotUndefined(str, "flex-shrink", node->getStyle().flexShrink);
|
||||
appendNumberIfNotAuto(str, "flex-basis", node->getStyle().flexBasis);
|
||||
appendFloatIfNotUndefined(str, "flex", node->getStyle().flex);
|
||||
|
||||
if (node->style.flexWrap != gYGNodeDefaults.style.flexWrap) {
|
||||
if (node->getStyle().flexWrap != YGNode().getStyle().flexWrap) {
|
||||
appendFormatedString(
|
||||
str, "flexWrap: %s; ", YGWrapToString(node->style.flexWrap));
|
||||
str, "flexWrap: %s; ", YGWrapToString(node->getStyle().flexWrap));
|
||||
}
|
||||
|
||||
if (node->style.overflow != gYGNodeDefaults.style.overflow) {
|
||||
if (node->getStyle().overflow != YGNode().getStyle().overflow) {
|
||||
appendFormatedString(
|
||||
str, "overflow: %s; ", YGOverflowToString(node->style.overflow));
|
||||
str, "overflow: %s; ", YGOverflowToString(node->getStyle().overflow));
|
||||
}
|
||||
|
||||
if (node->style.display != gYGNodeDefaults.style.display) {
|
||||
if (node->getStyle().display != YGNode().getStyle().display) {
|
||||
appendFormatedString(
|
||||
str, "display: %s; ", YGDisplayToString(node->style.display));
|
||||
str, "display: %s; ", YGDisplayToString(node->getStyle().display));
|
||||
}
|
||||
appendEdges(str, "margin", node->style.margin);
|
||||
appendEdges(str, "padding", node->style.padding);
|
||||
appendEdges(str, "border", node->style.border);
|
||||
appendEdges(str, "margin", node->getStyle().margin);
|
||||
appendEdges(str, "padding", node->getStyle().padding);
|
||||
appendEdges(str, "border", node->getStyle().border);
|
||||
|
||||
appendNumberIfNotAuto(
|
||||
str, "width", &node->style.dimensions[YGDimensionWidth]);
|
||||
str, "width", node->getStyle().dimensions[YGDimensionWidth]);
|
||||
appendNumberIfNotAuto(
|
||||
str, "height", &node->style.dimensions[YGDimensionHeight]);
|
||||
str, "height", node->getStyle().dimensions[YGDimensionHeight]);
|
||||
appendNumberIfNotAuto(
|
||||
str, "max-width", &node->style.maxDimensions[YGDimensionWidth]);
|
||||
str, "max-width", node->getStyle().maxDimensions[YGDimensionWidth]);
|
||||
appendNumberIfNotAuto(
|
||||
str, "max-height", &node->style.maxDimensions[YGDimensionHeight]);
|
||||
str, "max-height", node->getStyle().maxDimensions[YGDimensionHeight]);
|
||||
appendNumberIfNotAuto(
|
||||
str, "min-width", &node->style.minDimensions[YGDimensionWidth]);
|
||||
str, "min-width", node->getStyle().minDimensions[YGDimensionWidth]);
|
||||
appendNumberIfNotAuto(
|
||||
str, "min-height", &node->style.minDimensions[YGDimensionHeight]);
|
||||
str, "min-height", node->getStyle().minDimensions[YGDimensionHeight]);
|
||||
|
||||
if (node->style.positionType != gYGNodeDefaults.style.positionType) {
|
||||
if (node->getStyle().positionType != YGNode().getStyle().positionType) {
|
||||
appendFormatedString(
|
||||
str,
|
||||
"position: %s; ",
|
||||
YGPositionTypeToString(node->style.positionType));
|
||||
YGPositionTypeToString(node->getStyle().positionType));
|
||||
}
|
||||
|
||||
appendEdgeIfNotUndefined(str, "left", node->style.position, YGEdgeLeft);
|
||||
appendEdgeIfNotUndefined(str, "right", node->style.position, YGEdgeRight);
|
||||
appendEdgeIfNotUndefined(str, "top", node->style.position, YGEdgeTop);
|
||||
appendEdgeIfNotUndefined(str, "bottom", node->style.position, YGEdgeBottom);
|
||||
appendEdgeIfNotUndefined(
|
||||
str, "left", node->getStyle().position, YGEdgeLeft);
|
||||
appendEdgeIfNotUndefined(
|
||||
str, "right", node->getStyle().position, YGEdgeRight);
|
||||
appendEdgeIfNotUndefined(str, "top", node->getStyle().position, YGEdgeTop);
|
||||
appendEdgeIfNotUndefined(
|
||||
str, "bottom", node->getStyle().position, YGEdgeBottom);
|
||||
appendFormatedString(str, "\" ");
|
||||
|
||||
if (node->measure != nullptr) {
|
||||
if (node->getMeasure() != nullptr) {
|
||||
appendFormatedString(str, "has-custom-measure=\"true\"");
|
||||
}
|
||||
}
|
||||
appendFormatedString(str, ">");
|
||||
|
||||
const uint32_t childCount = node->children.size();
|
||||
const uint32_t childCount = node->getChildren().size();
|
||||
if (options & YGPrintOptionsChildren && childCount > 0) {
|
||||
for (uint32_t i = 0; i < childCount; i++) {
|
||||
appendFormatedString(str, "\n");
|
||||
|
@ -8,6 +8,9 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
|
||||
#include "Yoga.h"
|
||||
@ -23,6 +26,25 @@ WIN_EXPORT float YGRoundValueToPixelGrid(const float value,
|
||||
|
||||
YG_EXTERN_C_END
|
||||
|
||||
extern const std::array<YGEdge, 4> trailing;
|
||||
extern const std::array<YGEdge, 4> leading;
|
||||
extern bool YGFlexDirectionIsRow(const YGFlexDirection flexDirection);
|
||||
extern bool YGValueEqual(const YGValue a, const YGValue b);
|
||||
extern const YGValue YGValueUndefined;
|
||||
extern const YGValue YGValueAuto;
|
||||
extern const YGValue YGValueZero;
|
||||
|
||||
template <std::size_t size>
|
||||
bool YGValueArrayEqual(
|
||||
const std::array<YGValue, size> val1,
|
||||
const std::array<YGValue, size> val2) {
|
||||
bool areEqual = true;
|
||||
for (uint32_t i = 0; i < size && areEqual; ++i) {
|
||||
areEqual = YGValueEqual(val1[i], val2[i]);
|
||||
}
|
||||
return areEqual;
|
||||
}
|
||||
|
||||
typedef struct YGCachedMeasurement {
|
||||
float availableWidth;
|
||||
float availableHeight;
|
||||
@ -37,12 +59,12 @@ typedef struct YGCachedMeasurement {
|
||||
// layouts should not require more than 16 entries to fit within the cache.
|
||||
#define YG_MAX_CACHED_RESULT_COUNT 16
|
||||
|
||||
typedef struct YGLayout {
|
||||
float position[4];
|
||||
float dimensions[2];
|
||||
float margin[6];
|
||||
float border[6];
|
||||
float padding[6];
|
||||
struct YGLayout {
|
||||
std::array<float, 4> position;
|
||||
std::array<float, 2> dimensions;
|
||||
std::array<float, 6> margin;
|
||||
std::array<float, 6> border;
|
||||
std::array<float, 6> padding;
|
||||
YGDirection direction;
|
||||
|
||||
uint32_t computedFlexBasisGeneration;
|
||||
@ -56,12 +78,12 @@ typedef struct YGLayout {
|
||||
|
||||
uint32_t nextCachedMeasurementsIndex;
|
||||
YGCachedMeasurement cachedMeasurements[YG_MAX_CACHED_RESULT_COUNT];
|
||||
float measuredDimensions[2];
|
||||
std::array<float, 2> measuredDimensions;
|
||||
|
||||
YGCachedMeasurement cachedLayout;
|
||||
} YGLayout;
|
||||
};
|
||||
|
||||
typedef struct YGStyle {
|
||||
struct YGStyle {
|
||||
YGDirection direction;
|
||||
YGFlexDirection flexDirection;
|
||||
YGJustify justifyContent;
|
||||
@ -76,17 +98,58 @@ typedef struct YGStyle {
|
||||
float flexGrow;
|
||||
float flexShrink;
|
||||
YGValue flexBasis;
|
||||
YGValue margin[YGEdgeCount];
|
||||
YGValue position[YGEdgeCount];
|
||||
YGValue padding[YGEdgeCount];
|
||||
YGValue border[YGEdgeCount];
|
||||
YGValue dimensions[2];
|
||||
YGValue minDimensions[2];
|
||||
YGValue maxDimensions[2];
|
||||
std::array<YGValue, YGEdgeCount> margin;
|
||||
std::array<YGValue, YGEdgeCount> position;
|
||||
std::array<YGValue, YGEdgeCount> padding;
|
||||
std::array<YGValue, YGEdgeCount> border;
|
||||
std::array<YGValue, 2> dimensions;
|
||||
std::array<YGValue, 2> minDimensions;
|
||||
std::array<YGValue, 2> maxDimensions;
|
||||
|
||||
// Yoga specific properties, not compatible with flexbox specification
|
||||
float aspectRatio;
|
||||
} YGStyle;
|
||||
bool operator==(YGStyle style) {
|
||||
bool areNonFloatValuesEqual = direction == style.direction &&
|
||||
flexDirection == style.flexDirection &&
|
||||
justifyContent == style.justifyContent &&
|
||||
alignContent == style.alignContent && alignItems == style.alignItems &&
|
||||
alignSelf == style.alignSelf && positionType == style.positionType &&
|
||||
flexWrap == style.flexWrap && overflow == style.overflow &&
|
||||
display == style.display && YGValueEqual(flexBasis, style.flexBasis) &&
|
||||
YGValueArrayEqual(margin, style.margin) &&
|
||||
YGValueArrayEqual(position, style.position) &&
|
||||
YGValueArrayEqual(padding, style.padding) &&
|
||||
YGValueArrayEqual(border, style.border) &&
|
||||
YGValueArrayEqual(dimensions, style.dimensions) &&
|
||||
YGValueArrayEqual(minDimensions, style.minDimensions) &&
|
||||
YGValueArrayEqual(maxDimensions, style.maxDimensions);
|
||||
|
||||
if (!(std::isnan(flex) && std::isnan(style.flex))) {
|
||||
areNonFloatValuesEqual = areNonFloatValuesEqual && flex == style.flex;
|
||||
}
|
||||
|
||||
if (!(std::isnan(flexGrow) && std::isnan(style.flexGrow))) {
|
||||
areNonFloatValuesEqual =
|
||||
areNonFloatValuesEqual && flexGrow == style.flexGrow;
|
||||
}
|
||||
|
||||
if (!(std::isnan(flexShrink) && std::isnan(style.flexShrink))) {
|
||||
areNonFloatValuesEqual =
|
||||
areNonFloatValuesEqual && flexShrink == style.flexShrink;
|
||||
}
|
||||
|
||||
if (!(std::isnan(aspectRatio) && std::isnan(style.aspectRatio))) {
|
||||
areNonFloatValuesEqual =
|
||||
areNonFloatValuesEqual && aspectRatio == style.aspectRatio;
|
||||
}
|
||||
|
||||
return areNonFloatValuesEqual;
|
||||
}
|
||||
|
||||
bool operator!=(YGStyle style) {
|
||||
return !(*this == style);
|
||||
}
|
||||
};
|
||||
|
||||
typedef struct YGConfig {
|
||||
bool experimentalFeatures[YGExperimentalFeatureCount + 1];
|
||||
@ -98,29 +161,6 @@ typedef struct YGConfig {
|
||||
void* context;
|
||||
} YGConfig;
|
||||
|
||||
typedef struct YGNode {
|
||||
YGStyle style;
|
||||
YGLayout layout;
|
||||
uint32_t lineIndex;
|
||||
|
||||
YGNodeRef parent;
|
||||
YGVector children;
|
||||
|
||||
struct YGNode* nextChild;
|
||||
|
||||
YGMeasureFunc measure;
|
||||
YGBaselineFunc baseline;
|
||||
YGPrintFunc print;
|
||||
YGConfigRef config;
|
||||
void* context;
|
||||
|
||||
bool isDirty;
|
||||
bool hasNewLayout;
|
||||
YGNodeType nodeType;
|
||||
|
||||
YGValue const* resolvedDimensions[2];
|
||||
} YGNode;
|
||||
|
||||
#define YG_UNDEFINED_VALUES \
|
||||
{ .value = YGUndefined, .unit = YGUnitUndefined }
|
||||
|
||||
@ -167,19 +207,51 @@ static const YGStyle gYGNodeStyleDefaults = {
|
||||
.flexGrow = YGUndefined,
|
||||
.flexShrink = YGUndefined,
|
||||
.flexBasis = YG_AUTO_VALUES,
|
||||
.margin = YG_DEFAULT_EDGE_VALUES_UNIT,
|
||||
.position = YG_DEFAULT_EDGE_VALUES_UNIT,
|
||||
.padding = YG_DEFAULT_EDGE_VALUES_UNIT,
|
||||
.border = YG_DEFAULT_EDGE_VALUES_UNIT,
|
||||
.dimensions = YG_DEFAULT_DIMENSION_VALUES_AUTO_UNIT,
|
||||
.minDimensions = YG_DEFAULT_DIMENSION_VALUES_UNIT,
|
||||
.maxDimensions = YG_DEFAULT_DIMENSION_VALUES_UNIT,
|
||||
.margin = {{YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES}},
|
||||
.position = {{YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES}},
|
||||
.padding = {{YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES}},
|
||||
.border = {{YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES,
|
||||
YG_UNDEFINED_VALUES}},
|
||||
.dimensions = {{YG_AUTO_VALUES, YG_AUTO_VALUES}},
|
||||
.minDimensions = {{YG_UNDEFINED_VALUES, YG_UNDEFINED_VALUES}},
|
||||
.maxDimensions = {{YG_UNDEFINED_VALUES, YG_UNDEFINED_VALUES}},
|
||||
.aspectRatio = YGUndefined,
|
||||
};
|
||||
|
||||
static const YGLayout gYGNodeLayoutDefaults = {
|
||||
.position = {},
|
||||
.dimensions = YG_DEFAULT_DIMENSION_VALUES,
|
||||
.dimensions = {{YGUndefined, YGUndefined}},
|
||||
.margin = {},
|
||||
.border = {},
|
||||
.padding = {},
|
||||
@ -191,7 +263,7 @@ static const YGLayout gYGNodeLayoutDefaults = {
|
||||
.lastParentDirection = (YGDirection)-1,
|
||||
.nextCachedMeasurementsIndex = 0,
|
||||
.cachedMeasurements = {},
|
||||
.measuredDimensions = YG_DEFAULT_DIMENSION_VALUES,
|
||||
.measuredDimensions = {{YGUndefined, YGUndefined}},
|
||||
.cachedLayout =
|
||||
{
|
||||
.availableWidth = 0,
|
||||
@ -203,28 +275,9 @@ static const YGLayout gYGNodeLayoutDefaults = {
|
||||
},
|
||||
};
|
||||
|
||||
static const YGNode gYGNodeDefaults = {
|
||||
.style = gYGNodeStyleDefaults,
|
||||
.layout = gYGNodeLayoutDefaults,
|
||||
.lineIndex = 0,
|
||||
.parent = nullptr,
|
||||
.children = YGVector(),
|
||||
.nextChild = nullptr,
|
||||
.measure = nullptr,
|
||||
.baseline = nullptr,
|
||||
.print = nullptr,
|
||||
.config = nullptr,
|
||||
.context = nullptr,
|
||||
.isDirty = false,
|
||||
.hasNewLayout = true,
|
||||
.nodeType = YGNodeTypeDefault,
|
||||
.resolvedDimensions = {[YGDimensionWidth] = &YGValueUndefined,
|
||||
[YGDimensionHeight] = &YGValueUndefined},
|
||||
};
|
||||
|
||||
extern bool YGFloatsEqual(const float a, const float b);
|
||||
extern bool YGValueEqual(const YGValue a, const YGValue b);
|
||||
extern const YGValue* YGComputedEdgeValue(
|
||||
const YGValue edges[YGEdgeCount],
|
||||
const std::array<YGValue, YGEdgeCount>& edges,
|
||||
const YGEdge edge,
|
||||
const YGValue* const defaultValue);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -43,11 +43,13 @@ typedef struct YGValue {
|
||||
YGUnit unit;
|
||||
} YGValue;
|
||||
|
||||
static const YGValue YGValueUndefined = {YGUndefined, YGUnitUndefined};
|
||||
static const YGValue YGValueAuto = {YGUndefined, YGUnitAuto};
|
||||
extern const YGValue YGValueUndefined;
|
||||
extern const YGValue YGValueAuto;
|
||||
|
||||
typedef struct YGConfig *YGConfigRef;
|
||||
typedef struct YGNode *YGNodeRef;
|
||||
|
||||
typedef struct YGNode* YGNodeRef;
|
||||
|
||||
typedef YGSize (*YGMeasureFunc)(YGNodeRef node,
|
||||
float width,
|
||||
YGMeasureMode widthMode,
|
||||
@ -95,7 +97,6 @@ WIN_EXPORT void YGNodeCalculateLayout(const YGNodeRef node,
|
||||
// depends on information not known to YG they must perform this dirty
|
||||
// marking manually.
|
||||
WIN_EXPORT void YGNodeMarkDirty(const YGNodeRef node);
|
||||
WIN_EXPORT bool YGNodeIsDirty(const YGNodeRef node);
|
||||
|
||||
WIN_EXPORT void YGNodePrint(const YGNodeRef node, const YGPrintOptions options);
|
||||
|
||||
@ -158,12 +159,19 @@ WIN_EXPORT void YGNodeCopyStyle(const YGNodeRef dstNode, const YGNodeRef srcNode
|
||||
#define YG_NODE_LAYOUT_EDGE_PROPERTY(type, name) \
|
||||
WIN_EXPORT type YGNodeLayoutGet##name(const YGNodeRef node, const YGEdge edge);
|
||||
|
||||
YG_NODE_PROPERTY(void *, Context, context);
|
||||
YG_NODE_PROPERTY(YGMeasureFunc, MeasureFunc, measureFunc);
|
||||
YG_NODE_PROPERTY(YGBaselineFunc, BaselineFunc, baselineFunc)
|
||||
YG_NODE_PROPERTY(YGPrintFunc, PrintFunc, printFunc);
|
||||
YG_NODE_PROPERTY(bool, HasNewLayout, hasNewLayout);
|
||||
YG_NODE_PROPERTY(YGNodeType, NodeType, nodeType);
|
||||
void* YGNodeGetContext(YGNodeRef node);
|
||||
void YGNodeSetContext(YGNodeRef node, void* context);
|
||||
YGMeasureFunc YGNodeGetMeasureFunc(YGNodeRef node);
|
||||
void YGNodeSetMeasureFunc(YGNodeRef node, YGMeasureFunc measureFunc);
|
||||
YGBaselineFunc YGNodeGetBaselineFunc(YGNodeRef node);
|
||||
void YGNodeSetBaselineFunc(YGNodeRef node, YGBaselineFunc baselineFunc);
|
||||
YGPrintFunc YGNodeGetPrintFunc(YGNodeRef node);
|
||||
void YGNodeSetPrintFunc(YGNodeRef node, YGPrintFunc printFunc);
|
||||
bool YGNodeGetHasNewLayout(YGNodeRef node);
|
||||
void YGNodeSetHasNewLayout(YGNodeRef node, bool hasNewLayout);
|
||||
YGNodeType YGNodeGetNodeType(YGNodeRef node);
|
||||
void YGNodeSetNodeType(YGNodeRef node, YGNodeType nodeType);
|
||||
bool YGNodeIsDirty(YGNodeRef node);
|
||||
|
||||
YG_NODE_STYLE_PROPERTY(YGDirection, Direction, direction);
|
||||
YG_NODE_STYLE_PROPERTY(YGFlexDirection, FlexDirection, flexDirection);
|
||||
|
Loading…
x
Reference in New Issue
Block a user