Ë
    £ëiœ0  ã                   ó´   — 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                 úT/var/www/html/chat/reports/venv/lib/python3.12/site-packages/weasyprint/draw/text.pyÚ	draw_textrE      s…  € å+ð �=‰=˜Ò%Ð%Ð%ð ‡}�}�\Ñ" iÒ/Øð %Ÿ]™]Ð+AÑBÐÜ% g§m¡mÐ5LÓMÐØÐ,Ñ,°
Ð>TÑ0TØ�=‰=Ð4Ñ5Ð9NÑNØ×,Ñ,×@Ñ@‰Iá"Ø—‘Ð9Ñ:¸G¿M¹MØ—‘˜kÑ*ó,ˆIð Ð+Ñ+à×Ñ˜w×3Ñ3×:Ñ:Ñ:¸YÈ¹]ÑJð 	äØ�G˜X x°Ø!ô	#ð Ð,Ñ,Ø�=‰=Ð0Ñ1°VÒ;Ø!(×!5Ñ!5×!HÑ!HÐHÑá)Ø—‘Ð5Ñ6¸¿¹Ø—‘˜kÑ*ó ,Ðð ×#Ñ#Ð&6Ñ6¸ÀQ¹ÑFˆÜØ�G˜X x°Ø!ô	#ð
 ×Ñ˜w×1Ñ1°G×4DÑ4DÑD€q€AØ
