Ë
    ¡ëi1”  ã                   óf  — d Z dZddlZddlmZmZ ddlmZmZm	Z	 ddl
mZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlmZ i Z ed«      D ]H  Zedk  sedk\  r	dez  ee<   Œe ed«       ed«       ed«      fv rd e e«      z   ee<   Œ> e e«      ee<   ŒJ [d„ Z!dZ" G d„ d«      Z#	 ddl­ ddejH                  fd„Z%d„ Z& G d„ de«      Z'ejH                  fd„Z(ejH                  fd„Z)d$d„Z*e+d k(  r6ddl,Z, e-e,j\                  «      d!kD  re,j\                  d!   Z/ndZ/ e*e/d"¬#«       yy)%z3.3.0z$Render drawing objects in Postscripté    N)ÚBytesIOÚStringIO)ÚgetFontÚstringWidthÚ
unicode2T1)ÚasBytesÚchar2intÚrawBytesÚasNativeÚ	isUnicode)Úfp_str)ÚRendererÚgetStateDeltaÚrenderScaledDrawing)ÚSTATE_DEFAULTS)Ú	rl_config)ÚFILL_EVEN_ODDé   é    é   z\%03oú\ú(ú)c                 óØ   — t        | «      } g }|j                  }d}| D ]:  }t        t        |«         } ||«       |t	        |«      z  }|dk\  sŒ1d} |d«       Œ< dj                  |«      S )Nr   éÈ   z\
Ú )r   ÚappendÚ_ESCAPEDICTr	   ÚlenÚjoin)ÚsÚRÚaRÚnÚcs        ú[/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/renderPS.pyÚ_escape_and_limitr'      sr   € Ü�‹
€AØ
€AØ	
�‰€BØ	€AØò ˆÜœ ›Ñ$ˆÙ
ˆ1ŒØ	ŒS�‹V‰ˆØˆc‹6ØˆAÙˆv�Jðð �7‰7�1‹:Ðó    a?  
/RE { %def
  findfont begin
  currentdict dup length dict begin
 { %forall
   1 index /FID ne { def } { pop pop } ifelse
 } forall
 /FontName exch def dup length 0 ne { %if
   /Encoding Encoding 256 array copy def
   0 exch { %forall
     dup type /nametype eq { %ifelse
       Encoding 2 index 2 index put
       pop 1 add
     }{ %else
       exch pop
     } ifelse
   } forall
 } if pop
  currentdict dup end end
  /FontName get exch definefont pop
} bind def

/WinAnsiEncoding [
  39/quotesingle 96/grave 128/euro 130/quotesinglbase/florin/quotedblbase
  /ellipsis/dagger/daggerdbl/circumflex/perthousand
  /Scaron/guilsinglleft/OE 145/quoteleft/quoteright
  /quotedblleft/quotedblright/bullet/endash/emdash
  /tilde/trademark/scaron/guilsinglright/oe/dotlessi
  159/Ydieresis 164/currency 166/brokenbar 168/dieresis/copyright
  /ordfeminine 172/logicalnot 174/registered/macron/ring
  177/plusminus/twosuperior/threesuperior/acute/mu
  183/periodcentered/cedilla/onesuperior/ordmasculine
  188/onequarter/onehalf/threequarters 192/Agrave/Aacute
  /Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
  /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
  /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute
  /Ocircumflex/Otilde/Odieresis/multiply/Oslash
  /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
  /germandbls/agrave/aacute/acircumflex/atilde/adieresis
  /aring/ae/ccedilla/egrave/eacute/ecircumflex
  /edieresis/igrave/iacute/icircumflex/idieresis
  /eth/ntilde/ograve/oacute/ocircumflex/otilde
  /odieresis/divide/oslash/ugrave/uacute/ucircumflex
  /udieresis/yacute/thorn/ydieresis
] def
c                   óZ  — e Zd Zd3d„Zd„ Zd4d„Zd„ Zd„ Zd5d„Zd„ Z	d	„ Z
d4d
„Zd„ Zd„ Zg dfd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd5d„Zd„ Zd„ Zd6d„Zd6d„Zd7d„Zd8d„Zd9d„Zd6d„Zd:d„Zd;d„Zd„ Zd „ Z d<d!„Z!d"„ Z"d=d#„Z#d4d$„Z$d%„ Z%d&„ Z&d'„ Z'd(„ Z(d)„ Z)d6d*„Z*d>d+„Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/d4d0„Z0d1„ Z1d4d2„Z2y)?ÚPSCanvasc                 óB  — |\  | _         | _        g }|j                  | _        |j                  | _        d| _        g | _        | j                  j                  | _        d| _	        d x| _
        x| _        x| _        x| _        x| _        x| _        x| _        | _        g | _        | j'                  t(        d   t(        d   «       | j+                  t(        d   «       | j-                  d«       | j/                  d«       | j1                  d«       || _        t4        | _        y )Nr   ú
ÚfontNameÚfontSizeÚstrokeColoré   é   )ÚwidthÚheightr   Ú_xtraState_pushÚpopÚ_xtraState_popÚcommentsÚcodeÚcode_appendÚ_sepÚ_strokeColorÚ
_fillColorÚ
_lineWidthÚ_fontÚ	_fontSizeÚ_lineCapÚ	_lineJoinÚ_colorÚ
_fontsUsedÚsetFontr   ÚsetStrokeColorÚ
setLineCapÚsetLineJoinÚsetLineWidthÚPostScriptLevelr   Ú	_fillMode)ÚselfÚsizerI   Ú	xtraStates       r&   Ú__init__zPSCanvas.__init__[   s  € Ø"&ÑˆŒ
�D”KØˆ	Ø(×/Ñ/ˆÔØ'Ÿm™mˆÔØˆŒØˆŒ	ØŸ9™9×+Ñ+ˆÔØˆŒ	ð ,0ð	0ˆÔð 	0˜DœOð 	0¨d¬oð 	0ØŒJð	0Øœð	0Ø*.¬-ð	0àŒN˜Tœ[àˆŒØ�‰”^ JÑ/´¸zÑ0JÔKØ×ÑœN¨=Ñ9Ô:Ø�‰˜ÔØ×Ñ˜ÔØ×Ñ˜!ÔØ,ˆÔÜ&ˆ�r(   c                 óF   — | j                   r| j                  d|z   «       y y )Nú%)r7   r9   )rK   Úmsgs     r&   ÚcommentzPSCanvas.commentq   s   € Ø�=Š=˜$×*Ñ*¨3¨s©7Õ3ˆ=r(   Nc                 óÆ   — | j                   dk(  r| j                  |||||«       y | j                   dk(  r| j                  |||||«       y t        d| j                   z  «      ‚)Nr1   r0   zUnsupported Postscript Level %s)rI   Ú_drawImageLevel1Ú_drawImageLevel2Ú
ValueError)rK   ÚimageÚx1Úy1r2   r3   s         r&   Ú	drawImagezPSCanvas.drawImaget   sa   € à×Ñ Ò"Ø×!Ñ! %¨¨B°°vÕ>Ø×!Ñ! 1Ò$Ø×!Ñ! %¨¨R°¸Õ?äÐ>À×AUÑAUÑUÓVÐVr(   c                 ó&   — | j                  d«       y )NÚshowpage©r9   ©rK   s    r&   ÚclearzPSCanvas.clear}   s   € Ø×Ñ˜Õ$r(   c                 ó`  — | j                   sy g }| j                   D ]B  }t        |«      }|j                  rŒ|j                  dk(  sŒ+|j	                  d|›d|›d�«       ŒD |rL|j                  dt        «       | j                  j                  d| j                  j                  |«      «       y y )NÚWinAnsiEncodingzWinAnsiEncoding /z /z REr   r1   )
rC   r   Ú_dynamicFontÚencNamer   ÚinsertÚPS_WinAnsiEncodingr8   r:   r    )rK   ÚCr-   ÚfontObjs       r&   Ú_t1_re_encodezPSCanvas._t1_re_encode€   s�   € Ø�Š àˆØŸ™ò 	NˆHÜ˜hÓ'ˆGØ×'Ó'¨G¯O©OÐ=NÓ,NØ—’ºÂ8ÐLÕMð	Nñ Ø�H‰H�QÔ)Ô*Ø�I‰I×Ñ˜Q §	¡	§¡¨qÓ 1Õ2ð r(   c                 óÎ  — t        |d«      st        |d«      }n|}| j                  d   dk7  r| j                  «        | j                  j	                  dd| j
                  | j                  fz  «       | j                  «        |j                  t        | j                  j                  | j                  «      «      «       ||ur"|j                  «        ddlm}  ||dd	¬
