§
    £”j–3  ã                   óÆ   — d Z dZddlT ddlmZ ddlmZ ddlmZm	Z	 d„ Z
 G d	„ d
¦  «        Zd„ Zd„ Zd„ Z G d„ d¦  «        Zedk    r ed¦  «          ee¦  «         dS dS )z3.13.0zXSuperclass for renderers to factor out common functionality and default implementations.é    )Ú*)ÚDerivedValue)Ú	rl_configé   )ÚmmultÚinversec                 ó~   — i }|                       ¦   «                              ¦   «         D ]\  }}|t          v r|||<   Œ|S )zðUsed to compute when we need to change the graphics state.
    For example, if we have two adjacent red shapes we don't need
    to set the pen color to red in between. Returns the effect
    the given shape would have on the graphics state)ÚgetPropertiesÚitemsÚSTATE_DEFAULTS)ÚshapeÚdeltaÚpropÚvalues       úl/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/renderbase.pyÚgetStateDeltar      sN   € ð
 €EØ×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4ð  ð  ‰ˆˆeØ•>Ð!Ð!ØˆE�$‰KøØ€Ló    c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚStateTrackera*  Keeps a stack of transforms and state
    properties.  It can contain any properties you
    want, but the keys 'transform' and 'ctm' have
    special meanings.  The getCTM()
    method returns the current transformation
    matrix at any point, without needing to
    invert matrixes when you pop.Nc                 ó€  — g | _         g | _        |€t                               ¦   «         }|rit                               ¦   «         D ]O}d|d d…                              ¦   «         z   |dd …         z   }t          ||¦  «        rt          ||¦  «        ||<   ŒPd|v r|d         |d<   | j                             |¦  «         d S )NÚinitialr   Ú	transformÚctm)	Ú_deltasÚ	_combinedr   ÚcopyÚkeysÚupperÚhasattrÚgetattrÚappend)ÚselfÚdefaultsÚ
