Skip to content

Commit 9b0f8e3

Browse files
committed
refactor: optimise branching
1 parent 67eed9e commit 9b0f8e3

File tree

1 file changed

+35
-34
lines changed
  • float-pigment-layout/src/algo

1 file changed

+35
-34
lines changed

float-pigment-layout/src/algo/flow.rs

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -361,45 +361,46 @@ impl<T: LayoutTreeNode> Flow<T> for LayoutUnit<T> {
361361
child_border,
362362
child_padding_border,
363363
);
364+
let stretched_cross_size = node_inner_size.cross_size(axis_info.dir)
365+
- child_margin.cross_axis_sum(axis_info.dir);
364366
let aspect_ratio = child_node.style().aspect_ratio();
365367
let has_aspect_ratio = aspect_ratio.is_some() && aspect_ratio.unwrap() > 0.;
366-
if css_size.width.is_none() ^ css_size.height.is_none() && has_aspect_ratio {
367-
if css_size.height.is_none() {
368-
css_size.height = OptionNum::some(resolve_height_from_aspect_ratio(
369-
child_border,
370-
child_padding_border,
371-
&child_node.style().box_sizing(),
368+
if has_aspect_ratio {
369+
if css_size.width.is_none() ^ css_size.height.is_none() {
370+
if css_size.height.is_none() {
371+
css_size.height = OptionNum::some(resolve_height_from_aspect_ratio(
372+
child_border,
373+
child_padding_border,
374+
&child_node.style().box_sizing(),
375+
aspect_ratio.unwrap(),
376+
css_size.width.val().unwrap(),
377+
))
378+
} else {
379+
css_size.width = OptionNum::some(resolve_width_from_aspect_ratio(
380+
child_border,
381+
child_padding_border,
382+
&child_node.style().box_sizing(),
383+
aspect_ratio.unwrap(),
384+
css_size.height.val().unwrap(),
385+
))
386+
}
387+
} else if css_size.width.is_none()
388+
&& css_size.height.is_none()
389+
&& stretched_cross_size.is_some()
390+
{
391+
let transfer_limit = transfer_min_max_size(
372392
aspect_ratio.unwrap(),
373-
css_size.width.val().unwrap(),
374-
))
375-
} else {
376-
css_size.width = OptionNum::some(resolve_width_from_aspect_ratio(
393+
css_size,
394+
axis_info.dir,
395+
min_max_limit,
396+
child_node.style().box_sizing(),
377397
child_border,
378398
child_padding_border,
379-
&child_node.style().box_sizing(),
380-
aspect_ratio.unwrap(),
381-
css_size.height.val().unwrap(),
382-
))
383-
}
384-
}
385-
let size_indefinite = css_size.width.is_none() && css_size.height.is_none();
386-
let stretched_cross_size = node_inner_size.cross_size(axis_info.dir)
387-
- child_margin.cross_axis_sum(axis_info.dir);
388-
if has_aspect_ratio && size_indefinite {
389-
let transfer_limit = transfer_min_max_size(
390-
aspect_ratio.unwrap(),
391-
css_size,
392-
axis_info.dir,
393-
min_max_limit,
394-
child_node.style().box_sizing(),
395-
child_border,
396-
child_padding_border,
397-
);
398-
let min_cross_size = transfer_limit.min_cross_size(axis_info.dir);
399-
let min_main_size = transfer_limit.min_main_size(axis_info.dir);
400-
let max_cross_size = transfer_limit.max_cross_size(axis_info.dir);
401-
let max_main_size = transfer_limit.max_main_size(axis_info.dir);
402-
if stretched_cross_size.is_some() {
399+
);
400+
let min_cross_size = transfer_limit.min_cross_size(axis_info.dir);
401+
let min_main_size = transfer_limit.min_main_size(axis_info.dir);
402+
let max_cross_size = transfer_limit.max_cross_size(axis_info.dir);
403+
let max_main_size = transfer_limit.max_main_size(axis_info.dir);
403404
if min_cross_size.is_positive()
404405
&& stretched_cross_size.or_zero() < min_cross_size
405406
{

0 commit comments

Comments
 (0)