o
    h	                     @  sn   d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ej
ddG d	d
 d
Zdd ZejdddZdS )z"
Low-level text helper utilities.
    )annotationsN   )_api)FT2FontKerning	LoadFlagsT)frozenc                   @  s6   e Zd ZU ded< ded< ded< ded< ded	< d
S )
LayoutItemr   	ft_objectstrcharint	glyph_idxfloatx	prev_kernN)__name__
__module____qualname____annotations__ r   r   l/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/_text_helpers.pyr	      s   
 r	   c              	   C  s  t d|  dt| ddd d| d d|   kr"dkr&n nd	nd
|   kr0dkr4n ndnd|   kr>dkrBn ndnd|   krLdkrPn ndnqd|   krZdkr^n ndncd|   krhdkrln ndnUd|   krvdkrzn ndnGd|   krdkrn ndn9d|   krd krn nd!n+d"|   krd#krn nd$nd%|   krd&krn nd'nd(|   krd)krn nd*nd }|rt d+| d, d S d S )-NzGlyph z (asciinamereplacez) missing from font(s) .i  i  Hebrewi   i  Arabici 	  i	  
Devanagarii	  i	  Bengalii 
  i
  Gurmukhii
  i
  Gujaratii   i  Oriyai  i  Tamili   i  Telugui  i  Kannadai   i  	Malayalami  i  Sinhalaz&Matplotlib currently does not support z
 natively.)r   warn_externalchrencodedecode)	codepoint	fontnamesblockr   r   r   warn_on_missing_glyph   s4   
r.   )	kern_modec                c  s    d}d}| | }|}| D ]<}|||}|t|}|dur*||||d nd}	||	7 }|j|tjd}
t|||||	V  ||
j	d 7 }|}qdS )a  
    Render *string* with *font*.

    For each character in *string*, yield a LayoutItem instance. When such an instance
    is yielded, the font's glyph is set to the corresponding character.

    Parameters
    ----------
    string : str
        The string to be rendered.
    font : FT2Font
        The font.
    kern_mode : Kerning
        A FreeType kerning mode.

    Yields
    ------
    LayoutItem
    r   N@   g        )flagsi   )
_get_fontmapgetget_char_indexordget_kerning
load_glyphr   
NO_HINTINGr	   linearHoriAdvance)stringfontr/   r   prev_glyph_idxchar_to_font	base_fontr   r   kernglyphr   r   r   layout.   s$   
rA   )__doc__
__future__r   dataclasses r   ft2fontr   r   r   	dataclassr	   r.   DEFAULTrA   r   r   r   r   <module>   s    
