U
    &^                     @   s   d dl Z ddlmZmZmZ ddlmZ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 )    N   )Image	ImageFileImagePalette)i8o8s$   "([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)c                 C   s   | d d dkS )N	   s	   /* XPM */ )prefixr	   r	   6/tmp/pip-install-a1j0c_p1/Pillow/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td| j }|s.tdt|}|rq@qt|dt|df| _	t|d}t|d}|dks|dkrt
d	d
gd }t|D ]}| j }|dd  dkr|d d }n|dd  dkr|d d }t|d }|dd  }tdt|dD ]}|| dkr||d  }|dkrN|| jd< n^|dd dkrt|dd  d}t|d? d@ t|d? d@  t|d@  ||< nt
d	 qqt
d	qd| _tdd|| _dd| j | j dfg| _d S )Nr   znot an XPM filez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ranger   splitleninfor   moder   r   joinpalettesizetellZtile)	selfsmZpalZbppr,   icZrgbr	   r	   r   _open(   sJ    




*
zXpmImageFile._openc                 C   sL   | j \}}d g| }t|D ]$}| j d|d  |||< qd|S )Nr   r   )r-   r&   r   r   ljustr+   )r/   bytesZxsizeZysizer0   r2   r	   r	   r   	load_readk   s
    

"zXpmImageFile.load_readN)__name__
__module____qualname__formatformat_descriptionr4   r7   r	   r	   r	   r   r   #   s   Cr   z.xpmz	image/xpm)re r   r   r   _binaryr   r   compiler    r   r   Zregister_openr;   Zregister_extensionZregister_mimer	   r	   r	   r   <module>   s   
[