î
úÙ X)3  ã               @   s`  d  d l  m Z m Z m Z m Z d  d l Z d Z e j Z e j Z	 e j
 Z e j Z e j Z e j Z i d! d 6d" d 6d# d	 6d$ d 6d% d 6d& d 6Z d d „  Z Gd d „  d e j ƒ Z Gd d „  d e ƒ Z i d' d 6d( d 6d) d 6d* d
 6d+ d 6Z d  d d „ Z e j e j e e ƒ e j e j e ƒ e j e j d ƒ e j e j d  ƒ d S),é    )ÚImageÚ	ImageFileÚImagePaletteÚ_binaryNz0.7ÚPúP;1é   úP;4é   é   ÚRGBúBGR;15é   ÚBGRé   ÚBGRXé    c             C   s   |  d  d … d k S)Né   s   BM© )Úprefixr   r   úO/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/PIL/BmpImagePlugin.pyÚ_accept6   s    r   c               @   sˆ   e  Z d  Z d Z d Z d Z i d d 6d d 6d d	 6d
 d 6d d 6d d 6Z d \ Z Z Z	 Z
 Z Z d d d d „ Z d d „  Z d S)ÚBmpImageFilez2 Image plugin for the Windows Bitmap format (BMP) zWindows BitmapZBMPr   ÚRAWr   ÚRLE8r   ÚRLE4é   Ú	BITFIELDSr
   ÚJPEGé   ÚPNGc             C   sÂ  |  j  j |  j  j } } | r, | | ƒ n  t ƒ  } t | d ƒ ƒ | d <dI | 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 <n¥| d dJ k r•| d d k r©t	 | d ƒ d k | d <| d rNd n dK | d <t | d d … ƒ | d <| d s’t | d d … ƒ n dL 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
 t d! d" „  | d ƒ ƒ |  j d# <| d |  j k r’t | ƒ d$ k rx t d% d& d' d( g ƒ D]6 \ } } 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+ <q’q©n t d, | d ƒ ‚ | d | d	 f |  _ | j d  d ƒ rÜ| d  n d | d >| d  <| d | d	 dM k rt d. |  j ƒ ‚ n  t j | d dN ƒ \ |  _ }	 |  j d/ k rat d0 | d ƒ ‚ n  | d |  j k r£i dO dP dQ g d 6dR g d 6dS dT g d 6}
 i d8 dV 6d9 dX 6d9 dZ 6d: d\ 6d; d^ 6d< d` 6} | d |
 k r”| d d k rB| d+ |
 | d k rB| | d | d+ f }	 |	 da k r3d= n |  j |  _ q | d db 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ûdc \ }	 |  _ qûn t d@ | d ƒ ‚ |  j dA k rMd | d  k  o%dB k n sAt dC | d  ƒ ‚ qM| d } | | | d  ƒ } dD } | d  d k r{dd n t t | d  ƒ ƒ } xU t | ƒ D]G \ } } | | | | | d … } | t | ƒ d k rždE } qžqžW| r| d  d k rdF n dG |  _ |  j }	 qMdA |  _ t j | d k r;d8 n d: | ƒ |  _ n  | d |  j d <dH d d | d | d	 f | pŠ|  j  j ƒ  |	 | d | d d- d ?de @| d f f g |  _ d/ S)fz" Read relevant info about the BMP r
   Zheader_sizer   Z	directioné   r   r   ÚwidthÚheighté   Zplanesr   ÚbitsÚcompressionr   Zpalette_paddingé(   é@   él   é|   é   éÿ   Zy_flipr   é
   r   é   Z	data_sizer   é   Zpixels_per_meterÚcolorsc             S   s   t  t j |  d ƒ ƒ S)NgóÒo_¯C@)ÚintÚmathÚceil)Úxr   r   r   Ú<lambda>i   s    z&BmpImageFile._bitmap.<locals>.<lambda>Údpié4   Zr_maskZg_maskZb_maskZa_maské$   Zrgb_maskZ	rgba_maskz Unsupported BMP header type (%d)é   zUnsupported BMP Size: (%dx%d)Nz Unsupported BMP pixel depth (%d)é  ÿ é ÿ  ì      ~ é ø  éà  é |  éà  r   ÚBGRAr   zBGR;16zBGR;15ÚRGBAz Unsupported BMP bitfields layouté   z Unsupported BMP compression (%d)r   i   z!Unsupported BMP Palette size (%d)TFÚ1ÚLÚrawéÿÿÿÿ)r'   r(   r)   r*   rG   l        l        )NN)r:   r;   r,   r   )r:   r;   r,   r<   )r   r   r   r   )r:   r;   r,   )r=   r>   r9   )r?   r@   r9   ©r:   r;   r,   r   )r   rH   ©r:   r;   r,   r<   )r   rI   ©r   r   r   r   )r   rJ   ©r:   r;   r,   )r   rK   ©r=   r>   r9   )r   rL   ©r?   r@   r9   )r   rM   )rA   )r   r   )rA   rB   )r   r,   éüÿÿÿ)ÚfpÚreadÚseekÚdictÚi32r   Ú
