o
    »ÙøiH  ã                   @  sî   U d dl mZ d dlZddl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d	lmZ d
ZerAd dlmZ d dlmZ dZdZdZdZdZdZdZdZdZdZdd„ dd„ dd„ dd„ gZde d< d&d"d#„Z!G d$d%„ d%ejƒZ"dS )'é    )ÚannotationsNé   )ÚFontFileÚImage)Úi8)Úi16be)Úi16le)Úi32be)Úi32leF)ÚCallable)ÚBinaryIOifcpé   é   é   é   é    é@   é€   é   c                 C  s   | d d? S )Né   é   © ©Úbitsr   r   ú\/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/PIL/PcfFontFile.pyÚ<lambda>2   s    r   c                 C  ó   | d d? d@ S )Né   r   éþÿÿÿr   r   r   r   r   r   3   ó    c                 C  r   )Né   r   éüÿÿÿr   r   r   r   r   r   4   r   c                 C  r   )Né?   r   iøÿÿÿr   r   r   r   r   r   5   r   zlist[Callable[[int], int]]ÚBYTES_PER_ROWÚsÚbytesÚoÚintÚreturnc                 C  s   | ||   d|¡… S )Nó    )Úindex)r$   r&   r   r   r   Úsz9   s   r+   c                      sZ   e Zd ZdZdZdd‡ fdd	„Zddd„Zd dd„Zd!dd„Zd"dd„Z	d#dd„Z
‡  ZS )$ÚPcfFontFilez(Font file plugin for the X11 PCF format.Únameú	iso8859-1Úfpr   Úcharset_encodingÚstrc              	     s"  || _ t| d¡ƒ}|tkrd}t|ƒ‚tƒ  ¡  t| d¡ƒ}i | _t|ƒD ] }t| d¡ƒ}t| d¡ƒt| d¡ƒt| d¡ƒf| j|< q'|| _	|  
¡ | _|  ¡ }|  |¡}	|  ¡ }
t|
ƒD ]-\}}|d urŽ|| \}}}}}}}}|df||| || |fdd||f|	| f| j|< qad S )Nr   znot a PCF filer   )r0   Úl32ÚreadÚ	PCF_MAGICÚSyntaxErrorÚsuperÚ__init__ÚtocÚranger/   Ú_load_propertiesÚinfoÚ_load_metricsÚ_load_bitmapsÚ_load_encodingÚ	enumerateÚglyph)Úselfr/   r0   ÚmagicÚmsgÚcountÚiÚtypeÚmetricsÚbitmapsÚencodingÚchÚixÚxsizeÚysizeÚleftÚrightÚwidthÚascentÚdescentÚ
attributes©Ú	__class__r   r   r7   B   sF   
0


÷

ü€ôzPcfFontFile.__init__Útagr'   r(   úDtuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]c                 C  sX   | j | \}}}| j}| |¡ t| d¡ƒ}|d@ r!tt}}ntt}}||||fS )Nr   )r8   r/   Úseekr2   r3   Úb16Úb32Úl16)rA   rV   ÚformatÚsizeÚoffsetr/   Úi16Úi32r   r   r   Ú
_getformatp   s   

