Ë
    ©2Úi''  ã                   ó–   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 dd	lmZmZ  ed
d«      Z edd«      Zd„ Z	 	 dd„Zd„ Zd„ Zy)z$Manage background position and size.é    )Ú
namedtuple)Úcycle)Úparse_coloré   )Úboxesé   )Úreplaced)Ú
percentageÚresolve_radii_percentagesÚ
Backgroundzcolor, layers, styleÚBackgroundLayerzXimage, size, position, repeat, unbounded, painting_area, positioning_area, clipped_boxesc                 ó’  — |dk(  r>| j                  «       | j                  «       | j                  «       | j                  «       fS |dk(  r>| j	                  «       | j                  «       | j                  «       | j                  «       fS |dk(  sJ |«       ‚| j                  «       | j                  «       | j                  | j                  fS )Nú
border-boxúpadding-boxúcontent-box)Úborder_box_xÚborder_box_yÚborder_widthÚborder_heightÚpadding_box_xÚpadding_box_yÚpadding_widthÚpadding_heightÚcontent_box_xÚcontent_box_yÚwidthÚheight)ÚboxÚwhich_rectangles     úS/var/www/html/acx/venv/lib/python3.12/site-packages/weasyprint/layout/background.pyÚbox_rectangler!      sÇ   € Ø˜,Ò&à×ÑÓ × 0Ñ 0Ó 2Ø×ÑÓ × 1Ñ 1Ó 3ð5ð 	5ð 
˜MÒ	)à×ÑÓ ×!2Ñ!2Ó!4Ø×ÑÓ ×!3Ñ!3Ó!5ð7ð 	7ð  -Ò/Ð@°Ó@Ð/à×ÑÓ ×!2Ñ!2Ó!4Ø�I‰I�s—z‘zð#ð 	#ó    Nc                 óú  — ddl m} t        |«       |r"|j                  «       D ]  }t	        | ||«       Œ |€|j
                  }|d   d   dk7  r#|d   \  }}|dk(  r ||¬«      |_        n||_        |d	   d   dk7  r#|d	   \  }}|dk(  r ||¬«      |_        n||_        |d
   dk(  rg }	t        d«      }
n4|d   }|d   D ��cg c]  \  }}|dk(  r
 |||¬«      n|‘Œ }	}} ||d«      }
|
j                  dk(  rt        |	«      s|| k7  rd|_        yt        |	gt        t        |d   |d   |d   |d   |d   |d   g«      ¢­Ž D �cg c]  }t        || |d   g|¢­Ž ‘Œ }}t!        |
||«      |_        yc c}}w c c}w )z%Fetch and position background images.r   )Ú	get_colorNÚborder_image_sourcer   ÚnoneÚurl)r'   Úmask_border_sourceÚ
visibilityÚhiddenÚtransparentÚimage_orientationÚbackground_image)r'   ÚorientationÚbackground_colorÚbackground_sizeÚbackground_clipÚbackground_repeatÚbackground_originÚbackground_positionÚbackground_attachmentÚimage_resolution)Ú
draw.colorr$   r   Úall_childrenÚlayout_box_backgroundsÚstyleÚborder_imageÚmask_border_imager   ÚalphaÚanyÚ
backgroundÚzipÚmapr   Úlayout_background_layerr   )Úpager   Úget_image_from_uriÚlayout_childrenr:   r$   ÚchildÚtype_ÚvalueÚimagesÚcolorr.   ÚlayerÚlayerss                 r    r9   r9   #   s  € õ 'ô ˜cÔ"áØ×%Ñ%Ó'ò 	DˆEÜ" 4¨Ð0BÕCð	Dð €}Ø—	‘	ˆð Ð"Ñ# AÑ&¨&Ò0ØÐ2Ñ3‰ˆˆuØ�EŠ>Ù1°eÔ<ˆCÕà$ˆCÔàÐ!Ñ" 1Ñ%¨Ò/ØÐ1Ñ2‰ˆˆuØ�EŠ>Ù$6¸5Ô$AˆCÕ!à$)ˆCÔ!àˆ\Ñ˜hÒ&ØˆÜ˜MÓ*‰àÐ/Ñ0ˆð !&Ð&8Ñ 9÷;ñ ��uð ˜Š~ñ  5°kÕBØ#(ñ)ð;ˆñ ;ñ ˜%Ð!3Ó4ˆà‡{�{�aÒ¤ F¤Ø�$Š;Ø!ˆCŒNØô ˜ð .¤#¤eØÐ#Ñ$ØÐ#Ñ$ØÐ%Ñ&ØÐ%Ñ&ØÐ'Ñ(ØÐ)Ñ*ð.,ó #-ò .ö/àô 	   T¨5Ð1CÑ+DÐMÀuÔMð/€Fð /ô    v¨uÓ5€C…Nùó);ùò/s   ÃE2ÅE8c
                 ó.	  — g }