«       y y )NÚwriteÚwbéÿÿÿÿr\   r   z‰%%!PS-Adobe-3.0 EPSF-3.0
%%%%BoundingBox: 0 0 %d %d
%%%% Initialization:
/m {moveto} bind def
/l {lineto} bind def
/c {curveto} bind def
)ÚmarkfilenameÚXPR3ÚEPSF)ÚcreatorcodeÚfiletype)ÚhasattrÚopenr8   r_   rd   r2   r3   rh   rj   r
   r:   r    ÚcloseÚreportlab.lib.utilsrm   )rK   ÚfÚ_frm   s       r&   ÚsavezPSCanvas.saveŒ   s¸   € Ü�q˜Ô!Ü�a˜“‰BàˆBØ�9‰9�R‰=˜*Ò$ d§j¡j¤lØ�	‰	×Ñ˜ð ð ‡z�z�$—+‘+Ðñô 	 ð 	×ÑÔØ
�‰”˜$Ÿ)™)Ÿ.™.¨¯©Ó3Ó4Ô5Ø�Q‰;Ø�H‰HŒJÝ8Ù˜ v°vÖ>ð r(   c                 ó^   — | j                  | j                  f«       | j                  d«       y )NÚgsave)r4   Ú_fontCodeLocr9   r^   s    r&   Ú	saveStatezPSCanvas.saveState¢   s'   € Ø×Ñ˜d×/Ñ/Ð1Ô2Ø×Ñ˜Õ!r(   c                 óT   — | j                  d«       | j                  «       \  | _        y )NÚgrestore)r9   r6   r{   r^   s    r&   ÚrestoreStatezPSCanvas.restoreState¦   s$   € Ø×Ñ˜Ô$Ø!×0Ñ0Ó2ÑˆÕr(   c                 ó\   — |xs | j                   }|xs | j                  }t        |||«      S )zlReturn the logical width of the string if it were drawn
        in the current font (defaults to self.font).)r>   r?   r   )rK   r!   Úfontr.   s       r&   r   zPSCanvas.stringWidthª   s/   € ð Ò!�t—z‘zˆØÒ-˜tŸ~™~ˆÜ˜1˜d HÓ-Ð-r(   c                 óZ   — | j                   |k7  r|| _         | j                  d|z  «       y y )Nz%d setlinecap)r@   r9   ©rK   Úvs     r&   rF   zPSCanvas.setLineCap±   s-   € Ø�=‰=˜!ÒØˆDŒMØ×Ñ˜_¨QÑ.Õ/ð r(   c                 óZ   — | j                   |k7  r|| _         | j                  d|z  «       y y )Nz%d setlinejoin)rA   r9   rƒ   s     r&   rG   zPSCanvas.setLineJoin¶   s.   € Ø�>‰>˜1ÒØˆDŒNØ×ÑÐ-¨aÑ/Õ0ð r(   r   c                 ó"  — d}t        |t        t        f«      r| j                  d|›d|›d|›�«       yt        |t        t
        f«      rF|dk\  sJ d«       ‚dj                  t        t        |«      «      }| j                  d|›d|›d|›�«       yy)	z7Two notations.  pass two numbers, or an array and phaseÚsetdashú[ú z] 0 r   zphase is a length in user spacez] N)	Ú
isinstanceÚfloatÚintr9   ÚtupleÚlistr    ÚmapÚstr)rK   ÚarrayÚphaseÚpsoperationÚ	textarrays        r&   ÚsetDashzPSCanvas.setDash»   sz   € ð  ˆÜ�eœU¤3˜KÔ(Ø×Òªu²e¹[ÐIÕJÜ˜œu¤T˜lÔ+Ø˜A’:Ð@Ð@Ó@�:ØŸ™¤¤S¨%£Ó1ˆIØ×ÒªYº¹{ÐKÕLð ,r(   c                 ó4   — || _         | j                  |«       y ©N)r;   ÚsetColor©rK   Úcolors     r&   rE   zPSCanvas.setStrokeColorÆ   s   € Ø!ˆÔØ�‰�eÕr(   c           	      ó\  — | j                   |k7  r�|| _         |r“t        |d«      rI| j                  dt        |j                  |j
                  |j                  |j                  «      z  «       y | j                  dt        |j                  |j                  |j                  «      z  «       y y y )NÚcyanz%s setcmykcolorz%s setrgbcolor)rB   rr   r9   r   rœ   ÚmagentaÚyellowÚblackÚredÚgreenÚbluer™   s     r&   r˜   zPSCanvas.setColorÊ   s�   € Ø�;‰;˜ÒØˆDŒKÙÜ˜5 &Ô)Ø×$Ñ$Ð%6¼ÀÇ
Á
ÈEÏMÉMÐ[`×[gÑ[gÐin×itÑitÓ9uÑ%uÕvà×$Ñ$Ð%5¼¸u¿y¹yÈ%Ï+É+ÐW\×WaÑWaÓ8bÑ%bÕcð	 ð r(   c                 ó4   — || _         | j                  |«       y r—   )r<   r˜   r™   s     r&   ÚsetFillColorzPSCanvas.setFillColorÓ   s   € ØˆŒØ�‰�eÕr(   c                 ó   — || _         y r—   )rJ   rƒ   s     r&   ÚsetFillModezPSCanvas.setFillMode×   s	   € Øˆ�r(   c                 óZ   — || j                   k7  r|| _         | j                  d|z  «       y y )Nz%s setlinewidth)r=   r9   )rK   r2   s     r&   rH   zPSCanvas.setLineWidthÚ   s.   € Ø�D—O‘OÒ#Ø#ˆDŒOØ×ÑÐ.°Ñ6Õ7ð $r(   c                 ó´   — | j                   |k7  s| j                  |k7  r:t        | j                  «      | _        || _         || _        | j                  d«       y y )Nr   )r>   r?   r   r8   r{   r9   )rK   r�   r.   Úleadings       r&   rD   zPSCanvas.setFontß   sJ   € Ø�:‰:�tÒ˜tŸ~™~¨xÒ7Ü # D§I¡I£ˆDÔØˆDŒJØ%ˆDŒNØ×Ñ˜RÕ ð	  8r(   c                 ó°   — | j                   d k7  rG| j                  | j                   «       | j                  t        ||«      ›dt        ||«      ›d�«       y y )Nz m z	 l stroke)r;   r˜   r9   r   ©rK   rX   rY   Úx2Úy2s        r&   ÚlinezPSCanvas.lineæ   sF   € Ø×Ñ Ò$Ø�M‰M˜$×+Ñ+Ô,Ø×Ñ´6¸"¸bµ>Ä6È"ÈbÅ>ÐRÕSð %r(   c                 óR   — 	 t        |«      S #  t        dt        |«      z  «      ‚xY w)z{
        return a copy of string s with special characters in postscript strings
        escaped with backslashes.
        zcannot escape %s)r'   rV   Úascii)rK   r!   s     r&   Ú_escapezPSCanvas._escapeë   s.   € ð
	<Ü$ QÓ'Ð'øð	<ÜÐ/´%¸³(Ñ:Ó;Ð;ús   ‚
 �&c                 ó¸  — |dk(  ry t        ||«      }| j                  |«      }|dk(  r3| j                  | j                  «       | j	                  |›d|›d�«       y |dk(  xs |dk(  xs |dk(  xs |dk(  }|dk(  xs |dk(  xs |d	k(  xs |dk(  }|dk\  }|r’|r�| j                  €d
}	nd}	| j                  | j                  «       | j	                  |›d|›d|	›�«       | j	                  d«       | j
                  �-| j                  | j
                  «       | j	                  d«       y y | j                  | j
                  «       | j	                  |›d|›d�«       y )Né   r   z m (z) show r0   é   é   r1   é   r   zfill z) true charpath gsave z	grestore zstroke z) true charpath stroke )r   r±   r˜   r<   r9   r;   )
rK   ÚxÚyr!   ÚtextRenderModeÚxyÚfillÚstrokeÚ	addToClipÚops
             r&   Ú_textOutzPSCanvas._textOutõ   sS  € Ø˜1Ò˜fÜ�A�a‹[ˆØ�L‰L˜‹Oˆà˜1ÒØ�M‰M˜$Ÿ/™/Ô*Ø×Ñ²"²QÐ7Ô8Øà˜qÑ Ò_ N°AÑ$5Ò_¸ÈÑ9JÒ_ÈnÐ^_ÑN_ˆØ Ñ"Òa n°aÑ&7Òa¸>È1Ñ;LÒaÐP^Ð`aÑPaˆØ" AÑ%ˆ	Ù‘FØ�‰Ð&Ø‘à�Ø—‘˜dŸo™oÔ.Ø×ÑÂ2ÂaÉÐKÔLØ×Ñ˜[Ô)Ø× Ñ Ð,Ø—‘˜d×/Ñ/Ô0Ø× Ñ  Õ+ð -ð �M‰M˜$×+Ñ+Ô,Ø×ÑÂ"ÂQÐGÕHr(   c                 ó<  — |}| j                   }| j                  }| j                  }	| j                  }
