ó
î Xc           @   s$  d  Z  d d l m Z m Z d d l Z d d l Z d d l Z d   Z d   Z d e j f d     YZ	 d   Z
 d	   Z e j d
 e	 e
  e j d
 e  e j d
 d  e j d
 d  e j d
 d  e j d
 d  e j d
 d  e j d
 d  e j d
 d  e j d
 d  d S(   s   0.1i˙˙˙˙(   t   Imaget	   ImageFileNc         C   s  |  j  d  } t j d |  d } | |  j  | d  } t j d | d   \ } } } } } } }	 }
 } } } d g | } d g | } d g | } xR t |  D]D } t j d | d d | d	 d | ! \ | | <| | <| | <q§ W| | | | f } | d
 k r5| d d @d k r,d } qzd } nE | d k rJd } n0 | d k r_d } n | d k rtd } n d } | | f S(   s   Parse the JPEG 2000 codestream to extract the size and component
    count from the SIZ marker segment, returning a PIL (size, mode) tuple.i   s   >Hi    s   >HHIIIIIIIIHi&   s   >BBBi$   i   i'   i   i   i   s   I;16t   Lt   LAt   RGBi   t   RGBAN(   t   readt   structt   unpackt   Nonet   range(   t   fpt   hdrt   lsizt   sizt   rsizt   xsizt   ysizt   xosizt   yosizt   xtsizt   ytsizt   xtosizt   ytosizt   csizt   ssizt   xrsizt   yrsizt   it   sizet   mode(    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyt   _parse_codestream   s,    7B					c         C   s°  d } xş t rÂ t j d |  j d   \ } } | d k rd t j d |  j d   d } d } n d } | | k  r t d   n  | d k r¨ |  j | |  } Pq	 |  j | | t j  q	 W| d k rŢ t d	   n  d } d } d } t	 j
 |  } x¤t rĽt j d | j d   \ } } | d k r]t j d | j d   d } d } n d } | j | |  }	 | d
 k r;t j d |	  \ }
 } } } } } } | |
 f } | r˘| d k rŕ| d @d k rŕd } nT | d k rőd } n? | d k r
d } n* | d k rd } n | d k r4d } n  Pq˘q| d k rt j d |	 d   \ } } } | d k r˘t j d |	 d d ! d } | d k r| d k rŔ| d @d k rŔd } n? | d k rŐd } n* | d k ręd } n | d k r˙d } n  Pq| d k rb| d k r4| d @d k r4d } n* | d k rId } n | d k r^d } n  Pq| d k r| d k rd } n | d k rd } n  Pqq˘qqW| | f S(   s~   Parse the JP2 header box to extract size, component count and
    color space information, returning a PIL (size, mode) tuple.s   >I4si   i   s   >Qi    i   s   Invalid JP2 header lengtht   jp2hs   could not find JP2 headert   ihdrs   >IIHBBBBi   s   I;16R   i   R   i   R   i   R   t   colrs   >BBBs   >Ii   i   i   N(   R	   t   TrueR   R   R   t   SyntaxErrort   seekt   ost   SEEK_CURt   iot   BytesIO(   R   t   headert   lboxt   tboxt   hlenR   R   t   bpct   hiot   contentt   heightt   widtht   nct   ct   unkct   iprt   metht   prect   approxt   cs(    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyt   _parse_jp2_header;   s    	!		!	'														t   Jpeg2KImageFilec           B   s&   e  Z d  Z d Z d   Z d   Z RS(   t   JPEG2000s   JPEG 2000 (ISO 15444)c         C   s­  |  j  j d  } | d k rE d |  _ t |  j   \ |  _ |  _ nU | |  j  j d  } | d k r d |  _ t |  j   \ |  _ |  _ n t d   |  j d  k s¸ |  j d  k rÇ t d   n  d	 |  _	 d	 |  _
 d
 } d
 } y% |  j  j   } t j |  j } Wne d
 } yH |  j  j   } |  j  j d	 d  |  j  j   } |  j  j | d	  Wqrd
 } qrXn Xd d |  j d	 |  j |  j	 |  j
 | | f f g |  _ d  S(   Ni   s   ˙O˙Qt   j2ki   t      jP  

t   jp2s   not a JPEG 2000 files   unable to determine size/modei    i˙˙˙˙i   t   jpeg2k(   i    i    (   R   R   t   codecR   R   R   R;   R$   R	   t   reducet   layerst   filenoR&   t   fstatt   st_sizet   tellR%   t   tile(   t   selft   sigt   fdt   lengtht   pos(    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyt   _open   s:    				c         C   să   |  j  r\ d |  j  >} | d ?} t |  j d | |  t |  j d | |  f |  _ n  |  j rĎ |  j d } | d d |  j  |  j | d d | d d f } | d d |  j | d | f g |  _ n  t j j |   d  S(   Ni   i    i   i   i   (   i    i    (   RC   t   intR   RI   RD   R   t   load(   RJ   t   powert   adjustt   tt   t3(    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyRQ   Â   s    	
$	3*(   t   __name__t
   __module__t   formatt   format_descriptionRO   RQ   (    (    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyR<      s   	'c         C   s   |  d  d k p |  d  d k S(   Ni   s   ˙O˙Qi   R?   (    (   t   prefix(    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyt   _acceptŇ   s    c         C   s  | j  d  r d } n d } |  j } | j d d   } | j d d   } | j d d   } | j d d  } | j d	 d   }	 | j d
 d  }
 | j d d   } | j d d   } | j d t  } | j d d  } | j d d  } d } t | d  r%y | j   } Wq%d } q%Xn  | | | | |	 |
 | | | | | | f |  _ t j	 |  | d d |  j
 d | f g  d  S(   Ns   .j2kR>   R@   t   offsett   tile_offsett	   tile_sizet   quality_modet   ratest   quality_layerst   num_resolutionsi    t   codeblock_sizet   precinct_sizet   irreversiblet   progressiont   LRCPt   cinema_modet   noi˙˙˙˙RE   RA   (   i    i    (   t   endswitht   encoderinfot   getR	   t   Falset   hasattrRE   t   encoderconfigR   t   _saveR   (   t   imR   t   filenamet   kindt   infoR\   R]   R^   R_   Ra   Rb   t	   cblk_sizeRd   Re   Rf   Rh   RL   (    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyRp   Ú   sD    		R=   s   .jp2s   .j2ks   .jpcs   .jpfs   .jpxs   .j2cs	   image/jp2s	   image/jpx(   t   __version__t   PILR    R   R   R&   R(   R   R;   R<   R[   Rp   t   register_opent   register_savet   register_extensiont   register_mime(    (    (    s9   /usr/lib/python2.7/dist-packages/PIL/Jpeg2KImagePlugin.pyt   <module>   s&   	#	\;		0