+
    ŒvjŸ{  ã                   ó2  € R t Rt^ RI5 ^ RIHtHt ^ RIHtHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHtHt ^ R
IHt ^RIHtHt ^ RIt^ RIt^ RIH t H!t! ^ RI"H#t#H$t$H%t%H&t& R-R lt' ]'! ]PP                  4      t)R t*R t+R t,]PZ                  3R lt.^ RIH/t/  ! R R]/4      t0R t1R t2R t3R-R lt4]5! RRRR7      t6Rt7 ! R R 4      t8^HR!R]PZ                  ]PP                  R"3R# lt9^HR!R]PZ                  ]PP                  R"3R$ lt:^HR!R]PZ                  ]PP                  R"3R% lt;R&^HR!R]PZ                  ]PP                  R"3R' lt<R&^HR!R]PZ                  ]PP                  R"3R( lt=]<t>R.R) lt?]@R*8X  d   ]?! R+R,7       R# R#   ] d    Rt) ELi ; i)/z3.3.0a$  Render drawing objects in common bitmap formats

Usage::

    from reportlab.graphics import renderPM
    renderPM.drawToFile(drawing,filename,fmt='GIF',configPIL={....})

Other functions let you create a PM drawing as string or into a PM buffer.
Execute the script to see some test drawings.)Ú*)ÚgetStateDeltaÚrenderScaledDrawing)ÚgetFontÚ
unicode2T1ÚstringWidth)Ú	ShapedStrÚshapeFragWord)ÚbidiShapedText)Ú	isUnicodeÚ	asUnicode)ÚABag)ÚtoColorÚwhite)Ú	rl_config)ÚsetFontÚRenderPMErrorN)ÚBytesIOÚStringIO)ÚsinÚcosÚpiÚceilc                 óŠ  € V '       g   \         P                  p V R 8X  d    ^ RIpV# RV P                  4       9   d    ^ RIpV# \        RV  24      h  \         d+   p ^ RIp Rp?T#   \         d    \        R4      hi ; iRp?ii ; i  \         d/   p ^ RIp Rp?T#   \         d    \        RT  R24      hi ; iRp?ii ; i)Ú	_renderPMNzüCannot import desired renderPM backend, {backend}.
No module named _rl_renderPM
it may be badly or not installed!
You may need to install development tools
or seek advice at the users list see
https://pairlist2.pair.net/mailman/listinfo/reportlab-usersÚcairoz'cannot import desired renderPM backend z^
Seek advice at the users list see
https://pairlist2.pair.net/mailman/listinfo/reportlab-userszInvalid renderPM backend, )r   ÚrenderPMBackendÚ_rl_renderPMÚImportErrorÚ	rlPyCairor   Úlower)ÚbackendÚMÚerrMsgs   &  Ú_/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/graphics/renderPM.pyÚ_getPMBackendr%      sý   € ßœi×7Ñ7�GØ�Ôð	@Û$ð. €Hð 
�G—M‘M“OÔ	#ð	@Û!ð €Hô Ð8¸¸	ÐBÓCÐCøô+ ô 		@ð@ß%ð( €Høô' ô @Ü#ð %?ó @ð @ð@þð		@ûô ô 	@ð@ß(ð €Høô ô @Ü#Ð(OÐPWÈyð Y<ð %?ó @ð @ð@þð	@úsF   ¡A ½B	 ÁBÁA'Á'A>Á>BÂBÂ	CÂBÂB:Â:B=Â=Cc                  ó@   €  ^ RI Hp  V #   \         d	    ^ RIp  T # i ; i)é    ©ÚImageN)ÚPILr)   r   r(   s    r$   Ú	_getImager+   @   s*   € ðÝð €Løô ô ÜØ€Lðús   ‚
 Šœc                 ó  € V '       d‚   ^ÿ\        ^ÿV P                  ,          4      ,          ^,          ^ÿ\        ^ÿV P                  ,          4      ,          ^,          ,          ^ÿ\        ^ÿV P                  ,          4      ,          ,          # V # )éÿ   )ÚintÚredÚgreenÚblue©Úcs   &r$   Ú	Color2Hexr4   G   s_   € ç�4œ˜C §¡�I›Õ&¨2Õ-°4¼¸CÀÇÁ½KÓ8HÕ3HÈQÕ2NÕOÐSWÔX[Ð\_Ð`a×`fÑ`fÕ\fÓXgÕSgÕhÐ
hØ€Hó    c                ó$   € V e   \        V 4      # T # )zy
c should be None or something convertible to Color
rlPyCairo.GState can handle Color directly in either RGB24 or ARGB32
)r   r2   s   &r$   Ú
CairoColorr7   L   s   € ð
 šŒ7�1‹:Ð-¨AÐ-r5   c                óŠ   € \        4       pVP                  P                  V4       VP                  \	        V 4      WW4R7       R# )z
As it says)ÚshowBoundaryN)Ú_PMRendererÚ__dict__ÚupdateÚdrawr   )ÚdrawingÚcanvasÚxÚyr9   ÚkwdsÚRs   &&&&&, r$   r=   r=   T   s3   € ä‹€AØ‡J�J×Ñ�dÔØ‡F�FÔ˜wÓ'¨°A€FÖQr5   )ÚRendererc                   ó|   a € ] tR t^[t o RtR tR tR tR tR t	R t
R tR	 tR
 tRR ltR tR tR tR tRtV tR# )r:   z«This draws onto a pix map image. It needs to be a class
