Ë
    o]j],  ã                   óŠ   — d Z ddlmZmZ ddlmZ d„ Zd„ Zd„ Zd„ Z	d„ Z
ed	„ «       Zed
„ «       Zd„ Zd„ Zd„ Zd„ Zed„ «       Zy)zcLayout for images and other replaced elements.

See https://drafts.csswg.org/css-images-3/#sizing

é   )Úhandle_min_max_heightÚhandle_min_max_width)Ú
percentagec           	      óÂ   — |dk(  rd}|dk(  rd}|�|�||fS |�||�||z  fS |�|fS |fS |�|�||z  |fS | �| |fS ||fS | €|�t        | ||| |||«      S t        |||«      S )z¶Default sizing algorithm for the concrete object size.

    Return a ``(concrete_width, concrete_height)`` tuple.

    See https://drafts.csswg.org/css-images-3/#default-sizing

    ÚautoN)Údefault_image_sizingÚcontain_constraint_image_sizing)Úintrinsic_widthÚintrinsic_heightÚintrinsic_ratioÚspecified_widthÚspecified_heightÚdefault_widthÚdefault_heights          úQ/var/www/zogu/zoguvenv/lib/python3.12/site-packages/weasyprint/layout/replaced.pyr   r      s  € ð ˜&Ò ØˆØ˜6Ò!ØÐàÐ"Ð'7Ð'CØÐ 0Ð0Ð0Ø	Ð	$ØØ1@Ð1LˆO˜oÑ-ð!ð 	!à%5Ð%AÐ!ð!ð 	!ð  ð!ð 	!ð 
Ð	%à2AÐ2MÐ˜Ñ.ð ð	ð 	à$3Ð$?�àð	ð 	ð Øð	ð 	ð Ð&Ð*:Ð*FÜ'ØÐ!1°?ØÐ!1°=Øó ð  ô
 3Ø˜~¨ó@ð @ó    c                 ó    — t        | ||d¬«      S )zÅContain constraint sizing algorithm for the concrete object size.

    Return a ``(concrete_width, concrete_height)`` tuple.

    See https://drafts.csswg.org/css-images-3/#contain-constraint

    F©Úcover©Ú_constraint_image_sizing©Úconstraint_widthÚconstraint_heightr   s      r   r	   r	   2   s   € ô $ØÐ+¨_ÀEôKð Kr   c                 ó    — t        | ||d¬«      S )zÁCover constraint sizing algorithm for the concrete object size.

    Return a ``(concrete_width, concrete_height)`` tuple.

    See https://drafts.csswg.org/css-images-3/#cover-constraint

    Tr   r   r   s      r   Úcover_constraint_image_sizingr   ?   s   € ô $ØÐ+¨_ÀDôJð Jr   c                 ó@   — |€| |fS || ||z  kD  z  r||z  |fS | | |z  fS )N© )r   r   r   r   s       r   r   r   L   sJ   € àÐØÐ!2Ð2Ð2Ø	Ð"Ð%6¸Ñ%HÑHÒ	IØ  ?Ñ2Ð4EÐEÐEàÐ!1°OÑ!CÐCÐCr   c                 ór  — | j                   d   }| j                   d   }| j                  }|j                  | j                   d   | j                   d   «      \  }}}d ||fv r$t        | j                  | j
                  |«      \  }}|dk(  r| j                  | j
                  }}n€|dv r%t        | j                  | j
                  |«      \  }}n:|dk(  r%t        | j                  | j
                  |«      \  }}n|dk(  sJ |«       ‚||}}|d	k(  rt        ||«      }t        ||«      }|d
   \  }	}
}}| j                  |z
  }| j
                  |z
  }t        |
| j                   |«      }
t        || j                   |«      }|	dk(  r||
z
  }
|dk(  r||z
  }|
| j                  «       z  }
|| j                  «       z  }|||
|fS )NÚ
object_fitÚobject_positionÚimage_resolutionÚ	font_sizeÚfill)Úcontainú
scale-downr   Únoner&   é    ÚrightÚbottom)ÚstyleÚreplacementÚget_intrinsic_sizer	   ÚwidthÚheightr   Úminr   Úcontent_box_xÚcontent_box_y)Úboxr    ÚpositionÚimager
   r   r   Ú
