
    BhY                         S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJrJrJr  SSKJr  SSKJr  SSKJr  S rS rSS jr S r!S r"S r#S r$  SS jr%g)z@Take an "after layout" box tree and draw it onto a pydyf stream.    N)floor)ElementTree   )boxes)SVGImage)replaced)BackgroundLayer)Matrix)StackingContext   )draw_border	draw_linedraw_outlinerounded_boxset_mask_border)styled_color)stacked)	draw_textc                    U R                   S   n[        R                  " U 5      n[        XR                  R
                  SU R                  US9  [        X5        [        XR                  SS9  [        X5        [        X5        g)zDraw the given PageBox.marksF)clip_boxbleedr   )r   N)styler   	from_pagedraw_backgroundbox
backgroundr   r   canvas_backgroundr   draw_stacking_context)pagestreamr   stacking_contexts       J/var/www/html/env/lib/python3.13/site-packages/weasyprint/draw/__init__.py	draw_pager$      sm    JJwE&006$$//%tzz F!F22UC&3    c           
         [        U 5         UR                  nU R                  USS9  UR                  (       a`  UR                  R
                  S   S:w  aC  [        XR                  R                  5       5        U R                  5         U R                  5         UR                  5       (       a  UR
                  S   (       a  UR
                  S   u  p4pVUS:X  a  SnUS:X  a  SnUS:X  a  UR                  5       nUS:X  a  UR                  5       nU R                  UR                  5       U-   UR                  5       U-   Xd-
  XS-
  5        U R                  5         U R                  5         UR
                  S   S	:  a  U nU R                   " U R"                  6 n UR$                  (       aY  UR$                  R&                  (       a$  U R(                  " UR$                  R*                  6   OU R-                  5          S
S
S
5        g
[/        U[0        R2                  [0        R4                  [0        R6                  [0        R8                  [0        R:                  [0        R<                  45      (       a+  [?        X5        [A        XRB                  5        [E        X5        [        U 5         UR
                  S   S:g  =(       a    [/        U[0        RF                  5      (       + nU(       a9  [        XR                  5       5        U R                  5         U R                  5         URH                   H  n	[K        X	5        M     URL                   HZ  n
[?        X
5        [/        U
[0        RN                  5      (       a  [Q        X
5        M:  [A        X
RB                  5        [E        X
5        M\     URR                   H  n	[K        X	5        M     [/        U[0        RT                  5      (       a  [W        XR                  U5        U/URX                  Q7 H  n
[/        U
[0        R<                  5      (       a  [[        X
5        M/  U
R\                  (       d  MB  X:w  a  U R                  U
SS9  [/        U
R\                  S   [0        R^                  5      (       a)  U
R\                   H  n[W        XR                  U5        M     X:w  d  M  U R-                  5         M     UR`                   H  n	[K        X	5        M     URb                   H  n	[K        X	5        M     S
S
S
5        [e        X5        UR
                  S   S	:  aQ  U Rf                  nWn [        U 5         U Ri                  UR
                  S   SSS9  U Rk                  U5        S
S
S
5        U R-                  5         S
S
S
5        g
! , (       d  f       N= f! , (       d  f       N8= f! , (       d  f       g
= f)z*Draw a ``stacking_context`` on ``stream``.T)mcidoverflowvisibleclipautor   opacityr   N)strokefill)6r   r   begin_marked_contentis_for_root_elementr    r   r   rounded_padding_boxr*   endis_absolutely_positionedborder_heightborder_width	rectangleborder_box_xborder_box_y	add_grouppage_rectangletransformation_matrixdeterminant	transformvaluesend_marked_content
isinstancer   BlockBox	MarginBoxInlineBlockBoxTableCellBoxFlexContainerBoxReplacedBoxr   r   r   r   PageBoxnegative_z_contextsr   block_level_boxesTableBox
draw_tablefloat_contexts	InlineBoxdraw_inline_levelblocks_and_cellsdraw_replacedboxchildrenLineBoxzero_z_contextspositive_z_contextsr   id	set_alphadraw_x_object)r!   r"   r   toprightbottomleftoriginal_streamr*   child_contextblockchildgroup_ids                r#   r   r       s~    
""##Cd#3 "" %%++J79D 5 5 I I KLKKMJJL''))cii.?'*yy'8$Cf}**,v~'')  "U*C,<,<,>,Dfl, KKMJJL99Y!#$O%%v'<'<=F$$((44  #";";"B"BC))+K 
T cENNEOO!00%2D2D!22E4E4EG H H F(FNN3$V_ 		*%2 3sEMM22   F$;$;$=>

 "2!E!E%f< "F *;;.eU^^44v-#F,<,<=. < "2!@!@%f< "A #u//!&*?*?E B 0 A ABeU%6%677$V3^^^|33E3E!%.."4emmDD%*^^E-f6K6KUS &4|113 C "2!A!A%f< "B "2!E!E%f< "Fk r 	V!99Y!#yyH$F  9!5d N$$X. ! 	!!#i 
d _| !a 
sR   G.V=B!V=$F"V
A-V;AV?V=
0V,:V=
V)	%V=,
V:	6V==
Wc                 <   Uc  g[        U 5         U(       aK  UR                  S   R                   H  n[        X5        M     U R	                  5         U R                  5         UR                  R                  S:  a  [        U 5         U R                  UR                  5        UR                  S   R                  nU R                  " U6   U R	                  5         U R                  5         U R                  " U6   U R                  5         SSS5        U(       Ga  U(       Ga  UR                  S   R                  u  pxpUR                  5        VVs0 s H
  u  pXS-  _M     nnnSU
 SU	 S3nSU;   a  US	R                  / S
PUS    PSPUS    PSPUS    PSPUS    PSPU	 PSPUS    PSPUS    PSPU	 PSPU
 PSPUS    PSPUS    PSPU
 PSPUS    PSPUS    PSPUS    PSPUS    PSPU	 PSPU
 PSPUS    PSPUS    PSPU
 PSPUS    PSPUS    PSPU	 PSP5      -  nSU;   Ga  US	R                  / SPUS    PSPU	 PSPUS    PSPU	 PSPUS    PSPUS    PSPUS    PS PUS    PS!PUS    PS"PU
 PS#PU	 PS$PUS    PS%PUS    PS$PUS    PS&PUS    PS'PUS    PS"PU
 PS(PU	 PS)PUS    PS*PUS    PSPU
 PS+PUS    PS$PUS    PS,PUS    PS-PUS    PS.PU
 PS/PUS    PS0PU	 PS1PUS    PSPU
 PS%PUS    PS$PUS    PS,PUS    PS2PUS    PS0PU	 PS3PU
 PS4P5      -  nUS5-  n[        R                  " U5      n[!        USSU 5      nX4nXx4nS6nS7nUU-   nSSX4n/ n[#        UUUUUUUU5      nUR                  R%                  SU5        ['        UR                  5       H  n[)        U UUR*                  5        M     SSS5        g! , (       d  f       GN= fs  snnf ! , (       d  f       g= f)8zDraw the background color and image to a ``pdf.stream.Stream``.

If ``clip_box`` is set to ``False``, the background is not clipped to the
border box of the background, but only to the painting area.

Nr-   r   g      ?z
              <svg height="z	" width="z"
                   fill="transparent" stroke="black" stroke-width="1"
                   xmlns="http://www.w3.org/2000/svg">
            crop z
                  <path d="M0,rY   z hr\   z#" />
                  <path d="M0,rZ   z/"
                        transform="translate(z2,0) scale(-1,1)" />
                  <path d="M0,r[   ,z1) scale(-1,-1)" />
                  <path d="M0,z1"
                        transform="translate(0,z.) scale(1,-1)" />
                  <path d="Mz,0 vz!" />
                  <path d="Mz/) scale(-1,-1)" />
                  <path d="Mz$,0) scale(-1,1)" />
                crossz
                  <circle r="z7" transform="scale(0.5)
                     translate(zI) scale(0.5)" />
                  <path transform="scale(0.5) translate(z,0)" d="
                    M-z
                    M0,0 vz"" />
                  <circle r="z." transform="
                    translate(0,z+) scale(0.5)
                    translate(z,-z.) scale(0.5)" />
                  <path d="M-z
                    hz M0,0 v-z) scale(0.5) translate(z%,0)" />
                  <circle r="z6" transform="scale(0.5)
                    translate(z-) scale(0.5)" />
                  <path d="Mz
                    vz M0,0 hz8"
                    transform="scale(0.5) translate(0,z#)" />
                  <circle r="z," transform="
                    translate(z.,0) scale(0.5)
                    translate(-z M0,0 h-z,0) scale(0.5) translate(0,z)" />
                z</svg>)	no-repeatrg   T)r   layersclipped_boxesr   r*   r3   coloralpha	set_colorpainting_arear7   r/   itemsjoinr   
fromstringr   r	   insertreverseddraw_background_imageimage_rendering)r!   bgr   r   r   r   rm   xywidthheightkeyvalue
half_bleedsvgtreeimagesizepositionrepeat	unboundedpositioning_areari   layers                           r#   r   r      sH    
z	yy}22F( 3KKMJJL 88>>A  * "		" ; ;  -0

  -0 ! U"$))B-"="=A%=B[[]K]zs#s{*]JK"89UG 4C
     $U|n,./9&/A.BC$U|n,./9'/B.CD. /4W5  %X/	 02	 3=W2E1F	G.	
 /4W
 56
 7=X
>  %X/ 02 3=V2D1EF0 17x8 #6]O ,0 1;50A/BC #7^, -1 2<H1E0FG. /4W 56 7=X> #6]O ,0 1;80D/EF0 17x8 #7^, -1 2<E1B0CD. /4W5   %    (/01  %w&'(25(9':;9 :?@ "%()	 *+	 ,6e+<*=	 >@	 AFe~	N	
 !<.
) )234! "()  %g &( )38(<'=> )23 46 7A6J5KL Ho& '/ 05X.?@! "( )@ AFwG )012  *&12 34 5;8< (/0 13 4>f3E2FG Fm_ %, -2&M?;7  8>h! ?!" )12#"3#$  %g%$& %& !+7 34'& 56'& 7=X'&>'( )12)( 35)( 6@5H4I)(J)* Gn%+* &.+* /4Gn-=+*>+,  %g-, &A-, BH-,I- 0 8OC))#.DT4v6E?DvH/FI$tOM !1e4M#tXvy- -1E IIQ&bii(E!&%1C1CD )k 
 ! L+ 
s3   A8PBO5APP#J	P5
P	?P
Pc           	         UR                   b  SUR                  ;   a  g UR                  u  p4pVUR                  u  pxpUR                  u  pUR
                  u  pUR                  u  nnUS:X  a  US:X  a  UR                  (       d3  U R                  X4UU5        U R                  5         U R                  5         U R                  " U R                  6 nUR                  X-   X-   S9  UR                   R                  UUUU5        U R                  UR                  5        g US:X  a  [!        USU-  5      nO3US;   a  UnO*US:X  d   e[#        X-  5      nUS:  a  X-
  US-
  -  nSnOU	nUS:X  a  [!        USU-  5      nO5US;   a  UnO,US:X  d   e[#        U
U-  5      nUS:  a  U
U-
  US-
  -  nSnOU
n[%        X-   X-   S9nUU R&                  -  nU R)                  SSUUUUU5      nUR                  SSUU5      n[+        U 5         UR                   R                  UUUU5        UR                  UR                  5        U R-                  S5        U R/                  UR                  5        UR                  (       a,  U R                  u  nnnnU R                  UUUU-
  UU-
  5        OU R                  X4XV5        U R1                  5         S S S 5        g ! , (       d  f       g = f)	Nr   rg   efr   )r   roundspacer   Pattern)r   r   rm   r   r   r   r   r7   r*   r3   r:   r;   r>   drawrX   rV   maxr   r
   ctmadd_patternr   set_color_spaceset_color_specialr/   )r!   r   rt   
painting_x
painting_ypainting_widthpainting_heightpositioning_xpositioning_ypositioning_widthpositioning_height
position_x
position_yrepeat_xrepeat_yimage_widthimage_heightgrouprepeat_width	n_repeatsrepeat_heightmatrixpatternx1y1x2y2s                              r#   rs   rs      s   {{a5::o>C>Q>Q;JN HM"3"^^JH %

K;8{#: Z^,.KKMJJL   &"7"78*4%5 	 	7\?KUXX&;
 ;N(:;	(	("7"""+9:	>
 .;	ANLJ -L ;L!o*=>	(	($7""",|;<	>/,>9q=QMJ.Mj0J4NOF
fjjF  	1k<}fNGaL-@E	\?Kehh'y)  ,??#22NBBRR"Wb2g6Z^U 
s   CK
K"c                 |   [        XR                  5        UR                   H@  n[        XR                  5        UR                   H  n[        XR                  5        M     MB     UR                   H  n[        XR                  5        UR                   H  n[        XR                  5        UR                   Hd  nUR                  S   S:H  =(       d*    UR                  S   S:H  =(       d    UR
                  (       + nU(       d  MO  [        XR                  5        Mf     M     M     UR                  S   S:X  a  [        X5      $ [        X5        UR                   HZ  nUR                   HG  nUR                   H4  nUR                  S   S:X  d  UR
                  (       a  M)  [        X5        M6     MI     M\     g )Nborder_collapsecollapseempty_cellsshow)r   r   column_groupsrR   r   emptydraw_collapsed_bordersr   )r!   tablecolumn_groupcolumn	row_grouprowcelldraw_cell_backgrounds           r#   rL   rL   R  sW   F,,-++ 7 78"++FF$5$56 , , ^^	 4 45%%CFNN3KK 12j@ #JJ}-7#

N % ('#FOO< % & $ {{$%3%f44^^	%%C::m,6djjj- % & $r%   c                   ^^^^^^^^^^^ ^!^"^# TR                    VVs/ s H#  nUR                     H  nUR                  PM     M%     nnnTR                  nU(       a  U(       d  gTR                    VVs/ s H#  nUR                     H  nUR                  PM     M%     snnm![	        TR
                  5      m[        U5      m[        U5      mT[        T5      :X  d   eTR                  u  m#mTR                  TS   US   -   5        T!R                  T!S   US   -   5        TR                   S   R                  (       a#  [        TR                   S   R                   5      mOSmTR                   S   R                  (       a#  [        TR                   S   R                   5      mOSmTR                  nU(       a  UT-
  mOSm[        T#5      nUT-
  mUUUUU4S jm / m"S
UUU 4S jjmUUUUU U!U"UU#4	S jnUUUUU U!U"UU#4	S jn	[        T5       H  n
U	" U
S5        M     [        T5       H5  nU" SU5        [        T5       H  n
U" U
S-   U5        U	" XS-   5        M     M7     T"R                  [        R                  " S5      S	9  T" HJ  nUu  pnnnn[!        U 5         Uu  nnnn[#        UUU5      n[%        U UUUU-   UU-   XU5        SSS5        ML     gs  snnf s  snnf ! , (       d  f       Mj  = f)z/Draw borders of table cells when they collapse.Nr-   r   c                    > T(       a  U T[        U5      -   :  a  U $ T(       a  U TT-
  [        U5      -
  :  a  U T-   $ U T-   $ )N)int)rw   
horizontalbody_rows_offsetfooter_rowsfooter_rows_offsetgrid_heightheader_rowss     r#   
row_number*draw_collapsed_borders.<locals>.row_number  sM    1{S_<<HQ+";c*o"MM))) '''r%   c                 T  > SnU H  u  pEU(       a2  SUs=:*  =(       a    T
:  Os  =(       a    SUs=:*  =(       a    T:*  Os  nO1SUs=:*  =(       a    T
:*  Os  =(       a    SUs=:*  =(       a    T:  Os  nU(       d  Mx  T" XB(       + S9nX   U   u  nu  pn[        X95      nM     US-  $ )Nr   r   r   )r   )border_listyx_pairsverticalresultrw   rv   insideyy_rx   r   
grid_widthr   s             r#   half_max_width.draw_collapsed_borders.<locals>.half_max_width  s    DAa--+-F!q2F2FJ2Fa..;.F13F3FJ3Fvl;#.?1#5 =AaV+  zr%   c                 p  >	 T" USS9nTU   U    u  nu  pEnUS:X  d  UR                   S:X  a  g T
U    nTU   nUS:w  d  TR                  (       d  UT" TXS-
  4X4/SS9-  nTUS-      n	UTS-
  :w  d  TR                  (       d  U	T" TUS-   U S-
  4US-   U 4/SS9-  n	TR                  X4XVSXxSX-
  445        g )NFr   r   r   )r   r\   )rk   skip_cell_border_topskip_cell_border_bottomappend)rv   rw   r   scorer   rx   rj   pos_xpos_y1pos_y2column_positionsr   r   horizontal_bordersr   row_positionssegmentsr   vertical_borderss             r#   add_vertical,draw_collapsed_borders.<locals>.add_vertical  s   e,'7';A'>$$eA:) #q!633n"aQZ!$85J JFq1u%au'D'Dn"a!eQU^a!eQZ$@5R RF%6?0SU 	Vr%   c                 r  >	 US:X  a  TR                   (       a  g UT:X  a  TR                  (       a  g T" USS9nTU   U    u  nu  pEnUS:X  d  UR                  S:X  a  g TU   nT" TUS-
  U 4X4/5      nT" TUS-
  U S-   4XS-   4/5      n	TU    U-
  n
TU S-      U	-   nTR                  X4XVSXX-
  S445        g )Nr   Tr   r   rY   )r   r   rk   r   )rv   rw   r   r   r   rx   rj   pos_yshift_beforeshift_afterpos_x1pos_x2r   r   r   r   r   r   r   r   r   s               r#   add_horizontal.draw_collapsed_borders.<locals>.add_horizontal  s    6e00 = =d+'9"'=a'@$$eA:)a %&6!a%aV8LM$%5QAPQE
7ST!!$|3!!a%(;6%vPQ/RT 	Ur%   r   )rz   )T)rR   ry   column_widthsr   listr   lencollapsed_border_gridr   	is_header	is_footerskipped_rowsrangesortoperator
itemgetterr   r   r   )$r!   r   r   r   row_heightsr   r   original_grid_heightr   r   rv   rw   segmentr   r   rx   rj   side
border_boxbxbybwbhr   r   r   r   r   r   r   r   r   r   r   r   r   s$    `                     @@@@@@@@@@@@@r#   r   r   p  s    %*NN'$2y%%C 	

% 	N  ' ''MM(-'(69%%C 	% 	'M E223k"K]#J-....+0+F+F((,R0=3DDEr*[_<=~~a""%..+445~~b##%..,556%%L'+5/0-;
( 
( H V V"U U" :q! ;Qz"AQ"1!e$ #   MMh))!,M-3:0%jV_'NBB t4Efb"b2grBweL _ W''L _s   *K5*K,K$$
K3	c           	         UR                   S   S:w  d"  UR                  (       a  UR                  (       d  g[        R                  " U5      u  p#pEUS::  d  US::  a  g[        U 5         U R                  S5        U R                  XES9  [        U 5         UR                  R                  XX1R                   S   5        SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)zEDraw the given :class:`boxes.ReplacedBox` to a ``pdf.stream.Stream``.
visibilityr)   Nr   r   r   rt   )
r   rx   ry   r   replacedbox_layoutr   rW   r>   replacementr   )r!   r   
draw_widthdraw_heightdraw_xdraw_ys         r#   rQ   rQ     s    
yy)+399CJJ.6.I.I#.N+JVQ+*	6,V_ OO  K;L1MO  
 _ 
s$   (,C *C>C 
C	C  
C.c           	         [        U[        5      (       aZ  Un[        R                  [        R                  [        R
                  4n[        UR                  U5      (       d   e[        X5        g [        X5        [        XR                  5        [        X5        [        U[        R                  [        R                  45      (       Ga#  S n[        U[        R                  5      (       a  UR                  nUR                  nOUR                   nSn	U(       a  U R#                  USSS9  [%        UR&                  5       H  u  pU
[)        UR&                  5      S-
  :X  a  Un	[        U[        5      (       a  UnOX;R*                  -   UR*                  -
  n[        U[        R,                  5      (       a  [/        XXU	5        M  [1        XXXI5        M     U(       a  U R3                  5         g g [        U[        R4                  5      (       a  [7        X5        g [        U[        R,                  5      (       d   e[/        XX45        g )NnoneTLink)r'   tagr   )rA   r   r   rD   InlineFlexBoxInlineGridBoxr   r   r   r   r   r   rN   rS   text_overflowblock_ellipsislink_annotationr0   	enumeraterR   r   r   TextBoxr   rO   r@   InlineReplacedBoxrQ   )r!   r    r   offset_xr
  r  r"   allowed_boxesr  ellipsisir`   child_offset_xs                r#   rO   rO     s   #''--u/B/BEDWDWX*..>>>>f7$/F cEOOU]];<<"O#u}}-- # 1 1!$!3!3"%"5"5H++Cd+G%cll3CLL)A---He_55%-N%-0@0@%@3>>%QNeU]]33f^HU%e]V 4 ))+ U4455V)c5==1111f8;r%   )TN )r   r*   r  )&__doc__r   mathr   	xml.etreer   formatting_structurer   imagesr   layoutr   layout.backgroundr	   r   r
   stackingr   borderr   r   r   r   r   rj   r   stackr   textr   r$   r   r   rs   rL   r   rQ   rO   r  r%   r#   <module>r!     so    F   ! (   /  & V V   
4w$t`EFRj.<rMjO& DJ%+)<r%   