MCPcopy Create free account
hub / github.com/Snapchat/Valdi / setPosition

Method setPosition

third-party/yoga/src/yoga/node/Node.cpp:282–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

280}
281
282void 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
329Style::SizeLength Node::processFlexBasis() const {
330 Style::SizeLength flexBasis = style_.flexBasis();

Callers 5

setYGPositionFunction · 0.45
calculateLayoutFunction · 0.45
setLayoutPositionMethod · 0.45
FlexboxLayer.cppFile · 0.45

Calls 5

resolveDirectionFunction · 0.85
resolveCrossDirectionFunction · 0.85
isRowFunction · 0.85
inlineStartEdgeFunction · 0.85
inlineEndEdgeFunction · 0.85

Tested by

no test coverage detected