B ¥.¦^ã@spddlmZmZmZddlmZdd„Zdd„ZGdd„dej ƒZ e  e j e¡e  e j d ¡e e j d ¡d S) é)ÚImageÚ ImageFileÚJpegImagePlugin)Úi16becCs t |¡S)N)rÚ_accept)Úprefix©rú6/tmp/pip-install-mwhup7aw/Pillow/PIL/MpoImagePlugin.pyrsrcCst |||¡S)N)rÚ_save)ZimÚfpÚfilenamerrr r sr c@speZdZdZdZdZdd„Zddd„Zd d „Ze d d „ƒZ e d d„ƒZ dd„Z dd„Z dd„Zeddd„ƒZdS)Ú MpoImageFileZMPOzMPO (CIPA DC-007)FcCs$|j d¡tj |¡| ¡dS)Né)r ÚseekrÚ JpegImageFileÚ_openÚ_after_jpeg_open)Úselfrrr r,s  zMpoImageFile._openNcs’|dk r |nˆ ¡ˆ_ˆjdˆ_‡fdd„ˆjdDƒˆ_dˆjd<ˆjtˆjƒksZt‚ˆjd=ˆjˆ_ˆj  ˆjd¡dˆ_ dˆ_ dˆ_ dS)Ni°csg|]}|dˆjd‘qS)Z DataOffsetÚmpoffset)Úinfo)Ú.0Zmpent)rrr ú 5sz1MpoImageFile._after_jpeg_open..i°rrr) Z_getmpZmpinfoÚ_MpoImageFile__framecountÚ_MpoImageFile__mpoffsetsÚlenÚAssertionErrorrr Ú_MpoImageFile__fprÚ_MpoImageFile__frameÚoffsetÚreadonly)rÚmpheaderr)rr r1s  zMpoImageFile._after_jpeg_opencCs|j |¡dS)N)rr)rÚposrrr Ú load_seekCszMpoImageFile.load_seekcCs|jS)N)r)rrrr Ún_framesFszMpoImageFile.n_framescCs |jdkS)Nr)r)rrrr Ú is_animatedJszMpoImageFile.is_animatedcCsæ| |¡sdS|j|_|j||_|j |jd¡|j d¡}|sLtdƒ‚t|ƒdkr¬t|j d¡ƒd}t   |j|¡|j d<|  ¡}d|kr¾d|kr¾|d|df|_ nd|j kr¾|j d=dd|j|j|jd ffg|_||_dS) NézNo data found for frameiáÿÚexifi i Zjpeg)rrÚ)Z _seek_checkrr rrrÚreadÚ ValueErrorÚi16rÚ _safe_readrZgetexifÚ_sizeÚsizeÚmodeZtiler)rÚframeÚsegmentÚnr&rrr rNs$     zMpoImageFile.seekcCs|jS)N)r)rrrr ÚtelleszMpoImageFile.tellcCsBz4y|j|jkr|j ¡Wntk r0YnXWdd|_XdS)N)rr ÚcloseÚAttributeError)rrrr Ú _close__fphs   zMpoImageFile._close__fpcCst|_| |¡|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 rrr Úadoptqs  zMpoImageFile.adopt)N)N)Ú__name__Ú __module__Ú __qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrrr"Úpropertyr#r$rr2r5Ú staticmethodr7rrrr r &s    r z.mpoz image/mpoN)r'rrrÚ_binaryrr*rr rr Z register_saver;Zregister_extensionZ register_mimerrrr Ús  c