§
    œ"²c%  ã                   ó8  — d dl Z d dlZd dlZd dlmZmZ d„ Zg d¢Zd„ Zd„ Z	 G d„ dej        ¦  «        Z
dd	„Zd
„ Zd„ Zd„ 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¦  «        z   ¦  «          ed eej        ¦  «        z   ¦  «          ed eej        ¦  «        z   ¦  «          ed eej        ¦  «        z   ¦  «          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 )é    N)ÚImageÚ	ImageFilec                 ól   — 	 t          | ¦  «        }| |z
  dk    rdS dS # t          t          f$ r Y dS w xY w)Nr   é   )ÚintÚ
ValueErrorÚOverflowError)ÚfÚis     ú7/usr/lib/python3/dist-packages/PIL/SpiderImagePlugin.pyÚisIntr   *   sP   € ðÝ�‰FŒFˆØˆq‰5�AŠ:ˆ:Ø�1à�1øÝ�Ð&ð ð ð Øˆqˆqðøøøs   ‚ ž3²3)r   é   iõÿÿÿiôÿÿÿiëÿÿÿiêÿÿÿ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)ÚtÚhr   ÚiformÚlabrecÚlabbytÚlenbyts          r   ÚisSpiderHeaderr   >   sŸ   € Ø�‰	€Aà&ð ð ˆÝ�Q�q”T‰{Œ{ð 	Ø�1�1ð	õ ��!”‰IŒI€EØ•FÐÐØˆqå��2”‰ZŒZ€FÝ��2”‰ZŒZ€FÝ��2”‰ZŒZ€FØ�&˜6‘/Ò"Ð"Øˆqà€Mó    c                 ó  — 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   )ÚfilenameÚfpr
   r   Úhdrlens        r   ÚisSpiderImager+   R   s½   € Ý	ˆh˜Ñ	Ô	ð  Ø�GŠG�B‰KŒKˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åŒ�f˜aÑ Ô €AÝ˜AÑÔ€FØ�‚{€{ÝŒM˜& !Ñ$Ô$ˆÝ Ñ"Ô"ˆØ€Ms   ‘3³7º7c                   óf   — e Zd ZdZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zdd
„Zd„ ZdS )ÚSpiderImageFileÚSPIDERzSpider 2D imageFc                 óÌ  — 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| _        dd| j        z   |	| j        ddffg| _        | j         | _        d S )Nél   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ÚmodeÚsizeÚtileÚ_fp)
ÚselfÚnr
   r   r*   ÚmsgÚer   r   Úoffsets
             r   Ú_openzSpiderImageFile._openc   s`  € àˆØŒG�LŠL˜‰OŒOˆð	*ØˆDŒNÝ”˜f aÑ(Ô(ˆAÝ# AÑ&Ô&ˆFØ˜Š{ˆ{Ø!"�”Ý”M &¨!Ñ,Ô,�Ý'¨Ñ*Ô*�Ø˜Š{ˆ{Ø/�Ý! #Ñ&Ô&Ð&ð øõ Œ|ð 	*ð 	*ð 	*Ø+ˆCÝ˜cÑ"Ô"¨Ð)øøøøð	*øøøð �A‰IˆÝ�A�a”D‘	”	ˆØ�AŠ:ˆ:Ø)ˆCÝ˜cÑ"Ô"Ð"å˜˜2œ‘Z”Z¥ Q q¤T¡¤Ð*ˆŒ
Ý˜!˜Bœ%‘j”jˆŒÝ˜Q˜rœU™œˆŒàŒ;˜!ÒÐ ¤°!Ò 3Ð 3àˆFØˆDŒMˆMØŒ[˜1Š_ˆ_ ¤°1Ò!4Ð!4å  "¤™JœJ­¨Q¨q¬T©¬Ñ2°QÑ6ˆDŒMØ ˆDŒKÝ  "¤™JœJˆDŒMà˜a‘ZˆFØˆDŒNˆNØŒ[˜AÒÐ $¤.°1Ò"4Ð"4à˜dœnÑ,ˆFØˆDŒKˆKà4ˆCÝ˜cÑ"Ô"Ð"àŒ>ð 	#Ø#ˆDŒLˆLà"ˆDŒLØˆŒ	à˜V d¤iÑ/°¸$¼,ÈÈ1Ð9MÐNÐOˆŒ	Ø”7ˆŒˆˆs   žA3B ÂB8Â!B3Â3B8c                 ó   — | j         S ©N©r>   ©rF   s    r   Ún_frameszSpiderImageFile.n_framesž   s
   € àŒ}Ðr    c                 ó   — | j         dk    S ©Nr   rN   rO   s    r   Úis_animatedzSpiderImageFile.is_animated¢   s   € àŒ}˜qÒ Ð r    c                 ó0   — | j         dk     rdS | j         dz
  S )Nr   r   )r=   rO   s    r   ÚtellzSpiderImageFile.tell§   s!   € ØŒ>˜AÒÐØ�1à”> AÑ%Ð%r    c                 ó(  — | 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)
r<   ÚEOFErrorÚ_seek_checkr*   r?   r@   rE   r)   ÚseekrK   )rF   ÚframerH   s      r   rY   zSpiderImageFile.seek­   s‡   € ØŒ;˜!ÒÐØ7ˆCÝ˜3‘-”-ÐØ×Ò Ñ&Ô&ð 	ØˆFØœ u°´¸d¼mÑ0KÑ'LÑLˆŒØ”(ˆŒØŒ�Š�T”^Ñ$Ô$Ð$Ø�
Š
‰Œˆˆˆr    éÿ   c                 ó´   — |                       ¦   «         \  }}d}||k    r|||z
  z  }| |z  }|                      ||fd„¦  «                             d¦  «        S )Nr   c                 ó   — | |z  |z   S rM   © )r   ÚmÚbs      r   ú<lambda>z.SpiderImageFile.convert2byte.<locals>.<lambda>¿   s   € ¨a°!©e°a©i€ r    ÚL)Ú
getextremaÚpointÚconvert)rF   ÚdepthÚminimumÚmaximumr_   r`   s         r   Úconvert2bytezSpiderImageFile.convert2byte¹   sk   € Ø!Ÿ_š_Ñ.Ô.Ñˆ�'ØˆØ�gÒÐØ˜ 7Ñ*Ñ+ˆAØˆB�‰LˆØ�zŠz a¨1Ð7Ð7Ð7Ñ8Ô8×@Ò@ÀÑEÔEÐEr    c                 ó`   — ddl m} |                     |                      ¦   «         d¬¦  «        S )Nr   )ÚImageTké   )Úpalette)ÚPILrk   Ú
PhotoImageri   )rF   rk   s     r   ÚtkPhotoImagezSpiderImageFile.tkPhotoImageÂ   s9   € ØÐÐÐÐÐà×!Ò! $×"3Ò"3Ñ"5Ô"5¸sÐ!ÑCÔCÐCr    N)r[   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrK   ÚpropertyrP   rS   rU   rY   ri   rp   r^   r    r   r-   r-   ]   sµ   € € € € € à€FØ*ÐØ(-Ð%ð9ð 9ð 9ðv ðð ñ „Xðð ð!ð !ñ „Xð!ð&ð &ð &ð	ð 	ð 	ðFð Fð Fð FðDð Dð Dð Dð Dr    r-   c                 óÊ  — | �t          | ¦  «        dk     rdS g }| D ]Æ}t          j                             |¦  «        st	          d|› �¦  «         Œ4	 t          j        |¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   n1# t          $ r$ t          |¦  «        st	          |dz   ¦  «         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$   ri   Ú	Exceptionr+   ÚinfoÚappend)ÚfilelistÚimglistÚimgÚims       r   ÚloadImageSeriesr…   Ì   sB  € àÐ�3˜x™=œ=¨1Ò,Ð,Øˆà€GØð ð ˆÝŒw�~Š~˜cÑ"Ô"ð 	ÝÐ) CÐ)Ð)Ñ*Ô*Ð*Øð	Ý”˜C‘”ð ' BØ—_’_Ñ&Ô&�ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'øøåð 	ð 	ð 	Ý  Ñ%Ô%ð ;Ý�cÐ9Ñ9Ñ:Ô:Ð:ØˆHð	øøøð "ˆŒ�
ÑØ�Š�rÑÔÐÐØ€Ns6   ÁBÁ%BÁ:BÂB
	Â
