
    ig0                    D   S SK Jr  S SKrS SKJr  SSKJrJr  SSKJ	r
  SSKJr  SSKJr  S	rS
SSS
SSSSSSSS.rSS jr " S S\R                  5      r " S S\R$                  5      r " S S\R$                  5      rSS jr\R,                  " \R.                  \\5        \R0                  " \R.                  \5        \R2                  " S\5        \R2                  " S\5        \R4                  " \R.                  / SQ5        \R6                  " \R.                  S5        g)     )annotationsN)IO   )Image	ImageFile)i16be)o8)o32les    	
1LRGBCMYKFPRGBA)   P1   P2   P3   P4   P5   P6s   P0CMYK   Pfs   PyPs   PyRGBAs   PyCMYKc                l    [        U 5      S:  =(       a     U R                  S5      =(       a    U S   S;   $ )N      Pr   s	   0123456fy)len
startswith)prefixs    Z/var/www/html/qgis-automation/mouza_env/lib/python3.13/site-packages/PIL/PpmImagePlugin.py_acceptr    1   s/    v;!U 1 1$ 7UF1I<UU    c                  :    \ rS rSrSrSrS	S jrS	S jrS
S jrSr	g)PpmImageFile9   PPMzPbmplus imagec                    U R                   c   eSn[        S5       H6  nU R                   R                  S5      nU(       a
  U[        ;   a    U$ X-  nM8     U$ )Nr!      r   )fprangereadb_whitespace)selfmagic_cs       r   _read_magicPpmImageFile._read_magic=   sX    ww"""qAQA\) JE	 
 r!   c                   U R                   c   eSn[        U5      S::  a  U R                   R                  S5      nU(       d  OrU[        ;   a
  U(       d  ME  O^US:X  aC  U R                   R                  S5      S;  a"   U R                   R                  S5      S;  a  M"  M  X-  n[        U5      S::  a  M  U(       d  Sn[	        U5      e[        U5      S:  a  SU-  n[	        U5      eU$ )Nr!   
   r      #s   
z Reached EOF while reading headers!   Token too long in file header: %s)r(   r   r*   r+   
ValueError)r,   tokenr/   msgmsg_too_longs        r   _read_tokenPpmImageFile._read_tokenI   s    ww"""%jBQAl"dggll1oW4 ggll1oW4JE %jB 4CS/!Z"_?%GL\**r!   c                   U R                   c   eU R                  5       n [        U   nX l        US;   a  SU l        OUS;   a  SU l        OUS;   a  SU l        [        U R                  5       5      [        U R                  5       5      4U l	        SnUS	;   a  S
nUS:X  a  SnOUS:X  ao  [        U R                  5       5      nUS:X  d  [        R                  " U5      (       d  Sn[        U5      e[        U5      U R                  S'   US:  a  SOSnUSS4nOr[        U R                  5       5      nSUs=:  a  S:  d  O  Sn[        U5      eUS:  a  US:X  a  SU l        UnUS
:w  a  US:X  a	  US:X  a  SnOUS:w  a  SnUS:X  a  UOXx4n[         R"                  " USU R$                  -   U R                   R'                  5       U5      /U l        g ! [         a    Sn[	        U5      ef = f)Nznot a PPM file)r   r   zimage/x-portable-bitmap)r   r   zimage/x-portable-graymap)r   r   zimage/x-portable-pixmapraw)r   r   r   	ppm_plainr   1;Ir   g        z!scale must be finite and non-zeroscaler   F;32FzF;32BFi   z1maxval must be greater than 0 and less than 65536   r   I  I;16Bppmr   r   )r(   r0   MODESKeyErrorSyntaxError_modecustom_mimetypeintr9   _sizefloatmathisfiniter5   absinfor   _Tilesizetelltile)	r,   magic_numbermoder7   decoder_nameargsr?   rawmodemaxvals	            r   _openPpmImageFile._opene   s   ww"""'')	#&D 
>)#<D ^+#=D ^+#<D ))+,c$2B2B2D.EE
00&L 3;DS[$**,-E|4==#7#79 o%!$UDIIg!&gGQ#D))+,Fv%%I o%| 
G{*U?ts{%Gs]#(L*e37'9JDOOL&499*<dggllndS
	_  	#"Cc""	#s   	G G')rK   rN   rL   rW   Nreturnbytes)ra   None)
__name__
__module____qualname____firstlineno__formatformat_descriptionr0   r9   r^   __static_attributes__ r!   r   r#   r#   9   s    F(
87
r!   r#   c                  d    \ rS rSr% SrS\S'   SS jrSSS jjrSS jrSS jr	SS	 jr
SS
 jrSrg)PpmPlainDecoder   Tbool_comment_spansc                r    U R                   c   eU R                   R                  [        R                  5      $ )N)fdr*   r   	SAFEBLOCK)r,   s    r   _read_blockPpmPlainDecoder._read_block   s+    ww"""ww||I//00r!   c                    UR                  SU5      nUR                  SU5      nX4-  S:  a  [        X45      $ [        X45      $ )N   
   r   )findminmax)r,   blockstartabs        r   _find_comment_end!PpmPlainDecoder._find_comment_end   s=    JJue$JJue$EAIs1y43q94r!   c                R   U R                   (       a?  U(       a8  U R                  U5      nUS:w  a  XS-   S  nOU R                  5       nU(       a  M8  SU l          UR                  S5      nUS:X  a   U$ U R                  X5      nUS:w  a  US U XS-   S  -   nOUS U nSU l          U$ MP  )NrA   r   FTr4   )rp   r   rt   ry   )r,   r|   comment_endcomment_starts       r   _ignore_comments PpmPlainDecoder._ignore_comments   s    "44U;"$ "/"34E !,,.E % $!JJt,M"  00FKb  n}-Ao6G0HH n}-&*# r!   c                   [        5       nU R                  R                  U R                  R                  -  n[	        U5      U:w  a  U R                  5       nU(       d  OqU R                  U5      nSR                  UR                  5       5      nU H#  nUS;  d  M  S[        U/5      -  n[        U5      e   X-   SU n[	        U5      U:w  a  M  [        R                  SS5      nUR                  U5      $ )z
This is a separate method because in the plain PBM format, all data tokens are
exactly one byte, so the inter-token whitespace is optional.
r!   )0   1   s   Invalid token for this mode: %sNs   01s    )	bytearraystatexsizeysizer   rt   r   joinsplitrb   r5   	maketrans	translate)r,   datatotal_bytesr|   tokensr6   r7   inverts           r   _decode_bitonalPpmPlainDecoder._decode_bitonal   s    
 {jj&&)9)99$i;&$$&E))%0EXXekkm,F(<ueW~MC$S/)   M<K0D $i;& 4~~f%%r!   c                   [        5       nSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R                  " U R                  5      nU R                  R
                  U R                  R                  -  U-  U-  nSn[        U5      U:w  Gan  U R                  5       n	U	(       d  U(       a  [        S5      n	O U$ U R                  U	5      n	U(       a  X-   n	SnU	R                  5       n
U	(       aM  U	S	S  R                  5       (       d5  U
R                  5       n[        U5      U:  a  S
US US-    -  n[        U5      eU
 H  n[        U5      U:  a  S
US US-    -  n[        U5      e[        U5      nUS:  a  SU 3n[        U5      eX:  a  SU 3n[        U5      e[        X-  U-  5      nX R                  S:X  a  [!        U5      O
[#        U5      -  n[        U5      U:X  d  M    O   [        U5      U:w  a  GMn  U$ )Nr3   rC      r   rD   rB   r!       rA   s    Token too long found in data: %sr   zChannel value is negative: z'Channel value too large for this mode: )r   rY   r   getmodebandsr   r   r   r   rt   r   r   isspacepopr5   rM   roundo32r	   )r,   r]   r   max_lenout_byte_countout_maxbandsr   
half_tokenr|   r   r7   r6   valuemsg_strs                  r   _decode_blocksPpmPlainDecoder._decode_blocks   s   {"ii3.A99+%""499-jj&&)9)99EANR
$i;&$$&E%dOE B ? ))%0E"* 
[[]FU23Z//11#ZZ\
z?W,;j7UV;>WW  %S/)u:'=mRS@TTC$S/)E
19 ;E7CG$W--> GwOG$W--enw67ii3&6E
BuIEt9+  3 $i;&P r!   c                
   SU l         U R                  S:X  a  U R                  5       nSnO>U R                  S   nU R	                  U5      nU R                  S:X  a  SOU R                  nU R                  [        U5      U5        g)NFr   z1;8rA   rC   I;32rA   r   )rp   rY   r   r[   r   
set_as_rawrb   )r,   bufferr   r\   r]   s        r   decodePpmPlainDecoder.decode  sq    #99'')DGYYr]F&&v.D $		S 0fdiiGdW-r!   )rp   Nr`   )r   )r|   rb   r}   rM   ra   rM   )r|   rb   ra   rb   )ra   r   )r]   rM   ra   r   r   z$bytes | Image.SupportsArrayInterfacera   ztuple[int, int])rd   re   rf   rg   	_pulls_fd__annotations__rt   r   r   r   r   r   rj   rk   r!   r   rm   rm      s-    I1
5
 D&21f
r!   rm   c                  "    \ rS rSrSrSS jrSrg)
PpmDecoderi,  Tc                F   U R                   c   e[        5       nU R                  S   nUS:  a  SOSnU R                  S:X  a  SOSnU R                  S:X  a  SOSn[        R
                  " U R                  5      nU R                  R                  U R                  R                  -  U-  U-  n[        U5      U:  a  U R                   R                  XG-  5      n	[        U	5      XG-  :  a  O}[        U5       H]  n
US:X  a  X   O[        XU-  5      n[        U[        X-  U-  5      5      nX R                  S:X  a  [        U5      O
[!        U5      -  nM_     [        U5      U:  a  M  U R                  S:X  a  S	OU R                  nU R#                  [%        U5      U5        g
)NrA      r   r   rC   r   rD   rB   r   r   )rr   r   r[   rY   r   r   r   r   r   r   r*   r)   i16rz   r   r   r	   r   rb   )r,   r   r   r]   in_byte_countr   r   r   dest_lengthpixelsr   r   r\   s                r   r   PpmDecoder.decode/  sc   ww"""{2#c\q"ii3.A99+%""499-jj&&)9)99EANR$i+%WW\\-"78F6{]225\!.!!3FIVEV9W  GU5>G+C%DEii3&6E
BuIE " $i+% !II,&$))dW-r!   rk   Nr   )rd   re   rf   rg   r   r   rj   rk   r!   r   r   r   ,  s    Ir!   r   c                   U R                   S:X  a  Su  p4OoU R                   S:X  a  Su  p4OZU R                   S;   a  Su  p4OEU R                   S;   a  Su  p4O0U R                   S	:X  a  S
u  p4OSU R                    S3n[        U5      eUR                  USU R                  -  -   5        US:X  a  UR                  S5        OGUS:X  a*  US:X  a  UR                  S5        O)UR                  S5        OUS:X  a  UR                  S5        U R                   S	:X  a  SOSn[        R
                  " X[        R                  " SSU R                  -   SUSU45      /5        g )Nr   )r>   r   r   )r   r   )rC   zI;16)rE   r   )r   r   )r   r   r   )r@   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r   s   -1.0
rA   r   r<   rG   r   )rY   OSErrorwriterU   r   _saverT   )imr(   filenamer\   headr7   	row_orders          r   r   r   M  s.   	ww#~$	C"	M	!&	O	#$	C&"277)73clHHTL277**+u}
	c>HHXHHZ 	
ggn!IOO
(8!gq)=TUVr!   rF   r=   )z.pbmz.pgmz.ppmz.pnmz.pfmzimage/x-portable-anymap)r   rb   ra   ro   )r   zImage.Imager(   z	IO[bytes]r   zstr | bytesra   rc   )
__future__r   rP   typingr    r   r   _binaryr   r   r	   r
   r   r+   rH   r    r#   	PyDecoderrm   r   r   register_openrh   register_saveregister_decoderregister_extensionsregister_mimerk   r!   r   <module>r      s    #    !  !
 + 	$Vc
9&& c
TFi)) FR$$ BD   L''w ?   L'' /   uj )   {O 4   ,--/W X   L'')B Cr!   