Ë
    o]jA)  ã                   óŒ   — d Z ddlm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.é    )Úinfé   )Ú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      úN/var/www/zogu/zoguvenv/lib/python3.12/site-packages/weasyprint/layout/float.pyÚfloat_widthr      s,   € ð ‡y�y�FÒÜ! '¨3Ð0@×0FÑ0FÓGˆ�	ð ó    c                 óf  — 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!        | ||j"                  d   «      }|�|xj                  |z  c_	        t%        |t&        j(                  «      rt+        ||«       n|j                  dk(  rt-        || |«       |j.                  rt1        | ||
|f«       t%        |t&        j2                  «      r || |||d	||dddd
d¬«      \  }}}}}}n�t%        |t&        j4                  «      r || ||||d	||d
¬«	      \  }}}}}nOt%        |t&        j6                  «      r |	| ||||d	||¬«      \  }}}}}nt%        |t&        j(                  «      sJ ‚d}t9        | ||«      }| j:                  j=                  |«       ||fS )z/Set the width and position of floating ``box``.r   )Úblock_container_layout)Úflex_layout)Úgrid_layoutr   r   Ú	directionNTF)
Úbottom_spaceÚ
skip_stackÚpage_is_emptyÚabsolute_boxesÚfixed_boxesÚadjoining_marginsÚfirst_letter_styleÚfirst_line_styleÚ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ÚstyleÚ
isinstancer   ÚBlockReplacedBoxr   r   Úis_table_wrapperr   ÚBlockContainerBoxÚ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?      s:  € õ .Ý!Ý!à+×1Ñ1Ð3C×3JÑ3Jˆi€HÜ˜˜h¨	Ð2Ô3ð �FÒØ$×/Ñ/Ð2B×2PÑ2PÓ2RÑRˆ	ä   x°Ð&;Ô<à
‡�˜&Ò ØˆŒØ
×Ñ˜6Ò!ØˆÔØ
‡~�~˜ÒØˆŒØ
×Ñ˜FÒ"ØˆÔä˜g sÐ,<×,BÑ,BÀ;Ñ,OÓP€IØÐØ�Š˜)Ñ#�ä�#”u×-Ñ-Ô.Ü(¨Ð.>Õ?Ø	�‰�fÒ	Ü�C˜Ð"2Ô3à
×ÒÜ˜G S¨8°YÐ*?Ô@ä�#”u×.Ñ.Ô/Ù%;Ø�S |À
Ø¨~È;Ø"°tÈdØ Tô	&+Ñ"ˆˆY˜˜1˜a¡ô
 
�Cœ×/Ñ/Ô	0Ù"-Ø�S |Ø!Ð4DØ¨~Ø#¨Uô	#4ÑˆˆY˜˜1™aô
 
