
    Mh	Y                         d Z ddl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 dd
lmZ ddlmZ ddlmZmZmZmZmZ ddlmZ ddlmZ d Zd ZddZd Zd Z d Z!d Z"	 	 ddZ#d Z$y)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)	draw_textc                     | j                   d   }t        j                  |       }t        ||j                  j
                  d| j                  |       t        ||        t        || j                  d       t        ||        t        ||       y)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       p/var/www/pru.catia.catastroantioquia-mas.com/valormasv2/lib/python3.12/site-packages/weasyprint/draw/__init__.py	draw_pager#      sy    JJwE&006 $$//%tzz FD!FD22UC&"23    c                 	   | j                         5  |j                  }|j                  r`|j                  j                  d   dk7  rDt        | |j                  j                                | j                          | j                          |j                         r|j                  d   r|j                  d   \  }}}}|dk(  rd}|dk(  rd}|dk(  r|j                         }|dk(  r|j                         }| j                  |j                         |z   |j                         |z   ||z
  ||z
         | j                          | j                          |j                  d   dk  r| } | j                  | j                    } |j"                  rD|j"                  j$                  r$ | j&                  |j"                  j(                    n
	 ddd       yt+        |t,        j.                  t,        j0                  t,        j2                  t,        j4                  t,        j6                  t,        j8                  t,        j:                  f      r.t=        | |       t?        | |j@                         tC        | |       | j                         5  |j                  d   dk7  xr t+        |t,        jD                         }|r:t        | |j                                | j                          | j                          |jF                  D ]  }	tI        | |	        |jJ                  D ]W  }
t=        | |
       t+        |
t,        jL                        rtO        | |
       6t?        | |
j@                         tC        | |
       Y |jP                  D ]  }	tI        | |	        t+        |t,        jR                        rtU        | |j                  |       tW        |j                  | ||jX                  i       |jZ                  D ]  }	tI        | |	        |j\                  D ]  }	tI        | |	        	 ddd       t_        | |       |j                  d   dk  rY| j`                  }} | j                         5  | jc                  |j                  d   d	d	
       | je                  |       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z*Draw a ``stacking_context`` on ``stream``.overflowvisibleclipautor   opacityr   NT)strokefill)3stackedr   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
isinstancer   BlockBox	MarginBoxInlineBlockBoxTableCellBoxFlexContainerBoxGridContainerBoxReplacedBoxr   r   r   r   PageBoxnegative_z_contextsr   block_level_boxesTableBox
draw_tablefloat_contexts	InlineBoxdraw_inline_leveldraw_block_levelblocks_and_cellszero_z_contextspositive_z_contextsr   id	set_alphadraw_x_object)r    r!   r   toprightbottomleftoriginal_streamr(   child_contextblockgroup_ids               r"   r   r      s<    
	 f/"" "" %%++J79D 0 5 5 I I KLKKMJJL'')cii.?'*yy'8$Cf}**,v~'')  "U*C,<,<,>,Dufsl, KKMJJL99Y!#$O%V%%v'<'<=F$$((44   #";";"B"BCEf/ f/N cENNEOOU=Q=Q!..0F0F!22E4E4EG H FC(FCNN3$^^ -	= 		*%2 3sEMM22   FC$;$;$=>

 "2!E!E =%fm<= *;; /.eU^^4vu-#FE,<,<=./ "2!@!@ =%fm<= #u/!&*:*?*?E  %%v5E5V5V/WY "2!A!A =%fm<= "2!E!E =%fm<=Y-	=` 	VS!99Y!#yyH$F! /  9!5d N$$X./If/ f/^-	= -	=j/ /If/ f/sE   F4R<B3R<FR$AR< 3R0R<$R-	)R<0R9	5R<<Sc                 `   |y| j                         5  |rJ|j                  d   j                  D ]  }t        | |        | j	                          | j                          |j                  j                  dkD  r| j                         5  | j                         5  | j                  |j                         |j                  d   j                  } | j                  |  | j	                          | j                           | j                  |  | j                          ddd       ddd       |r|r|j                  d   j                  \  }}}	}
|j                         D ci c]  \  }}||dz   }}}d|
 d|	 d}d|v r|d	j                  g d