defaultObjÚkÚas        r   Ú__init__zStateTracker.__init__!   sÎ   € àˆŒð
 ˆŒØÐÝ%×*Ò*Ñ,Ô,ˆHØð 	8Ý#×(Ò(Ñ*Ô*ð 8ð 8�Ø˜a   œeŸkšk™mœmÑ+¨A¨a¨b¨b¬EÑ1�Ý˜: aÑ(Ô(ð 8Ý")¨*°QÑ"7Ô"7�H˜Q‘Køà˜(Ð"Ð"Ø& {Ô3ˆH�U‰OØŒ×Ò˜hÑ'Ô'Ð'Ð'Ð'r   c                 ó   — |S ©N© )r"   Úds     r   Ú_applyDefaultObjzStateTracker._applyDefaultObj5   s   € Øˆr   c                 ób  — | j         d                              ¦   «         }|                     ¦   «         D ]F\  }}|dk    r6|d         |d<   t          | j         d         d         |d         ¦  «        |d<   ŒA|||<   ŒG| j                              |¦  «         | j                             |¦  «         dS )z™Take a new state dictionary of changes and push it onto
        the stack.  After doing this, the combined state is accessible
        through getState()éÿÿÿÿr   r   N)r   r   r   r   r!   r   )r"   r   ÚnewstateÚkeyr   s        r   ÚpushzStateTracker.push8   s¶   € ð
 ”> "Ô%×*Ò*Ñ,Ô,ˆØŸ+š+™-œ-ð 	&ð 	&‰JˆC�Ø�kÒ!Ð!Ø(-¨kÔ(:�˜Ñ%Ý"'¨¬°rÔ(:¸5Ô(AÀ5ÈÔCUÑ"VÔ"V�˜‘�ð
 !&�˜‘�àŒ×Ò˜hÑ'Ô'Ð'ØŒ×Ò˜EÑ"Ô"Ð"Ð"Ð"r   c                 óö   — | j         d= | j         d         }| j        d         }| j        d= i }|                     ¦   «         D ]7\  }}||         }||k    r$|dk    rt          |d         ¦  «        ||<   Œ2|||<   Œ8|S )zústeps back one, and returns a state dictionary with the
        deltas to reverse out of wherever you are.  Depending
        on your back end, you may not need the return value,
        since you can get the complete state afterwards with getState()r.   r   )r   r   r   r   )r"   ÚnewStateÚ	lastDeltaÚreverseDeltar0   ÚcurValueÚ	prevValues          r   ÚpopzStateTracker.popK   sœ   € ð
 ŒN˜2ÐØ”> "Ô%ˆØ”L Ô$ˆ	ØŒ\˜"Ðàˆà&Ÿ_š_Ñ.Ô.ð 	2ð 	2‰MˆC�à  œˆIØ˜HÒ$Ð$à˜+Ò%Ð%Ý(/°	¸+Ô0FÑ(GÔ(G�L Ñ%Ð%à(1�L Ñ%øØÐr   c                 ó   — | j         d         S )z1returns the complete graphics state at this pointr.   ©r   ©r"   s    r   ÚgetStatezStateTracker.getStateb   s   € àŒ~˜bÔ!Ð!r   c                 ó(   — | j         d         d         S )z7returns the current transformation matrix at this pointr.   r   r:   r;   s    r   ÚgetCTMzStateTracker.getCTMf   s   € àŒ~˜bÔ! %Ô(Ð(r   c                 ó(   — | j         d         |         S )z>returns the complete graphics state value of key at this pointr.   r:   )r"   r0   s     r   Ú__getitem__zStateTracker.__getitem__j   s   € àŒ~˜bÔ! #Ô&Ð&r   c                 ó&   — || j         d         |<   dS )z6sets the complete graphics state value of key to valuer.   Nr:   )r"   r0   r   s      r   Ú__setitem__zStateTracker.__setitem__n   s   € à"'ˆŒ�rÔ˜3ÑÐÐr   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r,   r1   r8   r<   r>   r@   rB   r*   r   r   r   r      s›   € € € € € ð%ð %ð(ð (ð (ð (ð(ð ð ð#ð #ð #ð&ð ð ð."ð "ð "ð)ð )ð )ð'ð 'ð 'ð(ð (ð (ð (ð (r   r   c                  ó  — t          d¦  «         d d d g d¢dœ} ddlm} ddidd	|d
œdg d¢idg d¢iddig}t          | ¦  «        }t          d|                     ¦   «         ¦  «         t          ¦   «          |D ]J}t          d|¦  «         |                     |¦  «         t          d|                     ¦   «         d¦  «         ŒK|D ]G}t          d|                     ¦   «         ¦  «         t          d|                     ¦   «         d¦  «         ŒHd S )NzTesting state tracker)r   r   r   r   r   r   )Ú	fillColorÚstrokeColorÚfontNamer   r   )Ú_baseGFontNamerH   ÚredÚgreenÚblue)rH   rI   rJ   r   )ç      à?r   r   rO   r   r   )rO   r   r   rO   é   é   rI   zinitial:zpushing:zstate:  ú
zpopping:)ÚprintÚreportlab.graphics.shapesrK   r   r<   r1   r8   )r#   rK   ÚdeltasÚstr   s        r   ÚtestStateTrackerrW   r   sF  € Ý	Ð
!Ñ"Ô"Ð"Ø °ÀÐR_ÐR_ÐR_Ð`Ð`€HØ8Ð8Ð8Ð8Ð8Ð8à	�UÐØ¨F¸nÐMÐMØ	Ð&Ð&Ð&Ð'Ø	Ð&Ð&Ð&Ð'Ø	�uÐð
€Fõ 
�hÑ	Ô	€BÝ	ˆ*�b—k’k‘m”mÑ$Ô$Ð$Ý	�G„G€GØð -ð -ˆÝˆj˜%Ñ Ô Ð Ø
�Š�‰ŒˆÝˆj˜Ÿš™œ tÑ,Ô,Ð,Ð,àð -ð -ˆÝˆj˜Ÿš™œÑ"Ô"Ð"Ýˆj˜Ÿš™œ tÑ,Ô,Ð,Ð,ð-ð -r   c                 ó²   — t          | t          ¦  «        rA	 t          | d¦  «        rd}n	|| _        d }| }|                      ¦   «         } |s|`n	# |s|`w xY w| S ©NÚ_canvasr   )Ú
isinstanceÚUserNoder   rZ   ÚprovideNode)ÚnodeÚcanvasÚocanvasÚonodes       r   Ú_expandUserNoderb   Š   sz   € Ý�$�Ñ!Ô!ð 
.ð		.Ý�t˜IÑ&Ô&ð Ø��à%�”Ø�ØˆEØ×#Ò#Ñ%Ô%ˆDàÐ-  øø�7Ð-  Ð-Ð-Ð-Ð-Ø€Ks   —2A ÁAc                 óæ   — | j         }|dk    rc| }|                      |j        |z  |j        |z  ¦  «        } |j                             ¦   «         | _        |                      ||¦  «         d| _         | S )Ng      ð?)ÚrenderScaleÚ	__class__ÚwidthÚheightÚ__dict__r   Úscale)r+   rd   Úos      r   ÚrenderScaledDrawingrk   ˜   sm   € Ø”-€KØ�CÒÐØˆØ�KŠK˜œ Ñ+¨A¬H°[Ñ,@ÑAÔAˆØ”Z—_’_Ñ&Ô&ˆŒ
Ø	�Š�˜KÑ(Ô(Ð(ØˆŒØ€Hr   c                   ó°   — e Zd ZdZd„ Zddej        fd„Zd„ Zd„ Z	d„ 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„ Zd„ Zd„ Zd„ ZdS ) ÚRendererz*Virtual superclass for graphics renderers.c                 ó4   — t          |›d| j        ›�¦  «        ‚)Nz+ operation not defined at superclass class=)Ú
ValueErrorre   )r"   Ú	operations     r   Ú	undefinedzRenderer.undefined¥   s    € ÝÈYÈYÈYÐX\ÔXfÐXfÐgÑhÔhÐhr   r   c                 óT  — t          |¬¦  «        | _        |t          j        u rt          j        }|| _        |x|j        d<   | _        d|_        	 |rVt          |d¦  «        r$| 
                    ||||j        |j        ¦  «         n"|                     |||j        |j        ¦  «         |                     ¦   «          |                      ||¦  «         |                      |¦  «         |                      ¦   «          |                     ¦   «          | `| `|`|`| `dS # | `| `|`|`| `w xY w)z�This is the top level function, which draws the drawing at the given
        location. The recursive part is handled by drawNode.)r$   Ú_drawingNÚdrawBoundary)r   Ú_trackerr   Ú_unset_ÚshowBoundaryrZ   rh   rs   Ú_parentr   rt   rf   rg   ÚrectÚ	saveStateÚ	initStateÚdrawNoder8   ÚrestoreState)r"   Údrawingr_   ÚxÚyrw   s         r   ÚdrawzRenderer.draw¨   s@  € õ %°Ð8Ñ8Ô8ˆŒà�9Ô,Ð,Ð,½9Ô;Q¨lØˆŒØ6=Ð=ˆŒ˜