t	        |«      s	 |j                  d«      }t        ||g|j                  z   «      D ]š  \  }}||k7  rNt        |j                  j                  «      } |d|›d	t        |«      ›d
�«       ||	vr|	j                  |«       |}| j                  ||||«       ||j!                  |j                  |j"                  «      |«      z  }Œœ ||k7  r.d | _        | j'                  |j                  j                  |«       y y # t        $ rW}|j                  dd \  }}t        |j                  d d |j                  d   ›d||dz
  | ›d||| ›d|||dz    ›�fz   Ž ‚d }~ww xY w)NÚutf8r0   r´   r,   é
   z-->z<--r   ú) findfont ú scalefont setfont)r9   r?   rC   r±   r   ÚdecodeÚUnicodeDecodeErrorÚargsr   ÚsubstitutionFontsr   ÚfaceÚnamer   r   r¿   r   rc   r>   rD   )rK   rg   r·   r¸   r!   r¹   Úfcr9   r.   Ú	fontsUsedÚescapeÚeÚiÚjrv   ÚtÚpsNames                    r&   Ú_issueT1StringzPSCanvas._issueT1String  s™  € ØˆØ×&Ñ&ˆØ—>‘>ˆØ—O‘Oˆ	Ø—‘ˆÜ˜Œ|ðwØ—H‘H˜VÓ$�ô
 ˜q ' ¨7×+DÑ+DÑ!DÓEò 	=‰DˆAˆqØ�"ŠuÜ! !§&¡&§+¡+Ó.�ÚÂFÌ6ÐRZÕK[Ð\Ô]Ø Ñ*Ø×$Ñ$ VÔ,Ø�Ø�M‰M˜!˜A˜a Ô/Ø�—‘˜qŸx™x¨¯	©	Ó2°8Ó<Ñ<‰Að	=ð �BŠ;ØˆDŒJØ�L‰L˜Ÿ™×*Ñ*¨8Õ4ð øô &ò wØ—f‘f˜Q˜q�k‘��!Ü(¨1¯6©6°"°1¨:ÈQÏVÉVÐTUËYÐWXÐYZÐ[]ÑY]Ð^_ÒW`ÐabÐcdÐefÒagÐhiÐjkÐlmÐnpÑlpÑhqÐ7rÐ6tÑ+tÐvÐvûðwús   ¿D; Ä;	FÅAFÆFc                 ó†  — |dv }|dv }|s|�r´|dk7  ret        || j                  | j                  «      }	|dk(  r||	z  }n9|dk(  r	||	dz  z  }n+|dk(  r&|t        |||	| j                  | j                  «      z  }t	        | j                  «      }
| j
                  | j                     s{t        |
j                  j                  «      }d|›d	t        | j                  «      ›d
�| j
                  | j                  <   || j                  vr| j                  j                  |«       |dk7  r/| j                  dt        ||«      ›dt        |«      ›d�«       dx}}| j                  }|
j                  r| j!                  ||||¬«       n| j#                  |
||||¬«       | j%                  |«       |dk7  r| j                  d«       y y y )N)r   r0   r´   rµ   )r1   r0   r¶   rµ   ÚleftÚendÚmiddleç       @Únumericr   rÃ   rÄ   r   zgsave z translate z rotate©r¹   r~   )r   r>   r?   ÚnumericXShiftr   r8   r{   r   rÉ   rÊ   r   rC   r   r9   rB   rb   r¿   rÓ   r˜   )rK   r·   r¸   r!   ÚangleÚtext_anchorr¹   ÚneedFillÚ
needStrokeÚtextLenrg   rÒ   ÚoldColors                r&   Ú
drawStringzPSCanvas.drawString+  s–  € Ø! YÐ.ˆØ# yÐ0ˆ
Ù’zØ˜FÒ"Ü% a¨¯©°D·N±NÓC�Ø Ò%Ø˜‘L‘AØ  (Ò*Ø˜ ™‘O‘AØ  )Ò+Øœ {°1°W¸T¿Z¹ZÈÏÉÓWÑW�AÜ˜dŸj™jÓ)ˆGØ—9‘9˜T×.Ñ.Ò/Ü! '§,¡,×"3Ñ"3Ó4‘ÚU[Ô\bÐcg×cqÑcqÕ\rÐ-s�—	‘	˜$×+Ñ+Ñ,Ø §¡Ñ0Ø—O‘O×*Ñ*¨6Ô2Ø�aŠxØ× Ò Ä6È!ÈAÅ;ÌvÐV[Í}Ð!]Ô^Ø�	��AØ—{‘{ˆHØ×#Ò#Ø—‘˜a  A°n�ÕEà×#Ñ# G¨A¨a°À.Ð#ÔQØ�M‰M˜(Ô#Ø�aŠxØ× Ñ  Õ,ð ð1 "r(   c                 ó0   — | j                  |||||¬«       y ©N)rÝ   r¹   ©râ   )rK   r·   r¸   ÚtextrÝ   r¹   s         r&   ÚdrawCentredStringzPSCanvas.drawCentredStringI  s   € Ø�O‰O˜A˜a °+ÈnˆOÕ]r(   c                 ó0   — | j                  |||||¬«       y rä   rå   )rK   ræ   r·   r¸   rÝ   r¹   s         r&   ÚdrawRightStringzPSCanvas.drawRightStringL  s   € Ø�‰˜˜Q˜q¨[ÈˆÕXr(   c
           	      ó\  — d}
t        ||«      t        ||||||«      f}| j                  d k7  r2| j                  | j                  «       | j                  |
|z  dz   «       | j                  d k7  r>| j                  | j                  «       | j                  |
|z  |	xr dxs dz   dz   «       y y )Nz%s m %s curvetoz eofillz
 closepathr   z stroke)r   r<   r˜   r9   r;   )rK   rX   rY   r¬   r­   Úx3Úy3Úx4Úy4ÚclosedÚcodelineÚdatas               r&   Ú	drawCurvezPSCanvas.drawCurveO  s­   € Ø$ˆÜ�r˜2“¤ r¨2¨r°2°r¸2Ó >Ð?ˆØ�?‰?˜dÒ"Ø�M‰M˜$Ÿ/™/Ô*Ø×Ñ˜h¨™o°Ñ:Ô;Ø×Ñ Ò$Ø�M‰M˜$×+Ñ+Ô,Ø×Ñ˜h¨™oØ &Ò 7¨<Ò>¸Bñ@à'ñ(õ )ð %r(   c                 ó¦   — t        ||«      t        ||«      }}t        ||«      t        ||«      }}| j                  ||f||f||f||ffd||¬«       y)z)Draw a rectangle between x1,y1, and x2,y2r1   )rï   r¼   r»   N)ÚminÚmaxÚpolygon)rK   rX   rY   r¬   r­   r¼   r»   s          r&   ÚrectzPSCanvas.rect]  s\   € ô �R˜“œS  R›[ˆBˆÜ�R˜“œS  R›[ˆBˆØ�‰�r˜"�g˜r "˜g r¨" g¨r°"¨gÐ6¸qÈÐX\ˆÕ]r(   c           	      óx  — t        ||«      t        ||«      }}t        ||«      t        ||«      }}d}dg}|j                  }	 |	|||z   ||z   || ddfz  «        |	|||z   ||z
  || ddfz  «        |	|||z
  ||z
  || ddfz  «        |	|||z
  ||z   || ddfz  «        |	d«       | j                  |«       y	)