rather than a function, as some image-specific state tracking is
needed outside of the state info in the SVG model.c                óZ   € V P                   P                  4        V P                  4        R # ©N)Ú_trackerÚpopÚ
applyState©Úselfs   &r$   rI   Ú_PMRenderer.pop`   s   € Ø�‰×ÑÔØ�‰Ör5   c                ór   € \        V4      pV P                  P                  V4       V P                  4        R # rG   )r   rH   ÚpushrJ   )rL   ÚnodeÚdeltass   && r$   rO   Ú_PMRenderer.pushd   s(   € Ü˜tÓ$ˆØ�‰×Ñ˜6Ô"Ø�‰Ör5   c                ón  € V P                   P                  4       pVR ,          V P                  n        VR,          V P                  n        VR,          pVe   W P                  n        V P                  P                  VR,          4       VR,          V P                  n        VR,          V P                  n        VR,          V P                  n	        VR,          pV'       g   RpMV\        V\        \        34      '       g   V3p\        V4      ^8w  g$   \        V^,          \        \        34      '       g   ^ V3pW0P                  n        VR	,          pVe   W P                  n        V P                  P!                  VR
,          4       V P                  P#                  VR,          VR,          4       R# )ÚctmÚstrokeWidthÚstrokeOpacityNÚstrokeColorÚstrokeLineCapÚstrokeLineJoinÚfillModeÚstrokeDashArrayÚfillOpacityÚ	fillColorÚfontNameÚfontSize)rH   ÚgetStateÚ_canvasrT   rU   rV   ÚsetStrokeColorÚlineCapÚlineJoinrZ   Ú
isinstanceÚlistÚtupleÚlenÚ	dashArrayr\   ÚsetFillColorr   )rL   ÚsÚalphaÚdas   &   r$   rJ   Ú_PMRenderer.applyStatei   sB  € Ø�M‰M×"Ñ"Ó$ˆØ˜U�8ˆ�‰ÔØ#$ ]Õ#3ˆ�‰Ô Ø�/Õ"ˆØÒØ).�L‰LÔ&Ø�‰×#Ñ# A mÕ$4Ô5Ø  Õ1ˆ�‰ÔØ !Ð"2Õ 3ˆ�‰ÔØ ! *¥ˆ�‰ÔØÐ Õ!ˆßØ‰Bä˜b¤$¤u ×.Ò.Ø�S�Ü�2‹w˜Œz¤¨B¨q­E´4¼°,×!?Ò!?Ø˜�U�Ø!#�‰ÔØ�-Õ ˆØÒØ',�L‰LÔ$Ø�‰×!Ñ! ! K¥.Ô1Ø�‰×Ñ˜Q˜z�]¨A¨j­MÖ:r5   c                óð   € V P                   P                  R,          pV P                  P                  R,          W3,           ;VR&   VR&   V P                   P	                  V4       V P                  4        R# )é   :r'   é   NÚ	transformrT   Néÿÿÿÿ)rH   Ú	_combinedra   Ú_baseCTMrO   rJ   )rL   r@   rA   rQ   s   &&& r$   Ú	initStateÚ_PMRenderer.initStateƒ   s[   € Ø—‘×(Ñ(¨Õ,ˆØ.2¯l©l×.CÑ.CÀCÕ.HÈ!ÈÕ.NÐNˆˆ{Ñ˜f U™mØ�‰×Ñ˜6Ô"Ø�‰Ör5   c                ój   € V P                  V4       V P                  V4       V P                  4        R# )z=This is the recursive method called for each node
in the treeN)rO   ÚdrawNodeDispatcherrI   )rL   rP   s   &&r$   ÚdrawNodeÚ_PMRenderer.drawNode‰   s*   € ð
 	�	‰	�$Œð 	×Ñ Ô%ð 	�‰Ž
r5   c                óŠ  € V P                   pVP                  VP                  u;8X  d   ^ 8X  dB   M M>VP                  VP                  VP
                  VP                  VP                  4       R# VP                  VP                  VP
                  VP                  VP                  VP                  VP                  4       R# )r'   N)	ra   ÚrxÚryÚrectr@   rA   ÚwidthÚheightÚ	roundRect)rL   r   r3   s   && r$   ÚdrawRectÚ_PMRenderer.drawRect–   sp   € Ø�L‰LˆØ�7‰7�d—g‘gÖ" ×"à�F‰F�4—6‘6˜$Ÿ&™& $§*¡*¨d¯k©kÖ:à�K‰K˜Ÿ™˜tŸv™v t§z¡z°4·;±;ÀÇÁÈÏÉÖQr5   c                ó’   € V P                   P                  VP                  VP                  VP                  VP
                  4       R # rG   )ra   ÚlineÚx1Úy1Úx2Úy2)rL   r†   s   &&r$   ÚdrawLineÚ_PMRenderer.drawLinež   s*   € Ø�‰×Ñ˜$Ÿ'™' $§'¡'¨$¯'©'°$·'±'Ö:r5   c           
     ó¤  € VP                   p\        V\        4      '       dY   V'       d&   \        P                   P	                  V4      '       g   R # \        4       P                  V4      P                  R4      pM&\        VR4      '       d   VP                  R4      pMR # VP                  w  rEVP                  VP                  rvVf   TpVf   TpV P                  P                  VP                  VP                  YgV P                  P                   R8X  d   TM.\        VR4      '       d   VP"                  MVP$                  ! 4       WE^4       R # )NÚRGBÚconvertr   Útobytes)Úpathre   ÚstrÚosÚisfiler+   Úopenr�   ÚhasattrÚsizer€   r�   ra   Ú	_aapixbufr@   rA   Ú_backendr�   Útostring)rL   Úimager‘   ÚimÚsrcWÚsrcHÚdstWÚdstHs   &&      r$   Ú	drawImageÚ_PMRenderer.drawImage¡   sï   € Ø�z‰zˆÜ�dœ3×ÒßœRŸW™WŸ^™^¨D×1Ò1±FÜ“×!Ñ! $Ó'×/Ñ/°Ó6‰BÜ�T˜)×$Ò$Ø—‘˜eÓ$‰BáØ—W‘W‰
ˆØ—[‘[ %§,¡,ˆdØŠ< ˜ØŠ< ˜Ø�‰×ÑØ—‘˜Ÿ™ $Ø—|‘|×,Ñ,¨kÔ9‘Ü(/°°9×(=Ò(=˜"Ÿ*š*À2Ç;Á;ÐNÓQØ˜Aö		r5   c                ó    € V P                   pVP                  VP                  VP                  VP                  4       VP                  4        R # rG   )ra   ÚcircleÚcxÚcyÚrÚfillstrokepath)rL   r¤   r3   s   && r$   Ú
drawCircleÚ_PMRenderer.drawCircleµ   s3   € Ø�L‰LˆØ	�‰�—‘˜6Ÿ9™9 f§h¡hÔ/Ø	×ÑÖr5   c                ó¸  € VP                   p\        V4      ^8¼  g   Q R4       hV P                  pVP                  4        VP	                  V^ ,          V^,          4       \        ^\        V4      ^4       F(  pVP                  W5,          W5^,           ,          4       K*  	  V'       d!   VP                  4        VP                  4        VP                  4        R# )é   z#Polyline must have 1 or more pointsN)
Úpointsrh   ra   Ú	pathBeginÚmoveToÚrangeÚlineToÚ	pathCloseÚpathFillÚ
pathStroke)rL   ÚpolylineÚ_doCloseÚPr3   Úis   &&&   r$   ÚdrawPolyLineÚ_PMRenderer.drawPolyLineº   s”   € Ø�O‰OˆÜ�1‹v˜Œ{ÐAÐAÓAˆ{Ø�L‰LˆØ	�‰ŒØ	�‰��1•�q˜•tÔÜ�qœ#˜a›& !Ö$ˆAØ�H‰H�Q•T˜1˜q�S�6Ö"ñ %çØ�K‰KŒMØ�J‰JŒLØ	�‰Žr5   c                ó¶   € V P                   pVP                  VP                  VP                  VP                  VP
                  4       VP                  4        R # rG   )ra   Úellipser¥   r¦   r}   r~   r¨   )rL   r¼   r3   s   && r$   ÚdrawEllipseÚ_PMRenderer.drawEllipseÇ   s9   € Ø
�,‰,ˆØ	�	‰	�'—*‘*˜gŸj™j¨'¯*©*°W·Z±ZÔ@Ø	×ÑÖr5   c                ó,   € V P                  V^R7       R# )rp   )r¶   N)r¹   )rL   Úpolygons   &&r$   ÚdrawPolygonÚ_PMRenderer.drawPolygonÌ   s   € Ø×Ñ˜'¨1ÐÖ-r5   c           	     óˆ  € V P                   pVP                  p\        VR ^ 4      pVf
   V'       Ed   V P                  P	                  4       pVR,          pVR,          pVR,          pVP
                  p	VP                  p
VP                  pVR
9   gu   \        W—V4      pVR8X  d
   W¬,          p
MXVR8X  d   W¬^,          ,          p
MAVR8X  d    V
\        WiWÇW�P                  4      ,          p
M\        R\        V4      ,           4      hVP                  pWBn         VP                  W«W—V3R	7       WÒn        R# R#   YÒn        i ; i)ÚtextRenderModeNÚ
textAnchorr^   r_   ÚendÚmiddleÚnumericzbad value for textAnchor )Ú	_fontInfo)ÚstartÚ	inherited)ra   r]   ÚgetattrrH   r`   Útextr@   rA   r   ÚnumericXShiftÚencodingÚ
ValueErrorr’   rÄ   Ú
drawString)rL   Ú	stringObjÚcanvÚfillrÄ   ÚSÚtext_anchorr^   r_   rÍ   r@   rA   ÚtextLenÚoldTextRenderModes   &&            r$   rÑ   Ú_PMRenderer.drawStringÏ   s$  € Ø�|‰|ˆØ�~‰~ˆÜ  Ð+;¸AÓ>ˆØÒŸ~˜~Ø—‘×&Ñ&Ó(ˆAØ˜L�/ˆKØ˜•}ˆHØ˜•}ˆHØ—>‘>ˆDØ—‘ˆAØ—‘ˆAØÐ"7Ô7Ü% d°XÓ>�Ø Ô%Ø•L‘AØ  (Ô*Ø �•N‘AØ  )Ô+Øœ {¸È×RdÑRdÓeÕe‘Aä$Ð%@ÄÀ[ÓAQÕ%QÓRÐRØ $× 3Ñ 3ÐØ"0Ôð8Ø—‘  D¸XÐ3F�ÔGà&7Ö#ñ/  .øð. '8Õ#ús   ÄD9 Ä9Ec                ó”  aa	a
a€ V P                   o
S\        J dq   S
P                  R S
P                  '       d@   S
P                  R,          pVP                  p^Vn        V P	                  V4       W2n        R# S
P                  4        R# ^ RIHo	 S
P                  S
P                  S
P                  S
P                  3o\        SRR4      pRV	V
VV3R llpSP                  '       d3   V! 4        S
P                  4        S
P                  P                  S4       S
P                  RJpS
P                   RJp\        SRR4      pVR8X  d‹   V'       d<   V'       d4   V! RR	7       S
P#                  V4       V! 4        S
P%                  4        R# V'       d   V! RR	7       S
P#                  V4       R# V'       d   V! 4        S
P%                  4        R# R# VR
8X  d?   V! RR	7       V'       d   S
P#                  V4       V'       d   S
P%                  4        R# R# V! 4       '       d   S
P#                  V4       S
P%                  4        R# )rp   N)Ú_renderPathÚ	autocloseÚ c                 ó:   <€ SP                  4        S! SSV R 7      # )©Ú
forceClose)r®   )rà   rÛ   r3   Ú	drawFuncsr‘   s   &€€€€r$   ÚrPÚ _PMRenderer.drawPath.<locals>.rPü   s   ø€ Ø�K‰KŒMÙ˜t Y¸:ÔFÐFr5   rZ   ÚsvgTrß   Úpdfrs   )F)ra   ÚEmptyClipPathÚ
_clipPathsÚ
isClipPathÚdrawPathÚclipPathClearÚreportlab.graphics.shapesrÛ   r¯   r±   ÚcurveTor²   rÌ   ÚclipPathSetÚappendr]   rW   r³   r´   )rL   r‘   r·   ÚicprÜ   râ   rÔ   ÚstrokerZ   rÛ   r3   rá   s   &f       @@@r$   ré   Ú_PMRenderer.drawPathì   s¨  û€ Ø�L‰LˆØ”=Ó Ø—‘˜RÐ Ø�|�|ˆ|Ø—L‘L Õ$�Ø—l‘l�Ø �”Ø—‘˜aÔ Ø"”ñ ð —‘Ô!ÙÝ9Ø—X‘X˜qŸx™x¨¯©°A·K±KÐ@ˆ	Ü˜D ¨RÓ0ˆ	÷	Gò 	Gð �?�?ˆ?ÙŒDØ�M‰MŒOØ�L‰L×Ñ Ô%Ø�{‰{ $Ð&ˆØ—‘ dÐ*ˆÜ˜4 
¨2Ó.ˆØ�eÔßŸÙ˜dÕ#Ø—
‘
˜8Ô$Ù”Ø—‘–ßÙ˜dÕ#Ø—
‘
˜8Ö$ßÙ”Ø—‘–ñ ð ˜ÔÙ˜$ÕßØ—
‘
˜8Ô$ßØ—‘–ñ ñ �tŠtØ—
‘
˜8Ô$Ø�L‰LŽNr5   © N)r'   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rI   rO   rJ   rv   rz   rƒ   r‹   r¡   r©   r¹   r½   rÁ   rÑ   ré   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r$   r:   r:   [   sV   ø‡ € ñ:òòò
;ò4òòRò;òò(ô
òò
.ò8÷:/ð /r5   r:   c                 óf   € \        4       pV P                  R VP                  VP                  R7      # )r·   ©ÚditherÚpalette)r+   r�   ÚNONEÚADAPTIVE)rœ   r)   s   & r$   Ú_convert2pilpr    s&   € Ü‹K€EØ�:‰:�c %§*¡*°e·n±nˆ:ÓEÐEr5   c                 ó$   € V P                  R 4      # )ÚL©r�   ©rœ   s   &r$   Ú_convert2pilLr  !  ó   € Ø�:‰:�c‹?Ðr5   c                 ó$   € V P                  R 4      # )Ú1r  r  s   &r$   Ú_convert2pil1r  $  r  r5   c                 óŠ  € \        V 4      p V P                  w  rE\        P                  YE\	        V R 4      '       d   V P
                  MV P                  ! 4       V P                  P                  4       4      p\	        VR4      '       g˜   \        \        P                  P                  V4      ^ ,          R,           VP                  4       ,           R4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  R8X  d   ^ RIHp V! VRR7       R# R# VP                  V4       R#   + '       g   i     LL; i)	r�   ÚwriteÚ.ÚwbNÚmac©ÚmarkfilenameÚPICT©Úext)r  r—   Ú
