
    3vj0                         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mZmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ d Zd Zd Zd Zy)z
Draw text.    )BytesIO)ElementTree)Image   )RasterImageSVGImage)LOGGER)Matrix)
FROM_UNITSTO_UNITSffipango)get_hb_object_data)get_last_word_end   )	draw_line)	get_colorc                     ddl m} |j                  d   sJ |j                  d   dk7  ry|j                  d   }t        |j                  d      }d	|v sd
|v rV|j                  d   dv r|j                  j
                  }n. ||j                  d   |j                  |j                  d         }d
|v r9|j                  |j                  j                  z
  dz  z   }	t        | |||	||       d	|v r}|j                  d   dk(  r|j                  j                   }
n. ||j                  d   |j                  |j                  d         }
|j                  |
z   dz  z   }	t        | |||	||       |j                  |j                  |j                  z   }}| j                  |j                  d          |j                  j                  |j                         | j                          t        | |||t!        d||            }| j#                          t%        | |j                  |||       d|v rI|j                  j&                  }|j                  |j                  j(                  z
  }	t        | |||	||       |j                  j+                          y)z!Draw a textbox to a pydyf stream.r   )
percentage	font_size
visibilityvisibleNtext_decoration_linetext_decoration_color	underlineoverlinetext_decoration_thickness)autoz	from-fonttext_underline_offsetr   color)defzline-through)layout.percentr   styler   pango_layoutunderline_thicknessbaselineascentdraw_text_decorationunderline_position
position_x
position_y	set_color
reactivate
begin_textdraw_first_liner
   end_textdraw_emojisstrikethrough_thicknessstrikethrough_position
deactivate)streamtextboxoffset_xtext_overflowblock_ellipsisr   text_decoration_valuesr   	thicknessoffset_yunderline_offsetxyemojiss                 G/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/draw/text.py	draw_textrE      s   + ==%%% }}\"i/ %]]+AB%gmm5LM,,
>T0T==459NN,,@@I"9:GMMk*,I ++w33:::Y]J 	GXx!	# ,,==01V;!(!5!5!H!HH)56k* , ##&66QFGXx!	#
 w11G4D4DDqA
W]]7+,##GMM2
qA8NPF
OO q!V4 //((@@	##g&:&:&Q&QQGXx<Q	S##%    c           	          |d   }|D ]T  \  }}}}	}
}| j                         5  | j                  ||	||
|z  z   ||z          |j                  | |||       ddd       V y# 1 sw Y   axY w)zDraw list of emojis.r   )ar"   r#   r$   N)stacked	transformdraw)r8   r&   rA   rB   rC   r   imagefontrH   r"   r#   r$   s               rD   r4   r4   N   s    k"I#) <tQ1a^^ 	<qAQ]):a!eDJJvy)U;	< 	<<	< 	<s   3A  A)	c           	      ,   |j                   j                         sg S |j                  d   dk  rg S t        j                  |j
                  j                  d       |dk(  s|dk7  rI|j
                  j                  J |j
                  j                  }t        j                  |j
                  j                  t        |t        z               |dk(  r9t        j                  |j
                  j                  t        j                         n|dk(  rd}n|d	   d
k(  sJ |d   }|j
                  j                   }|j                  |j                  d         r:t        |dt        |j                  d           |j                  d         }|r|d| }|j
                  j!                  ||z          |j
                  j#                         \  }	}
|dk7  r|
rt        |j
                  j                   dt                |j                  d         }|nW|j
                  j                   d| }|j
                  j!                  ||z          |j
                  j#                         \  }	}
|
r|j
                  j                   j%                         } | j&                  |j(                    d}d}d	}g }|	j*                  d	   }|t,        j.                  k7  r|j0                  }|j2                  }|j4                  }|j4                  }|j6                  }|j8                  j:                  }|j<                  }t?        |      D cg c]
  }|||   z    }}|j8                  j@                  jB                  dz  r*|jE                  d	||j8                  jF                  z          n(|jI                  ||j8                  jF                  z          |j8                  j@                  jJ                  }||k7  r{|}| jM                  |      \  }}t        jN                         dk  r|j                  d   }|r| jQ                  |       d}| jS                  |jT                  |jV                  rdn|       |dz  }t?        |      D ]  }||   }|jX                  }|jZ                  j\                  }|t        j^                  k(  r|d| z   dz  }L|t        j`                  z  r|t        j`                  z
  }tc        jd                  dtg        |       d|dd       ji                  |      }tk        |dz  tl        z  z        |jn                  |<   d	|jn                  vr|jn                  |   |jn                  d	<   |jp                  vr7ts        tu        |||dz           } ||    jw                         |jp                  |<   |jZ                  jx                  z  }|jZ                  jz                  dz  }!|!r|d   dk(  r|dd }n|dz  }| jQ                  |       | j}                  |!        d}|r|  }||jV                  rd|ddnd|ddz  }| jQ                  |       | j}                  d	       d}n#|r
