o
    Ô¦/f˜  ã                   @  sˆ   d dl mZ d dlZddlmZmZmZ ddlmZ e 	d¡Z
dd„ ZG d	d
„ d
ejƒZe ejee¡ e ejd¡ e ejd¡ dS )é    )ÚannotationsNé   )ÚImageÚ	ImageFileÚImagePalette)Úo8s$   "([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)c                 C  s   | d d… dkS )Né	   s	   /* XPM */© )Úprefixr	   r	   ú2lib/python3.10/site-packages/PIL/XpmImagePlugin.pyÚ_accept   s   r   c                   @  s$   e Zd ZdZdZdd„ Zdd„ ZdS )ÚXpmImageFileZXPMzX11 Pixel Mapc                 C  s   t | j d¡ƒsd}t|ƒ‚	 | j ¡ }|sd}t|ƒ‚t |¡}|r$nqt| d¡ƒt| d¡ƒf| _	t| d¡ƒ}t| d¡ƒ}|d	ksJ|dkrPd
}t
|ƒ‚dgd	 }t|ƒD ]‰}| j ¡ }|dd … dkro|d d… }n|dd … dv r}|d d… }|d }|dd…  ¡ }tdt|ƒdƒD ]J}	||	 dkrÛ||	d  }
|
dkr©|| jd< n0|
d d… dkrÓt|
dd … dƒ}
t|
d? d@ ƒt|
d? d@ ƒ t|
d@ ƒ ||< nd
}t
|ƒ‚ nq‘d
}t
|ƒ‚qYd| _t dd |¡¡| _dd| j | j ¡ dfg| _d S )Nr   znot an XPM fileTzbroken XPM filer   é   é   é   é   zcannot read this XPM files      éþÿÿÿs   
éÿÿÿÿr   ó   cs   NoneZtransparencyó   #é   éÿ   é   ÚPZRGBó    Úraw)r   r   )r   r   r   )r   ÚfpÚreadÚSyntaxErrorÚreadlineÚxpm_headÚmatchÚintÚgroupÚ_sizeÚ
ValueErrorÚrangeÚsplitÚlenÚinfor   Ú_moder   r   ÚjoinÚpaletteÚsizeÚtellZtile)ÚselfÚmsgÚsÚmZpalZbppr,   Ú_ÚcÚiZrgbr	   r	   r   Ú_open'   s\   

ù	

*ÿñû zXpmImageFile._openc                 C  sL   | j \}}d g| }t|ƒD ]}| j ¡ d|d …  |¡||< qd |¡S )Nr   r   )r-   r&   r   r   Úljustr+   )r/   Z
read_bytesZxsizeZysizer1   r5   r	   r	   r   Ú	load_readj   s
   

"
zXpmImageFile.load_readN)Ú__name__Ú
__module__Ú__qualname__ÚformatZformat_descriptionr6   r8   r	   r	   r	   r   r   #   s
    Cr   z.xpmz	image/xpm)Z
__future__r   ÚreÚ r   r   r   Z_binaryr   Úcompiler    r   r   Zregister_openr<   Zregister_extensionZregister_mimer	   r	   r	   r   Ú<module>   s   
Y