3

Z                 @   s   d dl Z ddlmZmZmZ ddlmZmZ dZe j	dZ
dd ZG d	d
 d
ejZejejee ejejd ejejd dS )    N   )Image	ImageFileImagePalette)i8o8z0.2s$   "([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)c             C   s   | d d dkS )N	   s	   /* XPM */ )prefixr	   r	   4/usr/lib/python3/dist-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jdstdx*| jj }|s0tdtj|}|rP qW t|jdt|jdf| _	t|jd}t|jd}|dks|dkrt
d	d
gd }x(t|D ]}| jj }|dd  dkr|d d }n|dd  dk r|d d }t|d }|dd j }xtdt|dD ]}|| dkr&||d  }|dkrZ|| jd< n^|dd dkrt|dd  d}t|d? d@ t|d? d@  t|d@  ||< nt
d	P q&W t
d	qW d| _tjddj|| _dd| j	 | 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    rawr   r   r   )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tellZtile)	selfsmZpalZbppr,   icZrgbr	   r	   r   _open(   sL    




zXpmImageFile._openc             C   sP   | j \}}d g| }x0t|D ]$}| jj d|d  j|||< qW dj|S )Nr   r   )r$   r&   r   r   ljustr+   )r.   bytesZxsizeZysizer/   r1   r	   r	   r   	load_readk   s
    

$zXpmImageFile.load_readN)__name__
__module____qualname__formatZformat_descriptionr3   r6   r	   r	   r	   r   r   #   s   Cr   z.xpmz	image/xpm)re r   r   r   Z_binaryr   r   __version__compiler    r   r   Zregister_openr:   Zregister_extensionZregister_mimer	   r	   r	   r   <module>   s   
Z