_pmBackendÚpil2pictr–   r�   rš   rœ   Ú
getpaletter•   r“   r‘   Úsplitextr    r  ÚnameÚreportlab.lib.utilsr  )	rœ   ÚfnÚfmtÚtransparentÚcolsÚrowsrk   Úfr  s	   &&&&     r$   Ú_saveAsPICTr"  '  sß   € Ü	�rÓ	€BØ—‘�J€DÜ×Ñ˜D´W¸RÀ	×5JÒ5J r§z¢zÐPR×P[ÑP[Ð'[Ó&^Ð_a×_dÑ_d×_oÑ_oÓ_qÓr€AÜ�2�g×ÒÜ”"—'‘'×"Ñ" 2Ó& qÕ)¨#Õ-¨c¯i©i«kÕ9¸$×?Ô?À1Ø�G‰G�AŒJ÷ @ä�7‰7�EŒ>Ý8Ù˜ ×'ñ ð 	�‰�Ž÷ @×?ús   ÃD2Ä2E	ÚARGB32ÚRGB24)ÚARGBÚRGBArŽ   g¯OQ¬á?c                   ó  a € ] tR tRt o R!R lt]R"R l4       tR#R ltR tR#R lt	R$R lt
R	 tR#R
 ltR tR tR%R ltR tR tR tR&R ltR#R ltR'R ltR tR%R ltR tR tR tR tR tR t]tR tR t R t!R(R lt"R t#V t$R# ))ÚPMCanvasi6  Nc                ól  € VR,          p\        W,          R,           4      p\        W(,          R,           4      pV P                  WWFVR7      V P                  R&   W@P                  R&   V^ ^ V^ ^ 3V P                  R&   . V P                  R&   WPP                  R&   W0P                  R	&   \        V P                  P
                  4      \        \        4      8X  d   R