draw_widthÚdraw_heightÚorigin_xÚ
position_xÚorigin_yÚ
position_yÚref_xÚref_ys                  r   Úreplacedbox_layoutr>   V   sÝ  € à—‘˜<Ñ(€JØ�y‰yÐ*Ñ+€Hà�O‰O€Eà× Ñ Ø�I‰IÐ(Ñ)¨3¯9©9°[Ñ+Aó	Cñ 7€OÐ% ð �Ð!1Ð2Ñ2Ü,KØ�I‰I�s—z‘z ?ó-4Ñ)ˆÐ)ð �VÒØ"%§)¡)¨S¯Z©Z�K‰
àÐ2Ñ2Ü&EØ—	‘	˜3Ÿ:™: ó'8Ñ#ˆJ™à˜7Ò"Ü&CØ—	‘	˜3Ÿ:™: ó'8Ñ#ˆJ™ð  Ò'Ð3¨Ó3Ð'Ø&5Ð7G˜ˆJà˜Ò%Ü˜Z¨Ó9ˆJÜ˜kÐ+;Ó<ˆKà19¸!±Ñ.€Hˆj˜( JØ�I‰I˜
Ñ"€EØ�J‰J˜Ñ$€Eä˜J¨¯	©	°5Ó9€JÜ˜J¨¯	©	°5Ó9€JØ�7ÒØ˜ZÑ'ˆ
Ø�8ÒØ˜ZÑ'ˆ
à�#×#Ñ#Ó%Ñ%€JØ�#×#Ñ#Ó%Ñ%€Jà�{ J°
Ð:Ð:r   c                 ó|  — ddl m} | j                  j                  | j                  d   | j                  d   «      \  }}}| j
                  | j                  cxk(  rdk(  r%n n"|�|| _        n|�|�||z  | _        n	 || |«       | j                  dk(  r)|�| j
                  |z  | _        y|�|| _        yd| _        yy)z&Set the used width for replaced boxes.r   ©Úblock_level_widthr"   r#   r   Ni,  )ÚblockrA   r,   r-   r+   r/   r.   )r3   Úcontaining_blockrA   r.   r/   Úratios         r   Úreplaced_box_widthrE   …   s¿   € õ )àŸ?™?×=Ñ=Ø�	‰	Ð$Ñ% s§y¡y°Ñ'=ó?Ñ€Eˆ6�5ð
 ‡z�z�S—Y‘YÔ( &Õ(ØÐàˆC�IØÐØÐ!à" U™N�•	ñ " #Ð'7Ô8à
‡y�y�FÒØÐàŸ
™
 UÑ*ˆC�IØÐàˆC�Ið ˆC�Ið r   c                 ó  — | j                   j                  | j                  d   | j                  d   «      \  }}}| j                  | j                  cxk(  rdk(  rn n|| _        n%| j                  dk(  r|r| j                  |z  | _        | j                  | j                  cxk(  rdk(  rn n
|�|| _        y|�$| j                  dk(  r| j                  |z  | _        y| j                  dk(  r
|�|| _        y| j                  dk(  rd| _        yy)z3Compute and set the used height for replaced boxes.r"   r#   r   Né–   )r,   r-   r+   r/   r.   )r3   r.   r/   rD   s       r   Úreplaced_box_heightrH   ¨   så   € ð Ÿ?™?×=Ñ=Ø�	‰	Ð$Ñ% s§y¡y°Ñ'=ó?Ñ€Eˆ6�5ð ‡z�z�S—Y‘YÔ( &Õ(Øˆ�
Ø	�‰�vÒ	¡%Ø—Y‘Y Ñ&ˆŒ
à
‡z�z�S—Y‘YÔ( &Õ(¨VÐ-?Øˆ�
Ø	Ð	˜sŸz™z¨VÒ3Ø—Y‘Y Ñ&ˆ�
Ø	�‰�vÒ	 &Ð"4Øˆ�
Ø	�‰�vÒ	àˆ�
ð 
r   c                 óp   — dD ]%  }t        | d|› �«      dk(  sŒt        | d|› �d«       Œ' t        | |«       y)z5Lay out an inline :class:`boxes.ReplacedBox` ``box``.)Útopr)   r*   ÚleftÚmargin_r   r(   N)ÚgetattrÚsetattrÚ inline_replaced_box_width_height)r3   rC   Úsides      r   Úinline_replaced_box_layoutrQ   À   sG   € à2ò .ˆÜ�3˜' $ Ð(Ó)¨VÓ3Ü�C˜7 4 &Ð)¨1Õ-ð.ô % SÐ*:Õ;r   c                 óð   — | j                   d   | j                   d   cxk(  rdk(  r:n n7t        j                  | |«       t        j                  | «       t	        | «       y t        | |«       t        | «       y )Nr.   r/   r   )r+   rE   Úwithout_min_maxrH   Úmin_max_auto_replaced)r3   rC   s     r   rO   rO   È   s[   € Ø
‡y�y�Ñ˜SŸY™Y xÑ0Ô:°FÕ:Ü×*Ñ*¨3Ð0@ÔAÜ×+Ñ+¨CÔ0Ü˜cÕ"ä˜3Ð 0Ô1Ü˜CÕ r   c                 óÀ  — | j                   }| j                  }| j                  }| j                  }t	        || j
                  «      }t	        || j                  «      }||k  rdn||kD  rdnd||k  rdn||kD  rdndf}|dk(  rd}|dk(  rd}|dk(  r|| _         t	        ||z  |z  |«      | _        y|dk(  r|| _         t        ||z  |z  |«      | _        y|dk(  rt	        ||z  |z  |«      | _         || _        y|d	k(  rt        ||z  |z  |«      | _         || _        y|d
k(  rI||z  ||z  k  r|| _         t	        |||z  |z  «      | _        yt	        |||z  |z  «      | _         || _        y|dk(  rI||z  ||z  k  rt        |||z  |z  «      | _         || _        y|| _         t        |||z  |z  «      | _        y|dk(  r|| _         || _        y|dk(  r|| _         || _        yy)zCResolve min/max constraints on replaced elements with 'auto' sizes.r0   ÚmaxÚ r(   g�íµ ÷Æ°>)rV   rW   )r0   rW   )rW   rV   )rW   r0   )rV   rV   )r0   r0   )r0   rV   )rV   r0   N)r.   r/   Ú	min_widthÚ
min_heightrV   Ú	max_widthÚ
max_heightr0   )r3   r.   r/   rX   rY   rZ   r[   Ú
violationss           r   rT   rT   Ò   s  € à�I‰I€EØ�Z‰Z€FØ—‘€IØ—‘€JÜ�I˜sŸ}™}Ó-€IÜ�Z §¡Ó0€Jð ˜Ò"‰°¸Ò1B©ÈØ˜*Ò$‰°6¸JÒ3F©%ÈBðP€Jð �‚zØˆØ�‚{Øˆð �[Ò ØˆŒ	Ü˜ VÑ+¨eÑ3°ZÓ@ˆ�
Ø	�{Ò	"ØˆŒ	Ü˜ VÑ+¨eÑ3°ZÓ@ˆ�
Ø	�{Ò	"Ü˜
 UÑ*¨VÑ3°YÓ?ˆŒ	Øˆ�
Ø	�{Ò	"Ü˜
 UÑ*¨VÑ3°YÓ?ˆŒ	Øˆ�
Ø	�~Ò	%Ø�uÑ 
¨VÑ 3Ò3Ø!ˆCŒIÜ˜Z¨°VÑ);¸eÑ)CÓDˆC�Jä˜I z°EÑ'9¸FÑ'BÓCˆCŒIØ#ˆC�JØ	�~Ò	%Ø�uÑ 
¨VÑ 3Ò3Ü˜I z°EÑ'9¸FÑ'BÓCˆCŒIØ#ˆC�Jà!ˆCŒIÜ˜Z¨°VÑ);¸eÑ)CÓDˆC�JØ	�~Ò	%ØˆŒ	Øˆ�
Ø	�~Ò	%ØˆŒ	Øˆ�
ð 
&r   c                 ó  — ddl m} ddlm} |j	                  «       }|j
                  d   |j
                  d   cxk(  rdk(  rsn np|j                  |j                  f}t        j                  ||«       t        j                  |«       t        |«       |\  |_        |_        |j                  ||«       nt        ||«       t        |«       |j                  s || ||d¬«      \  |_        |_        }d	}d