×Ñ�W—]‘] 7Ñ+Ô,Ø×Ñ×#Ñ# G§M¡MÔ2Ø
×ÑÔÜØ�˜¨¼ÀÀqÈAÔ8NóP€Fà
‡O�OÔô �˜Ÿ™ q¨!¨VÔ4ð Ð/Ñ/Ø×(Ñ(×@Ñ@ˆ	Ø×#Ñ# g×&:Ñ&:×&QÑ&QÑQˆÜØ�G˜X x°Ð<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Ø#)ò <Ñˆˆt�Q˜˜1˜aØ�^‰^Óñ 	<Ø×Ñ˜q A¨¨Q°©]Ñ):¸aÀ!¹eÐÔDØ�J‰J�v˜y¨)°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–|
r”t        |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|«      }$|$�rìt‹        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ž                  rÞt‡        |j                   d&|«      }+|+rÅt£        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   iÒ9  ú<ú>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°×1EÑ1E×1LÑ1LÈdÔSà˜
Ò" n¸Ó&>Ø×#Ñ#×-Ñ-Ð9Ð9Ð9Ø×(Ñ(×2Ñ2ˆ	Ü×$Ñ$Ø× Ñ ×'Ñ'¬¨Y¼Ñ-AÓ)Bô	Dà˜JÒ&Ü×,Ñ,Ø×$Ñ$×+Ñ+¬U×-FÑ-FõHð  Ò'Ø ‘à% aÑ(¨HÒ4Ð4Ð4Ø)¨!Ñ,�ð ×+Ñ+×0Ñ0ˆHØ× Ñ  §¡Ð/DÑ!EÔFÜ 1ØÐHœs 7§=¡=Ð1FÑ#GÓHÐHÐIØ—M‘M &Ñ)ó!+�ñ !Ø'¨¨Ð7�Hà× Ñ ×)Ñ)¨(°XÑ*=Ô>à×,Ñ,×;Ñ;Ó=Ñ€J�à˜ÒÙÜ-Ø×$Ñ$×)Ñ)¨/¬C°«M¨>Ð:Ø—‘˜fÑ%ó'ˆMð Ð$ØØ×+Ñ+×0Ñ0°°-Ð@ˆHØ× Ñ ×)Ñ)¨(°XÑ*=Ô>Ø '× 4Ñ 4× CÑ CÓ EÑˆJ˜ò ð ×$Ñ$×)Ñ)×0Ñ0Ó2€IØ€F×Ñ˜FŸM™MÑ*ØÐØ€FØ€IØ€FØ
�/‰/˜!Ñ
€CØ
”—‘‹/à—X‘Xˆ
Ø�h‰hˆØ!×(Ñ(ˆØ"×)Ñ)ˆØ'×2Ñ2ÐØ—‘×'Ñ'ˆØ×,Ñ,ˆô 9>Ð>NÓ8OÖP°1˜& 8¨A¡;Ó.ÐPˆÐPØ�?‰?×#Ñ#×)Ñ)¨AÒ-Ø×!Ñ! ! V¨j¯o©o×.DÑ.DÑ%DÕEà×!Ñ! &¨:¯?©?×+AÑ+AÑ"AÔBà—_‘_×-Ñ-×2Ñ2ˆ
ØÐ,Ò,à",ÐØ$Ÿo™o¨jÓ9‰OˆD�)ô ×"Ñ"Ó$ uÒ,Ø#ŸM™M¨+Ñ6�	ñ Ø× Ñ  Ô(ØˆFØ× Ñ  §¡°·²©AÀ)ÔLØ�#‰ˆÜÐ'Ó(ó d	CˆAØ$ Q™ˆJØ!×'Ñ'ˆHØ×'Ñ'×-Ñ-ˆEð œ5×2Ñ2Ò2Ø˜A˜u˜f yÑ0Ð1°Ð3Ñ3�Øð œ%×8Ñ8Ò8Ø$¤u×'EÑ'EÑE�	Ü—‘ðÜ˜I›Ð' u¨Y°s¨O¸1ð>ô?ð  ×3Ñ3°IÓ>�Ü(-¨e°d©l¼ZÑ.GÈ)Ñ.SÓ(T�—‘˜HÑ%Ø˜DŸK™KÑ'ð &*§[¡[°Ñ%:�D—K‘K ‘Nð ˜tŸ™Ñ.Ü"¤F¨>¸!¸A¸a¹CÐ+@Ó$AÐB�
Ø,5°jÑ,A×,HÑ,HÓ,J�—‘ Ñ)ð  ×(Ñ(×1Ñ1°IÑ=ˆFØ×&Ñ&×/Ñ/°$Ñ6ˆDÙØ˜"‘: Ò$Ø# C R˜[‘Fà˜c‘M�FØ× Ñ  Ô(Ø×$Ñ$ d UÔ+Ø�ÙØ!' ˜y�FØ°·²˜A˜h s˜^¨1Ñ-ÀAÀhÈsÀ^ÐSTÐBUÑU�Ø× Ñ  Ô(Ø×$Ñ$ QÔ'Ø‘áØ  6 ' ¨!˜nÑ,�FØ¨t¯{ª{˜X c™NÀ8ÈCÀ.ÑQ�ð ˜4Ÿ;™;Ñ&Ø $§¡¨HÑ 5‘ä×2Ñ2Ø ¨&¯/©/¸6×;NÑ;NôPä8=Ø×'Ñ'×-Ñ-°Ñ4´zÑAÀIÑMó9Oð O� §¡¨HÑ 5ð $ fÑ,¨u°t©|¼jÑ/HÈ9Ñ/TÑTˆGÙØ˜Aœc '›l˜^¨1Ð-Ñ-�ð �x‹xÜ-¨d¯l©l¸EÀ8ÓL�Úô '×1Ñ1°(Ó;�DØ—x‘x “~¨5°°
Ð);Ò;Ü*×2Ñ2°6Ó:˜Ü%)¨$£Zò /˜EØ ŸK™K¨Ô.Ø ŸK™K¨Õ.ð/ð Ÿ™ DÔ)Ü#×.Ñ.Ø  %°¸6À(ÀÐ9LÐ0MõOà ¨¯©Ñ3Ø37¸¿	¹	°{À!ÀDÇIÁIÀ;Ð1O˜Ÿ™ IÑ.Ü$ T¨4°°tÓ<�EØ�I�A˜Ø—M‘M 5¨$°°1°iÀÐ"CÕDØ—’Ü-¨d¯l©l¸EÀ8ÓL�ÙÜ#(§:¡:¬g°hÓ.?Ó#@�LØ"&§)¡) ¨X¨JÐ7�HÜ'¨°hÀÓI�EØ%¨Ñ,�AØ$×*Ñ*¨\×-@Ñ-@Ñ@À1ÑD�AÜ×6Ñ6Ø" H¨f¯o©oØ×+Ñ+ô-ð  ×,Ñ,×.Ñ.Ð.�AØœJ™¨Ñ2°YÑ>�AØ—M‘M 5¨$°°1°iÀÐ"CÔDà˜-¨&Ñ0°7Ñ:¸dÑBÑBŠIðId	CðN �"‰:˜ÒØ˜C˜R�[‰Fà�c‰MˆFðW ”—‘Œ/ð\ ×Ñ�VÔà€MùòK 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Ñ9¸5À(õ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   