MRV P                  R&   WpP                  R&   V P                  R8X  d   \        M\        V P                  R&   V P                  V n        R# )z-configPIL dict is passed to image save methodg      R@g      à?©r  Ú_gsÚ_bgru   rç   Ú	configPILÚ_dpir   r   r™   Ú_backendfmtÚ_colorConverterN)r.   Ú
_getGStater;   Útyper+  r˜   Úpowr™   r7   r4   ru   rT   )	rL   ÚwÚhÚdpiÚbgr-  r!   Ú
backendFmtÚscales	   &&&&&&&& r$   Ú__init__ÚPMCanvas.__init__7  s÷   € ð �D•ˆÜ�•˜•ÓˆÜ�•˜•ÓˆØ#Ÿ™¨q°2À*˜ÓMˆ�‰�eÑØ!�‰�eÑØ%*¨1¨Q¨u°Q°qÐ$9ˆ�‰�jÑ!Ø&(ˆ�‰�lÑ#Ø%.�‰�kÑ"Ø #�‰�fÑä37¸¿¹×8JÑ8JÓ3KÌTÔRUËYÔ3V¡KÐ\gˆ�‰�jÑ!Ø'1�‰�mÑ$Ø9=¿¹ÈÔ9S­:ÔYbˆ�‰Ð'Ñ(Ø—=‘=ˆŽr5   c                óÒ  € \        V4      pVf   \        P                  pVR8X  d    VP                  WVR7      # RVP                  4       9   d:   VP                  4       p\        P                  WD4      p VP                  WW$R7      # \        RV: 24      h  \         d      TP                  YY$R7      u #      L5; ii ; i  \         d    TP                  YTR7      u # i ; i)Nr   ©r7  r*  r   z.Cannot obtain PM graphics state using backend )r%   r   r   ÚgstateÚ	TypeErrorÚGStater    ÚupperÚ_pycairoFmtsMapÚgetÚAttributeErrorÚRuntimeError)r4  r5  r7  r!   r  Úmods   &&&&& r$   r1  ÚPMCanvas._getGStateI  sê   € ä˜GÓ$ˆØŠ?Ü×/Ñ/ˆGØ�KÔðØ—z‘z !¨�zÓ,Ð,ð ˜Ÿ™›Ô'Ø—)‘)“+ˆCÜ!×%Ñ% cÓ.ˆCð-Ø—z‘z ! b�zÓ1Ð1ô ÐKÈGÉ;ÐWÓXÐXøô ô ðØŸ:™: a¨"˜:Ó5Ò5øðÚúð	ûô "ô -Ø—z‘z !¨�zÓ,Ò,ð-ús;   ¨B Á6C ÂCÂ$B9Â6CÂ9B>Â;CÂ>CÃC&Ã%C&c                óÜ  € Vf   V P                   pWuV P                  n        V P                  n        RR RR RR RR RR RR RR /pV P                  pVP
                  VP                  rvVP                  4        F  p\        WX4      WH&   K  	  ?V =\        P                  WVR7      ;qPP                  R	&   VP                  4        F  p\        WWH,          4       K  	  VP                  Wg4       R # )