d	dœ}g }	d}
||||	|
fS )z5Lay out the block :class:`boxes.ReplacedBox` ``box``.r   r@   )Úavoid_collisionsr.   r/   r   F)ÚouterNÚany)ÚbreakÚpage)rB   rA   Úfloatr^   Úcopyr+   Úmargin_leftÚmargin_rightÚblock_replaced_widthrS   rH   rT   Úis_flex_itemr9   r;   )Úcontextr3   rC   rA   r^   Úcomputed_marginsÚ_Ú	resume_atÚ	next_pageÚadjoining_marginsÚcollapsing_throughs              r   Úblock_replaced_box_layoutrp   
  sþ   € å(Ý'à
�(‰(‹*€CØ
‡y�y�Ñ˜SŸY™Y xÑ0Ô:°FÕ:ØŸ?™?¨C×,<Ñ,<Ð<ÐÜ×,Ñ,ØÐ!ô	#ä×+Ñ+¨CÔ0Ü˜cÔ"Ø,<Ñ)ˆŒ˜Ô)Ø×)Ñ)¨#Ð/?Õ@ä˜SÐ"2Ô3Ü˜CÔ ð ×Òñ -=Ø�SÐ*°%ô-9Ñ)ˆŒ˜œ¨à€IØ¨Ñ.€IØÐØÐØ�	˜9Ð&7Ð9KÐKÐKr   c                 ó`   — ddl m} t        j                  | |«       |j                  | |«       y )Nr   r@   )rB   rA   rE   rS   )r3   rC   rA   s      r   rg   rg   *  s)   € å(ô ×&Ñ& sÐ,<Ô=Ø×%Ñ% cÐ+;Õ<r   N)Ú__doc__Úmin_maxr   r   Úpercentr   r   r	   r   r   r>   rE   rH   rQ   rO   rT   rp   rg   r   r   r   ú<module>ru      s†   ðñ÷ AÝ ò$@òN
Kò
JòDò,;ð^ ñó ððD ñó ðò.<ò!ò5 òpLð@ ñ=ó ñ=r   