zPcfFontFile._getformatúdict[bytes, bytes | int]c                   s¢   i }|   t¡\‰ }}‰ˆˆ  d¡ƒ}‡ ‡fdd„t|ƒD ƒ}|d@ r-ˆ  d|d@  tj¡ ˆ  ˆˆ  d¡ƒ¡}|D ]\}}}	|rEt||	ƒn|	}
|
|t||ƒ< q9|S )Nr   c                   s4   g | ]}ˆˆ   d ¡ƒtˆ   d¡ƒˆˆ   d ¡ƒf‘qS )r   r   )r3   r   ©Ú.0Ú_©r/   r`   r   r   Ú
<listcomp>Œ   s   4 z0PcfFontFile._load_properties.<locals>.<listcomp>r   )ra   ÚPCF_PROPERTIESr3   r9   rX   ÚioÚSEEK_CURr+   )rA   Ú
propertiesr\   r_   ÚnpropsÚpÚdataÚkr$   ÚvÚproperty_valuer   rf   r   r:   �   s   zPcfFontFile._load_propertiesú3list[tuple[int, int, int, int, int, int, int, int]]c              
   C  s^  g }|   t¡\}}}}|j}|d@ dkrct|| d¡ƒƒD ]C}t| d¡ƒd }t| d¡ƒd }	t| d¡ƒd }
t| d¡ƒd }t| d¡ƒd }|	| }|| }|||||	|
||dfƒ q|S t|| d¡ƒƒD ]@}|| d¡ƒ}|| d¡ƒ}	|| d¡ƒ}
|| d¡ƒ}|| d¡ƒ}|| d¡ƒ}|	| }|| }|||||	|
|||fƒ ql|S )Ni ÿ  r   r   r   r   r   r   )ra   ÚPCF_METRICSÚappendr9   r3   r   )rA   rG   r/   r\   r_   r`   rt   rE   rN   rO   rP   rQ   rR   rL   rM   rS   r   r   r   r<   ™   s2   õzPcfFontFile._load_metricsrG   úlist[Image.Image]c                   s  |   t¡\‰ }}‰ˆˆ  d¡ƒ}|t|ƒkrd}t|ƒ‚‡ ‡fdd„t|ƒD ƒ}‡ ‡fdd„tdƒD ƒ}|d@ }|d@ }	||	 }
| |
¡ ˆ  |
¡}t|	 }d}|rTd	}g }t|ƒD ]+}|| d d
… \}}|||d
 … \}}| t 	d	||f|||… d|||ƒ¡¡ qZ|S )Nr   zWrong number of bitmapsc                   ó   g | ]	}ˆˆ   d ¡ƒ‘qS ©r   ©r3   rc   rf   r   r   rg   Ì   ó    z-PcfFontFile._load_bitmaps.<locals>.<listcomp>c                   rv   rw   rx   rc   rf   r   r   rg   Î   ry   r   r   z1;RÚ1r   Úraw)
ra   ÚPCF_BITMAPSr3   ÚlenÚOSErrorr9   rt   r#   r   Ú	frombytes)rA   rG   r\   r_   ÚnbitmapsrC   ÚoffsetsÚbitmap_sizesÚbitorderÚpadindexÚ
bitmapsizern   ÚpadÚmoderH   rE   rL   rM   ÚbÚer   rf   r   r=   ¾   s0   

"ÿzPcfFontFile._load_bitmapsúlist[int | None]c              	     sô   |   t¡\‰ }‰}ˆˆ  d¡ƒˆˆ  d¡ƒ}}ˆˆ  d¡ƒˆˆ  d¡ƒ}}ˆˆ  d¡ƒ || d || d  }d gtd|ƒ }‡ ‡fdd„t|ƒD ƒ}	t|t|ƒƒD ]"}
z|	tt|
gƒ | j	¡ƒ }|dkrm|||
< W qU t
yw   Y qUw |S )Nr   r   r   c                   rv   )r   rx   rc   ©r/   r_   r   r   rg   õ   ry   z.PcfFontFile._load_encoding.<locals>.<listcomp>iÿÿ  )ra   ÚPCF_BDF_ENCODINGSr3   Úminr9   r}   ÚordÚ	bytearrayÚdecoder0   ÚUnicodeDecodeError)rA   r\   r`   Ú	first_colÚlast_colÚ	first_rowÚlast_rowÚ	nencodingrI   Úencoding_offsetsrE   Úencoding_offsetr   r‹   r   r>   è   s&   ÿ€þzPcfFontFile._load_encoding)r.   )r/   r   r0   r1   )rV   r'   r(   rW   )r(   rb   )r(   rr   )rG   rr   r(   ru   )r(   rŠ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   r7   ra   r:   r<   r=   r>   Ú__classcell__r   r   rT   r   r,   =   s    
.


%*r,   )r$   r%   r&   r'   r(   r%   )#Ú
__future__r   ri   Ú r   r   Ú_binaryr   r   rY   r   r[   r	   rZ   r
   r2   ÚTYPE_CHECKINGÚcollections.abcr   Útypingr   r4   rh   ÚPCF_ACCELERATORSrs   r|   ÚPCF_INK_METRICSrŒ   ÚPCF_SWIDTHSÚPCF_GLYPH_NAMESÚPCF_BDF_ACCELERATORSr#   Ú__annotations__r+   r,   r   r   r   r   Ú<module>   s:   ü