NrT   rU   rW   rc   rd   ri   r]   r=  r+  )r,  Ú_drawingr€   r�   r+  r^   r_   ÚkeysrÌ   r  r>  r;   Úsetattrr   )	rL   r4  r5  r7  ÚAÚgsÚfNÚfSÚks	   &&&&     r$   Ú_drawTimeResizeÚPMCanvas._drawTimeResize_  sÙ   € ØŠ:˜DŸH™H�rØ45Ð1ˆ�‰Ô˜TŸ]™]Ô1Ø�4˜ t¨]¸4ÀÈ4ÐQ[Ð\`ÐbmÐnrÐtð  AEð  FˆØ�X‰XˆØ—‘˜RŸ[™[ˆ2Ø—‘–ˆAÜ˜2“=ˆA‹Dñ à��Ü$.×$5Ñ$5°a¸RÐ$5Ó$@Ð@ˆ�]‰]˜5Ñ!Ø—‘–ˆAÜ�D˜1�4Ö ñ à
�
‰
�2Ör5   c                ó"  € \        4       P                  V P                  R 8X  d   \        V R4      R8X  d   RMRV P                  P
                  V P                  P                  3R7      pVP                  V P                  P                  4       V# )r   Ú_fmtr#  r&  rŽ   )r—   )	r+   Únewr™   rÌ   r+  r€   r�   Ú	frombytesÚpixBuf)rL   rœ   s   & r$   ÚtoPILÚPMCanvas.toPILm  s�   € Ü‹[�_‰_ t§}¡}°kÔ'AÄgÈdÐSYÓFZÐ\dÔFd™VÐjoÐw{×wÑw÷  xFñ  xFð  HL÷  HPñ  HP÷  HWñ  HWð  wXˆ_ó  YˆØ
�‰�T—X‘X—_‘_Ô%Øˆ	r5   c           
     óê  € V P                  4       pVfx   \        V\        4      '       g   \        R\	        V4      ,          4      h\
        P                  P                  V4      ^,          pVP                  R4      '       d
   VR,          pV P                  ;'       g    / pVP                  RR 4       VP                  R4      pV'       d	   V! V4      pVP                  4       pVR9   d   \        V4      pMºVR9   dl   VP                  R4      '       d   \        V4      pMEVP                  R4      '       d   \        V4      pM"VP                  R4      '       d   \!        V4      pRpMHVR9   d   \#        W1W$P%                  R	R 4      R
7      # VR9   d   MVR9   d   RpM\'        RV,          4      hVR8X  dû   VP%                  R	R 4      pV'       dµ   ^ RIHpHp R^ .,          p	\/        RVP1                  4       4       F  w  r«^ÿWšV,           &   K  	  VP3                  RVP5                  4       VP7                  VP9                  V	4      P;                  R4      P9                  ^ÿ^ .,          ^ÿ.,           4      4      3,           4      pRV P<                  3R3 F  w  rÍVP%                  WÍ4      WL&   K  	  VP                  R^ 4       VP                  R4      '       d   ^ RIHp VP7                  V4      pVP                  RR 4       VP                  R4      pV'       d	   V! V4      pVP>                  ! W3/ VB  \A        VR4      '       g)   \
        PB                  R8X  d   ^ RI"H#p V! WR7       R # R # R # )Nz*Invalid value '%s' for fn when fmt is Noner  ºrp   NNÚpreConvertCBÚTIFFr·   r  r
  r  )r  ÚJPEGzUnknown image kind %s)Ú
ImageChopsr)   i   r&  Ú
resolutionÚchops_invert)r_  Ú	preSaveCBr  r  r  r  ©ÚGIF)r]  ÚTIFFPÚTIFFLÚTIFÚTIFF1)ÚPCTr  )ÚPNGÚBMPÚPPM)ÚJPGr^  )r'   é   i   )zresolution unitÚinch)$rX  re   r’   rÐ   Úasciir“   r‘   r  Ú
startswithr-  Ú
setdefaultrI   rA  r  Úendswithr  r  r"  rC  r   r*   r_  r)   ÚzipÚ
bitmap_rgbÚmergeÚsplitÚinvertÚpointr�   r.  Úsaver–   r  r  r  )rL   r  r  rœ   r-  r\  Útcr_  r)   ÚTÚor3   ÚaÚdrb  r  s   &&&             r$   Ú
saveToFileÚPMCanvas.saveToFiler  sÐ  € Ø�Z‰Z‹\ˆØŠ;Ü˜b¤×%Ò%Ü Ð!MÔPUÐVXÓPYÕ!YÓZÐZÜ—'‘'×"Ñ" 2Ó& qÕ)ˆCØ�~‰~˜c×"Ò"¨#¨b­' CØ—N‘N×(Ð( bˆ	Ø×Ñ˜^¨DÔ1Ø—]‘] >Ó2ˆßÙ˜bÓ!ˆBØ�i‰i‹kˆØ�(Œ?Ü˜rÓ"‰BØÐ:Ô:Ø�|‰|˜C× Ò Ü" 2Ó&‘Ø—‘˜c×"Ò"Ü" 2Ó&‘Ø—‘˜c×"Ò"Ü" 2Ó&�Ø‰CØ�NÔ"Ü˜r S·]±]À=ÐQUÓ5VÔWÐWØÐ(Ô(ØØ�NÔ"Ø‰CäÐ 7¸#Õ =Ó>Ð>Ø�Œ;Ø—‘˜}¨TÓ2ˆBßß1Ø˜˜•G�Ü ¨R¯]©]«_Ö=‘D�AØ �A˜•c“Fñ >ð —[‘[ ¨¯©«°Z×5FÑ5FÀrÇxÁxÐPQÃ{×GZÑGZÐ[^ÓG_×GeÑGeÐfiÐklÐjmÕfmÐorÐnsÕfsÓGtÓ5uÐ4wÕ)wÓx�à$ T§Y¡YÐ/Ð0JÓJ‘�Ø(Ÿ}™}¨QÓ1�	“ñ Kà×Ñ˜^¨AÔ.Ø�=‰=˜×(Ò(Ý&Ø×"Ñ" 2Ó&ˆBØ×Ñ˜[¨Ô.Ø—-‘- Ó,ˆ	ßÙ˜2“ˆBØ
�Š�Ñ#˜Ò#Ü�r˜'×"Ò"¤r§w¡w°¤~Ý8Ù˜×$ñ (6Ñ"r5   c                óZ   € \        4       pV P                  W!R 7       VP                  4       # )r*  )r   r€  Úgetvalue)rL   r  rk   s   && r$   ÚsaveToStringÚPMCanvas.saveToStringª  s#   € Ü‹IˆØ�‰˜ˆÔ"Ø�z‰z‹|Ðr5   c                óú  € ^ RI pV P                  pV P                  R8X  d-   VP                  R8X  d   RVn        VP                  pRVn        MVP                  pVP
                  VP                  reVP                  VP                  RR\        V4      ^6,           ^ ^6^(WV^^4
      4       V^,          p\        \        V4      ^ V) 4       F  pVP                  WHV,
          V 4       K  	  VP                  R4       R# )z”
Niki Spahiev, <niki@vintech.bg>, asserts that this is a respectable way to get BMP without PIL
f is a file like object to which the BMP is written
Nr   r#  r$  z=2sLLLLLLhh24xÚBMz              )Ústructr+  r™   rT  rW  r€   r�   r  Úpackrh   r°   )	rL   r!  rˆ  rM  Úpixr€   r�   Úrowbr}  s	   &&       r$   Ú
_saveToBMPÚPMCanvas._saveToBMP¯  sÈ   € ó
 	Ø�X‰XˆØ�=‰=˜+Ô%¨"¯'©'°8Ô*;ØˆBŒGØ—)‘)ˆCØˆB�Gà—)‘)ˆCØŸ™ "§)¡)ˆvØ	�‰�—‘Ð,¨T´#°c³(¸2µ+¸aÀÀ2ÀeÐSTÐUWÓXÔYØ�q�yˆÜ”s˜3“x  4 %Ö(ˆAØ�G‰G�C˜$�˜q�MÖ"ñ )à	�‰�Ör5   c                ó2   € \        V P                  W4       R # rG   )Ú_setFontr+  )rL   r^   r_   Úleadings   &&&&r$   r   ÚPMCanvas.setFontÃ  s   € Ü�—‘˜(Ö,r5   c                ó2   € \        V P                  W4       R # rG   )rK  r+  )rL   r  Úvalues   &&&r$   Ú__setattr__ÚPMCanvas.__setattr__Æ  s   € Ü�—‘˜Ö$r5   c                ó.   € \        V P                  V4      # rG   )rÌ   r+  )rL   r  s   &&r$   Ú__getattr__ÚPMCanvas.__getattr__É  s   € Ü�t—x‘x Ó%Ð%r5   c                ój   € V'       d   V P                  4        V'       d   V P                  4        R # R # rG   )r³   r´   )rL   rð   rÔ   s   &&&r$   r¨   ÚPMCanvas.fillstrokepathÌ  s   € ß�—‘”ß�4—?‘?Ö$‰6r5   c                ó
  € \        We,
          4      ^Z8:  g   Q h\        \        V,          R,          4      p\        \        V,          R,          4      pWV,          ,           p	W$V,          ,           p
\        \        V,          R,          4      p\        \        V,          R,          4      pWV,          ,           pW$V,          ,           pV) V,          pWG,          p\        We,
          ,          R,          p\        RR\        V4      ,
          ,          \        V4      ,          4      pWŸV,          ,           pV
VV,          ,           pV) V,          pWK,          pVVV,          ,
          pVVV,          ,
          pWš3VV3VV3WÞ333# )a  compute the control points for a bezier arc with theta1-theta0 <= 90.
Points are computed for an arc with angle theta increasing in the
counter-clockwise (CCW) direction.  returns a tuple with starting point
and 3 control points of a cubic bezier curve for the curvto opertatorg     €f@g      ð?g     €v@gUUUUUUõ?)Úabsr   r   r   )rL   r¥   r¦   r}   r~   Útheta0Útheta1Úcos0Úsin0Úx0Úy0Úcos1Úsin1Úx3Úy3Údx1Údy1ÚhalfAngrP  r‡   rˆ   Údx2Údy2r‰   rŠ   s   &&&&&&&                  r$   Ú_bezierArcSegmentCCWÚPMCanvas._bezierArcSegmentCCWÐ  s5  € ô �6•?Ó# rÔ)Ð)Ð)Ü”2�f•9˜U•?Ó#ˆÜ”2�f•9˜U•?Ó#ˆØ�T•'�\ˆØ�T•'�\ˆä”2�f•9˜U•?Ó#ˆÜ”2�f•9˜U•?Ó#ˆà�T•'�\ˆØ�T•'�\ˆàˆc�D�jˆØ�iˆô �f•mÕ$ kÕ2ˆÜ�	˜S¤3 w£<Õ/Õ1´C¸³LÕAÓCˆØ˜•'�\ˆØ�#˜•'�\ˆàˆc�D�jˆØ�iˆà�#˜•'�\ˆØ�#˜•'�\ˆØ�˜2˜b˜' B r 7¨R¨GÐ4Ð6Ð6r5   c           	     ó  € We,
          p\        V4      R8:  d   WV3.pMs\        \        \        V4      R,          4      4      p	\        V4      V	,          p
. p\	        V	4       F,  pW[V
,          ,           pWÊ,           pVP                  WÍ34       K.  	  . pV Fc  w  rÍV'       g-   V P                  WW4WÍ4      w  w  pppVP                  V4       K9  V P                  WW4WÍ4      w  w  pppVP                  V4       Ke  	  XX3V3# )zÃreturn a set of control points for Bezier approximation to an arc
with angle increasing counter clockwise. No requirement on (theta1-theta0) <= 90
However, it must be true that theta1-theta0 > 0.g     €V@)rœ  r.   r   Úfloatr°   rî   r¬  )rL   r¥   r¦   r}   r~   r�  rž  ÚangularExtentÚ	angleListÚNfragÚ	fragAngleÚiir~  ÚbÚctrlptsr¡  r¢  ÚptsÚtmpxÚtmpys   &&&&&&&             r$   ÚbezierArcCCWÚPMCanvas.bezierArcCCWó  sø   € ð �ˆäˆ}Ó Ô%Ø ˜Ð)‰Iäœœs =Ó1°#Õ5Ó6Ó8ˆEÜ˜mÓ,¨eÕ3ˆIØˆIÜ˜E–l�Ø )�^Õ+�Ø•M�Ø× Ñ  ! Ö'ñ #ð
 ˆÛ‰EˆQßØ!%×!:Ñ!:¸2À"ÈÓ!M‘‘�"�R˜#Ø—‘˜sÖ#à%)×%>Ñ%>¸rÀbÈQÓ%QÑ"‘�$�t˜cØ—‘˜sÖ#ñ ð �B�˜Ð!Ð!r5   c           	     ó¤   € V P                  WW4WV4      w  w  rxp	V P                  Wx4       V	 F   w  w  r«w  rÍw  rïV P                  W«WÍWï4       K"  	  R# )z¿adds an ellisesoidal arc segment to a path, with an ellipse centered
on cx,cy and with radii (major & minor axes) rx and ry.  The arc is
drawn in the CCW direction.  Requires: (ang2-ang1) > 0N)rº  r±   rì   )rL   r¥   r¦   r}   r~   Úang1Úang2r¡  r¢  r¶  r‡   rˆ   r‰   rŠ   r¥  r¦  s   &&&&&&&         r$   ÚaddEllipsoidalArcÚPMCanvas.addEllipsoidalArc  sR   € ð
 "×.Ñ.¨r°b¸DÓFÑ‰ˆ"�'à�‰�BÔÛ*1Ñ&‰Wˆb‘g�r™g˜rØ�L‰L˜˜r RÖ+ó +2r5   c           	     ó.   € V P                  WW4WVR 7       R# ))rÖ   Ú	directionÚshapingN©rÑ   )rL   r@   rA   rÍ   rÖ   rÂ  rÃ  s   &&&&&&&r$   ÚdrawCentredStringÚPMCanvas.drawCentredString  s   € Ø�‰˜˜DÀIˆÖ_r5   c                ó0   € V P                  WVR VR7       R# )rÆ   )rÖ   rÂ  NrÄ  )rL   rÍ   r@   rA   rÂ  s   &&&&&r$   ÚdrawRightStringÚPMCanvas.drawRightString  s   € Ø�‰˜˜q¨U¸YˆÖGr5   c                ó"  € V P                   pVP                  p	VP                  p
V'       d   WIV
38w  d   Vw  r¼\        W‹V4       MT
pT	p\	        W6W¼VR 7      w  r= VR9   dO   \        W;V4      pVR8X  d
   W,          pM2VR8X  d   WR,          ,          pMVR8X  d   V\        WSWÛV4      ,          pV P                  R8X  d   VP                  WV4       EM\        V4      pVP                  '       d   VP                  WV4       MáTp\        V4      '       g    VP                  R4      p\        W>.VP                   ,           4      p\#        V4      pV^,
          p\%        V4       F|  pVV,          w  ppVV8w  d   \        VVP                  V4       TpVP                  WV4       VV8w  g   KJ  VVP                  VP                  VP&                  4      V4      ,          pK~  	  VP)                  W©4       R#   \         du   pTP                  R,          w  pp\        TP                  R,          TP                  ^,          : R	TT^
,
          T : R
TTT : RTTT^
,            : 23,           !  hRp?ii ; i  TP)                  Y©4       i ; i))r^   r_   rÃ  rÆ   rÇ   g       @rÈ   r   Úutf8:r¬   rq   N:Nrq   NÚ
z-->z<--N)rÆ   rÇ   rÆ   )r+  r_   r^   r�  r
   r   rÎ   r™   rÑ   r   Ú_dynamicFontr   ÚdecodeÚUnicodeDecodeErrorÚargsr   ÚsubstitutionFontsrh   r°   ÚencNamer   )rL   r@   rA   rÍ   rÉ   rÖ   rÂ  rÃ  rM  Úgs_fontSizeÚgs_fontNamer^   r_   r×   ÚfontÚfcÚer¸   ÚjÚFTÚnÚnm1r!  Úts   &&&&&&&&                r$   rÑ   ÚPMCanvas.drawString"  sl  € Ø�X‰XˆØ—k‘kˆØ—k‘kˆß˜°Ð$=Ô=Ø!*ÑˆHÜ�R Õ*à"ˆHØ"ˆHä& t¸xÐbiÔj‰ˆð%	0ØÐ5Ô5Ü% d°XÓ>�Ø Ô%Ø•L‘AØ  (Ô*Ø �•O‘AØ  )Ô+Øœ {¸ÈÓRÕR�Aà�}‰}˜kÔ)Ø—‘˜a $Ö'ä˜xÓ(�Ø×$×$Ð$Ø—M‘M ! dÕ+à�BÜ$ TŸ?š?ðLØ#'§;¡;¨vÓ#6˜Dô
 $ D¨°×0FÑ0FÕ)FÓG�BÜ˜B›�AØ˜A�#�CÜ" 1žX˜Ø! !�u™˜˜1Ø˜bœ5Ü$ R¨¯
©
°8Ô<Ø!"˜BØŸ™ a¨!Ô,Ø˜cž6Ø §¡¨q¯x©x¸¿	¹	Ó/BÀ8Ó!LÕLšAñ &ð �J‰J�{Ö/øô!  2ô LØ"#§&¡&¨¥+™C˜A˜aÜ"4°q·v±v¸bµzÐYZ×Y_ÑY_Ð`a×YbÐYbÐcgÐhiÐjlÕhlÐmnÓcoÐptÐuvÐwxÓpyÐz~ð  @Að  BCð  DFõ  BFò  {Gð  DHð  CJõ  8Jñ  #Lð  LûðLûð  �J‰J�{Õ/ús9   ÁB=I; ÄG9 Ä*BI; Æ06I; Ç9I8ÈA/I3É3I8É8I; É;Jc                óª   € V P                   eE   V P                  4        V P                  W4       V P                  W44       V P	                  4        R # R # rG   )rW   r®   r¯   r±   r´   )rL   r‡   rˆ   r‰   rŠ   s   &&&&&r$   r†   ÚPMCanvas.lineV  s?   € Ø×ÑÒ'Ø�N‰NÔØ�K‰K˜ÔØ�K‰K˜ÔØ�O‰OÖñ	 (r5   c                ó(  € V P                  4        V P                  W4       V P                  W,           V4       V P                  W,           W$,           4       V P                  WV,           4       V P                  4        V P	                  WVR 7       R# ))rð   rÔ   N)r®   r¯   r±   r²   r¨   )rL   r@   rA   r€   r�   rð   rÔ   s   &&&&&&&r$   r   ÚPMCanvas.rect]  se   € Ø�‰ÔØ�‰�AÔØ�‰�A•G˜QÔØ�‰�A•G˜Q�ZÔ(Ø�‰�A˜6•zÔ"Ø�‰ÔØ×Ñ 6ÐÖ4r5   c                óâ  € V^ 8X  d   TpV^ 8X  d   TpW,           pW$,           pV P                  4        V P                  W,           V4       V P                  Wu,
          W&,           WVRR4       V P                  Wu,
          W†,
          WV^ ^Z4       V P                  W,           W†,
          WV^Z^´4       V P                  W,           W&,           WV^´R4       V P                  4        V P	                  4        R# )zÊrect(self, x, y, width, height, rx,ry):
Draw a rectangle if rx or rx and ry are specified the corners are
rounded with ellipsoidal arcs determined by rx and ry
(drawn in the counter-clockwise direction)i  ih  N)r®   r¯   r¿  r²   r¨   )	rL   r@   rA   r€   r�   r}   r~   r‰   rŠ   s	   &&&&&&&  r$   r‚   ÚPMCanvas.roundRectf  sÀ   € ð
 ˆqŒ5�r�"ØˆqŒ5�r�"Ø�YˆØ�ZˆØ�‰ÔØ�‰�A•D˜ÔØ×Ñ˜r�u a¥d¨B°C¸Ô>Ø×Ñ˜r�u b¥e¨R°Q¸Ô;Ø×Ñ˜q�t R¥U¨B°B¸Ô<Ø×Ñ˜q�t Q¥T¨2°3¸Ô=Ø�‰ÔØ×ÑÖr5   c                ó*   € V P                  WW34       R# )zRadd closed path circle with center cx,cy and axes r: counter-clockwise orientationN)r¼   )rL   r¥   r¦   r§   s   &&&&r$   r¤   ÚPMCanvas.circlex  s   € à�‰�R˜1Ör5   c                ó  € V P                  4        W,           pTpTpW$,
          pW,           p	W$\        ,          ,
          p