d}| |u r|j                   }g }
�nTt        | t        j                  «      r¥g }
d}| j                  D ]`  }|j                  sŒ|
|j                  D �cg c]  }|j                  «       ‘Œ c}z  }
t        |t        d„ |j                  D «       «      «      }Œb | j                  «       | j                  «       | j                  «       |g}�n•t        | t        j                  «      r�| j                  �rn| j                  D �cg c]  }|j                  «       ‘Œ }
}t        d„ | j                  D «       «      }| j                  «       | j                  «       | j                  «       |g}nút        | t        j                  t        j                  f«      ry| j                  «       }|r¾|D �cg c]  }|j                  «       ‘Œ }
}t        d„ |D «       «      }t        d„ |D «       «      }|| j                  «       ||z
  | j                  «       g}nWt!        | |«      }|dk(  r| j                  «       g}
n4|dk(  r| j#                  «       g}
n|d	k(  sJ |«       ‚| j%                  «       g}
|�#|j'                  || j(                  d
   «      \  }}}|�dfv rt+        d d|dddd|
¬«      S |	dk(  rJt        | t        j,                  «      r#dd| j/                  «       | j1                  «       f}nt!        |d	«      }nt!        | |«      }|\  }}}}|\  }}}}|dk(  rt3        j4                  ||«      \  }} nm|dk(  rt3        j6                  ||«      \  }} nM|\  }!}"t3        j8                  ||t;        |!| j(                  |«      t;        |"| j(                  |«      ||«      \  }} |\  }#}$}%}&||z
  }'|| z
  }(t;        |$| j(                  |'«      }$t;        |&| j(                  |(«      }&|#dk(  r|'|$z
  }$|%dk(  r|(|&z
  }&|\  })}*|)dk(  r6t        dt=        ||z  «      «      }+||+z  },d}$|*dk7  r|d   dk(  r| |,|z  z  } |,}|*dk(  r6t        dt=        || z  «      «      }+||+z  }-d}&|)dk7  r|d   dk(  r||-| z  z  }|-} t+        ||| f|$|&f|d|||
¬«      S c c}w c c}w c c}w )N)r   r   r   r   r   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N©r   ©Ú.0Úcells     r    ú	<genexpr>z*layout_background_layer.<locals>.<genexpr>q   s    è ø€ ò 5CØ-1�D×&Ñ&×(ñ5Cùó   ‚c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrO   rP   rQ   s     r    rT   z*layout_background_layer.<locals>.<genexpr>z   s   è ø€ ÒG°$˜×+Ñ+×-ÑGùrU   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrO   )r   rQ   s     r    rT   z*layout_background_layer.<locals>.<genexpr>‚   s   è ø€ Ò>°˜×)Ñ)×+Ñ>ùrU   c              3   ó^   K  — | ]%  }|j                  «       |j                  «       z   –— Œ' y ­wrO   )r   r   rQ   s     r    rT   z*layout_background_layer.<locals>.<genexpr>ƒ   s.   è ø€ ò MØ>B�×!Ñ!Ó# d×&7Ñ&7Ó&9Õ9ñMùs   ‚+-r   r   r   Ú	font_sizeFÚunused)ÚimageÚ	unboundedÚpainting_areaÚsizeÚpositionÚrepeatÚpositioning_areaÚclipped_boxesÚfixedÚcoverÚcontainÚrightÚbottomÚroundr   Úauto)r[   r^   r_   r`   r\   r]   ra   rb   )Ú
bleed_areaÚ
isinstancer   ÚTableRowGroupBoxÚchildrenÚrounded_border_boxÚmaxr   r   r   ÚTableRowBoxÚTableColumnGroupBoxÚTableColumnBoxÚ	get_cellsÚminr   r!   Úrounded_padding_boxÚrounded_content_boxÚget_intrinsic_sizer:   r   ÚPageBoxÚmargin_widthÚmargin_heightr	   Úcover_constraint_image_sizingÚcontain_constraint_image_sizingÚdefault_image_sizingr
   rh   ).r   rC   Ú
