
hR\                 @   sl  d  d l  m Z m Z d  d l m Z m Z m Z m Z	 d d l
 Z
 d d l Z d d l Z d Z d d   Z i d d 6d d 6d
 d  6d
 d! 6d d" 6d d# 6d d$ 6d d% 6Z Gd d   d e j  Z d d   Z Gd d   d e j  Z e j d e  e j e j e e  e j e j e  e j e j d  e j e j d  e j e j d d d d g  d S)&   )Image	ImageFile)i8o8i16beo16be    Nz0.3c             C   s"   t  |   d k o! t |   d k S)N   i  )leni16)prefix r   G/var/www/dbchiro/venv/lib/python3.4/site-packages/PIL/SgiImagePlugin.py_accept#   s    r   Lr	   zL;16BRGB   zRGB;16BRGBA   zRGBA;16Bc               @   s(   e  Z d  Z d Z d Z d d   Z d S)SgiImageFileZSGIzSGI Image File Formatc             C   s  d } |  j  j |  } t |  d k r9 t d   n  t | d  } t | d  } t | d d    } t | d d    } t | d d    } t | d	 d    } | | | f }	 d
 }
 y t |	 }
 Wn t k
 r Yn X|
 d
 k rt d   n  | | f |  _ |
 j d  d |  _	 d } | d k r| | | } | d k rd d |  j | |  j	 d | f f g |  _
 qg  |  _
 | } x |  j	 D]< } |  j
 j d d |  j | | d | f f  | | 7} qWn7 | d k rd d |  j | |
 | | f f g |  _
 n  d  S)Ni   i  zNot an SGI image filer	   r   r         
    zUnsupported SGI image mode;r   r   SGI16rawZsgi_rle)r   r   )r   r   )r   r   )fpreadr   
ValueErrorr   MODESKeyErrorsizesplitmodeZtileappend)selfZheadlenscompressionbpcZ	dimensionxsizeysizezsizeZlayoutrawmodeorientationpagesizeoffsetZlayerr   r   r   _open:   sH    !		zSgiImageFile._openN)__name__
__module____qualname__formatZformat_descriptionr2   r   r   r   r   r   5   s   r   c             C   sH  |  j  d k r< |  j  d k r< |  j  d k r< t d   n  |  j } | j d d  } | d k rr t d   n  d } d	 } d
 } d } |  j \ }	 }
 |  j  d k r |
 d k r d } n |  j  d k r d } n  t |  j   } | d k s | d k rd } n  t |  j    | k rBt d | t |  j    f   n  d
 } d } t j j	 t j j
 |   d
 } t t k	 r| j d d  } n  d
 } | j t j d |   | j t |   | j t |   | j t j d |   | j t j d |	   | j t j d |
   | j t j d |   | j t j d |   | j t j d |   | j t j d d   | j t j d |   | j t j d d   | j t j d |   | j t j d d   d } | d k rd } n  x3 |  j   D]% } | j | j d | d
 |   qW| j   d  S)Nr   r   r   zUnsupported SGI image moder*   r   r	   z%Unsupported number of bytes per pixeli  r   r   z0incorrect number of bands in SGI write: %s vs %s   asciiignorez>hz>Hz>lZ4s    Z79sr(   Z404szL;16Br   )r   r	   r   )r%   r    Zencoderinfogetr#   r
   Zgetbandsospathsplitextbasenamestrbytesencodewritestructpackr   r$   tobytesclose)imr   filenameinfor*   r/   ZmagicNumberZrleZdimxyzZpinminZpinmaxZimgNameZcolormapr.   channelr   r   r   _save|   s^    -				"	#rO   c               @   s"   e  Z d  Z d Z d d   Z d S)SGI16DecoderTc       	      C   s   |  j  \ } } } |  j j |  j j } t |  j  } |  j j d  xw t |  D]i } t	 j
 d |  j j |  j j f  } | j |  j j d |  d d | |  |  j j | j |  qT Wd	 S)
Ni   r   r	   r   zL;16Br   r   r   )r   r   )argsstater+   r,   r
   r%   fdseekranger   new	frombytesr   rH   Zputband)	r'   bufferr.   Zstrider/   r0   r-   ZbandrN   r   r   r   decode   s    $zSGI16Decoder.decodeN)r3   r4   r5   Z	_pulls_fdrY   r   r   r   r   rP      s   rP   r   z	image/sgiz	image/rgbz.bwz.rgbz.rgbaz.sgi)r   r   r   )r   r	   r   )r	   r   r   )r	   r	   r   )r   r   r   )r	   r   r   )r   r   r   )r	   r   r   )r   r   r   Z_binaryr   r   r   r   r   Zo16rD   r<   sys__version__r   r!   r   rO   Z	PyDecoderrP   Zregister_decoderZregister_openr6   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   <module>   s0   "
GI