
n+Oc        	   @   s~  d  Z  d d k Z d d k Z d d k Z d d k Z d d k Z d d  Z d d  Z d   Z d   Z	 d   Z
 d	   Z d
   Z h? d d e f d 6d d e f d 6d d e f d 6d d e f d 6d d e f d 6d d e f d 6d d e f d 6d  d! e f d" 6d d% 6d& d' e f d( 6d) d* e f d+ 6d, d- e f d. 6d/ d0 e f d1 6d2 d3 e f d4 6d5 d6 e f d7 6d8 d9 e f d: 6d d= 6d d@ 6d dC 6d dF 6d dI 6d dL 6d dO 6d dR 6d dU 6d dX 6dY dZ e f d[ 6d\ d] e f d^ 6d_ d` e f da 6db dc e f dd 6de df e f dg 6dh di e f dj 6dk dl e	 f dm 6dn do e	 f dp 6dq dr e	 f ds 6dt du e	 f dv 6dw dx e	 f dy 6dz d{ e	 f d| 6d} d~ e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d e	 f d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d e
 f d 6Z d   Z d e i f d     YZ h d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z d   Z d   Z e i d e e  e i d e  e i d d  e i d d  e i d d  e i d d  e i d d  d S(   s   0.6iNi    c         C   s$   t  |  | d  t  |  |  d >S(   Ni   i   (   t   ord(   t   ct   o(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   i16)   s    c         C   sP   t  |  | d  t  |  | d  d >t  |  | d  d >t  |  |  d >S(   Ni   i   i   i   i   i   (   R    (   R   R   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   i32,   s    c         C   s3   t  |  i i d   d } t i |  i |  d  S(   Ni   (   R   t   fpt   readt	   ImageFilet
   _safe_read(   t   selft   markert   n(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   Skip2   s    c   	      C   s  t  |  i i d   d } t i |  i |  } d | d @} | |  i | <|  i i | | f  | d j o | d  d j o t  | d  |  i d <} t	 | d	  |  i d
 <y2 t
 | d  } t  | d  t  | d  f } Wn qX| d j o | |  i d <n | |  i d <| |  i d <n | d j o" | d  d j o | |  i d <n | d j o" | d  d j o | |  i d <n | d j o% | d  d j o |  i i |  nd | d j oV | d  d j oE t  | d  |  i d <y t
 | d  } Wn qX| |  i d <n d  S(   Ni   s   APP%di   i  i   t   JFIFi   t   jfifi   t   jfif_versioni   i   i
   i   t   dpit	   jfif_unitt   jfif_densityi  t   Exif t   exifi  t   FPXR t   flashpixi   t   ICC_PROFILE i  t   Adobet   adobet   adobe_transform(   R   R   R   R   R   t   appt   applistt   appendt   infot   divmodR    t   icclist(	   R	   R
   R   t   sR   t   versionR   R   R   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   APP6   s<    "c         C   sX   t  |  i i d   d } t i |  i |  } | |  i d <|  i i d | f  d  S(   Ni   t   COM(   R   R   R   R   R   R   R   R   (   R	   R
   R   R!   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyR$   o   s    c   	      C   sQ  t  |  i i d   d } t i |  i |  } t  | d  t  | d  f |  _ t | d  |  _ |  i d j o t d |  i   n t | d  |  _	 |  i	 d j o d |  _
 nN |  i	 d j o d	 |  _
 n1 |  i	 d
 j o d |  _
 n t d |  i	   | d j o d |  i d <|  i d <n |  i o |  i i   t |  i d d  t |  i  j oA g  } x" |  i D] } | i | d  qWt i | d  } n d  } | |  i d <d  |  _ n xw t d t |  d  D]] } | | | d !} |  i i | d t | d  d t | d  d @t | d  f  qWd  S(   Ni   i   i   i    i   s   cannot handle %d-bit layersi   t   Lt   RGBi   t   CMYKs   cannot handle %d-layer imagesi  i  i  i  t   progressivet   progressioni   i   t    t   icc_profilei   i   i   (   i  i  i  i  (   R   R   R   R   R   t   sizeR    t   bitst   SyntaxErrort   layerst   modeR   R    t   sortt   lenR   t   stringt   joint   Nonet   ranget   layer(	   R	   R
   R   R!   t   profilet   pR+   t   it   t(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   SOFy   s>    #
'
  c         C   s   t  |  i i d   d } t i |  i |  } x t |  o~ t |  d j  o t d   n t | d  } | d d j o2 t i d | d d ! |  i	 | d @<| d } q4 d  Sq4 Wd  S(	   Ni   iA   s   bad quantization table markeri    i   t   bi   i   (
   R   R   R   R   R   R2   R.   R    t   arrayt   quantization(   R	   R
   R   R!   t   v(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   DQT   s    	 $t   SOF0s   Baseline DCTi  t   SOF1s   Extended Sequential DCTi  t   SOF2s   Progressive DCTi  t   SOF3s   Spatial losslessi  t   DHTs   Define Huffman tablei  t   SOF5s   Differential sequential DCTi  t   SOF6s   Differential progressive DCTi  t   SOF7s   Differential spatiali  t   JPGt	   Extensioni  t   SOF9s   Extended sequential DCT (AC)i  t   SOF10s   Progressive DCT (AC)i  t   SOF11s   Spatial lossless DCT (AC)i  t   DACs%   Define arithmetic coding conditioningi  t   SOF13s    Differential sequential DCT (AC)i  t   SOF14s!   Differential progressive DCT (AC)i  t   SOF15s   Differential spatial (AC)i  t   RST0s	   Restart 0i  t   RST1s	   Restart 1i  t   RST2s	   Restart 2i  t   RST3s	   Restart 3i  t   RST4s	   Restart 4i  t   RST5s	   Restart 5i  t   RST6s	   Restart 6i  t   RST7s	   Restart 7i  t   SOIs   Start of imagei  t   EOIs   End of imagei  t   SOSs   Start of scani  RA   s   Define quantization tablei  t   DNLs   Define number of linesi  t   DRIs   Define restart intervali  t   DHPs   Define hierarchical progressioni  t   EXPs   Expand reference componenti  t   APP0s   Application segment 0i  t   APP1s   Application segment 1i  t   APP2s   Application segment 2i  t   APP3s   Application segment 3i  t   APP4s   Application segment 4i  t   APP5s   Application segment 5i  t   APP6s   Application segment 6i  t   APP7s   Application segment 7i  t   APP8s   Application segment 8i  t   APP9s   Application segment 9i  t   APP10s   Application segment 10i  t   APP11s   Application segment 11i  t   APP12s   Application segment 12i  t   APP13s   Application segment 13i  t   APP14s   Application segment 14i  t   APP15s   Application segment 15i  t   JPG0s   Extension 0i  t   JPG1s   Extension 1i  t   JPG2s   Extension 2i  t   JPG3s   Extension 3i  t   JPG4s   Extension 4i  t   JPG5s   Extension 5i  t   JPG6s   Extension 6i  t   JPG7s   Extension 7i  t   JPG8s   Extension 8i  t   JPG9s   Extension 9i  t   JPG10s   Extension 10i  t   JPG11s   Extension 11i  t   JPG12s   Extension 12i  t   JPG13s   Extension 13i  R$   t   Commenti  c         C   s   |  d d j S(   Ni    s   (    (   t   prefix(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   _accept  s    t   JpegImageFilec           B   s8   e  Z d  Z d Z d   Z d   Z d   Z d   Z RS(   t   JPEGs   JPEG (ISO 10918)c         C   s  |  i  i d  } t | d  d j o t d   n d |  _ |  _ g  |  _ h  |  _ h  |  _ h  |  _	 h  |  _
 g  |  _ g  |  _ x| |  i  i d  } t |  } t i |  o t | \ } } } | d  j	 o | |  |  n | d j oM |  i } |  i d j o
 d } n d d |  i d | d	 f f g |  _ Pn |  i  i d  } q | d j p | d
 j o
 d } q t d   q d  S(   Ni   i    i   s   not a JPEG filei  R'   s   CMYK;It   jpegR*   i  s   s   no marker found(   i    i    (   R   R   R    R.   R-   R/   R7   t
   huffman_dct
   huffman_acR?   R   R   R    R   t   MARKERt   has_keyR5   R0   R,   t   tile(   R	   R!   R:   t   namet   descriptiont   handlert   rawmode(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   _open  s8    								
%
c   	      C   s  t  |  i  d j o d  S|  i d \ } } } } d } | d d j o& | d j o | |  _ | d f } n | o t |  i d | d |  i d | d  } x, d d d	 d g D] } | | j o Pq q W| d | d | d	 | d | d | | d | d
 | d | d | | d f } |  i d | d | |  i d | d | f |  _ | } n | | | | f g |  _ | d f |  _ |  S(   Ni   i    R&   R%   t   YCbCrR*   i   i   i   i   (   R%   R   (   R2   R   R0   t   maxR,   t   decoderconfig(	   R	   R0   R,   t   dt   eR   t   at   scaleR!   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   draft<  s&    	- 	Z5
c         C   s   d d  k  } d d  k } | i   } | i d |  i | f  z t i i |  |  _ Wd  y | i	 |  Wn n XX|  i i
 |  _
 |  i i |  _ g  |  _ d  S(   Nis   djpeg %s >%s(   t   tempfilet   ost   mktempt   systemt   filenamet   Imaget   coret   open_ppmt   imt   unlinkR0   R,   R   (   R	   R   R   t   file(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt
   load_djpegV  s      c         C   s  d d  k  } d d  k } d   } y |  i d } Wn t j
 o d  SX| i | d  } | i d  } h  } | i |  } | i |  x* | i   D] \ }	 }
 | |
  | |	 <q Wy | i	 | d  Wn t j
 o nK X| i |  } | i |  x* | i   D] \ }	 }
 | |
  | |	 <qWy | i	 | d  Wn t j
 o nY X| i |  } | i |  h  | d <} x* | i   D] \ }	 }
 | |
  | |	 <qW| S(   Nic         S   s    t  |   d j o	 |  d S|  S(   Ni   i    (   R2   (   t   value(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   fixupn  s    	R   i   i   ii  i%  (
   t   TiffImagePlugint   StringIOR   t   KeyErrorR5   R   t   ImageFileDirectoryt   loadt   itemst   seek(   R	   R   R   R   t   dataR   t   headR   R   t   keyR   t   gps(    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   _getexifi  sD    	   (   t   __name__t
   __module__t   formatt   format_descriptionR   R   R   R   (    (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyR     s   	,		R%   t   1R&   t   RGBAt   RGBXs   CMYK;IR'   R   c         C   s"  y t  |  i } Wn& t j
 o t d |  i   n X|  i } | i d d  } | i d d  } | d j o
 d } n/ | d j o
 d } n | d	 j o
 d
 } n d } | i d  } | o d }	 d }
 |
 |	 } g  } x' | o | i | |   | | } q Wd } xl | D]` } t i d d
 |	 t	 |   } | d | d t
 |  t
 t	 |   | } | d } qWn | i d d  | i d  p | i d  | i d d  | i d  | i d d  | d | d | | f	 |  _ t i |  | d d |  i d | f g  d  S(   Ns   cannot write mode %s as JPEGR   i    t   subsamplingis   4:4:4s   4:2:2i   s   4:1:1i   R*   R+   i   i  s   >Hs   R   t   qualityR(   R)   t   smootht   optimizet
   streamtypeR   (   i    i    (   i    i    (   t   RAWMODER0   R   t   IOErrort   encoderinfot   getR   t   structt   packR2   t   chrR   t   encoderconfigR   t   _saveR,   (   R   R   R   R   R   R   R   t   extraR+   t   ICC_OVERHEAD_LENt   MAX_BYTES_IN_MARKERt   MAX_DATA_BYTES_IN_MARKERt   markersR:   R
   R,   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyR     sN    	



   0c         C   sN   d d  k  } |  i   } | i d | | f  y | i |  Wn n Xd  S(   Nis   cjpeg %s >%s(   R   t   _dumpR   R   (   R   R   R   R   R   (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   _save_cjpeg  s      R   s   .jfifs   .jpes   .jpgs   .jpegs
   image/jpeg(   RJ   s	   ExtensionN(   RS   s	   Restart 0N(   RT   s	   Restart 1N(   RU   s	   Restart 2N(   RV   s	   Restart 3N(   RW   s	   Restart 4N(   RX   s	   Restart 5N(   RY   s	   Restart 6N(   RZ   s	   Restart 7N(   R[   s   Start of imageN(   R\   s   End of imageN(   Rr   s   Extension 0N(   Rs   s   Extension 1N(   Rt   s   Extension 2N(   Ru   s   Extension 3N(   Rv   s   Extension 4N(   Rw   s   Extension 5N(   Rx   s   Extension 6N(   Ry   s   Extension 7N(   Rz   s   Extension 8N(   R{   s   Extension 9N(   R|   s   Extension 10N(   R}   s   Extension 11N(   R~   s   Extension 12N(   R   s   Extension 13N(   t   __version__R>   R   R3   R   R   R   R   R   R#   R$   R<   RA   R5   R   R   R   R   R   R   t   register_opent   register_savet   register_extensiont   register_mime(    (    (    s=   /usr/local/lib/python2.6/dist-packages/PIL/JpegImagePlugin.pyt   <module>#   s   		9	
	/		
	5	