
&"VA                 @   s   d  d l  m Z d  d l m Z m Z m Z d  d l Z d  d l Z d Z e j	 Z	 e j
 Z e j Z e j Z i d d 6d d 6Z e d   d	 Z d
 d   Z d d   Z Gd d   d e j  Z e j e j e  e j e j d  d d   Z d S)    )print_function)Image	ImageFile_binaryNz0.3raw   Zjpeg      c             C   s   t  t |  d d    S)Nr	   )i32PAD)c r   5/tmp/pip-build-fj3bmf4v/Pillow/PIL/IptcImagePlugin.pyi*   s    r   c             C   s6   x( |  D]  } t  d t |  d d q Wt    d  S)Nz%02xend )printi8)r   r   r   r   r   dump.   s    r   c               @   sL   e  Z d  Z d Z d Z d d   Z d d   Z d d   Z d	 d
   Z d S)IptcImageFileZIPTCzIPTC/NAAc             C   s   t  |  j |  S)N)r   info)selfkeyr   r   r   getint=   s    zIptcImageFile.getintc             C   s  |  j  j d  } t |  s" d St | d  t | d  f } t | d  d k sx | d d k  sx | d d k r t d   n  t | d  } | d	 k r t d
   nV | d k r d } nA | d k r t |  j  j | d   } n t | d d    } | | f S)Nr   r   r         	   zinvalid IPTC/NAA file      z%illegal field length in IPTC/NAA file   )Nr   )fpreadlenr   SyntaxErrorIOErrorr   i16)r   stagsizer   r   r   field@   s     6	zIptcImageFile.fieldc       	      C   s7  x |  j  j   } |  j   \ } } | s7 | d k r; Pn  | rV |  j  j |  } n d  } | t |  j j    k r t |  j | t  r |  j | j |  q |  j | | g |  j | <q | |  j | <q Wt	 |  j d d  } t	 |  j d d  } d |  j k r-t	 |  j d d  d } n d } | d k rR| rRd |  _
 nD | d k rt| rtd	 | |  _
 n" | d
 k r| rd | |  _
 n  |  j d  |  j d  f |  _ y t |  j d  } Wn t k
 rt d   Yn X| d k r3d | | f d d |  j d |  j d f f g |  _ n  d  S)N   
   r   <   r   r   A   LZRGBr	   ZCMYK      x   zUnknown IPTC image compressioniptc)r+   r,   )r   r-   )r   r-   )r   r.   )r   r.   )r   r0   )r   r1   )r   r2   )r+   r,   )r!   tellr*   r"   listr   keys
isinstanceappendr   moder   r)   COMPRESSIONKeyErrorr%   tile)	r   offsetr(   r)   tagdataZlayers	componentidcompressionr   r   r   _openZ   s@    !zIptcImageFile._openc             C   s  t  |  j  d k s, |  j d d d k r< t j j |   S|  j d \ } } } | \ } } |  j j |  t j d d  \ } } t j	 |  } | d k r | j
 d |  j  n  x{ |  j   \ } }	 | d k r Pn  xR |	 d k r1|  j j t |	 d
   }
 |
 sPn  | j
 |
  |	 t  |
  8}	 q Wq W| j   zM y t j j |  |  _ Wn- t j |  } | j   | j |  _ Yn XWd  y t j |  Wn t k
 rYn XXd  S)Nr   r   r3   textFr   zP5
%d %d
255
r+   r,   i    )r+   r,   )r#   r<   r   loadr!   seektempfilemkstemposfdopenwriter)   r*   r"   mincloser   coreZopen_ppmimopenunlinkOSError)r   typer<   Zboxencodingr=   Zo_fdoutfileor)   r'   rN   r   r   r   rD      s>    ,

zIptcImageFile.loadN)	__name__
__module____qualname__formatformat_descriptionr   r*   rB   rD   r   r   r   r   r   8   s   2r   z.iimc             C   sO  d d l  m } m } d d  l } d  } t |  t  r> |  j St |  | j  ry|  j d } | d  d  d k rf| d d   } d } x | | | d  d k rb| d 7} t	 | |  } | d 7} t
 | |  } d	 | | } | d	 @r| d	 7} n  t | |  }	 | d 7} | d
 k r>| | | |	  } Pn  | |	 } | d	 @r | d	 7} q q Wn  Wqt t f k
 rYqXnG t |  | j  ry |  j j | j } Wqt t f k
 rYqXn  | d  k rd  SGd d   d t  }
 |
   }  t |  _ i  |  _ | j |  |  _ y |  j   Wn t t f k
 rGYn X|  j S)Nr   )TiffImagePluginJpegImagePluginZAPP13   s   Photoshop 3.0 r	   s   8BIMr   r   i  c               @   s   e  Z d  Z d S)zgetiptcinfo.<locals>.FakeImageN)rV   rW   rX   r   r   r   r   	FakeImage   s   r^   )PILr[   r\   ior7   r   r   ZJpegImageFileappr&   r   r   AttributeErrorr;   ZTiffImageFiler(   r>   ZIPTC_NAA_CHUNKobject	__class__BytesIOr!   rB   
IndexError)rN   r[   r\   r`   datara   r=   codeZname_lenr)   r^   r   r   r   getiptcinfo   s\    





			ri   )
__future__r   r_   r   r   r   rH   rF   __version__r   Zi16ber&   Zi32ber   Zo8r:   r   r   r   r   Zregister_openrY   Zregister_extensionri   r   r   r   r   <module>   s$   				