�Cœ×/Ñ/Ô	0Ù"-Ø�S |Ø!Ð4DØ¨~Ø#ô	#%ÑˆˆY˜˜1™aô ˜#œu×5Ñ5Ô6Ð6Ð6Øˆ	ä
˜g sÐ,<Ó
=€Cà×Ñ×"Ñ" 3Ô'Ø�	ˆ>Ðr   c                 ó  — | j                   rG| j                   d   j                  }|j                  |k  r|j                  d||j                  z
  «       t        | ||«      \  }}}|j                  d   dk(  xsN |j                  d   dk(  xr |j                  d   dk(  xs& |j                  d   dk(  xr |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Úrightr   Últrú
inline-endÚrtlúinline-start)r8   r)   Ú	translateÚavoid_collisionsr0   Úmargin_widthÚ
position_x)r   r   r   Ú	highest_yrK   r)   Úavailable_widthÚfloat_rights           r   r7   r7   W   s  € ð ×ÒØ×+Ñ+¨BÑ/×:Ñ:ˆ	Ø�>‰>˜IÒ%Ø�M‰M˜!˜Y¨¯©Ñ7Ô8ô /?Ø�Ð&ó/(Ñ+€J�
˜Oð 	�	‰	�'Ñ˜gÑ%ò 	SØ	�‰�;Ñ	 5Ñ	(Ò	O¨S¯Y©Y°wÑ-?À<Ñ-Oò	Sà	�‰�;Ñ	 5Ñ	(Ò	Q¨S¯Y©Y°wÑ-?À>Ñ-Qð ñ Ø�o¨×(8Ñ(8Ó(:Ñ:Ñ:ˆ
à‡M�M�*˜sŸ~™~Ñ-¨z¸C¿N¹NÑ/JÔKà€Jr   c                 ó®  ‡— ˆfd„}| j                   D ]>  }|j                  «       sŒ ||j                  d   |j                  d   «      sŒ8t        c S  d}|j                  |z   }| j
                  D ]a  } ||j                  d   |j                  d   «      sŒ'|j                  |j                  «       }
}	||	|
z   k  sŒLt        |xs d|	|
z   |z
  «      }Œc |S )zDReturn None if there is no clearance, otherwise the clearance value.c                 ó€   •— | dk(  r	‰dk(  rdnd} | dk(  r	‰dk(  rdnd} |dk(  r	‰dk(  rdnd}|dk(  r	‰dk(  rdnd}| |dfv S )z7Closure returning whether clear and float values match.rG   rD   ÚleftrC   rE   rF   Úboth© )Úclear_valueÚfloat_valuer   s     €r   Úclearzget_clearance.<locals>.clearz   sk   ø€ à˜.Ò(Ø$-°Ò$6™&¸GˆKØ˜,Ò&Ø$-°Ò$6™&¸GˆKØ˜.Ò(Ø$-°Ò$6™&¸GˆKØ˜,Ò&Ø$-°Ò$6™&¸GˆKØ˜{¨FÐ3Ð3Ð3r   rV   rB   Nr   )Úbroken_out_of_flowÚ
is_floatedr0   r   r)   r8   Úmargin_heightÚmax)r   r   r   Úcollapsed_marginrV   Úbroken_shaper<   Úhypothetical_positionÚexcluded_shapeÚyÚhs     `        r   r/   r/   w   sà   ø€ ô
4ð  ×2Ñ2ò ˆØ×"Ñ"Õ$Ù�S—Y‘Y˜wÑ'¨×);Ñ);¸GÑ)DÕEÜ’
ðð
 €IØŸN™NÐ-=Ñ=ÐØ!×1Ñ1ò QˆÙ�—‘˜7Ñ# ^×%9Ñ%9¸'Ñ%BÕCØ!×,Ñ,¨n×.JÑ.JÓ.LˆqˆAØ$ q¨1¡uÓ,Ü ¢¨a°!°a±%Ð:OÑ2OÓP‘	ð	Qð
 Ðr   c                 ó   — | j                   }|r|j                  n|j                  «       }|r|j                  «       n|j	                  «       }|r|j                  «       n|j                  «       }|j                  «       dk(  r|j                  «       rdd|j                  fS dg}dg}	|j                  d   dk(  r#|j                  d«       |	j                  d«       n"|j                  d«       |	j                  d«       	 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]0  }|j                  d   |v r|j                  |j                  «       z   ‘Œ2 }}|
D �cg c]  }|j                  d   |	v r|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|}�Œe	 |j                  «       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   rQ   rC   r   rD   rG   rE   rB   c              3   óV   K  — | ]!  }|j                   |j                  «       z   –— Œ# y ­w)N)r)   rY   )Ú.0Úshapes     r   ú	<genexpr>z#avoid_collisions.<locals>.<genexpr>Ò   s,   è ø€ ò %3àð ×$Ñ$ u×':Ñ':Ó'<Õ<ñ%3ùs   ‚')ÚnonerF   )r8   r)   Úborder_box_yrJ   Úborder_widthrY   Úborder_heightrX   r   r0   r9   rK   Úcontent_box_xr+   r,   rZ   Úminr1   r   ÚLineBoxr3   r2   Úestablishes_formatting_contextr-   )r   r   r   Úouterr8   r)   Ú	box_widthÚ
box_heightÚleft_keywordsÚright_keywordsÚcolliding_shapesrd   Úshape_position_yÚshape_margin_heightÚleft_boundsÚright_boundsÚmax_left_boundÚmax_right_boundÚnew_position_yrK   rM   s                        r   rI   rI   –   s«  € Ø×-Ñ-€OÙ#(�—’¨c×.>Ñ.>Ó.@€Já&+�× Ñ Ô"°×1AÑ1AÓ1C€IÙ(-�×"Ñ"Ô$°3×3DÑ3DÓ3F€Jà
×ÑÓ˜aÒ C§N¡NÔ$4Ø�!Ð%×+Ñ+Ð+Ð+à�H€MØ�Y€NØ×Ñ˜kÑ*¨eÒ3Ø×Ñ˜^Ô,Ø×Ñ˜lÕ+à×Ñ˜\Ô*Ø×Ñ˜nÔ-à
ØÐØ$ò 	/ˆEà$×/Ñ/ÐØ"'×"5Ñ"5Ó"7ÐØ! Jô 8Ø!Ð$7Ñ7ô8à! J°Ñ$;ô 8Ø!Ð$7Ñ7ô8à! ZÓ/Ø!Ð$7Ñ7Ø˜jÑ(ó)à ×'Ñ'¨Õ.ð	/ð *ö6àØ�{‰{˜7Ñ# }Ñ4ð ×Ñ˜u×1Ñ1Ó3Ó3ð6ˆð 6ð *ö7àØ�{‰{˜7Ñ# ~Ñ5ð ×Óð7ˆð 7ð *×7Ñ7Ó9ˆØ(Ð+;×+AÑ+AÑAˆáØ˜cŸo™oÑ-ˆNØ˜s×/Ñ/Ñ/ˆOñ ™,ÙÜ!$¤S¨Ó%5°~Ó!F�ÙÜ"%¤c¨,Ó&7¸Ó"I�ð ˜?¨^Ñ;Ò;ä!$ñ %3à!1ô%3ó "3�ð " JÒ.à!/�JÙàð 	�‰ÔÜ�3œŸ™Ô&Ø×ÒÜ�3œ×.Ñ.Ô/Ø×*Ñ*Ô,ð.ð	-ð  €JØ
‡y�y�Ñ˜VÒ#Ø×!Ñ! +Ñ.°%Ò7Ü˜#œuŸ}™}Ô-ð -‘
Ø×%Ò%ð -¨yÑ8‘
ô
 ˜s¤E×$:Ñ$:Ô;Ø×6Ñ6Ô8ð:ð9à,¨yÑ8�
à%¨Ñ6€OáØ�c—o‘oÑ%ˆ
Ø�c—n‘nÑ$ˆ
à�z ?Ð2Ð2ùò[6ùò7s   Å.5M6Æ)$M;N)r   )T)Ú__doc__Úmathr   Úformatting_structurer   Úmin_maxr   Úpercentr   r	   Ú	preferredr
   Úreplacedr   Útabler   r   r?   r7   r/   rI   rS   r   r   ú<module>rƒ      sJ   ðÙ  å å (Ý )ß FÝ $Ý 6Ý &ð ñHó ðHò?òDó@ô>n3r   