z³Draw a rounded rectangle between x1,y1, and x2,y2,
        with corners inset as ellipses with x radius rx and y radius ry.
        These should have x1<x2, y1<y2, rx>0, and ry>0.zJmatrix currentmatrix %s %s translate %s %s scale 0 0 1 %s %s arc setmatrixÚnewpathéZ   é´   i  éh  r   Ú	closepathN)rô   rõ   r   Ú_fillAndStroke)
rK   rX   rY   r¬   r­   ÚrxÚryÚellipsePathÚrrÚas
             r&   Ú	roundRectzPSCanvas.roundRecte  sí   € ô �R˜“œS  R›[ˆBˆÜ�R˜“œS  R›[ˆBˆð cˆð ˆ[ˆØ�I‰Iˆá	ˆ+˜˜B™  2¡ r¨B¨3°°CÐ8Ñ
8Ô9Ù	ˆ+˜˜B™  2¡ r¨B¨3°°SÐ9Ñ
9Ô:Ù	ˆ+˜˜B™  2¡ r¨B¨3°°SÐ9Ñ
9Ô:Ù	ˆ+˜˜B™  2¡ r¨B¨3°°BÐ7Ñ
7Ô9Ù	ˆ+Œà×Ñ˜BÕr(   c                 ó,   — | j                  ||||«       y)zqDraw an orthogonal ellipse inscribed within the rectangle x1,y1,x2,y2.
        These should have x1<x2 and y1<y2.N)ÚdrawArcr«   s        r&   ÚellipsezPSCanvas.ellipse�  s   € ð 	�‰�R˜˜B˜rÕ"r(   c                 óD   — | j                  ||z
  ||z
  ||z   ||z   «       y r—   )r  )rK   ÚxcÚycÚrs       r&   ÚcirclezPSCanvas.circle‡  s$   € Ø�‰�R˜‘T˜"˜Q™$  1¡ R¨¡TÕ*r(   c                 óŽ  — ||z   dz  ||z   dz  }	}||z
  dz  ||z
  dz  }}
| j                  ||||||«      }t        j                  |z  dz  }t        j                  |z  dz  }||z   }d}| j                  dk7  r‘| j	                  | j                  «       | j                  |«       d}| j                  dk7  r| j                  d«       | j                  ||	«       | j                  d«       | j                  dk7  r| j                  d«       | j                  dk7  r­| j	                  | j                  «       ||
t        j                  |«      z  z   |	|t        j                  |«      z  z   }}|s| j                  |«       |r5| j                  ||	«       | j                  ||«       | j                  d	«       | j                  d
«       yy)zÿDraw a partial ellipse inscribed within the rectangle x1,y1,x2,y2,
        starting at startAng degrees and covering extent degrees.   Angles
        start with 0 to the right (+x) and increase counter-clockwise.
        These should have x1<x2 and y1<y2.rØ   g     €f@r   Nr1   rz   Úeofillr~   rý   r¼   )
