| 280 | } |
| 281 | |
| 282 | void Node::setPosition( |
| 283 | const Direction direction, |
| 284 | const float ownerWidth, |
| 285 | const float ownerHeight) { |
| 286 | /* Root nodes should be always layouted as LTR, so we don't return negative |
| 287 | * values. */ |
| 288 | const Direction directionRespectingRoot = |
| 289 | owner_ != nullptr ? direction : Direction::LTR; |
| 290 | const FlexDirection mainAxis = |
| 291 | yoga::resolveDirection(style_.flexDirection(), directionRespectingRoot); |
| 292 | const FlexDirection crossAxis = |
| 293 | yoga::resolveCrossDirection(mainAxis, directionRespectingRoot); |
| 294 | |
| 295 | // In the case of position static these are just 0. See: |
| 296 | // https://www.w3.org/TR/css-position-3/#valdef-position-static |
| 297 | const float relativePositionMain = relativePosition( |
| 298 | mainAxis, |
| 299 | directionRespectingRoot, |
| 300 | isRow(mainAxis) ? ownerWidth : ownerHeight); |
| 301 | const float relativePositionCross = relativePosition( |
| 302 | crossAxis, |
| 303 | directionRespectingRoot, |
| 304 | isRow(mainAxis) ? ownerHeight : ownerWidth); |
| 305 | |
| 306 | const auto mainAxisLeadingEdge = inlineStartEdge(mainAxis, direction); |
| 307 | const auto mainAxisTrailingEdge = inlineEndEdge(mainAxis, direction); |
| 308 | const auto crossAxisLeadingEdge = inlineStartEdge(crossAxis, direction); |
| 309 | const auto crossAxisTrailingEdge = inlineEndEdge(crossAxis, direction); |
| 310 | |
| 311 | setLayoutPosition( |
| 312 | (style_.computeInlineStartMargin(mainAxis, direction, ownerWidth) + |
| 313 | relativePositionMain), |
| 314 | mainAxisLeadingEdge); |
| 315 | setLayoutPosition( |
| 316 | (style_.computeInlineEndMargin(mainAxis, direction, ownerWidth) + |
| 317 | relativePositionMain), |
| 318 | mainAxisTrailingEdge); |
| 319 | setLayoutPosition( |
| 320 | (style_.computeInlineStartMargin(crossAxis, direction, ownerWidth) + |
| 321 | relativePositionCross), |
| 322 | crossAxisLeadingEdge); |
| 323 | setLayoutPosition( |
| 324 | (style_.computeInlineEndMargin(crossAxis, direction, ownerWidth) + |
| 325 | relativePositionCross), |
| 326 | crossAxisTrailingEdge); |
| 327 | } |
| 328 | |
| 329 | Style::SizeLength Node::processFlexBasis() const { |
| 330 | Style::SizeLength flexBasis = style_.flexBasis(); |
no test coverage detected