
    g?                       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jB                  ej>                  ddg        ejD                  ej>                  d       y)    )annotationsN)IO   )Image	ImageFile)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | None	gs_binaryc                 \   t         t        j                  j                  d      r6t        "dd l} dD ]  }| j                  |      |a n dat        a t         duS 	 t        j                  ddgt        j                         da t         duS t         duS # t        $ r da Y t         duS w xY w)Nwinr   )gswin32cgswin64cgsFr   z	--version)stdout)r
   sysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binarys     G/var/www/openai/venv/lib/python3.12/site-packages/PIL/EpsImagePlugin.pyhas_ghostscriptr   .   s    <<""5) (<F||F+7,2) =
 ).%)I E!!"%%t[&9*BTBTU 	 E!!9E!!  "!	E!!"s   )B B+*B+c                b   t               sd}t        |      | d   \  }} }}|\  }	}
t        |      xs d}|d   |z  }|d   |z  }d|z  |
d   |
d   z
  z  }d|z  |
d   |
d   z
  z  }t        j                         \  }}t        j                  |       d}t        |d      r6t
        j                  j                  |j                        r|j                  }nt        j                         \  }}t        j                  |       |}t        |d	      5 }|j                  dt        j                         |j                         }|j                  d       |}|dkD  rC|j!                  t#        |d
            }|sn%|t%        |      z  }|j'                  |       |dkD  rCddd       |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,                  j/                  d      r7t1        j2                         }|xj4                  t0        j6                  z  c_        t1        j8                  ||       t;        j                  |      }|j=                          	 t        j>                  |       |rt        j>                  |       |j@                  jC                         }|j                          |S # 1 sw Y   7xY w# t        $ r Y Dw xY w# 	 t        j>                  |       |rt        j>                  |       w w # t        $ r Y w w xY wxY w)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_imrA   s                                r   Ghostscriptr]   E   s    5cl #'q'GT64LFD JO!EGeOE!Wu_F5LDGd1g-.E6MT!WtAw./E&&(OFGHHVKr6rww~~bgg6%--/{

 +t$GGAr{{#GGIE GGAJJq.GGC
J78c!f$

 q. % (ZXF 	
U1IQvaj!
U1IQuQi 
F8
y!G8*AtAwhZz*#G*<<""5)$002K:#B#BBg;?G$	IIg		+& 
	B
LLNIs %$h  				IIg		+&  		sP   BK&BK/ ;,K  K 	K,+K,/L.1,LL.	L+(L.*L++L.c                  <    e Zd ZdZd Zej                  fdZddZy)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                <    t        ddd       || _        d | _        y )Nr_      zSIf you need the functionality of this class you will need to implement it yourself.)action)r	   rE   char)selfrE   s     r   __init__zPSFile.__init__   s%    6	
 	    c                J    d | _         | j                  j                  ||       y N)rc   rE   r4   )rd   rJ   whences      r   r4   zPSFile.seek   s    	VV$rf   c                   | j                   xs dg}d | _         | j                  j                  d      }|dvrGt        |      r<|j	                  |       | j                  j                  d      }|dvrt        |      r<| j                  j                  d      | _         | j                   dv rd | _         dj                  |      j                  d      S )Nrf   r      
latin-1)rc   rE   r8   r:   appendjoindecode)rd   rY   cs      r   readlinezPSFile.readline   s    YY#	GGLLOSVHHQKQA SV GGLLO	99DIxx{!!),,rf   N)returnstr)	__name__
__module____qualname____doc__re   r5   SEEK_SETr4   rq    rf   r   r_   r_      s    
 #%++ %-rf   r_   c                R    | d d dk(  xs t        |       dk\  xr t        |       dk(  S )N      %!PS   P )r:   i32)prefixs    r   _acceptr      s/    "1: TS[A%5%S#f+:STrf   c                  D    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
y)EpsImageFilez.EPS File Parser for the Python Imaging LibraryEPSzEncapsulated PostscriptLLABRGBCMYK)r   r   r    r{   c                     j                   j                        \   j                  j                         d _        d  _        t        d      }t        |      }d}d}ddd fd}d  fd}	  j                  j                  d      }|d	k(  r|dk(  rS|r |        n|d
v r|dk(  r?;|dk\  r+|d   t        d      k(  rd}t        |      |r	 |        d}d}|d   ||<   |dz  }y|r|d   t        d      k7  s|d d dk(  r
 |        d}t        |d | d      }	 ||	      st        j                  |	      }
|
r<|
j                  d      }|d d dk(  r|dd   j                  d<   nd j                  |<   n|	d   dk(  rnd}t        |      |d d dk(  rY|d| j!                  d d      }d |d d D        \  }}}}|dk(  rd _        n|dk(  r	  j"                  |    _        nn=||f _        y |d d dk(  rn*rrt        |d | d      }	 ||	       n
|d d dk(  rdd} j                  sd}t        |      y # t$        $ r Y %w xY w)!Nr      r   TFc                 r    dj                   vrd} t        |       dj                   vrd} t        |       y)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)rH   rd   s    r   check_required_header_commentsz:EpsImageFile._open.<locals>.check_required_header_comments   sB     *?!#&&DII-B!#&& .rf   c                   	 t         j                  |       }|sy|j                  dd      \  }}|j                  |<   |dk(  r|dk(  rd
yj                  rri
rg	 |j                         D cg c]  }t        t        |             }}|d   |d   z
  |d	   |d   z
  f_        d