Ú_genArcCodeÚmathÚpir<   r˜   r9   r;   ÚlineToÚcosÚsin)rK   rX   rY   r¬   r­   ÚstartAngÚextentÚ
fromcenterÚcxÚcyrÿ   r   rð   ÚstartAngleRadiansÚextentRadiansÚendAngleRadiansÚcodelineAppendedÚstartxÚstartys                      r&   r  zPSCanvas.drawArcŠ  s®  € ð �R‘%˜‘˜r "™u c™kˆBˆØ�R‘%˜‘˜r "™u c™kˆBˆà×#Ñ# B¨¨B°°H¸fÓEˆä ŸG™G HÑ,¨UÑ2ÐÜŸ™ ™ uÑ,ˆØ+¨mÑ;ˆàÐð �?‰?˜dÒ"Ø�M‰M˜$Ÿ/™/Ô*Ø×Ñ˜XÔ&Ø ÐØ× Ñ  $Ò&¨×(8Ñ(8¸Ô(AØ�K‰K˜˜2ÔØ×Ñ˜XÔ&Ø× Ñ  $Ò&¨×(8Ñ(8¸Ô(Dð ×Ñ Ò$à�M‰M˜$×+Ñ+Ô,Ø " 2¤d§h¡hÐ/@Ó&AÑ#AÑ AÀ2ÀbÌÏÉÐRcÓIdÑFdÑCd�VˆVÙ#Ø× Ñ  Ô*Ùà—‘˜B˜rÔ"Ø—‘˜F FÔ+Ø× Ñ  Ô-Ø×Ñ˜XÕ&ð %r(   c                 ó    — t        ||z
  dz  «      }t        ||z
  dz  «      }||z   dz  ||z   dz  }
}	d}|dk\  rd}nd}|	|
|||||z   |f}||z  S )zOCalculate the path for an arc inscribed in rectangle defined by (x1,y1),(x2,y2)rØ   zImatrix currentmatrix %s %s translate %s %s scale 0 0 1 %s %s %s setmatrixr   ÚarcÚarcn)Úabs)rK   rX   rY   r¬   r­   r  r  ÚxScaleÚyScaler·   r¸   rð   r!  rñ   s                 r&   r  zPSCanvas._genArcCodeµ  sy   € ô �b˜‘e˜S‘[Ó!ˆÜ�b˜‘e˜S‘[Ó!ˆà�2‘�s‰{˜R ™U C™Kˆ1ˆà^ˆà�QŠ;Ø‰CàˆCØ�!�V˜V X¨x¸©ÀÐDˆà˜$‰Ðr(   c                 óø   — t        |«      dk\  sJ d«       ‚|d   }|dd  }g }|j                  } |dt        |«      z  «       |D ]  } |dt        |«      z  «       Œ |r |d«       | j                  |||¬«       y )	Nr0   z"Polygon must have 2 or more pointsr   r1   ú%s mú%s lrý   )r¼   r»   )r   r   r   rþ   )	rK   Úprï   r¼   r»   ÚstartÚpolyr  Úpoints	            r&   rö   zPSCanvas.polygonÇ  sŠ   € Ü�1‹v˜Š{Ð@Ð@Ó@ˆ{à�!‘ˆØˆaˆbˆEˆàˆØ�K‰KˆÙ	ˆ&”6˜%“=Ñ
 Ô!Øò 	&ˆEÙˆf”v˜e“}Ñ$Õ%ð	&áÙˆkŒNà×Ñ˜D¨°DÐÕ9r(   c           	      óÈ   — | j                   d k7  rS| j                  | j                   «       d}|D ]0  }| j                  |t        |d   «      t        |d   «      fz  «       Œ2 y y )Nz%s m %s l stroker   r1   )r;   Ú	_setColorr9   r   )rK   ÚlineListrš   r2   rð   r®   s         r&   ÚlineszPSCanvas.lines×  se   € Ø×Ñ Ò$Ø�N‰N˜4×,Ñ,Ô-Ø)ˆHØ ò O�Ø× Ñ  ¬V°D¸±G«_¼VÀDÈÁG»_Ð,MÑ!MÕNñOð %r(   c                 ó@   — | j                  dt        ||«      z  «       y )Nr'  ©r9   r   ©rK   r·   r¸   s      r&   ÚmoveTozPSCanvas.moveToÞ  ó   € Ø×Ñ˜¤&¨¨A£,Ñ.Õ/r(   c                 ó@   — | j                  dt        ||«      z  «       y )Nr(  r2  r3  s      r&   r  zPSCanvas.lineToá  r5  r(   c                 óH   — | j                  dt        ||||||«      z  «       y )Nz%s cr2  )rK   rX   rY   r¬   r­   rë   rì   s          r&   ÚcurveTozPSCanvas.curveToä  s$   € Ø×Ñ˜¤&¨¨B¨r°"°R¸Ó";Ñ;Õ<r(   c                 ó&   — | j                  d«       y )Nrý   r]   r^   s    r&   Ú	closePathzPSCanvas.closePathç  s   € Ø×Ñ˜Õ%r(   c                 ó&  — t        |«      dk\  sJ d«       ‚| j                  d k7  rm| j                  | j                  «       | j                  |d   d   |d   d   «       |dd  D ]  }| j	                  |d   |d   «       Œ | j                  d«       y y )Nr1   z#Polyline must have 1 or more pointsr   r¼   )r   r;   r˜   r4  r  r9   )rK   r)  rÑ   s      r&   ÚpolyLinezPSCanvas.polyLineê  s”   € Ü�1‹v˜Š{ÐAÐAÓAˆ{Ø×Ñ Ò$Ø�M‰M˜$×+Ñ+Ô,Ø�K‰K˜˜!™˜Q™  1¡ a¡Ô)Ø�q�r�Uò (�Ø—‘˜A˜a™D ! A¡$Õ'ð(à×Ñ˜XÕ&ð %r(   c                 ó`  — g }|j                   }d}|D ]þ  }|d   }t        |dd  «      }|t        k(  rK|rd} |dt        |d d «      z  «       n |dt        |d d «      z  «        |dt        |dd  «      z  «       Œj|t        k(  r+d}|d d \  }	}
}}}} || j                  |	|
||||«      «       Œž|t        k(  rK|rd} |dt        |d d «      z  «       n |dt        |d d «      z  «        |dt        |dd  «      z  «       Œòt        d|z   «      ‚ |r |d	«       | j                  |«       y )
Nr1   r   r'  r0   r(  rµ   z
%s curvetozunknown figure operator: rý   )	r   rŽ   Ú
figureLiner   Ú	figureArcr  ÚfigureCurveÚ	TypeErrorrþ   )rK   ÚpartListrï   Ú
figureCoder  ÚfirstÚpartr¾   rÇ   rX   rY   r¬   r­   Ú
startAngler  s                  r&   Ú
drawFigurezPSCanvas.drawFigureó  s\  € Øˆ
Ø×ÑˆØˆàò 	@ˆDØ�a‘ˆBÜ˜˜Q˜R˜“>ˆDà”ZÒÙØ�EÙ�fœv d¨2¨A hÓ/Ñ/Õ0á�fœv d¨2¨A hÓ/Ñ/Ô0Ù�&œ6 $ q r (Ó+Ñ+Õ,à”y’Ø�Ø04°R°a°Ñ-��2�b˜˜J vÙ�$×"Ñ" 2 b¨¨B¨z¸&ÓAÕBà”{Ò"ÙØ�EÙ�fœv d¨2¨A hÓ/Ñ/Õ0á�fœv d¨2¨A hÓ/Ñ/Ô0Ù�,¤¨¨Q¨R¨Ó!1Ñ1Õ2äÐ ;¸BÑ >Ó?Ð?ð3	@ñ6 ÙˆkŒNØ×Ñ˜JÕ'r(   c                 ó^  — | j                   xr |}| j                  xr |}|s|s|�r| j                  j                  |«       |ro|€| j                  }|s|r| j                  d«       | j                  | j                   «       | j                  |t        k(  rdnd«       |s|r| j                  d«       |rR|r| j                  d«       | j                  | j                  «       | j                  d«       |r| j                  d«       |r#| j                  d«       | j                  d«       y y y )Nrz   r  r»   r~   r¼   Úcliprù   )r<   r;   r8   ÚextendrJ   r9   r˜   r   )rK   r8   rI  r»   r¼   ÚfillModes         r&   rþ   zPSCanvas._fillAndStroke  s  € Ø�‰Ò' 4ˆØ×"Ñ"Ò- vˆÙ‘6šTØ�I‰I×Ñ˜TÔ"ÙØÐ#Ø#Ÿ~™~�HÙ™T 4×#3Ñ#3°GÔ#<Ø—‘˜dŸo™oÔ.Ø× Ñ ¨X´}Ò-D¡È&ÔQÙ™T 4×#3Ñ#3°JÔ#?ÙÙ˜×)Ñ)¨'Ô2Ø—‘˜d×/Ñ/Ô0Ø× Ñ  Ô*Ù˜×)Ñ)¨*Ô5ÙØ× Ñ  Ô(Ø× Ñ  Õ+ð ð "r(   c                 ó@   — | j                  dt        ||«      z  «       y )Nz%s translater2  r3  s      r&   Ú	translatezPSCanvas.translate,  s   € Ø×Ñ˜¬&°°1«+Ñ5Õ6r(   c                 ó@   — | j                  dt        ||«      z  «       y )Nz%s scaler2  r3  s      r&   ÚscalezPSCanvas.scale/  s   € Ø×Ñ˜¤f¨Q¨q£kÑ1Õ2r(   c                 óH   — | j                  dt        ||||||«      z  «       y )Nz[%s] concatr2  )rK   r  Úbr%   ÚdrÎ   rv   s          r&   Ú	transformzPSCanvas.transform2  s$   € Ø×Ñ˜¬°°!°A°a¸¸!Ó)<Ñ<Õ=r(   c                 ó"   — ||c| _         | _        y)z1if this is used we're probably in the wrong worldN)r2   r3   )rK   ÚwÚhs      r&   Ú_drawTimeResizezPSCanvas._drawTimeResize5  s   € à"# QÐˆŒ
�D•Kr(   c                 ót  — d}|j                  d«      }|j                  \  }}	|s|}|s|	}| j                  j                  d|›d|›d�|›d|›d�d|z  g«       | j                  j                  |›d|	›d|›�d|›dd	›dd	›d|	 ›dd	›d|	›d
�ddg«        t	        |d«      r|j
                  n|j                  «       }
| j                  |
«      }t        |«      }|j                  d«      }|dk7  r(| j                  |«       |j                  d«      }|dk7  rŒ(| j                  d«       | j                  d«       y )Né   ÚRGBrz   r‰   ú
 translateú scalez/scanline %d 3 mul string defrˆ   r   ú]z2{ currentfile scanline readhexstring pop } false 3zcolorimage ÚtobyteséN   r   z% end of image datar~   )ÚconvertrL   r8   rJ  rr   r^  ÚtostringÚ_AsciiHexEncoder   Úreadr9   )rK   rW   rX   rY   r2   r3   Úcomponent_depthÚmyimageÚimgwidthÚ	imgheightÚrawimageÚhex_encodedÚ	outstreamÚdatalines                 r&   rT   zPSCanvas._drawImageLevel19  s;  € ð ˆØ—-‘- Ó&ˆØ%Ÿl™lÑˆ�)ÙØˆEÙØˆFð& 	�	‰	×ÑØÚ!#¢BÐ'Ú"¢6Ð*Ø+¨hÑ6ð	ô 	ð 	�	‰	×ÑÚ"¢I©Ñ?Ú%-ªq²!°i²ZÂÂIÐNØ@Øð	ô 	ð X¤w¨w°yÔ'A�G—O’OÀw×GWÑGWÓZˆØ×*Ñ*¨8Ó4ˆô ˜[Ó)ˆ	à—>‘> "Ó%ˆØ˜"ŠnØ×Ñ˜XÔ&Ø—n‘n RÓ(ˆHð ˜"‹nð 	×ÑÐ.Ô/Ø×Ñ˜Õ$r(   c                 ó�   — t        «       }t        |«      D ]  }|j                  dt        |«      z  «       Œ! |j	                  «       S )zHelper function used by imagesz%02x)r   r   rj   r	   Úgetvalue)rK   ÚinputÚoutputÚchars       r&   rb  zPSCanvas._AsciiHexEncodew  s>   € ä“ˆÜ˜E“Nò 	2ˆDØ�L‰L˜¤(¨4£.Ñ0Õ1ð	2à�‰Ó Ð r(   c           	      ó¤  — |j                   dk(  rd}d}|}n:|j                   dk(  r|j                  d«      }d}|}n|j                  d«      }d}d}|j                  \  }	}
|s|	}|s|
}| j                  j	                  d|›d|›d	�|›d|›d
�g«       |dk(  r| j                  d«       n|dk(  r| j                  d«       | j                  d|	|
fz  «       |dk(  r| j                  d«       |dk(  r| j                  d«       | j                  j	                  d|	›d|
 ›d|
›d�dddg«        t        |d«      r|j                  n|j                  «       }| j                  |«      }t        |«      }|j                  d«      }|dk7  r(| j                  |«       |j                  d«      }|dk7  rŒ(| j                  d«       | j                  d«       y)z"At present we're handling only PILÚLrY  r1   Ú1rZ  r³   rz   r‰   r[  r\  z/DeviceRGB setcolorspacez/DeviceGray setcolorspacezY
<<
/ImageType 1
/Width %d /Height %d  %% dimensions of source image
/BitsPerComponent %dz/Decode [0 1]z6/Decode [0 1 0 1 0 1]  %% decode color values normallyz/ImageMatrix [z 0 0 z 0 r]  z./DataSource currentfile /ASCIIHexDecode filterz>> % End image dictionaryrW   r^  r_  r   z> % end of image datar~   N)Úmoder`  rL   r8   rJ  r9   rr   r^  ra  rb  r   rc  )rK   rW   rX   rY   r2   r3   ÚimBitsPerComponentÚimNumComponentsre  ÚimwidthÚimheightrh  ri  rj  rk  s                  r&   rU   zPSCanvas._drawImageLevel2~  sí  € ð �:‰:�sŠ?Ø!"ÐØˆOØ‰GØ�Z‰Z˜3ÒØ—m‘m CÓ(ˆGØˆOØ‰Gà—m‘m EÓ*ˆGØˆOØ!"Ðà#ŸL™LÑˆ�ÙØˆEÙØˆFØ�	‰	×ÑØÚ!#¢BÐ'Ú"¢6Ð*ð,ô 	-ð
 ˜aÒØ×ÑÐ7Õ8Ø Ò!Ø×ÑÐ8Ô9à×Ñð ð # HÐ.@ÐAñ	Bô 	Dð ˜aÒØ×Ñ˜_Ô-Ø˜aÒØ×ÑÐUÔVà�	‰	×ÒºwÈÊ	ÒS[Ð\ØLØ7Ø#ð%ô 	&ð
 X¤w¨w°yÔ'A�G—O’OÀw×GWÑGWÓZˆØ×*Ñ*¨8Ó4ˆô ˜[Ó)ˆ	à—>‘> "Ó%ˆØ˜"ŠnØ×Ñ˜XÔ&Ø—n‘n RÓ(ˆHð ˜"‹nð 	×ÑÐ0Ô1Ø×Ñ˜Õ$r(   ))é,  ry  r0   )NNr—   )r   )r   rÕ   r   )r×   r   )rÖ   r   )r1   r1   )rY  rY  )r   rü   r   )r   r1   r1   )r   r1   r1   N)3Ú__name__Ú
__module__Ú__qualname__rN   rR   rZ   r_   rh   rx   r|   r   r   rF   rG   r•   rE   r˜   r¤   r¦   rH   rD   r®   r±   r¿   rÓ   râ   rç   ré   rò   r÷   r  r  r  r  r  rö   r0  r4  r  r8  r:  r<  rG  rþ   rM  rO  rS  rW  rT   rb  rU   © r(   r&   r*   r*   Z   s  „ ó'ò,4óWò%ò
3ó?ò,"ò3ó.ò0ò
1ð
  aó 	Mòòdòòò8ó
!òTò
<óIó85ó4-ó<^óYó
)ó^ó ò8#ò+ó)'òVó$:ó Oò0ò0ò=ò&ò'ó"(óH,ò*7ò3ò>ò'ó;%ò|!ô:%r(   r*   )Ú*c                 óV   — t        «       }|j                  t        | «      ||||¬«       y)z
As it says©ÚshowBoundaryN)Ú_PSRendererÚdrawr   )ÚdrawingÚcanvasr·   r¸   r�  r"   s         r&   rƒ  rƒ  Å  s%   € ä‹€AØ‡F�FÔ˜wÓ'¨°°AÀL€FÕQr(   c                 ó~   — g }|j                   }t        dt        | «      d«      D ]  } || |   | |dz      f«       Œ |S )zo
    given a list of coordinates [x0, y0, x1, y1....]
    produce a list of points [(x0,y0), (y1,y0),....]
    r   r0   r1   )r   Úranger   )rr  ÚPr  rÏ   s       r&   Ú_pointsFromListr‰  Ê  sK   € ð
 	€AØ	�‰€AÜ�1”S˜“V˜AÓò ˆÙ	ˆ1ˆQ‰4��!�A‘#‘ˆ-Õðà€Hr(   c                   ón   — e Zd ZdZd„ Zddddddd	d