BÂB
	ÂBÂ+C Â?C c                 ó2  — | j         \  }}|dz  }t          d|z  ¦  «        }d|z  dk    r|dz  }||z  }t          |dz  ¦  «        }|dk     rg S g }t          |¦  «        D ]}|                     d¦  «         Œd|d<   t	          |¦  «        |d<   t	          |¦  «        |d	<   d|d
<   t	          |¦  «        |d<   t	          |¦  «        |d<   t	          |¦  «        |d<   t	          |¦  «        |d<   |dd …         }|                     d¦  «         d„ |D ¦   «         S )Nr3   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$   € Ð-Ð-Ð- A�FŒK˜˜QÑÔÐ-Ð-Ð-r    )rC   r   Úranger€   Úfloat)	r„   ÚnsamÚnrowr   r   r   ÚnvaluesÚhdrr   s	            r   ÚmakeSpiderHeaderr’   æ   s0  € Ø”�J€Dˆ$Ø�A‰X€FÝ�˜‘ÑÔ€FØˆf�}˜ÒÐØ�!‰ˆØ�f‰_€FÝ�&˜1‘*‰oŒo€GØ�‚|€|Øˆ	à
€CÝ�7‰^Œ^ð ð ˆØ�
Š
�3‰Œˆˆð €Cˆ�FÝ�4‰[Œ[€Cˆ�FÝ�4‰[Œ[€Cˆ�FØ€Cˆ�FÝ�D‰kŒk€Cˆ�GÝ�F‰mŒm€Cˆ�GÝ�F‰mŒm€Cˆ�GÝ�F‰mŒm€Cˆ�Gð ˆaˆbˆbŒ'€CØ‡J‚Jˆs�O„O€Oà-Ð-¨Ð-Ñ-Ô-Ð-r    c           
      ó2  — | j         d         dk    r|                      d¦  «        } t          | ¦  «        }t          |¦  «        dk     rd}t	          |¦  «        ‚|                     |¦  «         d}t          j        | |dd| j        z   d|ddffg¦  «         d S )	Nr   r5   rl   zError creating Spider headerzF;32NFr6   r7   r   )	rB   re   r’   ry   ÚOSErrorÚ
