o
    h                     @   s|   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 )    N   )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   Z/var/www/html/magazine_api/magazine_env/lib/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td	 | j }|stdt|}|r nqt|dt|df| _	t|d}t|d}|d	ksF|dkrJt
d
dgd	 }t|D ]}| j }|dd  dkri|d d }n|dd  dv rw|d d }|d }|dd  }tdt|dD ]H}|| dkr||d  }|dkr|| jd< n.|dd dkrt|dd  d}t|d? d@ t|d? d@  t|d@  ||< nt
d
 nqt
d
qSd| _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   #         P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smZpalZbppr,   icrgbr   r   r
   _open(   sR   



* 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_descriptionr5   r8   r   r   r   r
   r   #   s
    Cr   z.xpmz	image/xpm)re r   r   r   _binaryr   compiler    r   r   Zregister_openr<   Zregister_extensionZregister_mimer   r   r   r
   <module>   s   
[