œZd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)r‚  z±This draws onto a EPS document.  It needs to be a class
    rather than a function, as some EPS-specific state tracking is
    needed outside of the state info in the SVG model.c                 óþ  — | j                   j                  d|z  «       | j                   j                  }t        |t        «      r|j
                  s| j                   j                  «        t        |«      }| j                  j                  |«       | j                  |i «       | j                  |«       | j                  j                  «       }t        |t        «      r|j
                  s| j                   j                  «        | j                   j                  d|z  «       || j                   _        |j                  «       D ]8  \  }}|| j                  v sŒt!        | j                   | j                  |   |«       Œ: y)zEThis is the recursive method called for each node
        in the treezbegin node %rzend node %rN)Ú_canvasrR   rB   rŠ   ÚPathÚ
isClipPathr|   r   Ú_trackerÚpushÚapplyStateChangesÚdrawNodeDispatcherr5   r   ÚitemsÚ	_restoresÚsetattr)rK   Únoderš   ÚdeltasÚrDeltasÚkr„   s          r&   ÚdrawNodez_PSRenderer.drawNodeÚ  s  € ð 	�‰×Ñ˜_¨TÑ1Ô2Ø—‘×#Ñ#ˆÜ˜4¤Ô&¨4¯?ª?Ø�L‰L×"Ñ"Ô$ô ˜tÓ$ˆØ�‰×Ñ˜6Ô"Ø×Ñ˜v rÔ*ð 	×Ñ Ô%à—-‘-×#Ñ#Ó%ˆÜ˜4¤Ô&¨4¯?ª?Ø�L‰L×%Ñ%Ô'Ø�‰×Ñ˜]¨4Ñ/Ô0Ø#ˆ�‰Ôð —M‘M“Oò 	:‰DˆAˆqØ�D—N‘NÒ"Ü˜Ÿ™ T§^¡^°AÑ%6°qÕ9ñ	:r(   r;   r=   r@   rA   r<   r>   r?   )r/   ÚstrokeWidthÚstrokeLineCapÚstrokeLineJoinÚ	fillColorr-   r.   c                 óö  — |j                   |j                  cxk(  rdk(  rdn na| j                  j                  |j                  |j
                  |j                  |j                  z   |j
                  |j                  z   «       y | j                  j                  |j                  |j
                  |j                  |j                  z   |j
                  |j                  z   |j                   |j                  «       y )Nr   )	rÿ   r   rŒ  r÷   r·   r¸   r2   r3   r  )rK   r÷   s     r&   ÚdrawRectz_PSRenderer.drawRectü  s¡   € Ø�7‰7�d—g‘gÔ" Õ"à�L‰L×ÑØ—F‘F˜DŸF™FØ—F‘F˜4Ÿ:™:Ñ% t§v¡v¨d¯k©kÑ'9õ;ð �L‰L×"Ñ"Ø—F‘F˜DŸF™FØ—F‘F˜4Ÿ:™:Ñ% t§v¡v¨d¯k©kÑ'9¸4¿7¹7ÀDÇGÁGõr(   c                 ó¾   — | j                   j                  rG| j                   j                  |j                  |j                  |j
                  |j                  «       y y r—   )rŒ  r;   r®   rX   rY   r¬   r­   )rK   r®   s     r&   ÚdrawLinez_PSRenderer.drawLine
  s<   € Ø�<‰<×$Ò$Ø�L‰L×Ñ˜dŸg™g t§w¡w°·±¸¿¹ÕAð %r(   c                 óz   — | j                   j                  |j                  |j                  |j                  «       y r—   )rŒ  r  r  r  r  )rK   r  s     r&   Ú
