ó
Č4ec           @   sĄ  d  d l  m Z m Z m Z d  d l m Z m Z m Z	 m
 Z
 m Z m Z d Z i d# d  6d$ d 6d% d 6d& d 6d' d 6d( d 6Z d   Z d   Z d e j f d     YZ d e f d     YZ i d) d 6d* d 6d+ d 6d, d	 6d- d 6Z d   Z e d  Z 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 e e  e j e j e  e j e j d!  e j e j d   d" S(.   i   (   t   Imaget	   ImageFilet   ImagePalette(   t   i8t   i16let   i32let   o8t   o16let   o32les   0.7t   Ps   P;1s   P;4i   i   t   RGBs   BGR;15i   t   BGRi   t   BGRXi    c         C   s   |  d  d k S(   Ni   t   BM(    (   t   prefix(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   _accept1   s    c         C   s   t  |  d   d k S(   Ni   i   i(   i@   il   i|   (   i   i(   i@   il   i|   (   t   i32(   R   (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   _dib_accept5   s    t   BmpImageFilec           B   s   e  Z d  Z d Z d Z i d d 6d d 6d d 6d	 d
 6d d 6d d 6Z x' e j   D] \ Z Z e e	   e <qU Wd d d  Z
 d   Z RS(   s2    Image plugin for the Windows Bitmap format (BMP) s   Windows Bitmapt   BMPi    t   RAWi   t   RLE8i   t   RLE4i   t	   BITFIELDSi   t   JPEGi   t   PNGc      	   C   sť  |  j  j |  j  j } } | r, | |  n  i  } t | d   | d <d | d <t j |  j  | d d  } | d d k rő t | d d ! | d <t | d d ! | d	 <t | d d
 ! | d <t | d
 d ! | d <|  j | d <d | d <nl| d dI k rMt | d  d k | d <| d r/d n d | d <t | d d ! | d <| d smt | d d ! n dJ t | d d ! | d	 <t | d d ! | d <t | d d ! | d <t | d d ! | d <t | d d ! | d <t | d d ! t | d d ! f | d  <t | d d ! | d! <d | d <t	 d"   | d  D  |  j
 d# <| d |  j k rat |  d$ k rČx t d% d& d' d( g  D]3 \ } } t | d) | d d | d ! | | <qWn: d | d( <x- d% d& d' g D] } t | d   | | <qâW| d% | d& | d' f | d* <| d% | d& | d' | d( f | d+ <qan t d, | d   | d | d	 f |  _ | j d! d  r| d! n d | d >| d! <| d | d	 dK k rÔt d. |  j   n  t j | d dL  \ |  _ }	 |  j dH k rt d/ | d   n  | d |  j k ri dM dN dO dP dQ g d 6dR g d 6dS dT g d 6}
 i d7 d dU f 6d8 d dV f 6d9 d dW f 6d: d dX f 6d: d dY f 6d; d dZ f 6d< d d[ f 6d= d d\ f 6} | d |
 k r| d d k r>| d+ |
 | d k r>| | d | d+ f }	 d> |	 k r/d9 n |  j |  _ q| d d] k r| d* |
 | d k r| | d | d* f }	 qt d?   q÷t d?   nX | d |  j k ră| d d k r÷| d@ k r÷d^ \ }	 |  _ q÷n t dA | d   |  j dB k rFd | d! k  o!dC k n s=t dD | d!   qF| d } | | | d!  } t } | d! d k rwd_ n t t | d!   } xR t |  D]D \ } } | | | | | d !} | t |  d k rt } qqW| r| d! d k rţdE n dF |  _ |  j }	 qFdB |  _ t j | d k r4d7 n d; |  |  _ n  | d |  j
 d <dG d d | d | d	 f | p|  j  j   |	 | d | d d- d ?d` @| d f f g |  _ dH S(a   s"    Read relevant info about the BMP i   t   header_sizei˙˙˙˙t	   directioni   i    i   t   widtht   heighti   t   planesi   t   bitst   compressioni   t   palette_paddingi(   i@   il   i|   i   i˙   t   y_flipi   i    i
   i   i   t	   data_sizei   i   t   pixels_per_metert   colorsc         s   s#   |  ] } t  | d  d  Vq d S(   góŇo_ŻC@g      ŕ?N(   t   int(   t   .0t   x(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pys	   <genexpr>w   s    t   dpii4   t   r_maskt   g_maskt   b_maskt   a_maski$   t   rgb_maskt	   rgba_masks    Unsupported BMP header type (%d)i   s   Unsupported BMP Size: (%dx%d)s    Unsupported BMP pixel depth (%d)i  ˙ i ˙  I   ˙    i ř  iŕ  i |  iŕ  R   t   XBGRt   RGBAt   BGRAR   s   BGR;16s   BGR;15t   As    Unsupported BMP bitfields layouti   s    Unsupported BMP compression (%d)R	   i   s!   Unsupported BMP Palette size (%d)t   1t   Lt   rawN(   i(   i@   il   i|   I       I       (   NN(   i  ˙ i ˙  i˙   i    (   i  ˙ i ˙  i˙   I   ˙    (   i˙   i ˙  i  ˙ I   ˙    (   i    i    i    i    (   I   ˙    i  ˙ i ˙  i    (   i  ˙ i ˙  i˙   (   i ř  iŕ  i   (   i |  iŕ  i   (   i  ˙ i ˙  i˙   i    (   I   ˙    i  ˙ i ˙  i    (   i˙   i ˙  i  ˙ I   ˙    (   i  ˙ i ˙  i˙   I   ˙    (   i    i    i    i    (   i  ˙ i ˙  i˙   (   i ř  iŕ  i   (   i |  iŕ  i   (   i   i   (   R2   R1   (   i    i˙   iü˙˙˙(   t   fpt   readt   seekR   R   t
   _safe_readt   i16R   R   t   tuplet   infoR   t   lent	   enumeratet   IOErrort   _sizet   gett   sizet   BIT2MODEt   Nonet   modet   Truet   listt   rangeR   t   FalseR   R6   t   palettet   tellt   tile(   t   selft   headert   offsetR8   R9   t	   file_infot   header_datat   idxt   maskt   raw_modet	   SUPPORTEDt
   MASK_MODESt   paddingRK   t	   greyscalet   indicest   indt   valt   rgb(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   _bitmapH   sŢ    

.



! 
	$c         C   s[   |  j  j d  } | d d !d k r4 t d   n  t | d d ! } |  j d |  d S(	   s/    Open file, check magic number and read header i   i    i   R   s   Not a BMP filei
   RP   N(   R7   R8   t   SyntaxErrorR   R^   (   RN   t	   head_dataRP   (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   _open	  s
    (   t   __name__t
   __module__t   __doc__t   format_descriptiont   formatt   COMPRESSIONSt   itemst   kt   vt   varsR^   Ra   (    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyR   <   s   0Át   DibImageFilec           B   s   e  Z d  Z d Z d   Z RS(   t   DIBs   Windows Bitmapc         C   s   |  j    d  S(   N(   R^   (   RN   (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyRa     s    (   Rb   Rc   Rf   Re   Ra   (    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyRl     s   R4   i   R5   i   i    R2   R1   c         C   s   t  |  | | t  d  S(   N(   t   _saveRJ   (   t   imR7   t   filename(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt	   _dib_save0  s    c      	   C   sv  y t  |  j \ } } } Wn$ t k
 r@ t d |  j   n X|  j } | j d d  } t t d   |   }	 |  j d | d d d d @}
 d	 } |
 |  j d
 } | rö d | | d } | j	 d t
 | |  t
 d  t
 |   n  | j	 t
 |  t
 |  j d  t
 |  j d
  t d
  t |  t
 d  t
 |  t
 |	 d  t
 |	 d
  t
 |  t
 |   | j	 d | d	  |  j d k rŇx d D] } | j	 t |  d  qŽWnn |  j d k rx\ t d  D] } | j	 t |  d  qîWn. |  j d k r@| j	 |  j j d d   n  t j |  | d d |  j d | |
 d f f g  d  S(   Ns   cannot write mode %s as BMPR)   i`   c         S   s   t  |  d d  S(   NgóŇo_ŻC@g      ŕ?(   R&   (   R(   (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   <lambda>?  t    i    i   i   i   i(   i   i   i   R   s    R4   i˙   R5   i   R	   R
   R   R6   i˙˙˙˙(   i`   i`   iü˙˙˙(   i    i˙   (   i    i    (   t   SAVERF   t   KeyErrorR@   t   encoderinfoRB   R<   t   mapRC   t   writet   o32t   o16R   RI   Ro   t
   getpaletteR   Rn   (   Ro   R7   Rp   t   bitmap_headert   rawmodeR   R%   R=   R)   t   ppmt   strideRO   t   imageRP   t   i(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyRn   4  s4    	!,s   .bmps	   image/bmps   .dibN(   R	   s   P;1(   R	   s   P;4(   R	   R	   (   R
   s   BGR;15(   R
   R   (   R
   R   (   R4   i   i   (   R5   i   i   (   R	   i   i   (   R   i   i    (   R2   i    i    (   Rs   R    R   R   t   _binaryR   R   R;   R   R   R   R   Rz   R   Ry   t   __version__RD   R   R   R   Rl   Rt   Rq   RG   Rn   t   register_openRf   t   register_savet   register_extensiont   register_mime(    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/BmpImagePlugin.pyt   <module>   s:   .
		Ý
	=