
     f?                       U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 ddl
mZmZ ddlmZ ddlmZ  ej        d          Z ej        d	          Zdad
ed<   dad%dZd&dZ G d d          Zd'dZ G d dej                  Zd(d)d!Z ej        ej        ee            ej         ej        e            ej!        ej        d"d#g            ej"        ej        d$           dS )*    )annotationsN)IO   )Image	ImageFile)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | None	gs_binaryreturnboolc                 6   t           t          j                            d          r3t          $dd l} dD ]}|                     |          |a ndat          a n8	 t          j        ddgt          j	                   da n# t          $ r da Y nw xY wt           duS )Nwinr   )gswin32cgswin64cgsFr   z	--version)stdout)r
   sysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binarys     U/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/EpsImagePlugin.pyhas_ghostscriptr   .   s    <""5)) 	" (< . .F||F++7,2) 8 ).%)II"%t[&9*BTUUUU 		 " " "!			"E!!s   $B   BBFc                   t                      sd}t          |          | d         \  }} }}|\  }	}
t          |          pd}|d         |z  }|d         |z  }d|z  |
d         |
d         z
  z  }d|z  |
d         |
d         z
  z  }t          j                    \  }}t          j        |           d}t          |d          r,t
          j        	                    |j
                  r|j
        }nt          j                    \  }}t          j        |           |}t          |d	          5 }|                    dt          j                   |                                }|                    d           |}|dk    rS|                    t#          |d
                    }|sn-|t%          |          z  }|                    |           |dk    Sddd           n# 1 swxY w Y   |rdnd}t(          dd|dd|dd|dd|ddddd| d| d|
d           d|
d           dd|ddg}	 d}t*          j                            d          r-t1          j                    }|xj        t0          j        z  c_        t1          j        ||           t;          j        |          }|                                 	 t          j        |           |rt          j        |           nQ# t          $ r Y nEw xY w# 	 t          j        |           |rt          j        |           w w # t          $ r Y w w xY wxY w|j         !                                }|                                 |S )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@      Nnamewbi  pngalphappmrawz-qz-gdxz-rfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fshowpager   )startupinfo)"r   r   inttempfilemkstemposclosehasattrpathexistsr#   openseekioSEEK_ENDtellreadminlenwriter
   r   r   r   r   STARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr   r   loadunlinkimcopy)tilesizefpscaletransparencymsgdecoderoffsetdatalengthbboxwidthheightres_xres_yout_fdoutfileinfile_tempinfilein_fdr)   fsize
lengthfilesdevicecommandr,   out_imrC   s                                r   Ghostscriptr_   E   s     5cll #'q'GT64LFD JJO!EGeOE!Wu_F5LDGd1g-.E6MT!WtAw./E&((OFGHVKr6 rw~~bg66 %-//{

 +t$$ 	GGAr{###GGIIE GGAJJJJq..GGC
J7788 c!ff$



 q..	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (5ZZXF 	!U!!!v!!! U   u   F!!!G8**tAwh***#G*<""5)) 	C$022K:#BBg;????G$$	Ig '	+&&& 	 	 	D			Ig '	+&&&&' 	 	 	D	 
		B
LLNNNIsV   +B%GG #G .BK6 ;*K& &
K32K36L48*L$"L4$
L1.L40L11L4c                  4    e Zd ZdZd Zej        fdZddZdS )	PSFilez
    Wrapper for bytesio object that treats either CR or LF as end of line.
    This class is no longer used internally, but kept for backwards compatibility.
    c                F    t          ddd           || _        d | _        d S )Nra      zSIf you need the functionality of this class you will need to implement it yourself.)action)r	   rG   char)selfrG   s     r   __init__zPSFile.__init__   s8    6	
 	
 	
 	
 			    c                J    d | _         | j                            ||           d S N)re   rG   r6   )rf   rL   whences      r   r6   zPSFile.seek   s%    	VV$$$$$rh   r   strc                   | j         pdg}d | _         | j                            d          }|dvrQt          |          rB|                    |           | j                            d          }|dvrt          |          B| j                            d          | _         | j         dv rd | _         d                    |                              d          S )Nrh   r      