drawCirclez_PSRenderer.drawCircle  s$   € Ø�‰×Ñ˜VŸY™Y¨¯	©	°6·8±8Õ<r(   c           	      óÆ  — |j                  «       \  }}}|dk(  s|€ƒ|dk(  s|€||j                  sp|j                  }|j                  }|j                  }|j
                  }|j                  }	||z
  }
| j                  j                  ||	z
  ||z
  ||	z   ||z   ||
d¬«       y |j                  «       }t        |t        «      r| j                  |«       y | j                  |«       y )Nr   r1   )r  )Ú
_xtraRadiiÚannularÚstartangledegreesÚendangledegreesÚcenterxÚcenteryÚradiusrŒ  r  Ú	asPolygonrŠ   r�  ÚdrawPathÚdrawPolygon)rK   ÚwedgeÚyradiusÚradius1Úyradius1r¨  r©  rª  r«  r¬  r  rˆ  s               r&   Ú	drawWedgez_PSRenderer.drawWedge  sÞ   € Ø%*×%5Ñ%5Ó%7Ñ"ˆ�˜(Ø�QŠJ˜'˜/°¸!²¸xÐ?OÐY^×YfÒYfØ %× 7Ñ 7ÐØ#×3Ñ3ˆOØ—]‘]ˆGØ—m‘mˆGØ—\‘\ˆFØ$Ð'8Ñ8ˆFØ�L‰L× Ñ  ¨¡°¸±À'È&Á.ÐRYÐZaÑRaØ! 6°að !õ 9ð —‘Ó!ˆAÜ˜!œDÔ!Ø—‘˜aÕ à× Ñ  Õ#r(   c                 óŽ   — | j                   j                  r/| j                   j                  t        |j                  «      «       y y r—   )rŒ  r;   r<  r‰  Úpoints©rK   r)  s     r&   ÚdrawPolyLinez_PSRenderer.drawPolyLine#  s/   € Ø�<‰<×$Ò$Ø�L‰L×!Ñ!¤/°!·(±(Ó";Õ<ð %r(   c                 ó  — |j                   |j                  z
  }|j                   |j                  z   }|j                  |j                  z
  }|j                  |j                  z   }| j                  j                  ||||«       y r—   )r  rÿ   r  r   rŒ  r  )rK   r  rX   r¬   rY   r­   s         r&   ÚdrawEllipsez_PSRenderer.drawEllipse'  sb   € à�Z‰Z˜'Ÿ*™*Ñ$ˆØ�Z‰Z˜'Ÿ*™*Ñ$ˆØ�Z‰Z˜'Ÿ*™*Ñ$ˆØ�Z‰Z˜'Ÿ*™*Ñ$ˆØ�‰×Ñ˜R  2 bÕ)r(   c                 ód   — | j                   j                  t        |j                  «      d¬«       y )Nr1   )rï   )rŒ  rö   r‰  r¶  r·  s     r&   r¯  z_PSRenderer.drawPolygon/  s"   € Ø�‰×Ñœ_¨Q¯X©XÓ6¸qÐÕAr(   c           	      óä  — t        |dd«      }| j                  j                  s|rË| j                  j	                  «       }|d   |j
                  |j                  |j                  f\  }}}}|dvra|d   |d   }	}t        |||	«      }
|dk(  r||
z  }n?|dk(  r	||
d	z  z  }n1|d
k(  r|t        |||
||	d¬«      z  }nt        dt        |«      z   «      ‚| j                  j                  ||||¬«       y y )Nr¹   r   Ú
textAnchor)r*  Ú	inheritedr-   r.   rÖ   r×   r0   rÙ   Úwinansi)Úencodingzbad value for text_anchor rÚ   )ÚgetattrrŒ  r<   r�  ÚgetStater·   r¸   ræ   r   rÛ   rV   r�   râ   )rK   Ú	stringObjr¹   ÚSrÝ   r·   r¸   ræ   r�   r.   rà   s              r&   râ   z_PSRenderer.drawString2  sÿ   € Ü  Ð+;¸AÓ>ˆØ�<‰<×"Ò"¡nØ—‘×&Ñ&Ó(ˆAØ&'¨¡o°y·{±{À9Ç;Á;ÈyÏ~É~Ð&]Ñ#ˆK˜˜A˜tØÐ"7Ñ7Ø!" :¡°°*±�h�Ü% d¨D°Ó:�Ø Ò%Ø˜‘L‘AØ  (Ò*Ø˜ ™‘N‘AØ  )Ò+Øœ {°4¸ÀÀXÐW`ÔaÑa‘Aä$Ð%AÄ#ÀkÓBRÑ%RÓSÐSØ�L‰L×#Ñ# A a¨¸^Ð#ÕLð '5r(   Nc                 óF  ‡‡‡‡‡— ddl mŠ | j                  Š‰j                  ‰j                  ‰j
                  ‰j                  fŠt        ‰dd«      }ˆˆˆfd„}‰€t        ‰d‰j                  «      Š‰j                  d u}‰j                  d u}‰j                  }ˆˆfd„}ˆˆfd„}	ˆfd	„}