resolutionr[   r^   Úclipr`   Úoriginr_   Ú
attachmentrb   r]   Útotal_heightÚrowrS   r   ÚcellsÚmin_xÚmax_xÚintrinsic_widthÚintrinsic_heightÚratiora   Úpositioning_xÚpositioning_yÚpositioning_widthÚpositioning_heightÚ
painting_xÚ
painting_yÚpainting_widthÚpainting_heightÚimage_widthÚimage_heightÚ
size_widthÚsize_heightÚorigin_xÚ
position_xÚorigin_yÚ
position_yÚref_xÚref_yÚrepeat_xÚrepeat_yÚ	n_repeatsÚ	new_widthÚ
new_heights.                                                 r    rB   rB   ^   s3  € ð €MØ€MØ
ˆd�{ð Ÿ™ˆØŠÜ	�Cœ×/Ñ/Ô	0ØˆØˆØ—<‘<ò 	DˆCØ�|‹|ØØ:=¿,¹,ö"HØ26�D×+Ñ+Õ-ò"Hñ H�ä" <´ñ 5CØ58·\±\ô5Có 2Có  D‘ð		Dð ×ÑÓ × 0Ñ 0Ó 2Ø×ÑÓ ð.Šô 
�Cœ×*Ñ*Ô	+Ø�<‹<à69·l±löDØ.2�×'Ñ'Õ)ðDˆMð DäÑG¸#¿,¹,ÔGÓGˆFà× Ñ Ó" C×$4Ñ$4Ó$6Ø× Ñ Ó" Fð,‰Mô 
�Cœ%×3Ñ3´U×5IÑ5IÐJÔ	KØ—‘“ˆÙØCHÖI¸4˜T×4Ñ4Õ6ÐIˆMÐIÜÑ>¸Ô>Ó>ˆEÜñ MØFKôMó MˆEð �s×'Ñ'Ó)¨5°5©=¸#×:KÑ:KÓ:MðO‰Mô & c¨4Ó0ˆØ�<ÒØ ×3Ñ3Ó5Ð6‰MØ�]Ò"Ø ×4Ñ4Ó6Ð7‰Mà˜=Ò(Ð.¨$Ó.Ð(Ø ×4Ñ4Ó6Ð7ˆMàÐØ38×3KÑ3KØ˜Ÿ	™	 +Ñ.ó40Ñ0ˆÐ)¨5à€}˜˜oÐ/?Ð@Ñ@ÜØ %°}Ø H°XØ%°]ôDð 	Dð
 �WÒä�cœ5Ÿ=™=Ô)ð !" 1 c×&6Ñ&6Ó&8¸#×:KÑ:KÓ:MÐNÑä,¨T°=ÓAÑä(¨¨fÓ5Ðð 	ñ H€M�=Ð"3Ð5Gà>KÑ;€J�
˜N¨Oàˆw‚Ü$,×$JÑ$JØÐ1°5ó%:Ñ!ˆ‘\à	�Ò	Ü$,×$LÑ$LØÐ1°5ó%:Ñ!ˆ‘\ð #'Ñˆ
�KÜ$,×$AÑ$AØÐ-¨uÜ�z 3§9¡9Ð.?Ó@Ü�{ C§I¡IÐ/AÓBØÐ1ó	%3Ñ!ˆ�\ð 2:Ñ.€Hˆj˜( JØ Ñ+€EØ Ñ-€EÜ˜J¨¯	©	°5Ó9€JÜ˜J¨¯	©	°5Ó9€JØ�7ÒØ˜ZÑ'ˆ
Ø�8ÒØ˜ZÑ'ˆ
àÑ€Hˆhà�7ÒÜ˜œ5Ð!2°[Ñ!@ÓAÓBˆ	Ø%¨	Ñ1ˆ	Øˆ
Ø�wÒ 4¨¡7¨fÒ#4Ø˜I¨Ñ3Ñ3ˆLØˆØ�7ÒÜ˜œ5Ð!3°lÑ!BÓCÓDˆ	Ø'¨)Ñ3ˆ
Øˆ
Ø�wÒ 4¨¡7¨fÒ#4Ø˜:¨Ñ4Ñ4ˆKØ!ˆäØØ˜<Ð(Ø˜jÐ)ØØØ#Ø)Ø#ô%ð %ùòI"HùòDùò Js   Á"RÄRÆ3Rc                 ó   — t        | | |«       t        | j                  d   t        j                  «      rJ ‚| j                  d   }|}|j
                  j                  «       dk(  r>|j                  €2|j                  D ]#  }|j
                  j                  «       dk(  sŒ!|} n |j                  r”t        | d«      }| j                  }t        | | |d|j                  ¬«       | j                  j                  | j                  j                  D �cg c]  }|j                  |¬«      ‘Œ c}¬	«      | _        || _        d|_        yd| _        yc c}w )
zøLayout backgrounds on the page box and on its children.

    This function takes care of the canvas background, taken from the root
    elememt or a <body> child of the root element.

    See https://www.w3.org/TR/CSS21/colors.html#background

    r   ÚhtmlNÚbodyr   F)rE   r:   )r]   )rL   )r9   rk   rm   r   Ú	MarginBoxÚelement_tagÚlowerr?   r!   r:   Ú_replacerL   Úcanvas_background)rC   rD   Úroot_boxÚ
chosen_boxrF   r]   Úoriginal_backgroundrK   s           r    Úlayout_backgroundsr¬   Þ   s<  € ô ˜4 Ð'9Ô:Ü˜$Ÿ-™-¨Ñ*¬E¯O©OÔ<Ð<Ð<Ø�}‰}˜QÑ€HØ€JØ×Ñ×!Ñ!Ó# vÒ-°(×2EÑ2EÐ2MØ×&Ñ&ò 	ˆEØ× Ñ ×&Ñ&Ó(¨FÓ2Ø"�
Ùð	ð
 ×ÒÜ% d¨LÓ9ˆØ"Ÿo™oÐÜØ�$Ð*¸EØ×"Ñ"õ	$ð "&§¡×!9Ñ!9ð "Ÿ_™_×3Ñ3ö5àð —‘¨]�Õ;ò5ð ":ó "6ˆÔð
 .ˆŒØ $ˆ
Õà!%ˆÕùò5s   ÄE)TN)Ú__doc__Úcollectionsr   Ú	itertoolsr   Útinycss2.color5r   Úformatting_structurer   Ú r	   Úpercentr
   r   r   r   r!   r9   rB   r¬   © r"   r    ú<module>rµ      sZ   ðÙ *å "Ý å 'å (Ý ß :á˜Ð&<Ó=€
ÙØð5ó6€ò#ð  KOØ!%ó86òv}%ó@!&r"   