_safe_readÚi16r   Úi8ÚtupleÚmapÚinfor   ÚlenÚ	enumerateÚIOErrorÚsizeÚgetÚBIT2MODEÚmodeÚlistÚrangeÚo8r   rF   ÚpaletteÚtellZtile)ÚselfÚheaderÚoffsetrP   rQ   Ú	file_infoZheader_dataÚidxÚmaskZraw_modeZ	SUPPORTEDZ
MASK_MODESÚpaddingrd   Z	greyscaleÚindicesÚindÚvalZrgbr   r   r   Ú_bitmapG   s´    	
>0
%1
/.

(!( 
,	*,zBmpImageFile._bitmapc             C   sa   |  j  j d ƒ } | d d … d k r7 t d ƒ ‚ n  t | d d … ƒ } |  j d | ƒ d S)	z/ Open file, check magic number and read header é   r   r   s   BMzNot a BMP filer-   rh   N)rO   rP   ÚSyntaxErrorrS   rp   )rf   Z	head_datarh   r   r   r   Ú_openÃ   s
    zBmpImageFile._openN)r   r   r   r   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úformat_descriptionÚformatZCOMPRESSIONSr   r   r   r   r   r    rp   rs   r   r   r   r   r   =   s   0|r   c               @   s(   e  Z d  Z d Z d Z d d „  Z d S)ÚDibImageFileZDIBzWindows Bitmapc             C   s   |  j  ƒ  d  S)N)rp   )rf   r   r   r   rs   Ø   s    zDibImageFile._openN)rt   ru   rv   ry   rx   rs   r   r   r   r   rz   Ó   s   rz   rD   r   rE   é   rA   rB   c             C   s{  y t  |  j \ } } } Wn% t k
 rA t d |  j ƒ ‚ Yn X| rL | S|  j } | j d d ƒ } t t d d „  | ƒ ƒ }	 |  j d | d d d	 d @}
 d
 } d | | d } |
 |  j d } | j	 d t
 | | ƒ t
 d ƒ t
 | ƒ ƒ | 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 rE| j	 |  j j d d ƒ ƒ n  t j |  | d d |  j d | |
 d f f g ƒ d  S)Nzcannot write mode %s as BMPr6   é`   c             S   s   t  |  d ƒ S)NgóÒo_¯C@)r1   )r4   r   r   r   r5   ö   s    z_save.<locals>.<lambda>r   r+   r   r   r'   rq   r
   r   s   BMs    rD   r,   rE   r{   r   r   r   rF   )r|   r|   rN   )r   r,   )r   r   rG   )ÚSAVEr`   ÚKeyErrorr\   Zencoderinfor^   rW   rX   r]   ÚwriteÚo32Úo16rc   rb   ÚimZ
getpaletter   Ú_save)r‚   rO   ÚfilenameÚcheckÚrawmoder%   r0   rY   r6   ZppmZstriderg   rh   ÚimageÚir   r   r   rƒ   è   s<    	!yrƒ   z.bmpz	image/bmp)r   r   )r   r	   )r   r   )úRGBr   )r‰   úBGR)r‰   zBGRX)rD   r   r   )rE   r   r{   )r   r   r{   )rŠ   r   r   )zBGRAr   r   )ZPILr   r   r   r   r2   Ú__version__rV   Zi16lerU   Zi32lerS   rc   Zo16ler   Zo32ler€   r_   r   r   rz   r}   rƒ   Zregister_openry   Zregister_saveZregister_extensionZregister_mimer   r   r   r   Ú<module>   s:   "						
–
9