-
Notifications
You must be signed in to change notification settings - Fork 229
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #62 from zintus/yoga-core
[WIP] Update yoga core to latest master
- Loading branch information
Showing
477 changed files
with
188,012 additions
and
3,929 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[cxx] | ||
gtest_dep = //lib/gtest:gtest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Copyright (c) 2014-present, Facebook, Inc. | ||
# | ||
# This source code is licensed under the MIT license found in the | ||
# LICENSE file in the root directory of this source tree. | ||
|
||
load("//:yoga_defs.bzl", "LIBRARY_COMPILER_FLAGS", "BASE_COMPILER_FLAGS", "GTEST_TARGET", "yoga_dep", "cxx_library", "cxx_test") | ||
|
||
GMOCK_OVERRIDE_FLAGS = [ | ||
# gmock does not mark mocked methods as override, ignore the warnings in tests | ||
"-Wno-inconsistent-missing-override", | ||
] | ||
|
||
COMPILER_FLAGS = LIBRARY_COMPILER_FLAGS + [ | ||
"-std=c++1y", | ||
] | ||
|
||
TEST_COMPILER_FLAGS = BASE_COMPILER_FLAGS + GMOCK_OVERRIDE_FLAGS + [ | ||
"-std=c++1y", | ||
] | ||
|
||
cxx_library( | ||
name = "yoga", | ||
srcs = glob(["Sources/yoga/*.cpp"]), | ||
header_namespace = "yoga", | ||
exported_headers = subdir_glob([("Sources/yoga", "*.h")]), | ||
compiler_flags = COMPILER_FLAGS, | ||
soname = "libyogacore.$(ext)", | ||
tests = [":YogaTests"], | ||
visibility = ["PUBLIC"], | ||
deps = [ | ||
yoga_dep("lib/fb:ndklog"), | ||
], | ||
) | ||
|
||
cxx_test( | ||
name = "YogaTests", | ||
srcs = glob(["core-tests/*.cpp"]), | ||
compiler_flags = TEST_COMPILER_FLAGS, | ||
contacts = ["emilsj@fb.com"], | ||
visibility = ["PUBLIC"], | ||
deps = [ | ||
":yoga", | ||
GTEST_TARGET, | ||
], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
tap 'facebook/fb' | ||
brew 'buck' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/** | ||
* Copyright (c) 2014-present, Facebook, Inc. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
#include "Utils.h" | ||
|
||
YGFlexDirection YGFlexDirectionCross( | ||
const YGFlexDirection flexDirection, | ||
const YGDirection direction) { | ||
return YGFlexDirectionIsColumn(flexDirection) | ||
? YGResolveFlexDirection(YGFlexDirectionRow, direction) | ||
: YGFlexDirectionColumn; | ||
} | ||
|
||
bool YGValueEqual(const YGValue a, const YGValue b) { | ||
if (a.unit != b.unit) { | ||
return false; | ||
} | ||
|
||
if (a.unit == YGUnitUndefined || | ||
(std::isnan(a.value) && std::isnan(b.value))) { | ||
return true; | ||
} | ||
|
||
return fabs(a.value - b.value) < 0.0001f; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/** | ||
* Copyright (c) 2014-present, Facebook, Inc. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
#pragma once | ||
#include "YGNode.h" | ||
#include "Yoga-internal.h" | ||
|
||
// This struct is an helper model to hold the data for step 4 of flexbox | ||
// algo, which is collecting the flex items in a line. | ||
// | ||
// - itemsOnLine: Number of items which can fit in a line considering the | ||
// available Inner dimension, the flex items computed flexbasis and their | ||
// margin. It may be different than the difference between start and end | ||
// indicates because we skip over absolute-positioned items. | ||
// | ||
// - sizeConsumedOnCurrentLine: It is accumulation of the dimensions and margin | ||
// of all the children on the current line. This will be used in order to either | ||
// set the dimensions of the node if none already exist or to compute the | ||
// remaining space left for the flexible children. | ||
// | ||
// - totalFlexGrowFactors: total flex grow factors of flex items which are to be | ||
// layed in the current line | ||
// | ||
// - totalFlexShrinkFactors: total flex shrink factors of flex items which are | ||
// to be layed in the current line | ||
// | ||
// - endOfLineIndex: Its the end index of the last flex item which was examined | ||
// and it may or may not be part of the current line(as it may be absolutely | ||
// positioned or inculding it may have caused to overshoot availableInnerDim) | ||
// | ||
// - relativeChildren: Maintain a vector of the child nodes that can shrink | ||
// and/or grow. | ||
|
||
struct YGCollectFlexItemsRowValues { | ||
uint32_t itemsOnLine; | ||
float sizeConsumedOnCurrentLine; | ||
float totalFlexGrowFactors; | ||
float totalFlexShrinkScaledFactors; | ||
float endOfLineIndex; | ||
std::vector<YGNodeRef> relativeChildren; | ||
float remainingFreeSpace; | ||
// The size of the mainDim for the row after considering size, padding, margin | ||
// and border of flex items. This is used to calculate maxLineDim after going | ||
// through all the rows to decide on the main axis size of parent. | ||
float mainDim; | ||
// The size of the crossDim for the row after considering size, padding, | ||
// margin and border of flex items. Used for calculating containers crossSize. | ||
float crossDim; | ||
}; | ||
|
||
bool YGValueEqual(const YGValue a, const YGValue b); | ||
|
||
YGFlexDirection YGFlexDirectionCross( | ||
const YGFlexDirection flexDirection, | ||
const YGDirection direction); | ||
|
||
inline bool YGFlexDirectionIsRow(const YGFlexDirection flexDirection) { | ||
return flexDirection == YGFlexDirectionRow || | ||
flexDirection == YGFlexDirectionRowReverse; | ||
} | ||
|
||
inline float YGResolveValue(const YGValue value, const float parentSize) { | ||
switch (value.unit) { | ||
case YGUnitUndefined: | ||
case YGUnitAuto: | ||
return YGUndefined; | ||
case YGUnitPoint: | ||
return value.value; | ||
case YGUnitPercent: | ||
return value.value * parentSize / 100.0f; | ||
} | ||
return YGUndefined; | ||
} | ||
|
||
inline bool YGFlexDirectionIsColumn(const YGFlexDirection flexDirection) { | ||
return flexDirection == YGFlexDirectionColumn || | ||
flexDirection == YGFlexDirectionColumnReverse; | ||
} | ||
|
||
inline YGFlexDirection YGResolveFlexDirection( | ||
const YGFlexDirection flexDirection, | ||
const YGDirection direction) { | ||
if (direction == YGDirectionRTL) { | ||
if (flexDirection == YGFlexDirectionRow) { | ||
return YGFlexDirectionRowReverse; | ||
} else if (flexDirection == YGFlexDirectionRowReverse) { | ||
return YGFlexDirectionRow; | ||
} | ||
} | ||
|
||
return flexDirection; | ||
} | ||
|
||
static inline float YGResolveValueMargin( | ||
const YGValue value, | ||
const float parentSize) { | ||
return value.unit == YGUnitAuto ? 0 : YGResolveValue(value, parentSize); | ||
} |
Oops, something went wrong.