U
    ڲg                     @  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d	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]*)bytesbool)prefixreturnc                 C  s   | d d dkS )N	   s	   /* XPM */ )r
   r   r   6/tmp/pip-unpacked-wheel-xela2va7/PIL/XpmImagePlugin.py_accept   s    r   c                   @  s2   e Zd ZdZdZddddZddd	d
dZdS )XpmImageFileZXPMzX11 Pixel MapNone)r   c                 C  s  t | jdsd}t|| j }|s6d}t|t|}|rqHqt|dt|df| _	t|d}t|d}|dks|dkrd	}t
|d
gd }t|D ]}| j }|dd  dkr|d d }n|dd  dkr|d d }|d }|dd  }tdt|dD ]}	||	 dkr"||	d  }
|
dkrV|| jd< nb|
d d dkrt|
dd  d}
t|
d? d@ t|
d? d@  t|
d@  ||< nd	}t
| qq"d	}t
|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rangesplitleninfor   _moder   r   joinpalettesizetellZtile)selfmsgsmZpalZbppr0   _ciZrgbr   r   r   _open'   sT    




*
zXpmImageFile._openr&   r   )
read_bytesr   c                   s,    j \} fddt|D }d|S )Nc                   s(   g | ] } j  d d   qS )r   )r    r#   ljust).0r9   r3   Zxsizer   r   
<listcomp>p   s     z*XpmImageFile.load_read.<locals>.<listcomp>r   )r1   r*   r/   )r3   r;   Zysizer5   r   r>   r   	load_readj   s    
zXpmImageFile.load_readN)__name__
__module____qualname__formatformat_descriptionr:   r@   r   r   r   r   r   #   s   Cr   z.xpmz	image/xpm)
__future__r   re r   r   r   _binaryr   compiler$   r   r   Zregister_openrD   Zregister_extensionZregister_mimer   r   r   r   <module>   s   
V