Ws\        ,          ,           pTpV P                  WV4       V P                  WšW¼Wx4       TpTpW,
          pTpW\        ,          ,
          p	W$,
          p
TpW$\        ,          ,
          pV P                  WšW¼Wx4       TpTpTpW$,           pW,
          p	W$\        ,          ,           p
W\        ,          ,
          pW$,           pV P                  WšW¼Wx4       TpTpW,           pTpW\        ,          ,           p	W$,           p
W,           pW$\        ,          ,           pV P                  WšW¼Wx4       V P	                  4        R# )z}add closed path ellipse with center cx,cy and axes rx,ry: counter-clockwise orientation
(remember y-axis increases downward) N)r®   ÚBEZIER_ARC_MAGICr¯   rì   r²   )rL   r¥   r¦   r}   r~   r¡  r¢  r¥  r¦  r‡   rˆ   r‰   rŠ   s   &&&&&        r$   r¼   ÚPMCanvas.ellipse|  sb  € ð 	�‰Ôà�WˆØˆàˆØ�Uˆà�UˆØÔ#Õ#Õ#ˆàÔ%Õ%Õ%ˆØˆØ�‰�BÔØ�‰�R˜2 Ô'àˆØˆà�UˆØˆàÔ#Õ#Õ#ˆØ�UˆàˆØÔ$Õ$Õ$ˆØ�‰�R˜2 Ô'àˆØˆàˆØ�Uˆà�UˆØÔ#Õ#Õ#ˆàÔ$Õ$Õ$ˆØ�UˆØ�‰�R˜2 Ô'àˆØˆà�UˆØˆàÔ#Õ#Õ#ˆØ�Uˆà�UˆØÔ#Õ#Õ#ˆØ�‰�R˜2 Ô'Ø�‰Ör5   c                ó   € R# )zdo nothing for compatibilityNrò   rK   s   &r$   Ú	saveStateÚPMCanvas.saveState·  s   € ár5   c                ód   € V P                  V4      V n        \        VR R4      pVe	   W n        R# R# ©rl   N)r0  r]   rÌ   r\   ©rL   ÚaColorrl   s   && r$   rj   ÚPMCanvas.setFillColor»  s3   € Ø×-Ñ-¨fÓ5ˆŒÜ˜˜w tÓ,ˆØÒØ$Öñ r5   c                ód   € V P                  V4      V n        \        VR R4      pVe	   W n        R# R# rí  )r0  rW   rÌ   rV   rî  s   && r$   rb   ÚPMCanvas.setStrokeColorÁ  s4   € Ø×/Ñ/°Ó7ˆÔÜ˜˜w tÓ,ˆØÒØ!&Öñ r5   c                ó   € Wn         R # rG   )rc   )rL   Úcaps   &&r$   Ú
setLineCapÚPMCanvas.setLineCapÊ  s   € ØŽr5   c                ó   € Wn         R # rG   )rd   )rL   Újoins   &&r$   ÚsetLineJoinÚPMCanvas.setLineJoinÍ  s   € ØŽr5   c                ó   € Wn         R # rG   )rU   )rL   r€   s   &&r$   ÚsetLineWidthÚPMCanvas.setLineWidthÐ  s   € Ø Ör5   c                ó’   € \        Y;'       g    V P                  P                  Ve   V4      # V P                  P                  4      # rG   )r   r+  r^   r_   )rL   rÍ   r^   r_   s   &&&&r$   r   ÚPMCanvas.stringWidthÓ  sF   € Ü˜4×!>Ð!>¨T¯X©X×->Ñ->Ø-5Ò-A ó[ð 	[ØGKÇxÁx×GXÑGXó[ð 	[r5   )rT   r]   r\   rc   rd   rW   rV   rU   )éH   éÿÿÿ NNrŽ   )Nr$  rG   rc  )rp   rp   )rÇ   NF)NÚleftNF)NN)%ró   rô   rõ   rö   r:  Ústaticmethodr1  rQ  rX  r€  r„  rŒ  r   r”  r—  r¨   r¬  rº  r¿  rÅ  rÈ  rÑ   r†   r   r‚   r¤   r¼   rê  rj   rb   ÚrestoreStaterõ  rù  rü  r   rø   rù   rú   s   @r$   r(  r(  6  s»   ø‡ € ô!ð$ óYó ðYô*òô
6%ôpò
ô(-ò%ò&ô%ò!7òF"ò<	,ô`ôHô20òhô5òò$ ò9òvò%ò'ð €Lòòò!÷[ò [r5   r(  r  rŽ   c           
      ó„   € \        V 4      p \        V P                  V P                  WW5VR 7      p\	        W^ ^ 3RV/VB  V# ))r6  r7  r-  r!   r8  r9   )r   r(  r€   r�   r=   )	r  r6  r7  r-  r9   r!   r8  rB   r3   s	   &&&&&&&, r$   ÚdrawToPMCanvasr  Ö  sB   € Ü˜AÓ€AÜ�—‘˜!Ÿ(™(¨¸iÐdnÔo€AÜˆˆq�!Ñ6 ,Ð6°Ò6Ø€Hr5   c                 óN   € \        V 3R VRVRVRVRVRV/VB P                  4       # )r6  r7  r-  r9   r!   r8  )r  rX  )r  r6  r7  r-  r9   r!   r8  rB   s   &&&&&&&,r$   Ú	drawToPILr  Ü  sh   € Ü˜!ñ  L ð  L¨ð  L°yð  LÈ|ð  LÐelð  Lð  yCð  Lð  GKñ  L÷  Rñ  Ró  Tð  Tr5   c                 ó–   € \        4       p\        V 3R VRVRVRVRVRV/VB p	V	P                  RVP                  VP                  R7      # )r6  r7  r-  r9   r!   r8  r·   rý   )r+   r  r�   r   r  )
r  r6  r7  r-  r9   r!   r8  rB   r)   rœ   s
   &&&&&&&,  r$   Ú
