ó
È4ec           @   sä   d  d l  Z  d  d l Z d d l m Z m Z d d l m Z m Z m	 Z
 d Z d „  Z d e j f d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ e j d e ƒ d „  Z e j e j e e ƒ e j e j e ƒ e j e j d ƒ d S(   iÿÿÿÿNi   (   t   Imaget	   ImageFile(   t   i8t   i16let   o16les   0.1c         C   s   |  d  d k S(   Ni   t   DanMt   LinS(   R   R   (    (   t   prefix(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyt   _accept)   s    t   MspImageFilec           B   s   e  Z d  Z d Z d „  Z RS(   t   MSPs   Windows Paintc         C   s  |  j  j d ƒ } | d  d k r1 t d ƒ ‚ n  d } x5 t d d d ƒ D]! } | t | | | d !ƒ A} qJ W| d k rŠ t d ƒ ‚ n  d	 |  _ t | d ƒ t | d
 ƒ f |  _ | d  d k rè d d |  j d d f g |  _ n d d |  j d d  f g |  _ d  S(   Ni    i   R   R   s   not an MSP filei    i   s   bad MSP checksumt   1i   t   rawi   R
   (   R   R   (   i    i    (   R   i    i   (   i    i    (
   t   fpt   readt   SyntaxErrort   ranget   i16t   modet   _sizet   sizet   tilet   None(   t   selft   st   checksumt   i(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyt   _open7   s    	#"(   t   __name__t
   __module__t   formatt   format_descriptionR   (    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyR	   2   s   t
   MspDecoderc           B   s   e  Z e Z d  „  Z RS(   c         C   sð  t  j ƒ  } t d |  j j d d ƒ } yF |  j j d ƒ t j d |  j j	 |  j j
 |  j j	 d ƒ ƒ } Wn  t j k
 r’ t d ƒ ‚ n Xx@t | ƒ D]2\ } } yÿ | d k rÎ | j | ƒ w  n  |  j j
 | ƒ } t | ƒ | k r
t d	 | | f ƒ ‚ n  d } x— | | k  r©t | | ƒ }	 | d
 7} |	 d k r~t j d | | ƒ \ }
 } | j | |
 ƒ | d 7} q|	 }
 | j | | | |
 !ƒ | |
 7} qWWq  t j k
 rÑt d | ƒ ‚ q  Xq  W|  j | j ƒ  d ƒ d S(   Niÿ   i   i   i    s   <%dHi   s   Truncated MSP file in row mapi    s/   Truncated MSP file, expected %d bytes on row %si   t   Bcs   Corrupted MSP file in row %dR   (   iÿ   (   R   i    i   (   i    i    (   t   iot   BytesIOt	   bytearrayt   statet   xsizet   fdt   seekt   structt   unpack_fromt   ysizeR   t   errort   IOErrort	   enumeratet   writet   lenR   t
   set_as_rawt   getvalue(   R   t   buffert   imgt
   blank_linet   rowmapt   xt   rowlent   rowt   idxt   runtypet   runcountt   runval(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyt   decodes   s@    0
(   R   R   t   Truet	   _pulls_fdR>   (    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyR    N   s   #R
   c      	   C   s%  |  j  d k r% t d |  j  ƒ ‚ n  d g d } t d ƒ t d ƒ | d <| d <|  j \ | d <| d	 <d \ | d
 <| d <d \ | d <| d <|  j \ | d <| d <d } x | D] } | | A} q¶ W| | d <x! | D] } | j t | ƒ ƒ qÛ Wt j |  | d d |  j d d f g ƒ d  S(   NR   s   cannot write mode %s as MSPi    i   t   Dat   nMi   i   i   i   i   i   i   i   i	   i   R   i    (   i   i   (   i   i   (   i    i    (   R   i    i   (   R   R-   R   R   R/   t   o16R   t   _save(   t   imR   t   filenamet   headerR   t   h(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyRD   ¥   s    !
s   .msp(   R"   R)   t    R    R   t   _binaryR   R   R   R   RC   t   __version__R   R	   t	   PyDecoderR    t   register_decoderRD   t   register_openR   t   register_savet   register_extension(    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/MspImagePlugin.pyt   <module>   s   		P	