
    ,g6                         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  G d	 d
      Zed        Zd Zd Zd Zd Zd Zy)z'Absolutely positioned boxes management.   )boxes   )handle_min_max_width)resolve_percentagesresolve_position_percentages)shrink_to_fit) inline_replaced_box_width_height)table_wrapper_widthc                   <    e Zd ZdZd Zd Zd
dZd Zd Zd Z	d Z
y	)AbsolutePlaceholderzBLeft where an absolutely-positioned box was taken out of the flow.c                     t        |t              rJ t        j                  | d|       t        j                  | dd       y )N_box_layout_doneF)
isinstancer   object__setattr__)selfboxs     r/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/weasyprint/layout/absolute.py__init__zAbsolutePlaceholder.__init__   s7    c#67774-47    c                 `    t         j                  | d|       t         j                  | dd       y )Nr   r   T)r   r   )r   new_boxs     r   set_laid_out_boxz$AbsolutePlaceholder.set_laid_out_box   s&    4146r   c                     ||cxk(  rdk(  ry  | j                   r| j                  j                  |||       y | j                  xj                  |z  c_        | j                  xj                  |z  c_        y )N    )r   r   	translate
position_x
position_y)r   dxdyignore_floatss       r   r   zAbsolutePlaceholder.translate   s`    =q= IIB6 II  B& II  B& r   c                     t        | j                  j                               }t        j	                  |d| j
                         |S )Nr   )r   r   copyr   r   r   )r   new_placeholders     r   r$   zAbsolutePlaceholder.copy!   s5    -diinn.>??ND<M<MNr   c                 .    t        | j                  |      S N)getattrr   )r   names     r   __getattr__zAbsolutePlaceholder.__getattr__'   s    tyy$''r   c                 2    t        | j                  ||       y r'   )setattrr   )r   r)   values      r   r   zAbsolutePlaceholder.__setattr__*   s    		4'r   c                      d| j                   z  S )Nz<Placeholder %r>)r   )r   s    r   __repr__zAbsolutePlaceholder.__repr__-   s    !DII--r   N)r   r   F)__name__
__module____qualname____doc__r   r   r   r$   r*   r   r/    r   r   r   r      s(    L87'((.r   r   c                 L   | j                   j                  d u xs | j                   j                  d   dk(  }| j                  | j                  z   | j                  z   | j
                  z   }d}d}	|| j                  z
  }
| j                  | j                  cxk(  r| j                  cxk(  rdk(  rmn nj| j                  dk(  rd| _
        | j                  dk(  rd| _        ||| j                  z   | j                  z   z
  }t        || |      | _	        |sd}	|
|z   }|	|fS | j                  dk7  r| j                  dk7  r| j                  dk7  r|| j                  | j                  z   | j                  z   |z   z
  }| j                  | j                  cxk(  rdk(  rXn nU| j                  |z   | j                  z   | j                  z   |k  r|dz  x| _
        | _        nV|rdn|| _
        |r|nd| _        n?| j                  dk(  r|| _
        n(| j                  dk(  r|| _        n|r|| _        n|| _
        | j                  |
z   }|	|fS | j                  dk(  rd| _
        | j                  dk(  rd| _        || j                  z   | j                  z   }| j                  | j                  cxk(  rdk(  r@n n=t        || ||z
  | j                  z
        | _	        || j                  z
  |z
  |
z   }d}	|	|fS | j                  | j                  cxk(  rdk(  r/n n,|s&||| j                  z   | j                  z   z
  }d}	|
|z   }|	|fS | j                  | j                  cxk(  rdk(  r8n n5t        || ||z
  | j                  z
        | _	        | j                  |
z   }|	|fS | j                  dk(  r&||
z   | j                  |z   | j                  z   z
  }|	|fS | j                  dk(  r7|| j                  z
  | j                  z
  |z
  | _	        | j                  |
z   }|	|fS | j                  dk(  r| j                  |
z   }|	|fS )N	directionltrr   FautoTr   )styleparent_stylepadding_leftpadding_rightborder_left_widthborder_right_widthr   leftrightwidthmargin_leftmargin_rightr   )r   contextcb_xcb_ycb_width	cb_heightr7   paddings_borderstranslate_xtranslate_box_widthdefault_translate_xavailable_widthwidth_for_marginsspacings                 r   absolute_widthrP   1   s6    			$& 	5		{+u4  	3,,,	 # 6 6	7  K/
xx3993		3V3??f$COv% C"s.1A1AAC!'3@	"&-?Kb ++a 
V			V 3		V8K$II 399,/??A??c..8&8yy++cii7#((BhN5F5JJ#"2'*!0A8;#4 __&/CO'0C0C/COhh!44> ++; ??f$COv% C"S__4s7G7GG88syy*F*%h0399<>CI"SYY.8;NNK"&( ++' XX,f,"*$s69I9II#K&*#1OC ++ YY#))-v-%h0388;=CI((%88K ++ XX"%88		G#cii/1K ++ YY&  399,sxx7'ACI((%88K ++ YY& ((%88K++r   c                    | j                   | j                  z   | j                  z   | j                  z   }d}d}|| j                  z
  }	| j
                  | j                  cxk(  r| j                  cxk(  rdk(  r3n n0| j                  dk(  rd| _        | j                  dk(  rd| _	        ||fS d| j
                  | j                  | j                  fvr|| j
                  | j                  z   | j                  z   |z   z
  }
| j                  | j                  cxk(  rdk(  rn n|
dz  x| _        | _	        n5| j                  dk(  r|
| _        n| j                  dk(  r|
| _	        n|
| _	        | j
                  |	z   }||fS | j                  dk(  rd| _        | j                  dk(  rd| _	        || j                  z   | j                  z   }| j
                  | j                  cxk(  rdk(  rn n|| j                  z
  |z
  |	z   }d}||fS | j
                  | j                  cxk(  rdk(  rn n	 ||fS | j                  | j                  cxk(  rdk(  rn n| j
                  |	z   }||fS | j
                  dk(  r&||	z   | j                  |z   | j                  z   z
  }||fS | j                  dk(  r7|| j                  z
  | j
                  z
  |z
  | _        | j
                  |	z   }||fS | j                  dk(  r| j
                  |	z   }||fS )Nr   Fr8   r   T)
padding_toppadding_bottomborder_top_widthborder_bottom_widthr   topbottomheight
margin_topmargin_bottom)r   rD   rE   rF   rG   rH   rI   translate_ytranslate_box_heightdefault_translate_yheight_for_marginsrO   s               r   absolute_heightr_   |   s    	#,,,	"66	7  K /
ww#**4

4f4>>V#CN& !CH  ,,G 
SZZ8	8&GGcjj 3::-0@@B>>S..8&81Ca1GGCNS.^^v%/CN&( 2C 2Cgg 330  ,,- >>V#CN& !C"S^^3c6G6GG77cjj*F*CJJ&03FF #'   ,, WW

,f,  ,, ZZ3:://''$77K  ,, WW#&99

W$szz13K  ,, ZZ6!"SZZ/#''9GCCJ''$77K  ,, ZZ6!''$77K,,r   c
                    ddl m}
 ddlm} ddlm} t        || ||||	      \  }}|rd\  }}nt        || ||||	      \  }}||r|j                   n|z  }g }|j                  rt        | |||	f       t        |t        j                        r |
| |||d||d dd 
      \  }}}}}}nbt        |t        j                        r || ||||d||d		      \  }}}}}n0t        |t        j                        r || ||||d||
      \  }}}}}|D ]  }t!        | |||d         |r|j"                  z  }|r|j$                  z  }j'                  ||       |fS )Nr   )block_container_layout)flex_layout)grid_layout)Fr   TF)page_is_emptyabsolute_boxesfixed_boxesadjoining_marginsdiscard	max_lines)rd   re   rf   rh   )rd   re   rf   )
skip_stack)blockra   flexrb   gridrc   rP   r_   r   is_table_wrapperr
   r   r   BlockBoxFlexContainerBoxGridContainerBoxabsolute_layoutrA   rX   r   )rD   r   containing_blockrf   bottom_spacerj   rE   rF   rG   rH   ra   rb   rc   rK   rJ   r\   r[   re   r   	resume_at_child_placeholders                         r   absolute_blockrx      s   -!!'5WdD(I(7$,4)k,;$h	-;)k ';S^^OLL N
GS8Y*?@#()?S,
$){"ET*C&Aq!Q 
C%00	2&1S,
4D~#U'4#Aq! 
C%00	2&1S,
4D~#'%#Aq!
 , &l	
 w}}$w~~%k;/Ir   c                     |j                   rJ |j                  }t        | |||||      \  }}|j                  |       |r|||f| j                  |<   yy)z-Set the width of absolute positioned ``box``.N)r   r   absolute_box_layoutr   broken_out_of_flow)	rD   placeholderrs   rf   rt   rj   r   r   ru   s	            r   rr   rr      sl     ''''


C,&\:OGY  )!93."";/ r   c                 2   t        |t        j                        r9|j                         }|j	                         }|j
                  }|j                  }	n@|j                         }|j                         }|j                         }|j                         }	t        |||	f       t        |||	f       | j                          t        |t        j                        rt        | |||||	      }
d }nt!        | |||||||||	
      \  }
}| j#                  |
       |
|fS r'   )r   r   PageBoxcontent_box_xcontent_box_yrA   rX   padding_box_xpadding_box_ypadding_widthpadding_heightr   r   create_block_formatting_contextBlockReplacedBoxabsolute_replacedrx   finish_block_formatting_context)rD   r   rs   rf   rt   rj   rE   rF   rG   rH   r   ru   s               r   rz   rz      s    "EMM2--/--/#))$++	--/--/#113$335	h	23 x&;<++-#u--.#S$h	;	 ,S*KdHi9 ++G4Ir   c                    t        |||||f       |j                  j                  d u xs |j                  j                  d   dk(  }|j                  |j                  cxk(  rdk(  r1n n.|r|j
                  |z
  |_        n||z   |j
                  z
  |_        d|j                  |j                  fv r|j                  dk(  rd|_        |j                  dk(  rd|_        ||j                         z
  }|j                  dk(  r||j                  z
  |_        |j                  dk(  r||j                  z
  |_        nd|j                  |j                  fv r||j                         |j                  z   |j                  z   z
  }|j                  |j                  cxk(  rdk(  r1n n.|dk\  r|dz  x|_        |_        n|rdn||_        |r|nd|_        nl|j                  dk(  r||_        nU||_        nM|r&||j                         |j                  z   z
  |_        n%||j                         |j                  z   z
  |_        |j                  |j                  cxk(  rdk(  rn n|j                  |z
  |_
        d|j                  |j                  fv r|j                  dk(  rd|_        |j                  dk(  rd|_        ||j                         z
  }|j                  dk(  r||j                  z
  |_
        |j                  dk(  r||j                  z
  |_        nd|j                  |j                  fv r||j!                         |j                  z   |j                  z   z
  }|j                  |j                  cxk(  rdk(  rn n|dz  x|_        |_        nD|j                  dk(  r||_        n-||_        n%||j                         |j                  z   z
  |_        ||j                  z   |_        ||j                  z   |_        |S )Nr6   r7   r8   r   r   )r	   r9   r:   r?   r@   r   rB   rC   margin_widthborder_widthrV   rW   r   rY   rZ   margin_heightborder_height)rD   r   rE   rF   rG   rH   r7   	remainings           r   r   r     se   $S4x*KL		$& 	5		{+u4 
 xx399&&~~,CHx#..8CI#((CII&&??f$COv% Cs//11	88v 399,CH99!CHH,CI	COOS%5%56	6 0 0 2SXX =		 IJ	??c..8&8A~5>!^C#"2'*!	039 __&'CO(C  C$4$4$6$ABCI3#3#3#5		#ABCH ww#**&&..4'#''3::&&>>V#CN& !C 1 1 33	77f#**,CG::"SWW,CJ	CNNC$5$56	6!2!2!4sww!>!KL	>>S..8&81:a?CNS.^^v%&CN )C #"3"3"5"?@
 CHH_CNCGG^CNJr   N)r3   formatting_structurer   min_maxr   percentr   r   	preferredr   replacedr	   tabler
   r   rP   r_   rx   rr   rz   r   r4   r   r   <module>r      sY    - ( ) F $ 6 &#. #.L G, G,T2-j1h
.@Fr   