
    ,h	(                    B   d dl mZ d dl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 ddlmZ dZddZg d	Zd d
Zd!dZ G d dej                        Zd"d#dZd$dZd%dZd%dZ e
j0                  ej2                  e        e
j4                  ej2                  e       edk(  rq eej:                        dk  r ed        ej>                          ej:                  d   Z  ee       s ed        ej>                           e
jB                  e       5 Z" ede"         ede"j2                           ede"jF                           ede"jH                           edd        ee"jK                                 eej:                        dkD  rxej:                  d   Z&e"jO                  e
jP                  jR                        Z" edejT                  jW                  e        de& d       e"jY                  e&ej2                         ddd       yy# 1 sw Y   yxY w)&    )annotationsN)IOAnycast   )Image	ImageFile)DeferredErrorFc                X    	 t        |       }| |z
  dk(  ryy# t        t        f$ r Y yw xY w)Nr   r   )int
ValueErrorOverflowError)fis     W/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/PIL/SpiderImagePlugin.pyisIntr   0   s8    Fq5A:& s    )))r      iiiic                    d| z   }dD ]  }t        ||         r y t        |d         }|t        vryt        |d         }t        |d         }t        |d         }|||z  k7  ry|S )Nc   )r                     r   r   r   r   r   )r   r   iforms)thr   iformlabreclabbytlenbyts          r   isSpiderHeaderr$   D   s}    	A& QqT{ !IEF2ZF2ZF2ZF&6/"M    c                    t        | d      5 }|j                  d      }d d d        t        j                  d      }t	        |      }|dk(  r!t        j                  d|      }t	        |      }|S # 1 sw Y   RxY w)Nrb\   z>23fr   z<23f)openreadstructunpackr$   )filenamefpr   r   hdrlens        r   isSpiderImager0   X   sp    	h	 GGBKfa AAF{MM&!$"M s   A00A9c                  v    e Zd ZdZdZdZddZedd       Zedd       Z	ddZ
ddZddd	Zerd
dlmZ ddZy)SpiderImageFileSPIDERzSpider 2D imageFc                   d}| j                   j                  |      }	 d| _        t        j                  d|      }t        |      }|dk(  r(d| _        t        j                  d|      }t        |      }|dk(  rd}t        |      	 d|z   }t        |d         }|dk7  rd	}t        |      t        |d
         t        |d         f| _	        t        |d         | _
        t        |d         | _        | j                  dk(  r| j                  dk(  r
|}	d| _        n| j                  dkD  r[| j                  dk(  rLt        |d
         t        |d         z  dz  | _        || _        t        |d         | _        |dz  }	d| _        nB| j                  dk(  r&| j                  dkD  r|| j                  z   }	d| _
        nd}t        |      | j                  rd| _        nd| _        d| _        t%        j&                  dd| j(                  z   |	| j                         g| _        | j                   | _        y # t        j                  $ r}d}t        |      |d }~ww xY w)Nl   r   z>27fr   z<27fznot a valid Spider filer   r   znot a Spider 2D imager   r               z inconsistent stack header valueszF;32BFzF;32FFrawr   r   )r.   r*   	bigendianr+   r,   r$   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr/   	stkoffsetrawmode_moder	   _Tilesizetile_fp)
selfnr   r   r/   msger   r    offsets
             r   _openzSpiderImageFile._openh   s   GGLLO	*DNfa(A#A&F{!"MM&!,'*{/!#&&  AIAaD	A:)Cc""2ZQqT*
!B%jQrU;;!! 3FDM[[1_1!4"JQqT2Q6DM DK"JDMaZFDN[[A$..1"4dnn,FDK4Cc"">>#DL"DL
__UFTYY,>UV	77S || 	*+Cc")	*s   A'H0 0IIIc                    | j                   S NrC   rL   s    r   n_frameszSpiderImageFile.n_frames   s    }}r%   c                     | j                   dkD  S Nr   rT   rU   s    r   is_animatedzSpiderImageFile.is_animated   s    }}q  r%   c                @    | j                   dk  ry| j                   dz
  S )Nr   r   )rB   rU   s    r   tellzSpiderImageFile.tell   s     >>A>>A%%r%   c                   | j                   dk(  rd}t        |      | j                  |      sy t        | j                  t
              r| j                  j                  | j                  || j                  | j                  z   z  z   | _	        | j                  | _
        | j                  j                  | j                         | j                          y )Nr   z#attempt to seek in a non-stack file)rA   EOFError_seek_check
isinstancerK   r
   exr/   rD   rE   r.   seekrQ   )rL   framerN   s      r   ra   zSpiderImageFile.seek   s    ;;!7C3-&dhh.((++udmm0K'LL((T^^$

r%   c                   | j                         }t        |d   t              sJ t        t        t        t        f   |      \  }}d||k7  r|||z
  z   |z  | j                  fd      j                  d      S )Nr   r   c                    | z  z   S rS    )r   bms    r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAI r%   L)
