o
    ÎtBh~  ã                   @   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)ÚimÚfpÚfilename© r   úi/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/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 )ÚMpoImageFileÚ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¦   ˆ j ˆ _|d ur
|nˆ  ¡ ˆ _ˆ jd ˆ _‡ fdd„ˆ jd D ƒˆ _dˆ jd< ˆ jtˆ jƒks1J ‚ˆ jd= ˆ jdkˆ _ˆ j	ˆ _
ˆ j
 ˆ jd ¡ dˆ _dˆ _dˆ _d S )Ni°  c                    s   g | ]}|d  ˆ j d  ‘qS )Ú
DataOffsetÚmpoffset)Úinfo)Ú.0Úmpentr   r   r   Ú
<listcomp>4   s    ÿz1MpoImageFile._after_jpeg_open.<locals>.<listcomp>é°  r   r   r   )ÚsizeÚ_initial_sizeÚ_getmpÚmpinfoÚn_framesÚ_MpoImageFile__mpoffsetsÚlenr   Ú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_seekD   s   zMpoImageFile.load_seekc                 C   s  |   |¡sd S | j| _| j| | _| j | jd ¡ | j d¡}|s&tdƒ‚| j| _	t
|ƒdkrmt
| j d¡ƒd }t | j|¡| jd< | jd | d d }| d¡rl|  ¡  d	¡}d
|v rld|v rl|d
 |d f| _	n	d| jv rv| jd= dd| j | j| jdffg| _|| _d S )Né   zNo data found for frameiáÿ  Úexifr   Ú	AttributeÚMPTypezLarge Thumbnailii‡  i   i   Újpeg)r   r   Ú )Ú_seek_checkr%   r	   r"   r'   r   ÚreadÚ
ValueErrorr   Ú_sizeÚi16r   Ú
_safe_readr   r    Ú
startswithÚgetexifÚget_ifdr   ÚmodeÚtiler&   )r   ÚframeÚsegmentÚnÚmptyper-   r   r   r   r   G   s,   

€

zMpoImageFile.seekc                 C   s   | j S r   )r&   r   r   r   r   Útella   s   zMpoImageFile.tellc                 C   sP   z#z| j | jkr| j  ¡  W n	 ty   Y nw W d | _ d S W d | _ d S d | _ w r   )r%   r	   ÚcloseÚAttributeErrorr   r   r   r   Ú
_close__fpd   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   )Újpeg_instancer)   r   r   r   Úadoptm   s   
zMpoImageFile.adoptr   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingr   r   r+   r   rA   rD   ÚstaticmethodrG   r   r   r   r   r   %   s    
	r   z.mpoz	image/mpoN)r1   r   r   r   Ú_binaryr   r6   r   r   r   Úregister_saverK   Úregister_extensionÚregister_mimer   r   r   r   Ú<module>   s   	`