
    zvg'                    "   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m	Z	 ddl
mZmZ d/d
Zg dZd0dZd1dZ G d dej                  Zd2d3dZd4dZd5d Zd5d!Z ej        ej        e            ej        ej        e           ed"k    r eej                  d#k     r ed$            ej                     ej        d         Z ee          s ed%            ej                      ej        e          5 Z  ed&e              ed'e j                     ed(e j!                     ed)e j"                     ed*d+,            ee #                                            eej                  d#k    rqej        d#         Z$e %                    ej&        j'                  Z  ed-ej(        )                    e           d.e$ d+           e *                    e$ej                   ddd           dS # 1 swxY w Y   dS dS )6    )annotationsN)IOTYPE_CHECKINGAnycast   )Image	ImageFilefr   returnintc                l    	 t          |           }| |z
  dk    rdS dS # t          t          f$ r Y dS w xY w)Nr   r   )r   
ValueErrorOverflowError)r   is     R/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/SpiderImagePlugin.pyisIntr   -   sP    FFq5A::11&   qqs    33)r      iiiittuple[float, ...]c                   d| z   }dD ]}t          ||                   s dS t          |d                   }|t          vrdS t          |d                   }t          |d                   }t          |d                   }|||z  k    rdS |S )Nc   )r                     r   r   r   r   r   )r   r   iforms)r   hr   iformlabreclabbytlenbyts          r   isSpiderHeaderr&   A   s    	A&  QqT{{ 	11	 !IIEFq2ZZF2ZZF2ZZF&6/""qM    filenamestrc                   t          | d          5 }|                    d          }d d d            n# 1 swxY w Y   t          j        d|          }t	          |          }|dk    r$t          j        d|          }t	          |          }|S )Nrb\   z>23fr   z<23f)openreadstructunpackr&   )r(   fpr   r   hdrlens        r   isSpiderImager3   U   s    	h		 GGBKK              fa  AAF{{M&!$$""Ms   377c                      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dS )SpiderImageFileSPIDERzSpider 2D imageFr   Nonec                   d}| j                             |          }	 d| _        t          j        d|          }t          |          }|dk    r+d| _        t          j        d|          }t          |          }|dk    rd}t          |          n)# t          j        $ r}d}t          |          |d }~ww xY wd|z   }t          |d                   }|dk    rd	}t          |          t          |d
                   t          |d                   f| _	        t          |d                   | _
        t          |d                   | _        | j
        dk    r| j        dk    r
|}	d| _        n| j
        dk    rl| j        dk    rat          |d
                   t          |d                   z  dz  | _        || _        t          |d                   | _        |dz  }	d| _        n9| j
        dk    r| j        dk    r|| j        z   }	d| _
        nd}t          |          | j        rd| _        nd| _        d| _        t%          j        dd| j        z   |	| j                  g| _        | j         | _        d S )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   )r1   r.   	bigendianr/   r0   r&   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr2   	stkoffsetrawmode_moder
   _Tilesizetile_fp)
