
    :hh#                       d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
 	 ddlmZ dZd
Zd ZddZddZddZ G d de
j                        ZddZ	 d	 	 	 	 	 	 	 	 	 ddZ e	j,                  ej.                  ee       erw e	j0                  ej.                  e        e	j2                  ej.                  e        e	j4                  ej.                  ddg        e	j6                  ej.                  d       yy# e$ r d	ZY w xY w)    )annotationsN)BytesIO)IO   )ExifTagsImage	ImageFile)_avifTFautoc                    t        j                         }|j                  d      D ]A  }|j                  d      d   | k(  s|j                  d      d   j                  d      d   c S  y )Nz, z [r   : )r
   codec_versionssplit)
codec_nameversionsversions      Q/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/AvifImagePlugin.pyget_codec_versionr      sb    ##%H>>$'==q!Z/==%b)//4Q77 (     c                :    | dd dk7  ry| dd }|dv r	t         s	 yyy)	N      s   ftypF   )s   avifs   aviss   mif1s   msf1zEimage file could not be identified because AVIF support not installedT)	SUPPORTED)prefixmajor_brands     r   _acceptr      s@    a{g2,K   W r   c                     t         rt         S t        t        d      rt        t        j                  d            S t        j
                         xs dS )Nsched_getaffinityr   r   )DEFAULT_MAX_THREADShasattroslenr!   	cpu_count r   r   _get_default_max_threadsr(   9   s=    ""r&'2''*++||~""r   c                  L     e Zd ZdZdZdZd	dZd
dZd fdZddZ	ddZ
 xZS )AvifImageFileAVIFz
AVIF imager   c                4   t         sd}t        |      t        dk7  r&t        j                  t              sd}t        |      t        j                  | j                  j                         t        t                     | _
        | j                  j                         \  | _        | _        | _        }}}}| j                  dkD  | _        |r|| j                   d<   |r|| j                   d<   |dk7  s|rt#        j$                         }|r<|j'                  |       |j)                  t*        j,                  j.                  d      }nd}||k7  r-||t*        j,                  j.                  <   |j1                         }|r|| j                   d<   | j3                  d       y )	NzAimage file could not be opened because AVIF support not installedr   zInvalid opening codecr   icc_profilexmpexifr   )r   SyntaxErrorDECODE_CODEC_CHOICEr
   decoder_codec_available
ValueErrorAvifDecoderfpreadr(   _decoderget_info_sizen_frames_modeis_animatedinfor   Exifloadgetr   BaseOrientationtobytesseek)selfmsgiccr/   exif_orientationr.   	exif_dataoriginal_orientations           r   _openzAvifImageFile._openG   sU   UCc""&(1N1N2
 *CS/!))GGLLN$&
 MM""$ 	P
DM4:sD:JC  ==1,'*DIIm$"DIIeq D

It$'0}}X]]5N5NPQ'R$'($#777G	(--334 ((* $DIIf		!r   c                    | j                  |      sy || _        t        j                  dd| j                  z   d| j
                        g| _        y )Nraw)r   r   r   )_seek_check_AvifImageFile__framer	   _Tilesizemodetile)rE   frames     r   rD   zAvifImageFile.seekp   sB    & __UFTYY,>499MN	r   c                   | j                   r| j                  j                  | j                        \  }}}}t	        d||z  z        | j
                  d<   t	        d||z  z        | j
                  d<   | j                  r&| j                  r| j                  j                          t        |      | _        t        | -         S )Ni  	timestampduration)rS   r7   	get_framerO   roundr=   r5   _exclusive_fpcloser   superr?   )rE   data	timescalepts_in_timescalesduration_in_timescales	__class__s        r   r?   zAvifImageFile.loadx   s    99 ''5 GD).0F &+43Dy3P+Q%RDIIk"$)$2H92T*U$VDIIj!ww4--dmDGw|~r   c                     y Nr'   )rE   poss     r   	load_seekzAvifImageFile.load_seek   s    r   c                    | j                   S rc   )rO   )rE   s    r   tellzAvifImageFile.tell   s    ||r   )returnNone)rT   intrh   ri   )rh   zImage.core.PixelAccess | None)rd   rj   rh   ri   rh   rj   )__name__