|d    d|d    d|d    d|d    d|	 d|d    d|d    d|	 d|
 d|d    d|d    d|
 d|d    d|d    d|d    d|d    d|	 d|
 d|d    d|d    d|
 d|d    d|d    d|	 d      z  }d|v r|d	j                  g d|d    d|	 d|d    d|	 d|d    d|d    d|d    d |d    d!|d    d"|
 d#|	 d$|d    d%|d    d$|d    d&|d    d'|d    d"|
 d(|	 d)|d    d*|d    d|
 d+|d    d$|d    d,|d    d-|d    d.|
 d/|d    d0|	 d1|d    d|
 d%|d    d$|d    d,|d    d2|d    d0|	 d3|
 d4      z  }|d5z  }t        j                   |      }t#        |dd|       }|	|
f}||f}d6}d7}||z   }dd|	|
f}g }t%        ||||||||      }|j                  j'                  d|       t)        |j                        D ]  }t+        | ||j,                          	 ddd       y# 1 sw Y   xY w# 1 sw Y   xY wc c}}w # 1 sw Y   yxY w)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   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,rT   z hrW   z#" />
                  <path d="M0,rU   z/"
                        transform="translate(z2,0) scale(-1,1)" />
                  <path d="M0,rV   ,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-repeatrb   T)r-   layersclipped_boxesr   r(   r0   coloralphaartifact	set_colorpainting_arear4   r,   itemsjoinr   
fromstringr   r	   insertreverseddraw_background_imageimage_rendering)r    bgr   r   r   r   ri   xywidthheightkeyvalue
half_bleedsvgtreeimagesizepositionrepeat	unboundedpositioning_areard   layers                           r"   r   r      s    
z		 VEyy}22 )FC()KKMJJL 88>>A" FNN$4   * "		" ; ;   -0

   -0  U"$))B-"="=Aq%=B[[]KzsE#us{*KJ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6?D1vH/FI$tOM !1eV4M#tXvy- -1E IIQ&bii( 	EE!&%1C1CD	EkVE VE    L+VE VEsJ   A6P$
PBPP&?P$%P5JP$P	PP	P$$P-c           	         |j                   d|j                  v ry |j                  \  }}}}|j                  \  }}}	}
|j                  \  }}|j
                  \  }}|j                  \  }}|dk(  r|dk(  r| j                         5  |j                  s4| j                  ||||       | j                          | j                           | j                  | j                   }|j                  ||z   ||z          |j                   j                  ||||       | j                  |j                          d d d        y |dk(  rt#        |d|z        }n1|dv r|}n*|dk(  sJ t%        |	|z        }|dk\  r|	|z
  |dz
  z  }d}n|	}|dk(  rt#        |d|z        }n1|dv r|}n*|dk(  sJ t%        |
|z        }|dk\  r|
|z
  |dz
  z  }d}n|
}t'        ||z   ||z         }|| j(                  z  }| j+                  dd|||||      }|j                  dd||      }| j                         5  | j-                         5  |j                   j                  ||||       |j                         5  |j                  |j                          d d d        | j/                  d       | j1                  |j                          |j                  r,| j                  \  }}}}| j                  ||||z
  ||z
         n| j                  ||||       | j3                          d d d        d d d        y # 1 sw Y   y xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)	Nr   rb   efr   )r~   roundspacer   Pattern)r{   r|   ri   r   r}   r~   rg   r   r4   r(   r0   r7   r8   r;   drawrS   rQ   maxr   r
   ctmadd_patternr-   set_color_spaceset_color_specialr,   )r    r   rp   
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"   ro   ro      sj   {{a5::o>C>Q>Q;J
NO HM="35G"^^J
Hh %