|d
k(  r |«         ||||¬«       y |dk(  r/|r |d¬«        ||||¬«       y |s|r |«         ||d|¬«       y y |r |d¬«      r |«        y |s|r |«         ||d|¬«       y y )Nr   )Ú_renderPathÚ	autocloser   c                  ó   •—  ‰‰‰fi | ¤ŽS r—   r}  )ÚkwdsrÆ  Ú	drawFuncsÚpaths    €€€r&   ÚrPz _PSRenderer.drawPath.<locals>.rPI  s   ø€ Ù˜t YÑ7°$Ñ7Ð7r(   rK  c                  ó.   •—  ‰j                   g fd‰i| ¤ŽS )NrK  ©rþ   )rÉ  r%   rK  s    €€r&   ú<lambda>z&_PSRenderer.drawPath.<locals>.<lambda>P  s   ø€ Ð-˜Q×-Ñ-¨bÑL¸8ÐLÀtÑL€ r(   c                  ó,   •— ‰ j                  g d‰¬«      S )Nr   )r¼   rK  rÎ  )r%   rK  s   €€r&   rÏ  z&_PSRenderer.drawPath.<locals>.<lambda>Q  s   ø€ ˜A×,Ñ,¨R¸ÀHÐ,ÓM€ r(   c                  ó*   •— ‰ j                  g d¬«      S )Nr   )r»   rÎ  )r%   s   €r&   rÏ  z&_PSRenderer.drawPath.<locals>.<lambda>R  s   ø€ ˜a×.Ñ.¨r¸Ð.Ó:€ r(   Úsvg)r¼   r»   rI  ÚpdfT)Ú
forceClose)Ú	countOnly)Úreportlab.graphics.shapesrÆ  rŒ  r4  r  r8  r:  rÁ  rJ   r<   r;   rŽ  )rK   rË  rK  rÇ  rÌ  r»   r¼   rI  ÚfasÚpathFillÚ
pathStrokerÆ  r%   rÊ  s    ``        @@@r&   r®  z_PSRenderer.drawPathD  s  ü€ Ý9Ø�L‰LˆØ—X‘X˜qŸx™x¨¯©°A·K±KÐ@ˆ	Ü˜D ¨RÓ0ˆ	ö	8àÐÜ˜t J¨q¯{©{Ó;ˆHØ�|‰| 4Ð'ˆØ—‘ tÐ+ˆØ�‰ˆÜLˆÜMˆÛ:ˆ
Ø�eÒÙŒDÙ�v 4¨TÖ2Ø˜ÒÙÙ˜dÕ#Ù˜6 t°Ö6Ù™4Ù”Ù˜6 q¨dÖ3ð  ñ ™ TÕ*Ù•Ù™4Ù”Ù˜6 q¨dÖ3ð  r(   c           
      óæ  — |j                  «       D �]Ý  \  }}|dk(  r3| j                  j                  |d   |d   |d   |d   |d   |d   «       Œ?|dk(  r| j                  j                  |«       Œ`|d	k(  r| j                  j	                  |«       Œ�|d
k(  r| j                  j                  |«       Œ¢|dk(  r| j                  j                  |«       ŒÃ|dk(  r†|rht        |t        t        f«      r2t        |«      dk(  r$t        |d   t        t        f«      r|d   }|d   }nd}| j                  j                  ||«       �Œ2| j                  j                  «        �ŒN|dk(  r| j                  j                  |«       �Œp|dv s�Œv|j                  d| j                  j                  «      }|j                  d| j                  j                  «      }| j                  j!                  ||«       �Œà y)z\This takes a set of states, and outputs the operators
        needed to set those propertiesrS  r   r1   r0   r³   r´   r¶   r/   r›  rœ  r�  ÚstrokeDashArrayrž  )r.   r-   r-   r.   N)r“  rŒ  rS  rE   rH   rF   rG   rŠ   rŽ   r�   r   r•   r¤   Úgetr>   r?   rD   )rK   ÚdeltaÚnewStateÚkeyÚvaluer’   ÚfontnameÚfontsizes           r&   r‘  z_PSRenderer.applyStateChangesd  s±  € ð  Ÿ+™+›-ó *	9‰JˆC�Ø�kÒ!Ø—‘×&Ñ& u¨Q¡x°°q±¸5À¹8Ø!& q¡¨5°©8°U¸1±Xõ?à˜Ò%ð —‘×+Ñ+¨EÕ2Ø˜Ò%Ø—‘×)Ñ)¨%Õ0Ø˜Ò'Ø—‘×'Ñ'¨Õ.ØÐ(Ò(Ø—‘×(Ñ(¨Õ/ØÐ)Ò)ÙÜ! %¬¬e¨Ô5¼#¸e»*Àaº-ÌJÐW\Ð]^ÑW_ÔafÔgkÐ`lÔLmØ % a¡˜Ø % a¡™à !˜Ø—L‘L×(Ñ(¨¨uÖ5à—L‘L×(Ñ(Ö*ð ˜Ò#ð —‘×)Ñ)¨%Ö0ð
 Ð0Ó0ð !Ÿ9™9 Z°·±×1CÑ1CÓD�Ø Ÿ9™9 Z°·±×1GÑ1GÓH�Ø—‘×$Ñ$ X¨xÖ8ñU*	9r(   c                 óÖ   — ddl m}  ||j                  «      }| j                  j	                  |j
                  |j                  |j                  |j                  |j                  «       y )Nr   )ÚImageReader)
ru   rä  rË  rŒ  rZ   Ú_imager·   r¸   r2   r3   )rK   rW   rä  Úims       r&   rZ   z_PSRenderer.drawImage“  sA   € Ý3Ù˜Ÿ™Ó$ˆØ�‰×Ñ˜rŸy™y¨¯©°·±¸¿¹ÀUÇ\Á\ÕRr(   r—   )rz  r{  r|  Ú__doc__rš  r”  r   r¢  r¤  r´  r¸  rº  r¯  râ   r®  r‘  rZ   r}  r(   r&   r‚  r‚  Õ  se   „ ñ:ò:ð<  .¸\ÐZdØ!,¸ÐQXØ&ñ(€IòòBò=ò$ò$=ò*òBòMó$4ò@-9ó^Sr(   r‚  c                 óž   — t        | «      } t        | j                  | j                  f«      }t	        | |dd|¬«       |j                  |«       y )Nr   r€  )r   r*   r2   r3   rƒ  rx   )rR  Úfnr�  Úkwdr%   s        r&   Ú
drawToFilerë  ˜  s>   € Ü˜AÓ€AÜ�!—'‘'˜!Ÿ(™(Ð#Ó$€AÜˆˆAˆq�! ,Õ/Ø‡F�Fˆ2…Jr(   c                 óR   — t        «       }t        | ||¬«       |j                  «       S )z=Returns a PS as a string in memory, without touching the diskr€  )r   rë  rm  )rR  r�  r!   s      r&   ÚdrawToStringrí  ž  s!   € ä‹	€AÜˆq�! ,Õ/Ø�:‰:‹<Ðr(   Úepsoutc                 óB  — ddl m} ddlm} |j                  d d  }g d¢|j                  d d  	 dd l}|j                  j                  | «      s|j                  | «       g }t        |«      D ]>  }|dd dk(  sŒt        ||«      } |«       }	t        |dd«      }
|j                  |	|
f«       Œ@ d}|D ]I  \  }}
| |j                  z   d	|z  z   }t        ||«       |s|d
kD  rt        dt        |«      z  «       |dz  }ŒK 	 ||j                  d d  y # ||j                  d d  w xY w)Nr   )Ú
testshapes)Úverbose)zTimes-Romanz
Times-BoldzTimes-ItaliczTimes-BoldItalicÚCourierrÂ   Ú
getDrawingrç  r   zrenderPS_%d.epsr0   zrenderPS test saved %sr1   )Úreportlab.graphicsrð  Úreportlab.rl_configrñ  Ú_FONTSÚosrË  ÚisdirÚmkdirÚdirrÁ  r   Úseprë  Úprintr°   )ÚoutDirÚshoutrð  rñ  ÚOLDFONTSr÷  ÚdrawingsÚfuncnameÚfuncr„  Ú	docstringrÏ   rR  Úfilenames                 r&   Útestr  ª  s&  € Ý-Ý+Ø× Ñ ¡Ð#€HÚd€J×Ñ‘aÐð(Ûà�w‰w�}‰}˜VÔ$Ø�H‰H�VÔàˆä˜J›ò 	6ˆHØ˜˜"ˆ~ Ó-Ü˜z¨(Ó3�Ù›&�Ü# D¨°2Ó6�	Ø—‘ ¨)Ð 4Õ5ð	6ð ˆØ&ò 	‰NˆQ�	Ø §¡‘Ð):¸1Ñ)<Ñ<ˆHÜ�q˜Ô"Ù˜ š	¤5Ð)AÄEÈ(ÃOÑ)SÔ#TØ�‰F‰Añ		ð  (ˆ
×Ñ™!Ñø˜xˆ
×Ñ™!Ñús   ®AD Á7BD ÄDÚ__main__r1   T)rþ  )rî  F)0Ú__version__rç  r  Úior   r   Úreportlab.pdfbase.pdfmetricsr   r   r   ru   r   r	   r
   r   r   Úreportlab.lib.rl_accelr   Úreportlab.graphics.renderbaser   r   r   rÖ  r   Ú	reportlabr   Úreportlab.pdfgen.canvasr   r   r‡  r%   ÚordÚchrr'   re   r*   r�  rƒ  r‰  r‚  rë  rí  r  rz  Úsysr   ÚargvÚoutdirr}  r(   r&   ú<module>r     sW  ðð €Ø2€ã ß  ß IÑ Iß PÕ PÝ )ß VÑ VÝ 4Ý Ý 1à€Ù	ˆs‹ò  €AØˆ‚tˆq�#ŠvØ  1™ˆ�AŠØ	
‰s�4‹y™˜S›¡# c£(Ð+Ñ	+Ø™c !›f™ˆ�AŠá˜Q›ˆ�AŠð ð òð -Ð ÷^^	%ñ ^	%ðB1ô (ð  °×1GÑ1Gó Rò
	ôAS�(ô ASðF #,×"8Ñ"8ó ð "+×!7Ñ!7ó ó(ð: ˆZÒÛÙ
ˆ3�8‰8ƒ}�Q‚Ø—‘˜!‘‰àˆÙˆ�dÖð r(   