
    \bj6(                    *   d dl mZ d dlZd dlZd dlZd dlmZmZ ddlm	Z	m
Z
 ddlmZ dZd1dZg dZd2dZd3dZ G d de
j
                  Zd4d5dZd6dZd7d"Zd7d#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           d0e% d-           e),                    e%ej                   ddd           dS # 1 swxY w Y   dS dS )8    )annotationsN)IOAny   )Image	ImageFile)DeferredErrorF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     I/home/drrone/.local/lib/python3.11/site-packages/PIL/SpiderImagePlugin.pyisIntr   0   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%   D   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   isSpiderImager2   X   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         J | 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   )r0   r-   	bigendianr.   r/   r%   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr1   	stkoffsetrawmode_moder   _Tilesizetile_fp)
selfnr
   r   r1   msger    r!   offsets
             r   _openzSpiderImageFile._openh   sn   w"""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 C*B<<Cr   c                    | j         S NrF   rO   s    r   n_frameszSpiderImageFile.n_frames   s
    }r&   boolc                    | j         dk    S Nr   rW   rX   s    r   is_animatedzSpiderImageFile.is_animated   s    }q  r&   c                0    | j         dk     rdS | j         dz
  S )Nr   r   )rE   rX   s    r   tellzSpiderImageFile.tell   s!    >A1>A%%r&   framec                t   | j         dk    rd}t          |          |                     |          sd S t          | j        t
                    r| j        j        | j        || j        | j        z   z  z   | _	        | j        | _
        | j
                            | j	                   |                                  d S )Nr   z#attempt to seek in a non-stack file)rD   EOFError_seek_check
isinstancerN   r	   exr1   rG   rH   r0   seekrT   )rO   r`   rQ   s      r   rf   zSpiderImageFile.seek   s    ;!7C3--&& 	Fdh.. 	(+udm0K'LL(T^$$$

r&      depthImage.Imagec                    |                                  }t          |d         t                    sJ |\  }}d||k    r|||z
  z   |z  |                     fd                              d          S )Nr   r   c                    | z  z   S rV    )r   bms    r   <lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAI r&   L)
getextremard   floatpointconvert)rO   rh   extremaminimummaximumrm   rn   s        @@r   convert2bytezSpiderImageFile.convert2byte   s    //##'!*e,,,,,"g7*+ABLzz-----..66s;;;r&   r   ImageTkImageTk.PhotoImagec                `    ddl m} |                    |                                 d          S )Nr   ry      )palette) rz   
PhotoImagerx   )rO   rz   s     r   tkPhotoImagezSpiderImageFile.tkPhotoImage   s9    !!$"3"3"5"5s!CCCr&   N)r   r6   )r   r   )r   rZ   )r`   r   r   r6   )rg   )rh   r   r   ri   )r   r{   )__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrT   propertyrY   r]   r_   rf   rx   TYPE_CHECKINGr   rz   r   rl   r&   r   r4   r4   c   s        F*(-%: : : :x    X ! ! ! X!& & & &   < < < < <  D D D D D Dr&   r4   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,   rd   r4   rx   	Exceptionr2   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   ri   list[bytes]c                   | j         \  }}t          d|          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   r;   i   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&   )rL   maxr   rr   r   )r   nsamnrowr$   r"   r#   nvalueshdrs           r   makeSpiderHeaderr      s   JD$D\\AF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&   r0   	IO[bytes]str | bytesr6   c           
     B   | j         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}   zError creating Spider headerzF;32NFr>   r?   r   )
modert   r   r   OSError
writelinesr   _saverK   rL   )r   r0   r'   r   rQ   rI   s         r   r   r     s    	w#~~ZZ__
2

C
3xx#~~,cll MM#GOBY_UFRW4DaQQRSSSSSr&   c                
   t           j                            |          d         x}rJt          |t                    r|                                n|}t          j        t          j	        |           t          | ||           d S r\   )r   r   splitextrd   bytesdecoder   register_extensionr4   r   r   )r   r0   r'   filename_extexts        r   _save_spiderr   #  sw    w''11!44| >'1,'F'FXl!!###L !7===	"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   rV   )r   r   r   r   )r   ri   r   r   )r   ri   r0   r   r'   r   r   r6   )-
__future__r   r   r.   systypingr   r   r   r   r   _utilr	   r   r   r   r%   r2   r4   r   r   r   r   register_openr   register_saver   r   argvr   exitr'   r,   r   rL   r   rq   outfile	transpose	TransposeFLIP_LEFT_RIGHTtransposed_imr   basenamesaverl   r&   r   <module>r      s  F # " " " " " 				  



                                
$	#	#   (   oD oD oD oD oDi) oD oD oDn    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		 @nnn$$$%%% rw  !!! rw  !!!l$$$$bmmoo3sx==1hqkG LL)HIIME!rw/?/?/I/I ! !! ! !   w(>???#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ s   C7HH
H