drawToPILPr
  ß  sr   € Ü‹K€EÜ	�1ñ  
D˜#ð  
D "ð  
D°	ð  
DÈð  
DÐ]dð  
DÐpzð  
Dð  Cñ  
D€BØ�:‰:�c %§*¡*°e·n±nˆ:ÓEÐEr5   rd  c	                óX   € \        V 3RVRVRVRVRVRV/V	B p
V
P                  W4       R# )zkcreate a pixmap and draw drawing, d to it then save as a file
configPIL dict is passed to image save methodr6  r7  r-  r9   r!   r8  N)r  r€  )r  r  r  r6  r7  r-  r9   r!   r8  rB   r3   s   &&&&&&&&&, r$   Ú
drawToFiler  ä  s\   € ô 	�qñ  	H˜cð  	H bð  	H°Ið  	HÈLð  	HÐahð  	HÐt~ð  	Hð  CGñ  	H€AØ‡L�L�Ör5   c                 óf   € \        4       p	\        W	3R VRVRVRVRVRV/VB  V	P                  4       # )r  r6  r7  r-  r!   r8  )r   r  rƒ  )
r  r  r6  r7  r-  r9   r!   r8  rB   rk   s
   &&&&&&&&, r$   ÚdrawToStringr  ê  sB   € Ü‹	€AÜˆqÑn�sÐn Ðn¨Ðn°iÐnÈÐnÐ[eÐnÐimÒnØ�:‰:‹<Ðr5   c           	      ó|	  aaaaa€ R  p^ RI p^ RIHp ^ RIHo VP
                  p. pVP                  P                  V 4      '       g   VP                  ! V 4       RpRpV.p	/ p
\        P                  R,          pV Uu. uF  qÌP                  R4      '       g   K  VNK  	  ppV'       g   . R,OpMPV F  pVP                  V4       K  	  RP                  V Uu. uF  qÌR,          NK  	  up4      P                  R4      p. o^ RIo^ RIHo VVVVV3R lpV! \%        \&        R4      R7       EFV  w  pppV
P)                  V^ 4      ^,           ;pV
V&   V^8”  d   VRV^,
          ,          ,          pV'       d
   VV9  d   KU  Tp\+        VP,                  4      p\+        VP.                  4      pV	P1                  RV: RV: R24       V EFe  pVR-9   d'   V	P1                  RVP3                  4       ,          4        V: RV! V4      : 2pVP                  P                  V V4      pVP                  P5                  V4      '       d   VP                  ! V4       VR8X  d   \7        VVVR\8        /R7       M,VR.9   d   VP;                  R	R