writelinesr   Ú_saverC   )r„   r)   r(   r‘   rH   rA   s         r   r–   r–     s›   € Ø	„wˆq„z�SÒÐØ�ZŠZ˜‰_Œ_ˆå
˜2Ñ
Ô
€CÝ
ˆ3�x„x�#‚~€~Ø,ˆÝ�c‰lŒlÐð ‡M‚M�#ÑÔÐà€GÝ„O�B˜˜e V¨b¬gÑ%5°q¸7ÀAÀq¸/ÐJÐKÑLÔLÐLÐLÐLr    c                 ó°   — t           j                             |¦  «        d         }t          j        t
          j        |¦  «         t          | ||¦  «         d S rR   )rz   r{   Úsplitextr   Úregister_extensionr-   rt   r–   )r„   r)   r(   Úexts       r   Ú_save_spiderr›     sJ   € å
Œ'×
Ò
˜8Ñ
$Ô
$ QÔ
'€CÝ	Ô�_Ô3°SÑ9Ô9Ð9Ý	ˆ"ˆb�(ÑÔÐÐÐr    Ú__main__r   z7Syntax: python3 SpiderImagePlugin.py [infile] [outfile]r   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 rM   )%rz   r&   Úsysrn   r   r   r   r   r   r+   r-   r…   r’   r–   r›   Úregister_openrt   Úregister_saverq   ry   Úargvr}   Úexitr(   r$   r„   ÚstrrC   rB   rc   ÚoutfileÚ	transposeÚ	TransposeÚFLIP_LEFT_RIGHTr{   ÚbasenameÚsaver^   r    r   ú<module>r«      s]  ððF 
€	€	€	Ø €€€Ø 
€
€
€
à  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð 
$Ð	#Ð	#€ðð ð ð(ð ð ðhDð hDð hDð hDð hD�iÔ)ñ hDô hDð hDð^ð ð ð ð4.ð .ð .ð@Mð Mð Mð ð ð ð €Ô �OÔ*¨OÑ <Ô <Ð <Ø €Ô �OÔ*¨LÑ 9Ô 9Ð 9àˆzÒÑà
€sˆ3Œ8�}„}�qÒÐØˆÐGÑHÔHÐHØˆŒ‰
Œ
ˆ
àŒx˜Œ{€HØˆ=˜Ñ"Ô"ð ØˆÐ4Ñ5Ô5Ð5ØˆŒ‰
Œ
ˆ
à	ˆŒ�HÑ	Ô	ð 5 Øˆˆi˜#˜#˜b™'œ'Ñ!Ñ"Ô"Ð"Øˆˆj˜3˜3˜rœy™>œ>Ñ)Ñ*Ô*Ð*Øˆˆh˜˜˜RœW™œÑ%Ñ&Ô&Ð&Øˆˆh˜˜˜RœW™œÑ%Ñ&Ô&Ð&Øˆˆl Ð$Ñ$Ô$Ð$Øˆˆb�mŠm‰oŒoÑÔÐàˆ3ˆsŒx‰=Œ=˜1ÒÐØ”h˜q”kˆGð —’˜eœoÔ=Ñ>Ô>ˆBØˆEð!¨r¬w×/?Ò/?ÀÑ/IÔ/Ið !ð !Øð!ð !ð !ñô ð ð �GŠG�G˜_Ô3Ñ4Ô4Ð4ð#5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5ð Ðs   Ã%DHÈHÈH