a
    Ö¶îa/  ã                   @   sh   d dl mZmZmZ d dlmZ dd„ ZG dd„ dejƒZ	e 
e	je¡ e e	jd¡ e e	jd¡ d	S )
é   )ÚImageÚ	ImageFileÚJpegImagePlugin)Úi16bec                 C   s   t  | ||¡S ©N)r   Ú_save)ZimÚfpÚfilename© r
   úb/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/PIL/MpoImagePlugin.pyr      s    r   c                   @   sX   e Zd ZdZdZdZdd„ Zddd„Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zeddd„ƒZdS )ÚMpoImageFileZMPOzMPO (CIPA DC-007)Fc                 C   s$   | j  d¡ tj | ¡ |  ¡  d S )Né    )r   Úseekr   ÚJpegImageFileÚ_openÚ_after_jpeg_open©Úselfr
   r
   r   r   +   s    zMpoImageFile._openNc                    sž   |d ur|nˆ   ¡ ˆ _ˆ jd ˆ _‡ fdd„ˆ jd D ƒˆ _dˆ jd< ˆ jtˆ jƒksZJ ‚ˆ jd= ˆ jdkˆ _ˆ jˆ _ˆ j 	ˆ jd ¡ dˆ _
dˆ _dˆ _d S )Ni°  c                    s   g | ]}|d  ˆ j d  ‘qS )Z
DataOffsetÚmpoffset)Úinfo)Ú.0Zmpentr   r
   r   Ú
<listcomp>3   s   z1MpoImageFile._after_jpeg_open.<locals>.<listcomp>é°  r   r   r   )Z_getmpÚmpinfoZn_framesÚ_MpoImageFile__mpoffsetsÚlenr   Zis_animatedr   Ú_MpoImageFile__fpr   Ú_MpoImageFile__frameÚoffsetÚreadonly)r   Úmpheaderr
   r   r   r   0   s    
ÿ
zMpoImageFile._after_jpeg_openc                 C   s   | j  |¡ d S r   )r   r   )r   Úposr
   r
   r   Ú	load_seekC   s    zMpoImageFile.load_seekc                 C   s  |   |¡sd S | j| _| j| | _| j | jd ¡ | j d¡}|sLtdƒ‚t|ƒdkrÒt| j d¡ƒd }t	 
| j|¡| jd< | jd | d d }| d¡rä|  ¡  d	¡}d
|v räd|v rä|d
 |d f| _nd| jv rä| jd= dd| j | j| jdffg| _|| _d S )Né   zNo data found for frameiáÿ  Úexifr   Ú	AttributeZMPTypezLarge Thumbnailii‡  i   i   Zjpeg)r   r   Ú )Z_seek_checkr   r   r   r   r   ÚreadÚ
ValueErrorÚi16r   Ú
_safe_readr   r   Ú
startswithZgetexifZget_ifdÚ_sizeÚsizeÚmodeZtiler   )r   ÚframeÚsegmentÚnZmptyper$   r
   r
   r   r   F   s(    


zMpoImageFile.seekc                 C   s   | j S r   )r   r   r
   r
   r   Útell_   s    zMpoImageFile.tellc                 C   sF   z8z| j | jkr| j  ¡  W n ty.   Y n0 W d | _ nd | _ 0 d S r   )r   r   ÚcloseÚAttributeErrorr   r
   r
   r   Ú
_close__fpb   s    zMpoImageFile._close__fpc                 C   s   t | _|  |¡ | S )aC  
        Transform the instance of JpegImageFile into
        an instance of MpoImageFile.
        After the call, the JpegImageFile is extended
        to be an MpoImageFile.

        This is essentially useful when opening a JPEG
        file that reveals itself as an MPO, to avoid
        double call to _open.
        )r   Ú	__class__r   )Zjpeg_instancer    r
   r
   r   Úadoptk   s    
zMpoImageFile.adopt)N)N)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingr   r   r"   r   r2   r5   Ústaticmethodr7   r
   r
   r
   r   r   %   s   
	r   z.mpoz	image/mpoN)r&   r   r   r   Ú_binaryr   r)   r   r   r   Zregister_saver;   Zregister_extensionZregister_mimer
   r
   r
   r   Ú<module>   s   	^