@@ -8,8 +8,7 @@ use float_pigment_css::{
88 } ,
99} ;
1010use float_pigment_layout:: {
11- DefLength , Edge , EdgeOption , InlineMeasure , InlineUnit , LayoutNode , LayoutStyle ,
12- LayoutTreeNode , LayoutTreeVisitor , MeasureResult , OptionNum , OptionSize , Point , Size , Vector ,
11+ DefLength , Edge , EdgeOption , InlineMeasure , InlineUnit , InlineUnitMetadata , LayoutNode , LayoutStyle , LayoutTreeNode , LayoutTreeVisitor , MeasureResult , OptionNum , OptionSize , Point , Size , Vector
1312} ;
1413
1514use crate :: { convert_node_ref_to_ptr, Length } ;
@@ -240,22 +239,8 @@ impl LayoutTreeNode for Node {
240239 min : Size < Self :: Length > ,
241240 max : Size < Self :: Length > ,
242241 max_content : OptionSize < Self :: Length > ,
243- ) -> Self :: InlineUnit {
244- let measure_res = self . measure_block_size ( env, req_size, min, max, max_content, false ) ;
245- let size = measure_res. size ;
246- LayoutInlineUnit {
247- offset : Point :: zero ( ) ,
248- size,
249- first_baseline_ascent : Vector :: new (
250- measure_res. first_baseline_ascent . x ,
251- measure_res. first_baseline_ascent . y ,
252- ) ,
253- last_baseline_ascent : Vector :: new (
254- measure_res. last_baseline_ascent . x ,
255- measure_res. last_baseline_ascent . y ,
256- ) ,
257- is_inline_block : false ,
258- }
242+ ) -> MeasureResult < Self :: Length > {
243+ self . measure_block_size ( env, req_size, min, max, max_content, false )
259244 }
260245}
261246
@@ -290,7 +275,6 @@ pub struct LayoutInlineUnit {
290275 size : Size < Len > ,
291276 first_baseline_ascent : Vector < Len > ,
292277 last_baseline_ascent : Vector < Len > ,
293- is_inline_block : bool ,
294278}
295279
296280impl LayoutInlineUnit {
@@ -304,26 +288,16 @@ impl LayoutInlineUnit {
304288 } ,
305289 )
306290 }
307- fn adjust_inline_size ( & mut self , padding_border : Edge < Len > ) {
308- if self . is_inline_block {
309- return ;
310- }
311- self . size . height += padding_border. vertical ( ) ;
312- self . size . width += padding_border. horizontal ( ) ;
313- self . first_baseline_ascent . y += padding_border. top ;
314- self . last_baseline_ascent . y += padding_border. top ;
315- }
316291}
317292
318293impl InlineUnit < Node > for LayoutInlineUnit {
319294 type Env = Env ;
320- fn inline_block ( _env : & mut Env , _node : & Node , size : Size < Len > , baseline_ascent : Len ) -> Self {
295+ fn new ( _env : & mut Env , _node : & Node , res : MeasureResult < Len > ) -> Self {
321296 Self {
322297 offset : Point :: zero ( ) ,
323- size,
324- first_baseline_ascent : Vector :: new ( Len :: zero ( ) , baseline_ascent) ,
325- last_baseline_ascent : Vector :: new ( Len :: zero ( ) , baseline_ascent) ,
326- is_inline_block : true ,
298+ size : res. size ,
299+ first_baseline_ascent : res. first_baseline_ascent ,
300+ last_baseline_ascent : res. last_baseline_ascent ,
327301 }
328302 }
329303}
@@ -399,7 +373,7 @@ impl InlineMeasure<Node> for LayoutInlineMeasure {
399373 fn block_size (
400374 _env : & mut Env ,
401375 block_node : & Node ,
402- inline_nodes : Vec < ( LayoutInlineUnit , EdgeOption < Len > , Edge < Len > ) > ,
376+ inline_nodes : Vec < InlineUnitMetadata < Node > > ,
403377 req_size : OptionSize < Len > ,
404378 _max_content_with_max_size : OptionSize < Len > ,
405379 _update_position : bool ,
@@ -421,10 +395,9 @@ impl InlineMeasure<Node> for LayoutInlineMeasure {
421395 if let Some ( suggested_width) = suggested_width. val ( ) {
422396 inline_nodes
423397 . into_iter ( )
424- . for_each ( |( mut inline_unit, margin, padding_border) | {
425- inline_unit. adjust_inline_size ( padding_border) ;
398+ . for_each ( |InlineUnitMetadata { unit, margin } | {
426399 if ( current_line. total_inline_size
427- + inline_unit . size . width
400+ + unit . size . width
428401 + margin. horizontal ( )
429402 > suggested_width)
430403 && !current_line. is_empty ( )
@@ -434,14 +407,13 @@ impl InlineMeasure<Node> for LayoutInlineMeasure {
434407 current_line = Line :: default ( ) ;
435408 current_line. block_start = prev_line_block_start;
436409 }
437- current_line. collect_inline_unit ( inline_unit , margin) ;
410+ current_line. collect_inline_unit ( unit , margin) ;
438411 } ) ;
439412 } else {
440413 inline_nodes
441414 . into_iter ( )
442- . for_each ( |( mut inline_unit, margin, padding_border) | {
443- inline_unit. adjust_inline_size ( padding_border) ;
444- current_line. collect_inline_unit ( inline_unit, margin) ;
415+ . for_each ( |InlineUnitMetadata { unit, margin } | {
416+ current_line. collect_inline_unit ( unit, margin) ;
445417 } ) ;
446418 }
447419 if !current_line. is_empty ( ) {
0 commit comments