latin-1)re   rG   r:   r<   appendjoindecode)rf   r[   cs      r   readlinezPSFile.readline   s    Y#	GLLOOSVVHHQKKKQA SVV GLLOO	9DIxx{{!!),,,rh   N)r   rl   )	__name__
__module____qualname____doc__rg   r7   SEEK_SETr6   rt    rh   r   ra   ra      s\         
   #%+ % % % %- - - - - -rh   ra   prefixbytesc                j    | d d         dk    p%t          |           dk    ot          |           dk    S )N      %!PS   P )r<   i32)r{   s    r   _acceptr      s5    "1": TS[[A%5%S#f++:STrh   c                  F    e Zd ZdZdZdZdddddZddZd ZddZ	ddZ
dS )EpsImageFilez.EPS File Parser for the Python Imaging LibraryEPSzEncapsulated PostscriptLLABRGBCMYK)r   r!   r"   r~   r   Nonec                                           j                  \   j                                       d _        d  _        t          d          }t          |          }d}d}ddd$ fd}d% fd}	  j                            d          }|dk    r|dk    r|r
 |             nn]|dv r|dk    rAnQ|dk    r:|d         t          d          k    rd}t          |          |r |             d}d}|d         ||<   |dz  }|r|d         t          d          k    s|d d         dk    r |             d}t          |d |         d          }	 ||	          s{t                              |	          }
|
rA|
                    d          }|d d         dk    r|dd           j        d<   nd j        |<   n|	d         dk    rnd}t          |          n|d d         dk    r{|d|                             d d          }d |d d         D             \  }}}}|dk    rd _        n+|dk    r$	  j        |          _        n# t$          $ r Y n[w xY wnV||f _        d S |d d          d!k    rn<r&r$t          |d |         d          }	 ||	           n|d d         d"k    rdd}; j        sd#}t          |          d S )&Nr      r   TFr   r   c                 p    dj         vrd} t          |           dj         vrd} t          |           dS )z
            The EPS specification requires that some headers exist.
            This should be checked when the header comments formally end,
            when image data starts, or when the file ends, whichever comes first.
            PS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" commentN)infoSyntaxError)rJ   rf   s    r   check_required_header_commentsz:EpsImageFile._open.<locals>.check_required_header_comments   sM     **?!#&&&DI--B!#&&& .-rh   r[   rl   r   c                   	 t                               |           }n)# t          j        $ r}d}t	          |          |d }~ww xY w|sdS |                    dd          \  }}|
j        |<   |dk    r|dk    rd	nx
j        rro	rm	 d |                                 D             }|d         |d	         z
  |d
         |d         z
  f
_        dd
j        z   |ffg
_	        n# t          $ r Y nw xY wdS )Nnot an EPS fileFr   r!   r   z(atend)Tc                F    g | ]}t          t          |                    S rz   )r-   float).0is     r   
<listcomp>z=EpsImageFile._open.<locals>._read_comment.<locals>.<listcomp>
  s$    @@@s588}}@@@rh   r   r"   epsr   r   )splitmatchreerrorr   groupr   _sizerF   rE   	Exception)r[   merJ   kvboxrN   rL   reading_trailer_commentsrf   trailer_reacheds          r   _read_commentz)EpsImageFile._open.<locals>._read_comment   sA   .KKNN8 . . .'!#&&A-.  u771a==DAqDIaLM!!	>>/3,, 	 	<T 	 A@aggii@@@%(Vc!f_c!fs1vo%E
