o
    ë6Wj£  ã                   @  sT   d dl mZ d dlZd dlmZ ddlmZmZmZ dZ	ddd„Z
G dd„ dƒZdS )é    )ÚannotationsN)ÚBinaryIOé   )ÚImageÚ	ImageFontÚ_binaryi   Úfpr   Úvaluesú7tuple[int, int, int, int, int, int, int, int, int, int]ÚreturnÚNonec                 C  s.   |D ]}|dk r|d7 }|   t |¡¡ qdS )z0Write network order (big-endian) 16-bit sequencer   é   N)Úwriter   Úo16be)r   r	   Úv© r   ú[/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PIL/FontFile.pyÚputi16   s
   ýr   c                   @  sZ   e Zd ZU dZdZded< ddd„Zddd„Zddd„Zddd„Z	ddd„Z
ddd„ZdS )ÚFontFilez)Base class for raster font file handlers.NzImage.Image | NoneÚbitmapr   r   c                 C  s   i | _ d gd | _d S )Né   )ÚinfoÚglyph)Úselfr   r   r   Ú__init__)   s   	øzFontFile.__init__ÚixÚintú`tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int], Image.Image] | Nonec                 C  s
   | j | S )N)r   )r   r   r   r   r   Ú__getitem__5   s   
	zFontFile.__getitem__c                 C  s¤  | j rdS d } }}d}| jD ]4}|rD|\}}}}	t||d |d  ƒ}||d |d  7 }|tkr?|d7 }|d |d  }t||ƒ}q|}
|| }|
dkrU|dkrUdS || _t |
|f¡ t d|
|f¡| _ dgd | _d }}t	dƒD ]Y}| | }|rÏ|\}}}}	|d |d  }||}}|| }|tkr§d|| }}||}}|}|d | |d | |d | |d | f}| j  
|	 |¡|¡ |||f| j|< qvdS )zCreate metrics and bitmapNr   r   é   é   Ú1r   )r   r   ÚmaxÚWIDTHÚysizer   Ú_decompression_bomb_checkÚnewÚmetricsÚrangeÚpasteÚcrop)r   ÚhÚwÚmaxwidthÚlinesr   ÚdÚdstÚsrcÚimÚxsizer$   ÚxÚyÚiÚxxÚx0Úy0Úsr   r   r   Úcompile@   sP   

€ý

,€ózFontFile.compileÚbytesc                 C  s€   g }t dƒD ]}| j| }|r| |d |d  |d  ¡ q| d¡ qtƒ }|D ]}|dk r4|d7 }|t |¡7 }q*t|ƒS )Nr   r   r   r    )
r   r   r   r   r   r   r   r   r   r   r   )r(   r'   ÚextendÚ	bytearrayr   r   r<   )r   r	   r6   ÚmÚdatar   r   r   r   Ú_encode_metricsr   s   
 zFontFile._encode_metricsÚfilenameÚstrc                 C  s´   |   ¡  | jsd}t|ƒ‚| j tj |¡d d d¡ ttj |¡d d dƒ�'}| d¡ | d| j	› d	� 
d
¡¡ | d¡ | |  ¡ ¡ W d  ƒ dS 1 sSw   Y  dS )z	Save fontúNo bitmap createdr   z.pbmÚPNGz.pilÚwbs   PILfont
z;;;;;;z;
Úasciis   DATA
N)r;   r   Ú
ValueErrorÚsaveÚosÚpathÚsplitextÚopenr   r$   ÚencoderA   )r   rB   Úmsgr   r   r   r   rI   ‚   s   

"üzFontFile.saveúImageFont.ImageFontc                 C  s8   |   ¡  | jsd}t|ƒ‚t ¡ }| | j|  ¡ ¡ |S )zConvert to ImageFontrD   )r;   r   rH   r   Ú_loadrA   )r   rO   Ú	imagefontr   r   r   Úto_imagefont”   s   zFontFile.to_imagefont)r   r   )r   r   r   r   )r   r<   )rB   rC   r   r   )r   rP   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r;   rA   rI   rS   r   r   r   r   r   $   s   
 



2
r   )r   r   r	   r
   r   r   )Ú
__future__r   rJ   Útypingr   Ú r   r   r   r#   r   r   r   r   r   r   Ú<module>   s   