Ñ# d¤mØˆŒð	]àð EÝ˜6 .Ñ1Ô1ð EØ×'Ò'¨°Q°q¸¼ÀwÄ~ÑVÔVÐVÐVà—K’K  1 g¤m°W´^ÑDÔDÐDØ×ÒÑÔÐØ�NŠN˜1˜QÑÔÐØ�MŠM˜'Ñ"Ô"Ð"Ø�HŠH‰JŒJˆJØ×ÒÑ!Ô!Ð!ð �˜d˜m¨V¨_¸g¸oÈtÈ}È}È}ø��˜d˜m¨V¨_¸g¸oÈtÈ}Ð\Ð\Ð\Ð\s   ÁB?D ÄD'c                 óî   — | j         j        d         }t          t          |d         ¦  «        d d…         ¦  «        ||fz   |d<   | j                              |¦  «         |                      |i ¦  «         d S )Nr.   r   é   )ru   r   ÚtupleÚlistr1   ÚapplyStateChanges)r"   r   r€   rU   s       r   r{   zRenderer.initStateÁ   st   € Ø”Ô(¨Ô,ˆÝ#¥D¨°Ô)<Ñ$=Ô$=¸b¸q¸bÔ$AÑBÔBÀAÀaÀ5ÑHˆˆ{ÑØŒ×Ò˜6Ñ"Ô"Ð"Ø×Ò˜v rÑ*Ô*Ð*Ð*Ð*r   c                 ó8   — | j                              ¦   «          d S r)   )ru   r8   r;   s    r   r8   zRenderer.popÇ   s   € ØŒ×ÒÑÔÐÐÐr   c                 ó0   — |                       d¦  «         dS )zEThis is the recursive method called for each node
        in the treer|   N©rq   )r"   r^   s     r   r|   zRenderer.drawNodeÊ   s   € ð 	�Š�zÑ"Ô"Ð"Ð"Ð"r   c                 ó6   — | j         j        d         }||         S )z,Return current state parameter for given keyr.   )ru   r   )r"   r0   ÚcurrentStates      r   ÚgetStateValuezRenderer.getStateValueÐ   s   € à”}Ô.¨rÔ2ˆØ˜CÔ Ð r   c                 ó®   — |j                              ¦   «         D ]:\  }}t          |t          ¦  «        r |                     | |¦  «        }||j         |<   Œ;dS )z»Examine a node for any values which are Derived,
        and replace them with their calculated values.
        Generally things may look at the drawing or their
        parent.

        N)rh   r   r[   r   ÚgetValue)r"   r^   r0   r   ÚnewValues        r   ÚfillDerivedValueszRenderer.fillDerivedValuesÕ   sc   € ð œ-×-Ò-Ñ/Ô/ð 	.ð 	.‰JˆC�Ý˜%¥Ñ.Ô.ð .ð !Ÿ>š>¨$°Ñ4Ô4�à%-�”˜cÑ"øð	.ð 	.r   c                 óÊ  — t          | dd¦  «        }	 t          ||¦  «        }|s	 |s|`|r|`dS dS t	          |d¦  «        rd}n	||_        d}||uot	          |d¦  «         }|r||_        |                      |¦  «         t          |dd¦  «        }|r |||| ¬¦  «         t          |t          ¦  «        r|                      |¦  «         �nþt          |t          ¦  «        r|  
                    |¦  «         �nÒt          |t          ¦  «        r|                      |¦  «         �n¦t          |t          ¦  «        r|                      |¦  «         �nzt          |t          ¦  «        r|                      |¦  «         �nNt          |t"          ¦  «        r|                      |¦  «         �n"t          |t&          ¦  «        r|                      |¦  «         n÷t          |t*          ¦  «        r|                      |¦  «         nÌt          |t.          ¦  «        r|                      |¦  «         n¡t          |t2          ¦  «        r|                      |¦  «         nvt          |t6          ¦  «        r|                      |¦  «         nKt          |t:          ¦  «        r|                     | ¦  «         n t?          ddtA          |¦  «        z  ¦  «         |s|`|r|`dS dS # |s|`|r|`w xY w)	z1dispatch on the node's (super) class: shared coderZ   Nr   rx   Ú_drawTimeCallback)r_   ÚrendererÚDrawingErrorz!Unexpected element %s in drawing!)!r    rb   rZ   rx   r   r�   r[   ÚLineÚdrawLineÚPathÚdrawPathÚStringÚ