&+Vdi-?&RU%W$X		$   4s%    A?A	AC% %
C21C2r   rh   rn   %r      s   %%EndCommentsro      r   	    zbad EPS headerrc   s   %ImageData:   c              3  4   K   | ]}t          |          V  d S rj   )r-   )r   values     r   	<genexpr>z%EpsImageFile._open.<locals>.<genexpr>]  s9       5 5#(CJJ5 5 5 5 5 5rh   r~   1   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr   r   )r[   rl   r   r   )_find_offsetrG   r6   _moder   	bytearray
memoryviewr:   ordr   rl   fieldr   r   r   r   r   mode_map
ValueError)rf   byte_arrbytes_mv
bytes_readreading_header_commentsr   r   byterJ   r[   r   r   image_data_valuescolumnsrows	bit_depthmode_idrN   rL   r   r   s   `                @@@@r   _openzEpsImageFile._open   s   ,,TW55 	V

S>>h''
"&#( 	' 	' 	' 	' 	' 	'	 	 	 	 	 	 	 	 	 	8d	7<<??Ds{{??. 966888 #  ?? #
 $$  {c#hh../)#...2 <::<<<6;3 &'
'+Aw$a
& A' A;#c((**hssm?O.O.O22444.3+*-y99$}Q'' +AA +GGAJJRaR5J..45abbEDIj11+-DIaLL1 .%cll*+ #2#.00 %-R
]$;$A$A$$J$J!5 5,=bqb,A5 5 51y' >>!$DJJ!^^%)]7%;

%    $d]
"1"))  '%= '*-y99a    "1"--"&JId	L z 	5C#,,	 	s   I 
I#"I#c                `   |                     d          }|dk    r7|                    dt          j                   |                                }d}nYt          |          dk    r5|                     d          }t          |          }t          |d          }nd}t          |          ||fS )Nr~   r   r   r   r   r   )r:   r6   r7   r8   r9   r   r   )rf   rG   r[   rN   rL   rJ   s         r   r   zEpsImageFile._find_offset{  s    GGAJJ<<GGAr{###WWYYFFFVVz!! 

AVVFAYYFF#Cc"""v~rh   r   Fc                    | j         rPt          | j         | j        | j        ||          | _        | j        j        | _        | j        j        | _        g | _         t          j        	                    |           S rj   )
rE   r_   rF   rG   rC   moder   r   r   rA   )rf   rH   rI   s      r   rA   zEpsImageFile.load  s\    9 	!$)TYUUDGDJDJDI{%%%rh   posr-   c                    d S rj   rz   )rf   r   s     r   	load_seekzEpsImageFile.load_seek  s	     	rh   Nr   r   F)r   r-   r   r   )ru   rv   rw   rx   formatformat_descriptionr   r   r   rA   r   rz   rh   r   r   r      s        88F25Uv66Ha a a aF  .& & & &     rh   r   rC   Image.ImagerG   	IO[bytes]filenamestr | bytesr   r-   r   c                J   |                                   | j        dk    rd}n-| j        dk    rd}n| j        dk    rd}nd}t          |          |r|                    d           |                    d	           |                    d
| j        z             |                    d           |                    d           |                    d           |                    d| j        z             |                    d|z             |                    d           |                    d           |                    d| j        d         |d         z  z             |                    d| j        z             |                    d| j        z             |                    d| j        d         | j        d         | j        d         fz             |                    d           |                    |d         dz              t          |d          r|                                 t          j        | |dd| j        z   ddfg           |                    d           |                    d            t          |d          r|                                 dS dS )!z*EPS Writer for the Python Imaging Library.r   )r   r   s   imager   )r   r"   s   false 3 colorimager   )r   r~   s   false 4 colorimagezimage mode is not supporteds   %!PS-Adobe-3.0 EPSF-3.0
s   %%Creator: PIL 0.1 EpsEncode
s   %%%%BoundingBox: 0 0 %d %d
s   %%Pages: 1
s   %%EndComments
s   %%Page: 1 1
s   %%ImageData: %d %d s   %d %d 0 1 1 "%s"
s   gsave
s   10 dict begin
s   /buf %d string def
r   r   s   %d %d scale
s   %d %d 8
s   [%d 0 0 -%d 0 %d]
s+   { currentfile buf readhexstring pop } bind
r!      
flushr   r   Ns   
%%%%EndBinary
s   grestore end
)	rA   r   r   r=   rF   r2   r   r   _save)rC   rG   r   r   operatorrJ   s         r   r   r     s    GGIII 
w#~~#	E		0	F		0+oo
 
3
-...
2333
027:;;;
!!!
#$$$
!"""
'"'1222
&1222 HHZHH   HH$
Xa[(@ABBBHH'(((HH\BG#$$$HH#rwqz271:rwqz&JJKKKHH<===HHXa[5 !!!r7 



OBeVbg%5q$?@AAAHH!"""HHr7 





 rh   z.psz.epszapplication/postscript)r   r   r   )r{   r|   r   r   )r   )
rC   r   rG   r   r   r   r   r-   r   r   )#
__future__r   r7   r0   r   r   r   r.   typingr   r   r   r   _binaryr   r   
_deprecater	   compiler   r   r
   __annotations__r   r   r_   ra   r   r   r   register_openr   register_saveregister_extensionsregister_mimerz   rh   r   <module>r      s  , # " " " " " " 				 				 				     



                ! ! ! ! ! ! ! ! ! ! ! !
 	
233
,--#	 # # # # " " " ".Z Z Z Zz"- "- "- "- "- "- "- "-JU U U UN N N N N9& N N Nh. . . . .h  L'w ? ? ?  L' / / /  ,-v ? ? ?  L')A B B B B Brh   