K;8{#:__ 	+ ??  
NOM

 %F$$f&;&;<EOOj=8J<VOWKKUKO  *	+ 	;
 ;N(:;	(	("7"""+k9:	>
 .;	ANLJ -L ;L!o*=>	(	($7""",|;<	>/,>9q=QMJ.Mj=0J4NOF
fjjF  	1k<}fNGaL-@E		 FNN, \?K 	,!!%((+	,y)  ,??#22NBBRR"Wb2g6Z^_U  y	+ 	^	, 	,   sJ   B,L #M4/L8#L,?BL8M L),L51L88M	=MMc                 6   t        | |j                         |j                  D ]?  }t        | |j                         |j                  D ]  }t        | |j                          A |j                  D ]  }t        | |j                         |j                  D ]w  }t        | |j                         |j                  D ]P  }|j                  d   dk(  xs! |j                  d   dk(  xs |j
                   }|s;t        | |j                         R y  |j                  d   dk(  rt        | |      S t        | |       |j                  D ]O  }|j                  D ]>  }|j                  D ]-  }|j                  d   dk(  s|j
                  r"t        | |       / @ Q y )Nborder_collapsecollapseempty_cellsshow)r   r   column_groupschildrenr   emptydraw_collapsed_bordersr   )r    tablecolumn_groupcolumn	row_grouprowcelldraw_cell_backgrounds           r"   rI   rI   D  s   FE,,-++ 7 7 78"++ 	7FFF$5$56	77 ^^ 
=		 4 45%% 	=CFCNN3 =KK 12j@ #JJ}-7#

N % (#FDOO<=	=
= {{$%3%fe44^^ .	%% 	.C .::m,6djj-.	..r$   c                    !"# j                   D cg c]  }|j                   D ]  }|j                   ! }}}j                  }|r|syj                   D cg c]  }|j                   D ]  }|j                   ! c}}!t	        j
                        t        |      t        |      t              k(  sJ j                  \  #j                  d   |d   z          !j                  !d   |d   z          j                   d   j                  r#t        j                   d   j                         ndj                   d   j                  r#t        j                   d   j                         ndj                  }|r|z
  ndt        #      }|z
  fd g "d
 fd	 !"#f	d} !"#f	d}	t              D ]  }
 |	|
d        t              D ]3  } |d|       t              D ]  }
 ||
dz   |        |	|
|dz           5 "j                  t        j                  d      	       "D ]i  }|\  }}}}}}|\  }}}}t!        |||      }| j#                         5  | j%                         5  t'        | ||||z   ||z   |||       ddd       ddd       k yc c}}w c c}}w # 1 sw Y    xY w# 1 sw Y   xY w)z/Draw borders of table cells when they collapse.Nr]   r   c                 n    r| t        |      z   k  r| S r| z
  t        |      z
  k\  r| z   S | z   S )N)int)rs   
horizontalbody_rows_offsetfooter_rowsfooter_rows_offsetgrid_heightheader_rowss     r"   
row_numberz*draw_collapsed_borders.<locals>.row_number  sM    1{S_<<HQ+";c*o"MM))) '''r$   c                    d}|D ]u  \  }}|r#d|cxk  xr 
k  nc xr d|cxk  xr k  nc }n"d|cxk  xr 
k  nc xr d|cxk  xr k  nc }|sP ||       }| |   |   \  }\  }}	}t        ||	      }w |dz  S )Nr   r   r   )r   )border_listyx_pairsverticalresultrs   rr   insideyy_rt   r   
grid_widthr   s             r"   half_max_widthz.draw_collapsed_borders.<locals>.half_max_width  s     	,DAqa-+-F!q2FJ2Fa.;.F13FJ3F(l;#.r?1#5 =AuaVU+	, zr$   c                 t  	  |d      }|   |    \  }\  }}}|dk(  s|j                   dk(  ry 
|    }|   }|dk7  sj                  s| || dz
  f|| fgd      z  }|dz      }	|dz
  k7  sj                  s|	 |dz   | dz
  f|dz   | fgd      z  }	j                  ||||d||d|	|z
  ff       y )NFr   r   r   )r   rW   )rf   skip_cell_border_topskip_cell_border_bottomappend)rr   rs   r   scorer   rt   re   pos_xpos_y1pos_y2column_positionsr   r   horizontal_bordersr   row_positionssegmentsr   vertical_borderss             r"   add_verticalz,draw_collapsed_borders.<locals>.add_vertical  s   e,'7';A'>$$ueA:) #q!633n"aQZ!Q$85J JFq1u%au'D'Dn"a!eQU^a!eQZ$@5R RF5%6F?0SU 	Vr$   c                 j  	 |dk(  rj                   ry |k(  rj                  ry  |d      }|   |    \  }\  }}}|dk(  s|j                  dk(  ry |   } |dz
  | f|| fg      } |dz
  | dz   f|| dz   fg      }	|    |z
  }
| dz      |	z   }j                  ||||d|
|||
z
  dff       y )Nr   Tr   r   rT   )r   r   rf   r   )rr   rs   r   r   r   rt   re   pos_yshift_beforeshift_afterpos_x1pos_x2r   r   r   r   r   r   r   r   r   s               r"   add_horizontalz.draw_collapsed_borders.<locals>.add_horizontal  s   6e00 = =d+'9"'=a'@$$ueA:)a %&6!a%aV8LM$%5QAAPQE
7ST!!$|3!!a%(;65%vPQ/RT 	Ur$   r   )rv   )T)r   ru   column_widthsr   listr   lencollapsed_border_gridr   	is_header	is_footerskipped_rowsrangesortoperator
itemgetterr   rg   r-   r   )$r    r   r   r   row_heightsr   r   original_grid_heightr   r   rr   rs   segmentr   r   rt   re   side
border_boxbxbybwbhr   r   r   r   r   r   r   r   r   r   r   r   r   s$    `                     @@@@@@@@@@@@@r"   r   r   b  s    %*NN' %%' 	

''K ' ''MM(-'$%%' 	''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"1a!e$	%% MMh))!,M- M3:05%j#BBUE40__ 	M 0 	Mfb"b2grBwueL	M 	M 	M	MW''P	M 	M 	M 	Ms/   $K%$KK K5K KK  K)	c           	         |j                   d   dk7  s|j                  r|j                  syt        j                  |      \  }}}}|dk  s|dk  ry| j                         5  | j                  d       | j                  ||       | j                         5  |j                  j                  | |||j                   d          ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)zEDraw the given :class:`boxes.ReplacedBox` to a ``pdf.stream.Stream``.
visibilityr'   Nr   r   r   rp   )
r   rt   ru   r   replacedbox_layoutr-   rR   r;   replacementr   )r    r   
draw_widthdraw_heightdraw_xdraw_ys         r"   draw_replacedboxr     s    
yy)+399CJJ.6.I.I#.N+JVVQ+*		 O6V,^^ 	O OO  
K;L1MO	OO O	O 	OO Os$   !5C,CCC	CC(c           	      p   t        |t              rV|}t        j                  t        j                  t        j
                  f}t        |j                  |      sJ t        | |       y t        | |       t        | |j                         t        | |       t        |t        j                  t        j                  f      rt        |t        j                        r|j                  }|j                  }d}t!        |j"                        D ]  \  }	}
|	t%        |j"                        dz
  k(  r|}t        |
t              r|}n||
j&                  z   |j&                  z
  }t        |
t        j(                        r+| j+                  |
d      5  t-        | |
|||       d d d        t/        | ||
|||        y t        |t        j0                        r(| j+                  |d      5  t3        | |       d d d        y t        |t        j(                        sJ t-        | |||       y # 1 sw Y   !xY w# 1 sw Y   y xY w)Nnoner   SpanFigure)r=   r   r   r@   InlineFlexBoxInlineGridBoxr   r   r   r   r   r   rK   LineBoxtext_overflowblock_ellipsis	enumerater   r   r   TextBoxmarkedr   rL   InlineReplacedBoxr   )r    r   r   offset_xr  r  r!   allowed_boxesellipsisichildchild_offset_xs               r"   rL   rL     s   #'--u/B/BEDWDWX*..>>>f&67$/FC cEOOU]];<#u}}- # 1 1!$!3!3H%cll3 V5CLL)A---He_5%-N%-0@0@%@3>>%QNeU]]3uf5 T!"E>=(TT T &e^]HVV U445sH- . -. . c5==111fc8];T T. .s   HH,H)	,H5c                    |j                         D ]  \  }}t        |t        j                        r(|j	                  |d      5  t        ||       d d d        nQ|j                  rEt        |j                  d   t        j                        r|j                  D ]  }t        || |        t        | ||        y # 1 sw Y   xY w)Nr  r]   )
rj   r=   r   rD   r	  r   r   r  rL   rM   )r   r    rN   rZ   r  s        r"   rM   rM     s    #3#9#9#; 9eU../uh/ 0 /0 0^^%..,emm<"^^ ;E%fdE:;v'7890 0s   B::C	)TN )r   r(   r   )%__doc__r   mathr   	xml.etreer   formatting_structurer   imagesr   layoutr   layout.backgroundr	   r   r
   stackingr   borderr   r   r   r   r   re   r   textr   r#   r   r   ro   rI   r   r   rL   rM   r  r$   r"   <module>r     sr    F   ! (   /  & V V  
4i/X`EFSl.<rMjO& DJ%+%<P	9r$   