
    MhB                       d dl mZ d dlZd dlZd dlmZmZmZ ddlm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddZdd	Z G d
 dej(                        Z e	j,                  ej.                  e        e	j0                  ej.                  e        e	j2                  ej.                  d        e	j4                  ej.                  d       y)    )annotationsN)IOAnycast   )Image	ImageFileImageSequenceJpegImagePluginTiffImagePlugin)o32le)DeferredErrorc                2    t        j                  | ||       y N)r   _save)imfpfilenames      j/var/www/pru.catia.catastroantioquia-mas.com/valormasv2/lib/python3.12/site-packages/PIL/MpoImagePlugin.pyr   r   %   s    "b(+    c           
        | j                   j                  dg       }|st        | dd      st        | ||       y d}g }| g|}t	        d |D              }|D ]H  }t        j                  |      D ],  }	|sdd|z  z   }
dt        j                  d	d
|
z         z   dz   d|
z  z   |	j                   d<   |	j                   j                  d      }t        |t        j                        r|j                         }||	j                   d<   |r|dt        |      z   z  }t        j                  |	||       |j                  |j!                                |	j#                  |       }|	j%                  |d       ||	_         |j                  |j!                         |d   z
         / K t'        j(                         }d|d<   t        |      |d<   d}d}t+        |      D ];  \  }}|dk(  rd}nd}|t        j                  d|||dd      z  }|dk(  r||z  }||z  }= ||d<   |j-                  |       |j/                  dt1        d      z   |j                  d      z          |j-                  dt2        j4                         y )Nappend_imagesis_animatedF   c              3  6   K   | ]  }t        |d d        yw)n_framesr   N)getattr).0seqs     r   	<genexpr>z_save_all.<locals>.<genexpr>2   s     DZ+Ds   B      s   z>H   s   MPF     extraexif   JPEGs   0100i     r   r   i   z<LLLHH  s   II*    )encoderinfogetr   r   sumr
   Iteratorstructpack
isinstancer   Exiftobyteslenr   appendtell_attach_default_encoderinfosaver   ImageFileDirectory_v2	enumerateseekwriter   osSEEK_END)r   r   r   r   
mpf_offsetoffsetsim_sequencestotalim_sequenceim_frame
ifd_lengthr&   r-   ifd	mpentriesdata_offsetisizemptypes                      r   	_save_allrN   )   sm   NN&&;M]E!Bb"hJG''LD|DDE# 8%..{; 	8H"u*_
kk$J78 Z'( $$W-  ++//7dEJJ/<<>D37H((0!c$i-/J%%hH=rwwy)&BB2Fb&)'2$rwwy72;67/	884 
/
/
1CCKg,CKIKW% 46FFV[[64aKK	6:%Kt CKGGJHH]U1X%A67GGAr{{r   c                  b    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
e	 d	 	 	 	 	 dd
       Zy)MpoImageFileMPOzMPO (CIPA DC-007)Fc                    | j                   j                  d       t        j                  j	                  |        | j                          y )Nr   )r   r=   r   JpegImageFile_open_after_jpeg_openselfs    r   rT   zMpoImageFile._openl   s1    Q%%++D1r   Nc                H   ||n| j                         | _        | j                  d}t        |      | j                  d   | _        | j                  d   D cg c]  }|d   | j                  d   z    c}| _        d| j
                  d<   | j                  t        | j
                        k(  sJ | j                  d= | j                  dkD  | _        | j                  | _	        | j                  j                  | j
                  d          d| _        d| _        d| _        y c c}w )Nz(Image appears to be a malformed MPO filer*   r+   
DataOffsetmpoffsetr   r   )_getmpmpinfo
ValueErrorr   info_MpoImageFile__mpoffsetsr6   r   r   _fpr=   _MpoImageFile__frameoffsetreadonly)rW   mpheadermsgmpents       r   rU   zMpoImageFile._after_jpeg_openq   s   "*"6hDKKM;;<CS/!F+EI[[QWEX
<AE,$))J"77
   }}D$4$4 5555IIj!==1,77d&&q)*
s   Dc                    t        | j                  t              r| j                  j                  | j                  j	                  |       y r   )r3   r`   r   exr=   )rW   poss     r   	load_seekzMpoImageFile.load_seek   s.    dhh.((++cr   c                Z   | j                  |      sy t        | j                  t              r| j                  j                  | j                  | _        | j                  |   | _        | j                  j                  d      }d| j                  v r| j                  d= | j
                  j                  | j                  dz          | j
                  j                  d      sd}t        |      | j
                  j                  | j                         t        j                  j                  |        | j                  j                  d      |k7  r| j!                          t#        j$                  dd| j&                  z   | j                  | j(                  d   d         g| _        || _        y )Nr&      zNo data found for framejpeg)r   r   r   r)   )_seek_checkr3   r`   r   rh   r   r_   rb   r^   r.   r=   readr]   r   rS   rT   _reload_exifr	   _TilerL   tilera   )rW   frameoriginal_exifre   s       r   r=   zMpoImageFile.seek   s6   &dhh.((++((&&u-		f-TYY		&!T[[1_%ww||A+CS/!T[[!%%++D199== M1 OOFFTYY$6TYYq\RTEUV
	 r   c                    | j                   S r   )ra   rV   s    r   r8   zMpoImageFile.tell   s    ||r   c                ^    t         | _        t        t         |       }|j                  |       |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.
        )rP   	__class__r   rU   )jpeg_instancerd   mpo_instances      r   adoptzMpoImageFile.adopt   s,     #/L-8%%h/r   )returnNoner   )rd   dict[int, Any] | Noner{   r|   )ri   intr{   r|   )rs   r~   r{   r|   )r{   r~   )rx   zJpegImagePlugin.JpegImageFilerd   r}   r{   rP   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrT   rU   rj   r=   r8   staticmethodrz    r   r   rP   rP   g   s_    F,(-% 
,
4  +/4' 
 r   rP   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesr{   r|   )
__future__r   r?   r1   typingr   r   r    r   r	   r
   r   r   _binaryr   _utilr   r   rN   rS   rP   register_saver   register_save_allregister_extensionregister_mimer   r   r   <module>r      s   ( # 	         ,7|T?00 T|   L'' /   ++Y 7   ,,f 5   L'' 5r   