getextremar_   floatr   tuplepointconvert)rL   depthextremaminimummaximumrf   rg   s        @@r   convert2bytezSpiderImageFile.convert2byte   s|    //#'!*e,,eUl 3W=g7*+ABLzz-.66s;;r%   r   ImageTkc                P    ddl m} |j                  | j                         d      S )Nr   rt      )palette) ru   
PhotoImagers   )rL   ru   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr%   N)returnNone)r|   r   )r|   bool)rb   r   r|   r}   )   )ro   r   r|   Image.Image)r|   zImageTk.PhotoImage)__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrQ   propertyrV   rY   r[   ra   rs   TYPE_CHECKINGry   ru   r{   re   r%   r   r2   r2   c   s^    F*(-%9v   ! !&< Dr%   r2   c                   | t        |       dk  ryg }| D ]  }t        j                  j                  |      st	        d|        1	 t        j                  |      5 }t        |t              sJ |j                         }ddd       |j                  d<   |j                  |        |S # 1 sw Y   -xY w# t        $ r t        |      st	        | d       Y w xY w)zJcreate a list of :py:class:`~PIL.Image.Image` objects for use in a montageNr   zunable to find z is not a Spider image filer-   )lenospathexistsprintr   r)   r_   r2   rs   	Exceptionr0   infoappend)filelist	byte_imgsimgimbyte_ims        r   loadImageSeriesr      s    3x=1,I "ww~~c"OC5)*	C ,B!"o66//+, $'Z !" , ,  	 %89:	s*   B8#B, B8,B5	1B88"CCc                   | j                   \  }}|dz  }t        d|z        }d|z  dk7  r|dz  }||z  }t        |dz        }|dk  rg S dg|z  }d|d<   t        |      |d<   t        |      |d	<   d|d
<   t        |      |d<   t        |      |d<   t        |      |d<   t        |      |d<   |dd  }|j                  d       |D cg c]  }t	        j
                  d|       c}S c c}w )Nr8   i   r   r   r   g        g      ?r   r   r   r   r   r   r   )rI   r   rk   r   r+   pack)	r   nsamnrowr#   r!   r"   nvalueshdrvs	            r   makeSpiderHeaderr      s   JD$AXFFf}!f_F&1*oG|	%'/C CF4[CF4[CFCFDkCGFmCGFmCGFmCG ab'CJJsO),-AFKKQ---s   C(c           
     ,   | j                   dk7  r| j                  d      } t        |       }t        |      dk  rd}t	        |      |j                  |       d}t        j                  | |t        j                  dd| j                  z   d|      g       y )Nr:   rw   zError creating Spider headerzF;32NFr;   r<   r   )
modern   r   r   OSError
writelinesr	   _saverH   rI   )r   r.   r-   r   rN   rF   s         r   r   r     s|    	ww#~ZZ_
2
C
3x#~,cl MM#GOOBY__UFRWW4DaQRSr%   c                    t         j                  j                  |      d   }t        |t              r|j                         n|}t        j                  t        j                  |       t        | ||       y rX   )r   r   splitextr_   bytesdecoder   register_extensionr2   r   r   )r   r.   r-   filename_extexts        r   _save_spiderr   "  sV    77##H-a0L#-lE#B,


C	_33S9	"b(r%   __main__r   z7Syntax: python3 SpiderImagePlugin.py [infile] [outfile]z$input image must be in Spider formatzimage: zformat: zsize: zmode: z
max, min:  )endzsaving a flipped version of z as )r   r   r|   r   )r   ztuple[float, ...]r|   r   )r-   strr|   r   rS   )r   zlist[str] | Noner|   zlist[Image.Image] | None)r   r   r|   zlist[bytes])r   r   r.   z	IO[bytes]r-   zstr | bytesr|   r}   )-
__future__r   r   r+   systypingr   r   r   ry   r   r	   _utilr
   r   r   r   r$   r0   r2   r   r   r   r   register_openr   register_saver   r   argvr   exitr-   r)   r   rI   r   rj   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesavere   r%   r   <module>r      s  F # 	  
        
$(nDi)) nDl6.<T    O**O <   O**L 9z
388}qGH
xx{H"45
	H	 5tn$%rwwi !rwwi !l$bmmosxx=1hhqkG eoo==>B.rww/?/?/I.J KYa! GGG_334#5 5 5 5s   C8HH