selfnr   r   r2   msger!   r"   offsets
             r   _openzSpiderImageFile._opene   s`   GLLOO	*DNfa((A#A&&F{{!"M&!,,'**{{/!#&&&  | 	* 	* 	*+Cc"")	* AIAaD		A::)Cc"""2ZZQqT*
!B%jjQrU;!! 3 3FDMM[1__1!4!4"JJQqT2Q6DM DK"JJDMaZFDNN[A$.1"4"4dn,FDKK4Cc"""> 	##DLL"DL
_UFTY,>UUV	7s   A3B B8!B33B8r   c                    | j         S NrG   rP   s    r   n_frameszSpiderImageFile.n_frames   s
    }r'   boolc                    | j         dk    S Nr   rX   rY   s    r   is_animatedzSpiderImageFile.is_animated   s    }q  r'   c                0    | j         dk     rdS | j         dz
  S )Nr   r   )rF   rY   s    r   tellzSpiderImageFile.tell   s!    >A1>A%%r'   framec                (   | j         dk    rd}t          |          |                     |          sd S | j        || j        | j        z   z  z   | _        | j        | _        | j                            | j                   | 	                                 d S )Nr   z#attempt to seek in a non-stack file)
rE   EOFError_seek_checkr2   rH   rI   rO   r1   seekrU   )rP   ra   rR   s      r   re   zSpiderImageFile.seek   s    ;!7C3--&& 	Fudm0K'LL(T^$$$

r'      depthImage.Imagec                @   |                                  }t          |d         t                    sJ t          t          t          t          f         |          \  }}d||k    r|||z
  z   |z  |                     fd                              d          S )Nr   r   c                    | z  z   S rW    )r   bms    r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAI r'   L)
getextrema
isinstancefloatr   tuplepointconvert)rP   rg   extremaminimummaximumrl   rm   s        @@r   convert2bytezSpiderImageFile.convert2byte   s    //##'!*e,,,,,eUl 3W==g7*+ABLzz-----..66s;;;r'   r   ImageTkImageTk.PhotoImagec                `    ddl m} |                    |                                 d          S )Nr   rz      )palette) r{   
PhotoImagery   )rP   r{   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s9    !!$"3"3"5"5s!CCCr'   N)r   r7   )r   r   )r   r[   )ra   r   r   r7   )rf   )rg   r   r   rh   )r   r|   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrU   propertyrZ   r^   r`   re   ry   r   r   r{   r   rk   r'   r   r5   r5   `   s        F*(-%9 9 9 9v    X ! ! ! X!& & & &	 	 	 	< < < < <  D D D D D Dr'   r5   filelistlist[str] | Nonelist[Image.Image] | Nonec                   | t          |           dk     rdS g }| D ]}t          j                            |          st	          d|            4	 t          j        |          5 }t          |t                    sJ |	                                }ddd           n# 1 swxY w Y   n1# t          $ r$ t          |          st	          | d           Y w xY w||j        d<   |                    |           |S )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-   rq   r5   ry   	Exceptionr3   infoappend)r   	byte_imgsimgimbyte_ims        r   loadImageSeriesr      s`   3x==1,,tI " "w~~c"" 	)C))***	C ,B!"o66666//++, , , , , , , , , , , , , , ,  	 	 	 %% ;999:::H	 $'Z !!!!s6   B)%,BB)B!	!B)$B!	%B))+CCr   rh   list[bytes]c                   | j         \  }}|dz  }t          d|z            }d|z  dk    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          }|                    d           d |D             S )Nr<   i   r   r   r   g        g      ?r   r   r   r   r   r   c                8    g | ]}t          j        d |          S )r   )r/   pack).0vs     r   
<listcomp>z$makeSpiderHeader.<locals>.<listcomp>
  s$    ---AFKQ---r'   )rM   r   rr   r   )r   nsamnrowr%   r#   r$   nvalueshdrs           r   makeSpiderHeaderr      s   JD$AXFFf}!f_F&1*ooG||	%'/C CF4[[CF4[[CFCFDkkCGFmmCGFmmCGFmmCG abb'CJJsOOO------r'   r1   	IO[bytes]str | bytesr7   c           
     N   | j         d         dk    r|                     d          } t          |           }t          |          dk     rd}t	          |          |                    |           d}t          j        | |t          j        dd| j	        z   d|          g           d S )Nr   r>   r~   zError creating Spider headerzF;32NFr?   r@   )
moderu   r   r   OSError
writelinesr
   _saverL   rM   )r   r1   r(   r   rR   rJ   s         r   r   r     s    	wqzSZZ__
2

C
3xx#~~,cll MM#GOBY_UFRW4DaQQRSSSSSr'   c                   t           j                            |          d         }t          |t                    r|                                n|}t          j        t          j	        |           t          | ||           d S r]   )r   r   splitextrq   bytesdecoder	   register_extensionr5   r   r   )r   r1   r(   filename_extexts        r   _save_spiderr     so    7##H--a0L#-lE#B#B
T,




C	_3S99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   r   r   r   )r(   r)   r   r   rW   )r   r   r   r   )r   rh   r   r   )r   rh   r1   r   r(   r   r   r7   )+
__future__r   r   r/   systypingr   r   r   r   r   r	   r
   r   r    r&   r3   r5   r   r   r   r   register_openr   register_saver   r   argvr   exitr(   r-   r   rM   r   rp   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesaverk   r'   r   <module>r      s  F # " " " " " 				  



 / / / / / / / / / / / /            
$	#	#   (   lD lD lD lD lDi) lD lD lDh    6. . . .<T T T T      O*O < < <  O*L 9 9 9z
s38}}qGHHH


x{H="" 4555


	H		 5nnn$$$%%% rw  !!! rw  !!!l$$$$bmmoo3sx==1hqkG eo=>>BE!rw/?/?/I/I ! !! ! !   GGG_3444#5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 s   >C7HH	H