drawStringÚGroupÚ	drawGroupÚRectÚdrawRectÚImageÚ	drawImageÚCircleÚ
drawCircleÚEllipseÚdrawEllipseÚPolyLineÚdrawPolyLineÚPolygonÚdrawPolygonÚWedgeÚ	drawWedgeÚ
DirectDrawÚdrawDirectlyrS   Ústr)r"   Úanoder_   r^   r`   Ú
nodeparentÚdtcbs          r   ÚdrawNodeDispatcherzRenderer.drawNodeDispatcherä   s*  € å˜˜i¨Ñ-Ô-ˆð-	,å" 5¨Ñ0Ô0ˆDØÐ˜ðR Ð,  ØÐ+˜t˜|˜|˜|Ð+Ð+õS �t˜IÑ&Ô&ð Ø��à%�”Ø�Ø UÐ*ÐJµ7¸4À	Ñ3JÔ3JÐ/JˆJØÐ/¨%˜4œ<à×"Ò" 4Ñ(Ô(Ð(Ý˜4Ð 3°DÑ9Ô9ˆDØð 7Ø��T °Ð6Ñ6Ô6Ð6å˜$¥Ñ%Ô%ð VØ—’˜dÑ#Ô#Ð#Ñ#Ý˜D¥$Ñ'Ô'ð VØ—’˜dÑ#Ô#Ð#Ñ#Ý˜D¥&Ñ)Ô)ð VØ—’ Ñ%Ô%Ð%Ñ%Ý˜D¥%Ñ(Ô(ð VØ—’˜tÑ$Ô$Ð$Ñ$Ý˜D¥$Ñ'Ô'ð VØ—’˜dÑ#Ô#Ð#Ñ#Ý˜D¥%Ñ(Ô(ð VØ—’˜tÑ$Ô$Ð$Ñ$Ý˜D¥&Ñ)Ô)ð VØ—’ Ñ%Ô%Ð%Ð%Ý˜D¥'Ñ*Ô*ð VØ× Ò  Ñ&Ô&Ð&Ð&Ý˜D¥(Ñ+Ô+ð 	VØ×!Ò! $Ñ'Ô'Ð'Ð'Ý˜D¥'Ñ*Ô*ð VØ× Ò  Ñ&Ô&Ð&Ð&Ý˜D¥%Ñ(Ô(ð VØ—’˜tÑ$Ô$Ð$Ð$Ý˜D¥*Ñ-Ô-ð VØ×!Ò! $Ñ'Ô'Ð'Ð'å�nÐ%HÍ3ÈtÉ9Ì9Ñ%TÑUÔUÐUàÐ,  ØÐ+˜t˜|˜|˜|Ð+Ð+øð Ð,  ØÐ+˜t˜|Ð+Ð+Ð+Ð+s   “K ²JK Ë
K"Ú_strokeÚ
_lineWidthÚ_lineCapÚ	_lineJoinÚ_fillÚ_fontÚ	_fontSize)ÚstrokeÚstroke_widthÚstroke_linecapÚstroke_linejoinÚfillÚfont_familyÚ	font_sizec                 óx  — t          | dd ¦  «        }|                     ¦   «         D ]“}t          ||¦  «        }|sŒ|                      |¦  «         	 t	          |d¦  «        rd}n	||_        d }||ur||_        ||_        n||_        |                      |¦  «         ||ur|`|`|s|`Œƒ# ||ur|`|`|s|`w xY wd S rY   )r    ÚgetContentsrb   r�   r   rZ   rx   r|   )r"   Úgroupr_   r®   r^   r`   s         r   rœ   zRenderer.drawGroup  s  € õ ˜˜i¨Ñ-Ô-ˆØ×&Ò&Ñ(Ô(ð 	1ð 	1ˆEÝ" 5¨Ñ0Ô0ˆDØÐ!˜ð ×"Ò" 4Ñ(Ô(Ð(ð1Ý˜4 	Ñ*Ô*ð #Ø�G�Gà#)�D”LØ"�GØ˜uÐ$Ð$Ø$)�E”MØ#(�D”L�Là#(�D”LØ—’˜dÑ#Ô#Ð#à˜uÐ$Ð$¨%¨-Ø�LØÐ0 D Løøð ˜uÐ$Ð$¨%¨-Ø�LØÐ0 D LÐ 0Ð 0Ð 0Ð 0ð+	1ð 	1s   ÁAB)Â)B7c                 ó°   — |                      ¦   «         }t          |t          ¦  «        r|                      |¦  «         d S |                      |¦  «         d S r)   )Ú	asPolygonr[   r—   r˜   r¨   )r"   ÚwedgeÚPs      r   rª   zRenderer.drawWedge6  sW   € ð �OŠOÑÔˆÝ�a�ÑÔð 	 Ø�MŠM˜!ÑÔÐÐÐà×Ò˜QÑÔÐÐÐr   c                 ób   — |                      ¦   «         }|D ]}|                      |¦  «         Œd S r)   )Ú
asPolygonsr¨   )r"   ÚpathÚpolygonsÚpolygons       r   r˜   zRenderer.drawPath?  sA   € Ø—?’?Ñ$Ô$ˆØð 	*ð 	*ˆGØ× Ò  Ñ)Ô)Ð)Ð)ð	*ð 	*r   c                 ó0   — |                       d¦  «         d S )Nrž   r‰   )r"   ry   s     r   rž   zRenderer.drawRectD  s   € à�Š�zÑ"Ô"Ð"Ð"Ð"r   c                 ó0   — |                       d¦  «         d S )Nr–   r‰   )r"   Úlines     r   r–   zRenderer.drawLineH  s   € Ø�Š�zÑ"Ô"Ð"Ð"Ð"r   c                 ó0   — |                       d¦  «         d S )Nr¢   r‰   )r"   Úcircles     r   r¢   zRenderer.drawCircleK  ó   € Ø�Š�|Ñ$Ô$Ð$Ð$Ð$r   c                 ó0   — |                       d¦  «         d S )Nr¦   r‰   ©r"   Úps     r   r¦   zRenderer.drawPolyLineN  s   € Ø�Š�~Ñ&Ô&Ð&Ð&Ð&r   c                 ó0   — |                       d¦  «         d S )Nr¤   r‰   )r"   Úellipses     r   r¤   zRenderer.drawEllipseQ  ó   € Ø�Š�}Ñ%Ô%Ð%Ð%Ð%r   c                 ó0   — |                       d¦  «         d S )Nr¨   r‰   rÓ   s     r   r¨   zRenderer.drawPolygonT  r×   r   c                 ó0   — |                       d¦  «         d S )Nrš   r‰   )r"   Ú	stringObjs     r   rš   zRenderer.drawStringW  rÑ   r   c                 ó0   — |                       d¦  «         dS )z\This takes a set of states, and outputs the operators
        needed to set those propertiesr†   Nr‰   )r"   r   r3   s      r   r†   zRenderer.applyStateChangesZ  s   € ð 	�ŠÐ*Ñ+Ô+Ð+Ð+Ð+r   c                 ó    — t          d¦  «        ‚)Nr    )ÚNotImplementedError)r"   ÚargsÚkwdss      r   r    zRenderer.drawImage_  s   € Ý! +Ñ.Ô.Ð.r   N)rC   rD   rE   rF   rq   r   rv   r�   r{   r8   r|   rŒ   r�   r±   Ú	_restoresrœ   rª   r˜   rž   r–   r¢   r¦   r¤   r¨   rš   r†   r    r*   r   r   rm   rm   ¢   s  € € € € € Ø4Ð4ðið ið ið '(¨1¸9Ô;Lð ]ð ]ð ]ð ]ð2+ð +ð +ðð ð ð#ð #ð #ð!ð !ð !ð
.ð .ð .ð1,ð 1,ð 1,ðf $°LÐR\Ø"-°WÈ7Ø'ð)ð )€Ið1ð 1ð 1ð6 ð  ð  ð*ð *ð *ð
#ð #ð #ð#ð #ð #ð%ð %ð %ð'ð 'ð 'ð&ð &ð &ð&ð &ð &ð%ð %ð %ð,ð ,ð ,ð
/ð /ð /ð /ð /r   rm   Ú__main__z&this file has no script interpretationN)Ú__version__rF   rT   Úreportlab.lib.validatorsr   Ú	reportlabr   r   r   r   r   r   rW   rb   rk   rm   rC   rS   r*   r   r   ú<module>rå      s.  ðð
 €Øf€à 'Ð 'Ð 'Ð 'Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð	ð 	ð 	ðW(ð W(ð W(ð W(ð W(ñ W(ô W(ð W(ðr-ð -ð -ð0ð ð ðð ð ð~/ð ~/ð ~/ð ~/ð ~/ñ ~/ô ~/ð ~/ð@ ˆZÒÐØ	€EÐ
2Ñ3Ô3Ð3Ø	€Eˆ'�N„N€N€N€Nð Ðr   