B ¥.¦^Oã@s2ddlZddlmZGdd„dƒZdZdZdZdS) éNé)ÚEpsImagePluginc@s^eZdZdZddd„Zdd„Zddd„Zd d „Zd d „Zd d„Z dd„Z dd„Z ddd„Z dS)ÚPSDrawzi Sets up printing to the given file. If **fp** is omitted, :py:attr:`sys.stdout` is assumed. NcCs|s tj}||_dS)N)ÚsysÚstdoutÚfp)Úselfr©r ú./tmp/pip-install-mwhup7aw/Pillow/PIL/PSDraw.pyÚ__init__ szPSDraw.__init__cCs0|jtjkr|j |¡n|j t|dƒ¡dS)NzUTF-8)rrrÚwriteÚbytes)rZto_writer r r Ú _fp_write%s zPSDraw._fp_writecCs2| d¡| t¡| t¡| d¡i|_dS)z=Set up printing of a document. (Write Postscript DSC header.)zD%!PS-Adobe-3.0 save /showpage { } def %%EndComments %%BeginDocument z %%EndProlog N)rÚ EDROFF_PSÚVDI_PSÚisofont)rÚidr r r Úbegin_document+s    zPSDraw.begin_documentcCs$| d¡t|jdƒr |j ¡dS)z-Ends printing. (Write Postscript DSC footer.)z%%%EndDocument restore showpage %%End ÚflushN)rÚhasattrrr)rr r r Ú end_document;s  zPSDraw.end_documentcCs<||jkr&| d ||¡¡d|j|<| d||f¡dS)z~ Selects which font to use. :param font: A Postscript font name :param size: Size in points. z#/PSDraw-{} ISOLatin1Encoding /{} E rz/F0 %d /PSDraw-%s F N)rrÚformat)rÚfontÚsizer r r ÚsetfontAs  zPSDraw.setfontcCs||}| d|¡dS)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). z%d %d %d %d Vl N)r)rZxy0Zxy1Úxyr r r ÚlineOsz PSDraw.linecCs| d|¡dS)a8 Draws a rectangle. :param box: A 4-tuple of integers whose order and function is currently undocumented. Hint: the tuple is passed into this format string: .. code-block:: python %d %d M %d %d 0 Vr z%d %d M %d %d 0 Vr N)r)rÚboxr r r Ú rectangleXs zPSDraw.rectanglecCs<d | d¡¡}d | d¡¡}||f}| d|¡dS)zŠ Draws text at the given position. You must use :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. z\(ú(z\)ú)z%d %d M (%s) S N)ÚjoinÚsplitr)rrÚtextr r r r#gs z PSDraw.textc Cs,|s|jdkrd}nd}|jdd|}|jdd|}t|d|dƒ}t|d|dƒ}||kr||||}|}||kr”|||}|}||d|d}||d|d} | d  || ¡¡||f|jkr ||jd} ||jd} | d  | | ¡¡t ||jd d¡| d ¡d S) z,Draw a PIL image, centered in the given box.Ú1éÈédréHréézgsave {:f} {:f} translate z{:f} {:f} scale Nz grestore )ÚmoderÚfloatrrrZ_saver) rrZimZdpiÚxÚyZxmaxZymaxZdxZdyZsxZsyr r r Úimageqs.   z PSDraw.image)N)N)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrrrrrr#r.r r r r rs    ra×/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 añ/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 neg 0 exch rlineto exch neg 0 rlineto 0 exch rlineto 100 div setgray fill 0 setgray } 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 aã/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 )rÚrrrrZERROR_PSr r r r Ús  "