
    MiD                        S SK r S SKJr  S SKJrJr  S SK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 rS rS\\   S\\\4   S\R                  4S jr   SS\\\4   S\R                  4S jjrg! \ a    S	r NNf = f)    N)BytesIO)ListTuple)Image	ImageDraw	ImageFont)get_font_path)render_text_as_html)sync_playwrightTFc                 V    [         R                  " S5      nUR                  SU 5      nU$ )Nz<[\w/][^>]*> )recompilesub)	html_textpattern	text_onlys      j/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/surya/debug/text.pystrip_html_tagsr      s&    jj)GB	*I    c                     [         R                  " SSS9n[        R                  " U5      nUR	                  SXS9u    pEnXV4$ )NP)r   r   )modesize)textfont)r   newr   Drawtextbbox)r   r   imdraw_widthheights          r   get_text_sizer%      sA    	&	)B>>"D--T-EAq=r   c                 B   [         R                  " XV5      n[        X5      u  pX:  d  X:  a@  US:  a:  US-
  n[         R                  " XV5      n[        X5      u  pX:  d  X:  a  US:  a  M:  [        X5      u  pUS   n
US   XI-
  S-  -   nU R                  X4USUS9  g )N      r      black)fillr   )r   truetyper%   r   )r!   r   s_bbox
bbox_widthbbox_height	font_pathbox_font_sizer   
text_widthtext_heightxys               r   render_textr6      s    i7D+D7J"k&?]UVEV%)!!);"/";
 "k&?]UVEV ,D7Jq	Aq	[.!33AIIqfdtI4r   texts
image_sizereturnc                    [        XU5      u  p2[        (       d  [        S5      e[        5        nUR                  R                  SS9nUR                  US   US   S.S9nUR                  U5        UR                  S5        UR                  S	5      nUR                  5       nUR                  5         S S S 5        [        R                  " [        W5      5      n	U	$ ! , (       d  f       N/= f)
NzMPlaywright is not installed. Please install it using `pip install playwright`T)headlessr   r(   )r#   r$   )viewporti  body)r
   has_playwrightImportErrorr   chromiumlaunchnew_pageset_contentwait_for_timeoutquery_selector
screenshotcloser   openr   )
bboxesr7   r8   html_contentpbrowserpager=   imagepil_imgs
             r   draw_text_with_playwrightrP   /   s      36*ML>[
 	
 
	a**##T#2)!}
1F   
 	&d#""6*! 
 jj(GN 
	s   BC
C+c           
         [         (       a  [        XU5      $ U Vs/ s H  n[        U5      PM     nnUc
  [        5       nUS   U-  US   U-  4n[        R
                  " SUSS9n[        R                  " U5      n	[        X5       Hh  u  pU
 Vs/ s H  n[        X-  5      PM     nnUS   US   -
  nUS   US   -
  n[        S[        [        S	U-  5      U5      5      n[        XXXU5        Mj     U$ s  snf s  snf )
Nr   r(   RGBwhite)colorr)      r'   g      ?)r>   rP   r   r	   r   r   r   r   zipintmaxminr6   )rI   r7   r8   r0   max_font_sizeres_upscaler   new_image_sizerN   r!   bboxcoordr-   r.   r/   r1   s                   r   draw_text_on_imager_   G   s
    ~(
CC/45ut_T"uE5!O	 mk1:a=;3NONIIe^7;E>>% D&(
8<=u#e)*=AY*
Qi&)+ As3tk'9#:MJKKM	
 ) L% 6 >s   C5C:)N<   r)   )r   ior   typingr   r   PILr   r   r   surya.debug.fontsr	   surya.debug.render_htmlr
   playwright.sync_apir   r>   r?   r   r%   r6   strrW   rP   r_    r   r   <module>ri      s    	   + + + 73N
5 9*/S/
[[8  c3h [[u  Ns   A6 6B B