
    ,g2$                         d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ed	        Zd
 Zd ZddZddZy)zLayout for floating boxes.   )boxes   )handle_min_max_width)resolve_percentagesresolve_position_percentages)shrink_to_fit) inline_replaced_box_width_height)table_wrapper_widthc                 \    | j                   dk(  rt        || |j                         | _         y y )Nauto)widthr   )boxcontextcontaining_blocks      o/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/weasyprint/layout/float.pyfloat_widthr      s,     yyF!'30@0F0FG	     c                    ddl m} ddlm} ddlm}	 |j                  |j                  }}
t        ||
|f       |dk(  r|j                  |j                         z
  }t        ||
|f       |j                  dk(  rd|_        |j                  dk(  rd|_        |j                  dk(  rd|_        |j                  dk(  rd|_        t!        | |      }||xj                  |z  c_	        t#        |t$        j&                        rt)        ||       n|j                  dk(  rt+        || |       |j,                  rt/        | ||
|f       t#        |t$        j0                        r;| j3                           || |||d||dd	d

      \  }}}}}}| j5                  |       nt#        |t$        j6                        r || ||||d||d		      \  }}}}}nOt#        |t$        j8                        r |	| ||||d||      \  }}}}}nt#        |t$        j&                        sJ d}t;        | ||      }| j<                  j?                  |       ||fS )z/Set the width and position of floating ``box``.r   )block_container_layout)flex_layout)grid_layoutr       NTF)bottom_space
skip_stackpage_is_emptyabsolute_boxesfixed_boxesadjoining_marginsdiscard	max_lines)r   r   r   r   r   r   r   )r   r   r   r   r   r   ) blockr   flexr   gridr   r   heightr   
position_ycontent_box_yr   margin_leftmargin_right
margin_topmargin_bottomget_clearance
isinstancer   BlockReplacedBoxr	   r   is_table_wrapperr
   BlockContainerBoxcreate_block_formatting_contextfinish_block_formatting_contextFlexContainerBoxGridContainerBoxfind_float_positionexcluded_shapesappend)r   r   r   r   r   r   r   r   r   r   cb_width	cb_height	clearance	resume_at_s                  r   float_layoutr<      sH    .!!+113C3J3JiHh	23 F''*:*H*H*JJ 	 !x&;<
& 
6!
~~
F"gs+I)##u--.(.>?	f	C"23
GS8Y*?@#u..///1%;S|!){"ET	&C"Y1a
 	//4	C//	0"-S|!4D~#U	#4Y1a
 
C//	0"-S|!4D~#	#%Y1a #u55666	
gs,<
=C""3'	>r   c                 v   | j                   rG| j                   d   j                  }|j                  |k  r|j                  d||j                  z
         t        | ||      \  }}}|j                  d   dk(  r|||j                         z
  z  }|j                  ||j                  z
  ||j                  z
         |S )z,Get the right position of the float ``box``.r   floatright)r5   r%   	translateavoid_collisionsstylemargin_width
position_x)r   r   r   	highest_yrE   r%   available_widths          r   r4   r4   X   s     ++B/::	>>I%MM!Y78 /?&/(+J
O yyW$o(8(8(:::
MM*s~~-zCNN/JKJr   c                    d}|j                   |z   }| j                  D ]^  }|j                  d   |j                  d   dfv s$|j                   |j                         }}|||z   k  sIt	        |xs d||z   |z
        }` |S )zDReturn None if there is no clearance, otherwise the clearance value.Nclearr?   bothr   )r%   r5   rC   margin_heightmax)r   r   collapsed_marginr9   hypothetical_positionexcluded_shapeyhs           r   r+   r+   t   s    INN-==!11 E99W."6"6w"?!HH!,,n.J.J.LqA$q1u,^!a!e.C&CE		E r   c                 h   | j                   }|r|j                  n|j                         }|r|j                         n|j	                         }|r|j                         n|j                         }|j                         dk(  r|j                         rdd|j                  fS 	 g }|D ]d  }	|	j                  }
|	j                         }|
|cxk  r|
|z   k  s'n |
||z   cxk  r|
|z   k  sn |
|k\  sH|
|z   ||z   k  sT|j                  |	       f |D 	cg c]1  }	|	j                  d   dk(  r|	j                  |	j                         z   3 }}	|D 	cg c]   }	|	j                  d   dk(  r|	j                  " }}	|j                         }|j                         |j                  z   }|s||j                  z  }||j                  z  }|s|rQ|rt        t        |      |      }|rt!        t!        |      |      }|||z
  kD  rt!        d |D              }||kD  r|}u	 |j                  d   dv sRt#        |t$        j&                        s8|j(                  s,t#        |t$        j*                        s|j-                         sJ |}|j                  d   dk(  rr|j                  d   d	k(  r`t#        |t$        j&                        r|}nC|j(                  r||z
  }n1t#        |t$        j*                        s|j-                         sJ ||z
  }||z
  }|s||j                  z  }||j.                  z  }|||fS c c}	w c c}	w )
Nr   r?   leftr@   c              3   V   K   | ]!  }|j                   |j                         z    # y w)N)r%   rK   ).0shapes     r   	<genexpr>z#avoid_collisions.<locals>.<genexpr>   s,      %3 $$u':':'<<%3s   '))r@   rS   none	directionrtl)r5   r%   border_box_yrD   border_widthrK   border_height
is_floatedr   r6   rC   rE   content_box_xr'   r(   rL   minr,   r   LineBoxr.   r-   establishes_formatting_contextr)   )r   r   r   outerr5   r%   	box_width
box_heightcolliding_shapesrV   shape_position_yshape_margin_heightleft_boundsright_boundsmax_left_boundmax_right_boundnew_position_yrE   rG   s                      r   rB   rB      sh   --O#(c.>.>.@J&+  "1A1A1CI(-""$33D3D3FJ
aCNN$4!%++++
$ 	/E$//"'"5"5"7!J 8!$778!J$; 8!$778!Z/!$77j() ''.	/ */{{7#v- u1133/ / *0{{7#w. 0 0 *779**,/?/E/EE 	 coo-Ns///O ,!$S%5~!F"%c,&7"I ?^;;!$ %3!1%3 "3 "J.!/J 
7	0	03&3../**,.	-  J
yyV#!!+.%7#u}}- -
%% -y8

 sE$:$:;668:9,y8
%6Ocoo%
cnn$
z?22]/0s   6L*%L/N)r   )T)__doc__formatting_structurer   min_maxr   percentr   r   	preferredr   replacedr	   tabler
   r   r<   r4   r+   rB    r   r   <module>rv      sG      ( ) F $ 6 & H HBJ8f3r   