|d|  dz  }||jV                  r|dn|dz  }||jn                  v r|jn                  |   }"ngt        j~                  ||| j                  | j                         tk        | j                  j\                  dz  tl        z  |z        x}"|jn                  |<   |"|z   |dz  tl        z  |z  z
  }#|#r|dt        |#       dz  }|j                  rt        |j                  d|      }$|$rt        j                  |$      }%|%j                  d      d| k7  rut        j                  d      }&t        |%      D ]$  }'|&jI                  |'       |%j                  |'       & |%jI                  |&       t        j                  |%dd d!| i"       d#|%j                  vr)d$|j                   d%|j                   |%j                  d#<   t        |%ddd      }(dx})}*|jI                  |(||)|*|d	g       n|j                  rt        |j                  d&|      }+|+rt        j                  t        |+            },|jT                   | }-t        |,|-|+      }(|"dz  }*|,j\                  |,j                  z  |*z  })t        j~                  ||| j                  | j                         | j                  j                   }.|.tl        z  |z  |z
  }.|jI                  |(||)|*||.g       ||"|z   |#z
  dz  z  } |d   dk(  r|dd }n|dz  }|t,        j.                  k7  r| jQ                  |       |S c c}w )'z;Draw the given ``textbox`` line to the document ``stream``.r   gư>TellipsisnoneNr   u   …r   stringr   hyphenate_characterlang r   i9  <>zA.notdef glyph rendered for Unicode string unsupported by fonts: "z" (U+04X)i  r!   02x04xsvgidglyphdefsusehrefz#glyph)attribviewBoxz0 0  png)Wtextstripr&   r   &pango_layout_set_single_paragraph_moder'   layout	max_widthpango_layout_set_widthintr   pango_layout_set_ellipsizePANGO_ELLIPSIZE_ENDendswithr   lenset_textget_first_lineencodeset_text_matrixvaluesrunsr   NULLdatanextglyphs
num_glyphsitemoffsetlog_clustersrangeanalysislevelinsertlengthappendrM   add_fontpango_version	show_textset_font_sizehashbitmapr]   geometrywidthPANGO_GLYPH_EMPTYPANGO_GLYPH_UNKNOWN_FLAGr	   warningchrget_unused_glyph_idroundr   widths
to_unicodeslicesorteddecodex_offsety_offsetset_text_risepango_font_get_glyph_extentsink_rectlogical_rectr[   r   hb_facer   
fromstringgetElementlistremove
SubElementra   upemr   rd   hb_fontr   openr   r   heightrB   )/r8   r9   r;   r<   matrixri   rO   new_textlast_word_end
first_lineindex	utf8_textprevious_pango_fontrQ   	x_advancerC   run
glyph_itemglyph_stringglyphs_infonumber_of_glyphsr|   clustersiutf8_positions
pango_fontrM   r   
glyph_infoglyph_idr   	codepoint
utf8_sliceriselogical_widthkerningsvg_datatreer^   childrL   rH   r"   png_datapillow_imageimage_idr$   s/                                                  rD   r2   r2   W   sG	    <<	}}[!D(		001E1E1L1LdS
"n&>##--999((22	$$  ''Y-A)B	DJ&,,$$++U-F-FH ' %a(H444)!, ++00H  /D!EF 1Hs7==1F#GHHIMM&)!+ !'7H  ))(X*=>,,;;=J-$$))/CM>:f%'M $++00-@H  ))(X*=> ' 4 4 C C EJ  $$))002IFFMM*FIF
//!
C
/XX
hh!(("))'22'',, 9>>N8OP1&8A;.PP??##))A-!!!Vjoo.D.D%DE!!&:??+A+A"AB__--22
,,",$ooj9OD) ""$u,#MM+6	   (F  A)L#'( d	CA$QJ!''H''--E 5222Aufy0133 %888$u'E'EE	I'uYsO1>?  33I>(-edlZ.G).S(TH%DKK' &*[[%:DKKN t."F>!AaC+@$AB
,5j,A,H,H,J)  ((11I=F&&//$6D":$#CR[FcMF  ($$dU+!'yFAhs^1-Ahs^STBUU  ($$Q'6'!n,Ft{{XcN8C.Q 4;;& $H 522&//6;N;NP8=''--4zAIM9O OH 5 $f,ut|j/H9/TTGAc'l^1-- xx-dllE8L '11(;Dxx~5
);;*226:%)$Z /E KK. KK./ D)#.. %6(9L0MO 337		{!DII;1OI.$T4t<EIAMM5$1i"CD-dllE8L#(::gh.?#@L"&))XJ7H'hIE%,A$**\-@-@@1DA66"Hfoo++-  ,,...AJ2Y>AMM5$1i"CD-&07:dBBIId	CN ":CR[FcMFW /\ VMK Qs   :fc                     t        | |j                  |j                  |z   |j                  |j                  z   |j                  |z   ||j                  d   ||	       y)z?Draw text-decoration of ``textbox`` to a ``pdf.stream.Stream``.text_decoration_styleN)r   r-   r.   r   r&   )r8   r9   r:   r?   r>   r    s         rD   r+   r+   #  sU    ""G$6$6$AW]]*G,>,>,I7==!895(LrF   N)__doc__ior   	xml.etreer   PILr   imagesr   r   loggerr	   r   r
   text.ffir   r   r   r   
text.fontsr   text.line_breakr   borderr   r    r   rE   r4   r2   r+    rF   rD   <module>r      sD      !  *   7 7 + /  9&x<IXLrF   