
    e                    D    d dl mZ d dlZddlmZ  G d d      ZdZdZd	Zy)
    )annotationsN   )EpsImagePluginc                  F    e Zd ZdZddZddZd Zd Zd Zd Z	d	 Z
dd
Zy)PSDrawz{
    Sets up printing to the given file. If ``fp`` is omitted,
    ``sys.stdout.buffer`` or ``sys.stdout`` is assumed.
    Nc                    |s#	 t         j                  j                  }|| _        y || _        y # t        $ r t         j                  }Y || _        y w xY wN)sysstdoutbufferAttributeErrorfp)selfr   s     ,/usr/lib/python3/dist-packages/PIL/PSDraw.py__init__zPSDraw.__init__!   sI     ZZ&& " "  ZZ s   . AAc                    | j                   j                  d       | j                   j                  t               | j                   j                  t               | j                   j                  d       i | _        y)z=Set up printing of a document. (Write PostScript DSC header.)sD   %!PS-Adobe-3.0
save
/showpage { } def
%%EndComments
%%BeginDocument
s   %%EndProlog
N)r   write	EDROFF_PSVDI_PSisofont)r   ids     r   begin_documentzPSDraw.begin_document)   sS     	!	
 	i f&'    c                    | j                   j                  d       t        | j                   d      r| j                   j                          yy)z-Ends printing. (Write PostScript DSC footer.)s%   %%EndDocument
restore showpage
%%End
flushN)r   r   hasattrr   )r   s    r   end_documentzPSDraw.end_document9   s3    AB477G$GGMMO %r   c                    t        |d      }|| j                  vr/| j                  j                  d||fz         d| j                  |<   | j                  j                  d||fz         y)z~
        Selects which font to use.

        :param font: A PostScript font name
        :param size: Size in points.
        UTF-8s#   /PSDraw-%s ISOLatin1Encoding /%s E
r   s   /F0 %d /PSDraw-%s F
N)bytesr   r   r   )r   fontsizes      r   setfontzPSDraw.setfont?   s^     T7#t||#GGMMAT4LPQ!"DLL.$=>r   c                J    | j                   j                  dg ||z         y)z
        Draws a line between the two points. Coordinates are given in
        PostScript point coordinates (72 points per inch, (0, 0) is the lower
        left corner of the page).
        s   %d %d %d %d Vl
Nr   r   )r   xy0xy1s      r   linezPSDraw.lineN   s"     	)LcLCL89r   c                @    | j                   j                  d|z         y)z
        Draws a rectangle.

        :param box: A tuple of four integers, specifying left, bottom, width and
           height.
        s   %d %d M 0 %d %d Vr
Nr%   )r   boxs     r   	rectanglezPSDraw.rectangleV   s     	-34r   c                    t        |d      }dj                  |j                  d            }dj                  |j                  d            }||fz  }| j                  j	                  d|z         y)z
        Draws text at the given position. You must use
        :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method.
        r   s   \(   (s   \)   )s   %d %d M (%s) S
N)r    joinsplitr   r   )r   xytexts      r   r2   zPSDraw.text_   s_    
 T7#{{4::d+,{{4::d+,
tg)B./r   c                   |s|j                   dk(  rd}nd}|j                  d   dz  |z  }|j                  d   dz  |z  }t        |d   |d   z
        }t        |d   |d   z
        }||kD  r
||z  |z  }|}||kD  r
||z  |z  }|}||z
  dz  |d   z   }||z
  dz  |d   z   }	| j                  j	                  d	||	fz         ||f|j                  k7  rD||j                  d   z  }
||j                  d   z  }| j                  j	                  d
|
|fz         t        j                  || j                  dd       | j                  j	                  d       y)z,Draw a PIL image, centered in the given box.1   d   r   H   r         s   gsave
%f %f translate
s   %f %f scale
Ns
   
grestore
)moder"   floatr   r   r   _save)r   r*   imdpixyxmaxymaxdxdysxsys               r   imagezPSDraw.imagej   s`    ww#~GGAJOc!GGAJOc!SVc!f_%SVc!f_%t8D1AAt8D1AAQh!^c!f$Qh!^c!f$1RH<=q6RWWRWWQZBRWWQZBGGMM*b"X56R$2o&r   r	   )__name__
__module____qualname____doc__r   r   r   r#   r(   r+   r2   rG    r   r   r   r      s/    
 ?:5	0'r   r   s  /S { show } bind def
/P { moveto show } bind def
/M { moveto } bind def
/X { 0 rmoveto } bind def
/Y { 0 exch rmoveto } bind def
/E {    findfont
        dup maxlength dict begin
        {
                1 index /FID ne { def } { pop pop } ifelse
        } forall
        /Encoding exch def
        dup /FontName exch def
        currentdict end definefont pop
} bind def
/F {    findfont exch scalefont dup setfont
        [ exch /setfont cvx ] cvx bind def
} bind def
s  /Vm { moveto } bind def
/Va { newpath arcn stroke } bind def
/Vl { moveto lineto stroke } bind def
/Vc { newpath 0 360 arc closepath } bind def
/Vr {   exch dup 0 rlineto
        exch dup 0 exch rlineto
        exch neg 0 rlineto
        0 exch neg rlineto
        setgray fill } bind def
/Tm matrix def
/Ve {   Tm currentmatrix pop
        translate scale newpath 0 0 .5 0 360 arc closepath
        Tm setmatrix
} bind def
/Vf { currentgray exch setgray fill setgray } bind def
s  /landscape false def
/errorBUF 200 string def
/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def
errordict begin /handleerror {
    initmatrix /Courier findfont 10 scalefont setfont
    newpath 72 720 moveto $error begin /newerror false def
    (PostScript Error) show errorNL errorNL
    (Error: ) show
        /errorname load errorBUF cvs show errorNL errorNL
    (Command: ) show
        /command load dup type /stringtype ne { errorBUF cvs } if show
        errorNL errorNL
    (VMstatus: ) show
        vmstatus errorBUF cvs show ( bytes available, ) show
        errorBUF cvs show ( bytes used at level ) show
        errorBUF cvs show errorNL errorNL
    (Operand stargck: ) show errorNL /ostargck load {
        dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL
    } forall errorNL
    (Execution stargck: ) show errorNL /estargck load {
        dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL
    } forall
    end showpage
} def end
)	
__future__r   r
    r   r   r   r   ERROR_PSrL   r   r   <module>rP      s2   " # 
 l' l'x	:
2r   