dj                  z   	|ffg_        yy# t        j                  $ r}d}t	        |      |d }~ww xY wc c}w # t        $ r Y yw xY w)Nnot an EPS fileFr   r   r   z(atend)Tr   r    epsr   r   )splitmatchreerrorr   groupr   _sizer+   floatrD   rC   	Exception)rY   merH   kviboxrL   rJ   reading_trailer_commentsrd   trailer_reacheds           r   _read_commentz)EpsImageFile._open.<locals>._read_comment   s   .KKN
 771a=DAqDIIaLM!	>/3,  <T 78ggi@is58}i@%(Vc!f_c!fs1vo%E
&+Vdii-?&RU%W$X	 - 88 .'!#&A-." A % s;   C C2 /C-
8C2 C*C%%C*-C2 2	C>=C>r   rf   rk   %r      s   %%EndCommentsrl      r   	    zbad EPS headerra   s   %ImageData:   c              3  2   K   | ]  }t        |        y wrh   )r+   ).0values     r   	<genexpr>z%EpsImageFile._open.<locals>.<genexpr>]  s      5,A5CJ,As   r{   1   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxrr   None)rY   rs   rr   bool)_find_offsetrE   r4   _moder   	bytearray
memoryviewr8   ordr   rs   fieldr   r   r   r   r   mode_map
ValueError)rd   byte_arrbytes_mv
bytes_readreading_header_commentsr   r   byterH   rY   r   r   image_data_valuescolumnsrows	bit_depthmode_idrL   rJ   r   r   s   `                @@@@r   _openzEpsImageFile._open   s   ,,TWW5 	V

S>h'
"&#( 	'	 	8 77<<?Ds{?.68 ? $  {c#h./)#..2:<6;3 &'
'+Aw$a
& A;#c(*hsm?O.O24.3+*-y9$Q'AAGGAJRa5J.45abEDIIj1+-DIIaL1 .%cl*#2.0 %-R
$;$A$A$$J!5,=bq,A51y' >!$DJ!^%)]]7%;
 $d]
"1) %=*-y9a "1-"&JI L zz5C#, # & s   I 	IIc                (   |j                  d      }|dk(  r6|j                  dt        j                         |j	                         }d}||fS t        |      dk(  r,|j                  d      }t        |      }t        |d      }||fS d}t        |      )Nr{   r|   r   r}   r   r   )r8   r4   r5   r6   r7   r~   r   )rd   rE   rY   rL   rJ   rH   s         r   r   zEpsImageFile._find_offset{  s    GGAJ<GGAr{{#WWYFF v~ Vz! 
AVFAYF
 v~ $Cc""rf   c                6   | j                   rot        | j                   | j                  | j                  ||      | _        | j                  j
                  | _        | j                  j                  | _        g | _         t        j                  j                  |       S rh   )
rC   r]   rD   rE   rA   moder   r   r   r?   )rd   rF   rG   s      r   r?   zEpsImageFile.load  sc    99!$))TYYUDGDJDJDI{{%%rf   c                     y rh   ry   )rd   poss     r   	load_seekzEpsImageFile.load_seek  s     	rf   Nr   r   F)r   r+   rr   r   )rt   ru   rv   rw   formatformat_descriptionr   r   r   r?   r   ry   rf   r   r   r      s4    8F25Uv6HaF.&rf   r   c                   | j                          | j                  dk(  rd}n1| j                  dk(  rd}n| j                  dk(  rd}nd}t        |      |r|j                  d       |j                  d	       |j                  d
| j                  z         |j                  d       |j                  d       |j                  d       |j                  d| j                  z         |j                  d|z         |j                  d       |j                  d       |j                  d| j                  d   |d   z  z         |j                  d| j                  z         |j                  d| j                  z         |j                  d| j                  d   | j                  d   | j                  d   fz         |j                  d       |j                  |d   dz          t        |d      r|j                          t        j                  | |dd| j                  z   ddfg       |j                  d       |j                  d        t        |d      r|j                          yy)!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
)	r?   r   r   r;   rD   r0   r   r   _save)rA   rE   filenamer   operatorrH   s         r   r   r     s    GGI 
ww#~#	E	0	F	0+o

-.
23
0277:;
!
#$
!"
'"''12
&12 HHZHH HH$
Xa[(@ABHH'(HH\BGG#$HH#rwwqz2771:rwwqz&JJKHH<=HHXa[5 !r7

OOBeVbgg%5q$?@AHH!"HHr7

 rf   z.psz.epszapplication/postscript)rr   r   r   )r   bytesrr   r   )r   )
rA   zImage.ImagerE   z	IO[bytes]r   zstr | bytesr   r+   rr   r   )#
__future__r   r5   r.   r   r   r   r,   typingr   r   r   r   _binaryr   r~   
_deprecater	   compiler   r   r
   __annotations__r   r   r]   r_   r   r   r   register_openr   register_saveregister_extensionsregister_mimery   rf   r   <module>r      s   , # 	 	 	  
    ! !
 	

23

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