
    .~h,>                        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mZ ddl	m
Z ddlmZ  ej                  d      Z ej                  d      Zdadad Zdd	Z G d
 d      Zd Z G d dej                        ZddZ ej2                  ej4                  ee        ej6                  ej4                  e        ej8                  ej4                  ddg        ej:                  ej4                  d       y)    N   )Image	ImageFile)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$c                  \   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)	gs_binarysysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binarys     [/var/www/peopleoo.sandbox-dev.co.uk/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                 Z   t               sd}t        |      | d   \  }} }}|\  }	}
t        |      xs d}|d   |z  |d   |z  f}d|d   z  |
d   |
d   z
  z  d|d   z  |
d   |
d   z
  z  f}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|z  d|z  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   -x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%dx%dz-r%fx%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resout_fdoutfileinfile_tempinfilein_fdffsize
lengthfilesdevicecommandr%   out_imr<   s                             r   GhostscriptrV   C   s    5cl #'q'GT64LFD JO!E GeOT!Wu_-D 	tAw$q'DG+,tAw$q'DG+,C
 &&(OFGHHVKr6rww~~bgg6%--/{

 +t$ 	GGAr{{#GGIE GGAJJq.GGC
J78c!f$

 q.	 (ZXF 	DC
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+ 7,K K	K('K(+L*-,LL*	L'$L*&L''L*c                   :    e Zd ZdZd Zej                  fdZ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 )NrX      zSIf you need the functionality of this class you will need to implement it yourself.)action)r   r@   char)selfr@   s     r   __init__zPSFile.__init__   s%    6	
 	    c                 J    d | _         | j                  j                  ||       y N)r\   r@   r/   )r]   rE   whences      r   r/   zPSFile.seek   s    	VV$r_   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 )Nr_   r      
latin-1)r\   r@   r3   r5   appendjoindecode)r]   rR   cs      r   readlinezPSFile.readline   s    YY#	GGLLOSVHHQKQA SV GGLLO	99DIxx{!!),,r_   N)	__name__
__module____qualname____doc__r^   r0   SEEK_SETr/   rj    r_   r   rX   rX      s    
 #%++ %-r_   rX   c                 R    | d d dk(  xs t        |       dk\  xr t        |       dk(  S )N      %!PS   P )r5   i32)prefixs    r   _acceptrw      s/    "1: TS[A%5%S#f+:STr_   c                   @    e Zd ZdZdZdZdddddZd	 Zd
 ZddZ	d Z
y)EpsImageFilez.EPS File Parser for the Python Imaging LibraryEPSzEncapsulated PostscriptLLABRGBCMYK)r   r   r   rr   c                      j                   j                        \   j                  j                         d _        d  _        t        d      }t        |      }d}d}dd fd} fd}	  j                  j                  d      }|d	k(  r|dk(  rJn|d
v r|dk(  r?2|dk\  r+|d   t        d      k(  rd}t        |      |r	 |        d}d}|d   ||<   |dz  }p|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 r#r!|d d dk(  rn&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 )NPS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" comment)infoSyntaxError)rC   r]   s    r   check_required_header_commentsz:EpsImageFile._open.<locals>.check_required_header_comments   s@    *?!#&&DII-B!#&& .r_   c                    	 t         j                  |       }|r|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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 filer   r   r   z(atend)Tr   r   epsr   r   )splitmatchreerrorr   groupr   _sizer&   floatr?   r>   	Exception)rR   merC   kviboxrG   rE   reading_trailer_commentsr]   trailer_reacheds           r   _read_commentz)EpsImageFile._open.<locals>._read_comment   s   .KKN
 wwq!}1 		!%I~370  "ZZ',D
! ;<'')"DQ3uQx="DC"D),Q#a&#a&3q6/)IDJ!&(:FVSM R)DI
 ) 	 88 .'!#&A-." #E
  ) ! !s;   C C2 .C-	8C2 C*C%%C*-C2 2	C>=C>r   r_   rd   %r      s   %%EndCommentsre      r   	    zbad EPS headerrZ   s   %ImageData:   c              3   2   K   | ]  }t        |        y wra   )r&   ).0values     r   	<genexpr>z%EpsImageFile._open.<locals>.<genexpr>Y  s      5#(CJ5s   rr   1   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding box)_find_offsetr@   r/   _moder   	bytearray
memoryviewr3   ordr   strfieldr   r   r   r   r   mode_map
ValueError)r]   byte_arrbytes_mv
bytes_readreading_header_commentsr   r   byterC   rR   r   r   image_data_valuescolumnsrows	bit_depthmode_idrG   rE   r   r   s   `                @@@@r   _openzEpsImageFile._open   s   ,,TWW5 	V

S>h'
"&#( 	'	 	< 77<<?Ds{? ? $  {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]
 %=
 BQ<8+*-y9a "1-"&JM P 	'(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        |      )Nrr   rs   r   rt   r   r   )r3   r/   r0   r1   r2   ru   r   )r]   r@   rR   rG   rE   rC   s         r   r   zEpsImageFile._find_offset}  s    GGAJ<GGAr{{#WWYFF v~ Vz! 
AVFAYF
 v~ $Cc""r_   c                 6   | j                   rot        | j                   | j                  | j                  ||      | _        | j                  j
                  | _        | j                  j                  | _        g | _         t        j                  j                  |       S ra   )
r>   rV   r?   r@   r<   moder   r   r   r:   )r]   rA   rB   s      r   r:   zEpsImageFile.load  sc    99!$))TYYUDGDJDJDI{{%%r_   c                      y ra   rp   )r]   argskwargss      r   	load_seekzEpsImageFile.load_seek  s     	r_   Nr   F)rk   rl   rm   rn   formatformat_descriptionr   r   r   r:   r   rp   r_   r   ry   ry      s4    8F25Uv6HbH.&r_   ry   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   rr   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   r6   r?   r+   r   r   _save)r<   r@   filenamer   operatorrC   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

 r_   z.psz.epszapplication/postscriptr   )r   )r0   r)   r   r   r   r'   r   r   r   _binaryr   ru   
_deprecater   compiler   r   r   r   r   rV   rX   rw   ry   r   register_openr   register_saveregister_extensionsregister_mimerp   r_   r   <module>r      s   . 
 	 	  
   ! !
 	

23

,-	 ".]@"- "-JUO9&& Oj.h   L''w ?   L'' /   ,--v ?   L'')A Br_   