__module____qualname__formatformat_descriptionrO   rK   rD   r?   re   rg   __classcell__)ra   s   @r   r*   r*   B   s.    F%G'ROr   r*   c                "    t        | ||d       y )NT)save_all)_save)imr5   filenames      r   	_save_allrw      s    	"b(T*r   c                n	   | j                   j                         }|rt        |j                  dg             }ng }d}| g|z   D ]  }|t	        |dd      z  } |j                  dd      }t        |t              r
|dk  s|dkD  rd}	t        |	      |j                  d	d      }
|j                  d
d      }|j                  dd      }|j                  dt                     }|j                  dd      }|dk7  r"t        j                  |      sd}	t        |	      |j                  dd      }|j                  dd      }|j                  dd      }t        |j                  dd            }t        |j                  d||cxk(  xr dk(  nc             }|j                  d| j                  j                  d            }d}|j                  d      x}rt        |t        j                        r|}n%t        j                         }|j                  |       t         j"                  j$                  |v r>|j'                  t         j"                  j$                        }|r|j)                         nd}n*t        |t        j                        r|j)                         }|j                  d      }t        |t*              r|j-                  d      }|j                  d      }|Mt        |t.              r|j1                         }	 t3        |      }t5        d |D              }|rd!}	t        |	      t        j8                  | j:                  |||||||||||xs d|xs d||xs d|      }d}d}| j=                         }|dk(  }	 | g|z   D ]  }t	        |dd      } t?        |       D ]  }!|jA                  |!       |}"|jB                  }#|jB                  d"vr!|jD                  rd#nd$}#|jG                  |#      }"t        |
t        t2        f      r|
|   }n|
}|jI                  |"j)                  d%|#      ||"j:                  |#|       |dz  }|r   	 | jA                  |       |jK                         }$|$d&}	tM        |	      |jO                  |$       y # t6        $ r d }Y w xY w# | jA                  |       w xY w)'Nappend_imagesr   r:   r   qualityK   d   zInvalid quality settingrW   subsamplingz4:2:0speed   max_threadscodecr   zInvalid saving codecrangefull	tile_rows	tile_colsalpha_premultipliedF
autotilingr-   r/   r   r.   zutf-8advancedc              3  ^   K   | ]%  }t        |t               xs t        |      d k7   ' yw)   N)
isinstancetupler%   ).0vs     r   	<genexpr>z_save.<locals>.<genexpr>   s+     T8ajE22Ac!fkA8s   +-Tzcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuples>   RGBRGBAr   r   rM   z1cannot write file as AVIF (encoder returned None))(encoderinfocopylistr@   getattrr   rj   r3   r(   r
   encoder_codec_availableboolr=   r   r>   r?   r   rA   rB   poprC   strencodedictitemsr   any	TypeErrorAvifEncoderrQ   rg   r   rD   rR   has_transparency_dataconvertaddfinishOSErrorwrite)%ru   r5   rv   rs   r=   ry   totalimsrz   rF   rW   r}   r~   r   r   range_tile_rows_log2tile_cols_log2r   r   r-   rH   r/   rI   r.   r   invalidenc	frame_idxframe_durationcur_idxis_single_framenfridxrT   rawmoder]   s%                                        r   rt   rt      s[    >> DTXXor:;Etm#j!,, $ hhy"%Ggs#w{gm'oxx
A&H((='2KHHWa E((=*B*DEKHHWf%Eu<<UC$oXXgv&FXXk1-NXXk1-Ntxx(=uEFdhh|^~-RQR-RSTJ((="''++m*DEKxxtdEJJ'I

INN4 ==$$	1(}}X]]-F-FG*39$$&Dejj)$$&D
((5/C#sjj!xx
#Hh%~~'H	UXH T8TTG<  S/! 


s
s!C( INggiGqjO%4-'C#z1-CSz ((88?2(+(A(AfuGKK0E hu6%-i%8N%-N MM%1"JJ# Q	; "	 (H 	 ::<D|AclHHTNc  	G	R 	s%    R  CR! R! RR!R4z.avifz.avifsz
image/avif)r   r   rh   z
str | None)r   bytesrh   z
bool | strrk   )ru   Image.Imager5   	IO[bytes]rv   str | bytesrh   ri   )F)
ru   r   r5   r   rv   r   rs   r   rh   ri   )
__future__r   r$   ior   typingr    r   r   r	   r
   r   ImportErrorr1   r"   r   r   r(   r*   rw   rt   register_openro   register_saveregister_save_allregister_extensionsregister_mimer'   r   r   <module>r      s6   " 	   ( (I   4#II'' IX+
 MRJJ"J.9JEIJ	JZ   M((- AE,,e4EM00)<Em22Wh4GHE,,l;	 g  Is   C: :DD