.V VR7       M\7        VVVR7       VR/9   d   V	P1                  RV,          4       M?VR	8X  d   V	P1                  RV,          4       MVR
8X  d   V	P1                  RV,          4       S'       g   S^8”  d   \=        R\?        V4      ,          4       EKe  EKh  	  VPB                  PE                  RR 4      R!8X  d   ^ VPF                  R"&   R0 F  p VP;                  V.V VR7       K  	  EKY  	  S'       d?   V	^ ,          PI                  R#R$4      V	^ &   V	P1                  R%4       V	PK                  S4       V	P1                  V4       VP                  P                  V R&4      p\M        VR'4      ;_uu_ 4       pVPO                  V	4       RRR4       \        PP                  R(8X  d   ^ R)I)H*p V! VR*R+7       S'       g   S^8”  d   \=        RV,          4       R# R# u upi u upi   \@         d    T! TT4        EKË  i ; i   T! TT4        EKB  ; i  + '       g   i     L’; i)1c                 ó   € V R 8X  d   Rp V # )ÚtiffÚtifrò   )r@   s   &r$   r  Útest.<locals>.extò  s   € ØˆfŒ9˜�aØˆr5   N)Ú
testshapes)Úverbosezq<html><head><title>renderPM output results</title></head>
    <body>
    <h1>renderPM results of output</h1>
    z</body>
    </html>
    r[  z--ext=ÚpctÚpyrä   Ú,:é   NN)Úescapec                 ó  <€ R V : RV: R2pS'       g   S^8”  d   \        V4       SP                  RV,          4       \        4       pSP                  VR7       SP                  RS! VP	                  4       4      ,          4       R# )zProblem drawing z fmt=z filez"<br/><h2 style="color:red">%s</h2>)Úfilez<pre>%s</pre>N)Úprintrî   r   Ú	print_excrƒ  )	r  r  ÚmsgÚbufÚerrsr  ÚshoutÚ	tracebackr  s	   &&  €€€€€r$   ÚhandleErrorÚtest.<locals>.handleError  sb   ø� Û04³SÐ9ˆß�G˜A”Iœu SœzØ�‰Ð8¸3Õ>Ô?Ü‹jˆØ×Ñ ÐÔ%Ø�‰�O¡f¨S¯\©\«^Ó&<Õ<Ö=r5   Úft_get_face)ÚdoTTFz.%02dz<hr><h2>Drawing z</h2>
<pre>z</pre>z<p>%s format</p>
r  r  )r  r-  )ÚformatsÚoutDirÚfnRootr*  z<img src="%s" border="1"><br>
z#<a href="%s">python source</a><br>
z<a href="%s">SVG</a><br>
zwrote %sÚRL_NOEPSPREVIEWÚ0r
  Úpreviewz</h1>z7 <a href="#errors" style="color: red">(errors)</a></h1>z<a name="errors"/>zpm-index.htmlr4  r  r  ÚHTMLr  )Úgifr  ÚpngÚjpgr  r  rä   )r/  r0  r1  r  )r  rä   )r/  r0  r1  )Úepsrå   )+r“   Úreportlab.graphicsr  Úreportlab.rl_configr  ÚgetAllTestDrawingsr‘   ÚisdirÚmkdirÚsysÚargvrq  Úremoverø  rw  r#  Úxml.sax.saxutilsr  r–   r  rr  r.   r€   r�   rî   rA  r”   r  r   rz  r  rp  rD  ÚenvironrC  r;   ÚreplaceÚextendr•   Ú
writelinesÚplatformr  r  ) r)  r"  r  r“   r  r5  ÚdrawingsÚhtmlTopÚ
htmlBottomÚhtmlÚnamesr9  r~  ÚEr$  r>   Ú	docstringr  r¸   r*  r4  r5  rP  ÚfilenameÚfullpathÚhtmlFileNamer!  r  r!  r  r#  r  s    &f                          @@@@r$   ÚtestrK  ñ  sÜ  ü€ òó
 Ý-Ý+Ø#×6Ñ6ÐØ€HØ�7‰7�=‰=˜× Ò Ø
�Š�Ôð€Gð€Jð ˆ9€DØ€EÜ�8‰8�B�<€DÙÓ3‘DˆqŸL™L¨×2�ˆ‘D€AÐ3ßÚ<‰ãˆAØ�K‰K˜ŽNñ à�X‰X¡aÓ(¡a ˜—u�u¡aÑ(Ó)×0Ñ0°Ó5ˆà€DÛÝ'÷>ñ >ñ '9¼wÄzÐR_Ó?`×&aÐ&aÑ"ˆ�)˜TØ×*Ñ*¨4°Ó2°1Õ4Ð4ˆˆE�$‰KØˆQŒ3�˜ 1 Q¥3�Õ'�ß�D Ô$¡hØˆÜ�—‘ÓˆÜ�—‘ÓˆØ�ŠÃÃiÐPÔQäˆAØÐ-Ô-Ø—‘Ð0°1·7±7³9Õ<Ô=ð$Û&,©c°!­fÐ5�ØŸ7™7Ÿ<™<¨°Ó9�Ø—7‘7—>‘> (×+Ò+Ø—I’I˜hÔ'Ø�e”8Ü˜w x°AÀÌuÐ@UÖVØ˜,Ô&Ø—L‘L¨$¨u¨¸VÈ6�LÕRä˜w x°AÕ6ØÐ+Ô+Ø—K‘KÐ AÀHÕ LÕMØ˜”WØ—K‘KÐ FÈÕ QÕRØ˜”XØ—K‘KÐ <¸xÕ GÔHß˜G AœI¤u¨Z¼¸h»Õ-G×'HšIñ) ð. �:‰:�>‰>Ð+¨CÓ0°#Ô5ÐUV°w×7GÑ7GÈ	Ñ7RÛˆAð$Ø—‘ a S°¸f�ÖEô  ñC 'b÷N Ø�q•'—/‘/ 'Ð*cÓdˆˆQ‰Ø�‰Ð(Ô)Ø�‰�DÔØ‡K�K�
ÔØ—7‘7—<‘< ¨Ó8€LÜ	ˆl˜C×	 Ô	  AØ	�‰�TÔ÷ 
!ä
‡|�|�UÔÝ4Ù�\ fÕ-ß�˜”	œ5 ¨lÕ!:Ö;‘	ùòM 	4ùò )øôX "ô $Ù˜D ×#Ð#ð$ûð$Ù˜D ×#Ð#ú÷ 
!×	 úsJ   Á>Q3ÂQ3ÃQ8Ç<AQ=ÉCQ=Ì
"Q=Í*RÐR+Ñ=RÒRÒR(Ò+R;	Ú__main__T)r"  rG   )ÚpmoutF)AÚ__version__r÷   rë   Úreportlab.graphics.renderbaser   r   Úreportlab.pdfbase.pdfmetricsr   r   r   Úreportlab.pdfbase.ttfontsr   r	   Úreportlab.pdfgen.textobjectr
   r  r   r   Úreportlab.lib.abagr   Úreportlab.lib.colorsr   r   Ú	reportlabr   Úutilsr   r�  r   r“   r8  Úior   r   Úmathr   r   r   r   r%   r   r  r+   r4   r7   Ú_unset_r=   rD   r:   r  r  r  r"  ÚdictrB  rç  r(  r  r  r
  r  r  rz  rK  ró   rò   r5   r$   Ú<module>r[     sÜ  ðð €ð	1€ô (ß Lß IÑ Iß >Ý 6ß 4Ý #ß /Ý ß 5ç ß  ß #Ó #ôð:Ù˜y×8Ñ8Ó9€Jòòò
.ð .7×->Ñ->ô Rõ 3ô@�(ô @òDFòòôñ ˜H¨(°wÔ?€ØÐ ÷_[ñ _[ð@  °TÈ	×HYÑHYÐbk×b{Ñb{ð  HMô ð ˜H°À9×CTÑCTÐ]f×]vÑ]vð  CHô Tð ˜X°ÀI×DUÑDUÐ^g×^wÑ^wð  DIô Fð
  2¨(¸dÐQZ×QbÑQbÐkt÷  lEñ  lEð  QVô ð  "¨¸TÐPY×PaÑPaÐjs÷  kDñ  kDð  PUô ð
 €ô]<ð~ ˆZÔÙˆt×ñ øðg ô ØƒJðús   Á0F	 Æ		FÆF