î
hÐR\O3  ã               @   sO  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 d l Z d 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 „  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)Úi8Úi16leÚi32leÚo8Úo16leÚo32leé    Nz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   úG/var/www/dbchiro/venv/lib/python3.4/site-packages/PIL/BmpImagePlugin.pyÚ_accept1   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  i  } t | d ƒ ƒ | d <dJ | 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 dK k r’| d d k r¦t | d ƒ d k | d <| d rKd n dL | d <t | d d … ƒ | d <| d st | d d … ƒ n dM 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	 dN k rt d. |  j ƒ ‚ n  t j | d dO ƒ \ |  _ }	 |  j d/ k r^t d0 | d ƒ ‚ n  | d |  j k rªi dP dQ dR dS g d 6dT g d 6dU dV g d 6}
 i d8 dX 6d9 dZ 6d: d\ 6d: d^ 6d; d` 6d< db 6d= dd 6} | d |
 k r›| d d k rI| d+ |
 | d k rI| | d | d+ f }	 |	 de k r:d> n |  j |  _ q§| d df 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dg \ }	 |  _ qn t dA | d ƒ ‚ |  j dB k rTd | d  k  o,dC k n sHt dD | d  ƒ ‚ qT| d } | | | d  ƒ } dE } | d  d k r‚dh n t t | d  ƒ ƒ } xU t | ƒ D]G \ } } | | | | | d … } | t | ƒ d k r¥dF } q¥q¥W| r!| d  d k rdG n dH |  _ |  j }	 qTdB |  _ t j | d k rBd8 n d; | ƒ |  _ n  | d |  j d <dI d d | d | d	 f | p‘|  j  j ƒ  |	 | d | d d- d ?di @| d f f g |  _ d/ S)jz" 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>d   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   ZXBGRÚ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/   rL   l        l        )NN)r?   r@   r1   r   )r?   r@   r1   rA   )r   r   r   r   )rA   r?   r@   r   )r?   r@   r1   )rB   rC   r>   )rD   rE   r>   ©r?   r@   r1   r   )r   rM   ©rA   r?   r@   r   )r   rN   ©r?   r@   r1   rA   )r   rO   ©r   r   r   r   )r   rP   ©r?   r@   r1   )r   rQ   ©rB   rC   r>   )r   rR   ©rD   rE   r>   )r   rS   )rF   )r   r   )rF   rG   )r   r1   éüÿÿÿ)ÚfpÚreadÚseekÚi32r   Ú
_safe_readÚi16r   r   ÚtupleÚmapÚinfor"   ÚlenÚ	enumerateÚIOErrorÚsizeÚgetÚBIT2MODEÚmodeÚlistÚranger   r   rK   ÚpaletteÚtellZtile)ÚselfÚheaderÚoffsetrV   rW   Ú	file_infoZheader_dataÚidxÚmaskZraw_modeZ	SUPPORTEDZ
MASK_MODESÚpaddingrg   Z	greyscaleÚindicesÚindÚvalZrgbr   r   r   Ú_bitmapB   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 filer2   rk   N)rU   rV   ÚSyntaxErrorrX   rs   )ri   Z	head_datark   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%   rs   rv   r   r   r   r   r   8   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)rs   )ri   r   r   r   rv   Ô   s    zDibImageFile._openN)rw   rx   ry   r|   r{   rv   r   r   r   r   r}   Ï   s   r}   rI   r   rJ   é   rF   rG   c             C   sq  y t  |  j \ } } } Wn% t k
 rA t d |  j ƒ ‚ Yn X|  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 r;| j	 |  j j d d ƒ ƒ n  t j |  | d d |  j d | |	 d f f g ƒ d  S)Nzcannot write mode %s as BMPr;   é`   c             S   s   t  |  d ƒ S)NgóÒo_¯C@)r6   )r9   r   r   r   r:   ï   s    z_save.<locals>.<lambda>r   r0   r   r!   r,   rt   r   r   s   BMs    rI   r1   rJ   r~   r   r   r   rK   )r   r   rT   )r   r1   )r   r   rL   )ÚSAVErd   ÚKeyErrorr`   Zencoderinforb   r[   r\   ra   ÚwriteÚo32Úo16r   rf   ÚimZ
getpaletter   Ú_save)r…   rU   ÚfilenameÚrawmoder*   r5   r]   r;   ZppmZstriderj   rk   ÚimageÚir   r   r   r†   ä   s8    	!yr†   z.bmpz	image/bmp)r   r   )r   r   )r   r   )úRGBr   )r‹   úBGR)r‹   zBGRX)rI   r   r   )rJ   r   r~   )r   r   r~   )rŒ   r   r   )zBGRAr   r   )Ú r   r   r   Z_binaryr   r   rZ   r   rX   r   r	   r„   r
   rƒ   r7   Ú__version__rc   r   r   r}   r€   r†   Zregister_openr|   Zregister_saveZregister_extensionZregister_mimer   r   r   r   Ú<module>   s0   .
—
6