§
    èƒñjÍ¸  ã            	      óˆ  — d Z ddlmZ ddlmZmZmZmZmZ ddl	Z	ddl
mZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ d!d"d„Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d„ d ¦  «        Z"eeeee eee!e"f         Z#dS )#zv Schemdraw drawing segments.

    Each element is made up of one or more segments
    that define drawing primitives.
é    )Úannotations)ÚOptionalÚSequenceÚAnyÚUnionÚBinaryIONé   )
ÚBBoxÚXYÚ	LinestyleÚCapstyleÚ	JoinstyleÚArcdirectionÚEndRefÚRotationModeÚHalignÚValign)Úutil©ÚPoint)Úsvgç      à?ÚvertsúSequence[XY]ÚradiusÚfloatÚreturnc                óô  ‡‡— g }t          t          | ¦  «        ¦  «        ddd…         D �]1}| |         }| |dz
           }| |dz
           }|d         |d         z
  }|d         |d         z
  }|d         |d         z
  }	|d         |d         z
  }
t          j        ||¦  «        t          j        |
|	¦  «        z
  dz  }t	          t          j        |¦  «        ¦  «        }‰|z  }d„ }d„ } |||¦  «        } ||	|
¦  «        }t          ||¦  «        }||k    r|}||z  Š ||||||¦  «        } |||||	|
¦  «        }|d         dz  |d         z
  |d         z
  }|d         dz  |d         z
  |d         z
  } |||¦  «        } ||‰¦  «        } ||||||¦  «        Št          j        |d         ‰d         z
  |d         ‰d         z
  ¦  «        }t          j        |d         ‰d         z
  |d         ‰d         z
  ¦  «        }||k     r|dt          j        z  z  }||k     °t          j	        ||d¦  «        }ˆˆfd	„|D ¦   «         }| 
                    |¦  «         �Œ3|                     |d         ¦  «         |S )
am   Round the corners of polygon defined by verts.
        Works for convex polygons assuming radius fits inside.

        Args:
            verts: List of (x,y) pairs defining corners of polygon
            radius: Radius of curvature

        Adapted from:
        https://stackoverflow.com/questions/24771828/algorithm-for-creating-rounded-corners-in-a-polygon
    Néÿÿÿÿr	   é   r   c                ó<   — t          j        | | z  ||z  z   ¦  «        S ©N)ÚmathÚsqrt)ÚxÚys     úQ/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/segments.pyÚ	getlengthzroundcorners.<locals>.getlength+   s   € Ý”9˜Q˜q™S 1 Q¡3™YÑ'Ô'Ð'ó    c                óD   — ||z  }| d         ||z  z
  | d         ||z  z
  fS )Nr   r	   © )ÚpointÚsegmentÚlengthÚdxÚdyÚfactors         r'   Úgetproportionpointz(roundcorners.<locals>.getproportionpoint.   s0   € Ø˜V‘^ˆFØ˜”8˜B ™KÑ'¨¨q¬°"°v±+Ñ)=Ð=Ð=r)   éd   c           	     óª   •— g | ]O}t          ‰d          t          j        |¦  «        ‰z  z   ‰d         t          j        |¦  «        ‰z  z   f¦  «        ‘ŒPS )r   r	   )r   r#   ÚcosÚsin)Ú.0ÚiÚcirclepointr   s     €€r'   ú
<listcomp>z roundcorners.<locals>.<listcomp>I   sU   ø€ ÐmÐmÐmÐef�u�k !”n¥t¤x°¡{¤{°6Ñ'9Ñ9¸;Àq¼>ÍDÌHÐUVÉKÌKÐX^ÑL^Ñ;^Ð_Ñ`Ô`ÐmÐmÐmr)   )ÚrangeÚlenr#   Úatan2ÚabsÚtanÚminÚpir   ÚlinspaceÚextendÚappend)r   r   ÚpolyÚvÚp1Úp2Úp3Údx1Údy1Údx2Údy2Úangler?   r-   r(   r2   Úlength1Úlength2r.   Úp1crossÚp2crossr/   r0   ÚLÚdÚ
startangleÚendangleÚphÚarcr9   s    `                           @r'   ÚroundcornersrY      sÓ  øø€ ð €DÝ•3�u‘:”:ÑÔ˜t˜t ˜tÔ$ð .ñ .ˆØ�1ŒXˆØ�1�Q‘3ŒZˆØ�1�Q‘3ŒZˆà�Œe�B�q”E‰kˆØ�Œe�B�q”E‰kˆØ�Œe�B�q”E‰kˆØ�Œe�B�q”E‰kˆå”˜C Ñ%Ô%­¬
°3¸Ñ(<Ô(<Ñ<¸aÑ?ˆÝ•$”(˜5‘/”/Ñ"Ô"ˆØ˜‘*ˆð	(ð 	(ð 	(ð	>ð 	>ð 	>ð �)˜C Ñ%Ô%ˆØ�)˜C Ñ%Ô%ˆÝ�W˜gÑ&Ô&ˆà�VÒÐØˆGØ˜c‘\ˆFà$Ð$ R¨°'¸3ÀÑDÔDˆØ$Ð$ R¨°'¸3ÀÑDÔDˆà�ŒU�1‰W�w˜q”zÑ! G¨A¤JÑ.ˆØ�ŒU�1‰W�w˜q”zÑ! G¨A¤JÑ.ˆØˆI�b˜"ÑÔˆØˆI�g˜vÑ&Ô&ˆØ(Ð(¨¨Q°°2°rÑ:Ô:ˆÝ”Z ¨¤
¨[¸¬^Ñ ;¸WÀQ¼ZÈÐTUÌÑ=VÑWÔWˆ
Ý”:˜g aœj¨;°q¬>Ñ9¸7À1¼:ÀkÐRSÄnÑ;TÑUÔUˆà˜Ò#Ð#Ø˜�$œ'™	Ñ!ˆHð ˜Ò#Ð#õ Œ]˜: x°Ñ5Ô5ˆØmÐmÐmÐmÐmÐjlÐmÑmÔmˆà�Š�CÑÔÐÑØ‡K‚K��Q”ÑÔÐØ€Kr)   c                  ó\   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 d)d*d„Zd+d!„Zd,d#„Zd-d&„Zd.d'„Zd.d(„Z	dS )/ÚSegmentaø   A segment path

        Args:
            path: List of (x,y) coordinates making the path
            color: Color for this segment
            lw: Line width for the segment
            ls: Line style for the segment '-', '--', ':', etc.
            capstyle: Capstyle for the segment: 'butt', 'round', 'square', ('projecting')
            joinstyle: Joinstyle for the segment: 'round', 'miter', or 'bevel'
            fill: Color to fill if path is closed
            arrow: Arrowhead specifier, such as '->', '<-', '<->', '-o', etc.
            arrowwidth: Width of arrowhead
            arrowlength: Length of arrowhead
            clip: Bounding box to clip to
            zorder: Z-order for segment
            visible: Show the segment when drawn
    Nç333333Ã?ç      Ð?TÚpathr   Úcolorú*Optional[str | tuple[float, float, float]]ÚlwúOptional[float]ÚlsúOptional[Linestyle]ÚcapstyleúOptional[Capstyle]Ú	joinstyleúOptional[Joinstyle]ÚfillúOptional[str]ÚarrowÚ
arrowwidthr   ÚarrowlengthÚclipúOptional[BBox]ÚzorderúOptional[int]ÚvisibleÚboolc                óÐ   — d„ |D ¦   «         | _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        || _        d S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r+   r   ©r7   Úps     r'   r:   z$Segment.__init__.<locals>.<listcomp>o   s   € Ð":Ð":Ð":°¥5¨¡8¤8Ð":Ð":Ð":r)   )r^   rp   r_   ri   ra   rc   rk   rl   rm   rn   re   rg   rr   )Úselfr^   r_   ra   rc   re   rg   ri   rk   rl   rm   rn   rp   rr   s                 r'   Ú__init__zSegment.__init__b   sr   € ð #;Ð":°TÐ":Ñ":Ô":ˆŒ	ØˆŒØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ
Ø$ˆŒØ&ˆÔØˆŒ	Ø ˆŒØ"ˆŒØˆŒˆˆr)   r   ú	'Segment'c                óØ  ‡— | j         �| j         n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        �| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        | j        | j        | j	        r| j	        n|                     dd¦  «        | j
        r| j
        n|                     dd¦  «        | j        d	œŠˆfd
„|                     ¦   «         D ¦   «         }‰                     |¦  «         t          |                     | j        ¦  «        fi ‰¤ŽS )úê Return a new Segment that has been transformed
            to its global position

            Args:
                transform: Transformation to apply
                style: Style parameters from Element to apply as default
        Nrp   r_   ri   ra   rc   re   rg   )rp   r_   ri   ra   rc   rk   rl   rm   re   rg   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   ©ÚgetÚkeys©r7   ÚkrF   Úparamss      €r'   ú
<dictcomp>z!Segment.xform.<locals>.<dictcomp>‘   óE   ø€ Ð`Ð`Ð`™$˜!˜Q°6·:²:¸a±=´=Ð3HÈQÐRX×R]ÒR]ÑR_ÔR_ÐM_ÐM_��AÐM_ÐM_ÐM_r)   )rp   r   r_   ri   ra   rc   rk   rl   rm   re   rg   rr   ÚitemsÚupdater[   Útransform_arrayr^   ©rx   Ú	transformÚstylerƒ   s      @r'   ÚxformzSegment.xform}   sW  ø€ ð &*¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø#'¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!%¤Ð!6�D”I�I¸E¿IºIÀfÈdÑ<SÔ<SØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø”ZØœ/ØÔ+Ø)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ+/¬>Ð[˜œ˜¸u¿yºyÈÐVZÑ?[Ô?[Ø”|ð"%ð "%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐÝ�y×0Ò0°´Ñ;Ô;ÐFÐF¸vÐFÐFÐFr)   r
   c                óþ   — | j         r| j        nd}d„ | j        D ¦   «         }d„ | j        D ¦   «         }t          t	          |¦  «        t	          |¦  «        |z
  t          |¦  «        t          |¦  «        |z   ¦  «        S )ú~ Get bounding box (untransformed)

            Returns:
                Bounding box limits: (xmin, ymin, xmax, ymax)
        r   c                ó   — g | ]
}|d          ‘ŒS ©r   r+   rv   s     r'   r:   z$Segment.get_bbox.<locals>.<listcomp>œ   ó   € Ð%Ð%Ð%�aˆQˆqŒTÐ%Ð%Ð%r)   c                ó   — g | ]
}|d          ‘ŒS ©r	   r+   rv   s     r'   r:   z$Segment.get_bbox.<locals>.<listcomp>�   r‘   r)   )rk   rl   r^   r
   r@   Úmax)rx   Úhwr%   r&   s       r'   Úget_bboxzSegment.get_bbox•   st   € ð !%¤
Ð1ˆTŒ_ˆ_°ˆØ%Ð%˜4œ9Ð%Ñ%Ô%ˆØ%Ð%˜4œ9Ð%Ñ%Ô%ˆÝ•C˜‘F”F�C ™FœF 2™I¥s¨1¡v¤v­s°1©v¬v°b©yÑ9Ô9Ð9r)   ÚcenterxÚNonec                óÞ   ‡— ˆfd„| j         ddd…         D ¦   «         | _         | j        rC| j        ddd…                              | j                             dd¦  «        ¦  «        | _        dS dS )úA Reverse the path (flip horizontal about the center of the path) c                ó:   •— g | ]}t          j        |‰¦  «        ‘ŒS r+   ©r   Úmirrorx©r7   rw   r—   s     €r'   r:   z%Segment.doreverse.<locals>.<listcomp>¢   s%   ø€ ÐGÐGÐG°!•T”\ ! WÑ-Ô-ÐGÐGÐGr)   Nr   ú<>ú><)r^   rk   Ú	translateÚ	maketrans©rx   r—   s    `r'   Ú	doreversezSegment.doreverse    sy   ø€ àGÐGÐGÐG°t´yÀÀÀ2À´ÐGÑGÔGˆŒ	ØŒ:ð 	VØœ D D b DÔ)×3Ò3°D´J×4HÒ4HÈÈtÑ4TÔ4TÑUÔUˆDŒJˆJˆJð	Vð 	Vr)   c                ó2   — d„ | j         D ¦   «         | _         dS )ú Vertically flip the element c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r+   ©r   Úfliprv   s     r'   r:   z"Segment.doflip.<locals>.<listcomp>¨   s    € Ð5Ð5Ð5 a•T”Y˜q‘\”\Ð5Ð5Ð5r)   N)r^   ©rx   s    r'   ÚdoflipzSegment.doflip¦   s   € à5Ð5¨4¬9Ð5Ñ5Ô5ˆŒ	ˆ	ˆ	r)   c                óÞ  — | j         sdS |                     | j        ¦  «        }t          |¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }	| j	        r| j	        n|                     d	d¦  «        }
| j
        r| j
        n|                     d
d¦  «        }| j        r| j        n|                     dd¦  «        }|rZt          t          t          |¦  «        ¦  «        }t          |¦  «        t          t          |¦  «        ¦  «        k    }|sd}n|du r|}| j        r�d| j        v r”|d         |d         z
  }t#          j        |j        |j        ¦  «        }t+          |d         j        | j        t#          j        |¦  «        z  z   |d         j        | j        t#          j        |¦  «        z  z   f¦  «        |d<   | j        r�d| j        v r”|d         |d         z
  }t#          j        |j        |j        ¦  «        }t+          |d         j        | j        t#          j        |¦  «        z  z
  |d         j        | j        t#          j        |¦  «        z  z
  f¦  «        |d<   d„ |D ¦   «         }d„ |D ¦   «         }|                     |||||	|
||| j        |¬¦
  «
         | j        �rTd| j        v r�t#          j        t#          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        ¦  «        }|                     |d         |||| j        | j        | j        d¬¦  «         �n“| j                             d¦  «        r1|                     |d         | j        dz  |||
| j        |¬¦  «         �nH| j                             d¦  «        �r-t#          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        t"          j        dz  z   }|d         j        | j        dz  t#          j        |¦  «        z  z   |d         j        | j        dz  t#          j        |¦  «        z  z
  f}|d         j        | j        dz  t#          j        |¦  «        z  z   |d         j        | j        dz  t#          j        |¦  «        z  z
  f}|                     ||||||| j        |¬¦  «         d| j        v r�t#          j        t#          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        ¦  «        }|                     |d         |||| j        | j        | j        d¬¦  «         dS | j                              d¦  «        r1|                     |d         | j        dz  |||
| j        |¬¦  «         dS | j                              d¦  «        �r1t#          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        t"          j        dz  z   }|d         j        | j        dz  t#          j        |¦  «        z  z   |d         j        | j        dz  t#          j        |¦  «        z  z
  f}|d         j        | j        dz  t#          j        |¦  «        z  z   |d         j        | j        dz  t#          j        |¦  «        z  z
  f}|                     ||||||| j        |¬¦  «         dS dS dS )úË Draw the segment

            Args:
                fig: schemdraw.Figure to draw on
                transform: Transform to apply before drawing
                style: Default style parameters
        Nrp   r    r_   Úblackri   rc   ú-ra   re   Úroundrg   Tú<r	   r   ú>r   éþÿÿÿc                ó   — g | ]
}|d          ‘ŒS r�   r+   rv   s     r'   r:   z Segment.draw.<locals>.<listcomp>Ò   ó   € Ð$Ð$Ð$�aˆQˆqŒTÐ$Ð$Ð$r)   c                ó   — g | ]
}|d          ‘ŒS r“   r+   rv   s     r'   r:   z Segment.draw.<locals>.<listcomp>Ó   rµ   r)   ©r_   ri   rc   ra   re   rg   rn   rp   )r_   rp   rn   rm   rl   ra   Úo)r_   ri   ra   rn   rp   ú|)r_   ri   re   rg   rn   rp   )!rr   rˆ   r^   Úlistrp   r   r_   ri   rc   ra   re   rg   ÚmapÚtupler<   Úsetrk   r#   r=   r&   r%   r   rm   r5   r6   Úplotrn   Údegreesrl   Ú
startswithÚcirclerA   Úendswith)rx   ÚfigrŠ   r‹   r^   Úlinepathrp   r_   ri   rc   ra   re   rg   ÚtlistÚdofillÚdeltaÚthr%   r&   ÚthetaÚtailxÚtailys                         r'   ÚdrawzSegment.drawª   s<  € ð Œ|ð 	ØˆFØ×(Ò(¨¬Ñ3Ô3ˆÝ˜‘:”:ˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØ œIÐ1ˆtŒyˆy°u·y²yÀÈÑ7NÔ7NˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆØ$(¤MÐU�4”=�=°u·y²yÀÈWÑ7UÔ7UˆØ&*¤nÐY�D”N�N¸%¿)º)ÀKÐQXÑ:YÔ:Yˆ	àð 	Ý��U DÑ)Ô)Ñ*Ô*ˆEÝ˜‘Z”Z¥3¥s¨5¡z¤z¡?¤?Ò2ˆFØð Ø��Ø˜��Ø�ð Œ:ð 	S˜# ¤Ð+Ð+Ø˜”G˜d 1œgÑ%ˆEÝ”˜EœG U¤WÑ-Ô-ˆBÝ ¨!¤¤°Ô1AÅDÄHÈRÁLÄLÑ1PÑ!PØ!)¨!¤¤°Ô1AÅDÄHÈRÁLÄLÑ1PÑ!Pð!Rñ Sô SˆH�Q‰KàŒ:ð 	U˜# ¤Ð+Ð+Ø˜”H˜t BœxÑ'ˆEÝ”˜EœG U¤WÑ-Ô-ˆBÝ  (¨2¤,¤.°4Ô3CÅdÄhÈrÁlÄlÑ3RÑ"RØ"*¨2¤,¤.°4Ô3CÅdÄhÈrÁlÄlÑ3RÑ"Rð"Tñ Uô UˆH�R‰Lð %Ð$˜8Ð$Ñ$Ô$ˆØ$Ð$˜8Ð$Ñ$Ô$ˆØ�Š��A˜U¨Ø˜2¨¸IØ”i¨ð 	ñ 	0ô 	0ð 	0ð Œ:ñ 	MØ�d”jÐ Ð Ýœ¥T¤Z°°Q´´	¸$¸q¼'¼)Ñ0CÀTÈ!ÄWÄYÈtÐTUÌwÌyÑEXÑ%YÔ%YÑZÔZ�Ø—	’	˜$˜qœ' 5°¸fÈ4Ì9Ø&*Ô&6À4Ä?ÐWXð ñ Zô Zð Zñ Zà”×&Ò& sÑ+Ô+ð 
MØ—
’
˜4 œ7 D¤O°AÑ$5¸UÈÐSUØ $¤	°&ð ñ :ô :ð :ñ :à”×&Ò& sÑ+Ô+ñ MÝœ
 4¨¤7¤9¨T°!¬W¬YÑ#6¸¸Q¼¼	À$ÀqÄ'Ä)Ñ8KÑLÔLÍtÌwÐWXÉyÑX�Ø˜aœœ T¤_°QÑ%6½¼À%¹¼Ñ%HÑHØ˜aœœ T¤_°QÑ%6½¼À%¹¼Ñ%HÑHðJ�à˜aœœ T¤_°QÑ%6½¼À%¹¼Ñ%HÑHØ˜aœœ T¤_°QÑ%6½¼À%¹¼Ñ%HÑHðJ�à—’˜ ¨U¸ÈØ#,°4´9ÀVð ñ Mô Mð Mð �d”jÐ Ð Ýœ¥T¤Z°°R´´
¸4À¼8¼:Ñ0EÀtÈBÄxÄzÐRVÐWYÔRZÔR\ÑG\Ñ%]Ô%]Ñ^Ô^�Ø—	’	˜$˜rœ( E°¸vÈDÌIØ&*Ô&6À4Ä?ÐWXð ñ Zô Zð Zð Zð Zà”×$Ò$ SÑ)Ô)ð 
MØ—
’
˜4 œ8 T¤_°QÑ%6¸eÈ%ÐTVØ $¤	°&ð ñ :ô :ð :ð :ð :à”×$Ò$ SÑ)Ô)ñ MÝœ
 4¨¤8¤:¨d°2¬h¬jÑ#8¸$¸r¼(¼*ÀTÈ"ÄXÄZÑ:OÑPÔPÕSWÔSZÐ[\ÑS\Ñ\�Ø˜bœœ d¤o°aÑ&7½$¼(À5¹/¼/Ñ&IÑIØ˜bœœ d¤o°aÑ&7½$¼(À5¹/¼/Ñ&IÑIðK�à˜bœœ d¤o°aÑ&7½$¼(À5¹/¼/Ñ&IÑIØ˜bœœ d¤o°aÑ&7½$¼(À5¹/¼/Ñ&IÑIðK�à—’˜ ¨U¸ÈØ#,°4´9ÀVð ñ Mô Mð Mð Mð Mð=	Mð 	Mð0Mð Mr)   )NNNNNNNr\   r]   NNT)r^   r   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rj   rl   r   rm   r   rn   ro   rp   rq   rr   rs   )r   rz   ©r   r
   ©r—   r   r   r˜   ©r   r˜   ©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ry   rŒ   r–   r¤   r«   rÌ   r+   r)   r'   r[   r[   P   s×   € € € € € ðð ð$ FJØ'+Ø+/Ø04Ø26Ø'+Ø(,Ø%)Ø&*Ø(,Ø)-Ø!%ðð ð ð ð ð6Gð Gð Gð Gð0	:ð 	:ð 	:ð 	:ðVð Vð Vð Vð6ð 6ð 6ð 6ðMMð MMð MMð MMð MMð MMr)   r[   c                  óZ   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d(d)d„Zd*d!„Zd+d"„Zd,d$„Zd-d&„Zd+d'„Z	dS ).ÚSegmentTexta)   A text drawing segment

        Args:
            pos: (x, y) coordinates for text
            label: Text to draw
            align: Tuple of (horizontal, vertical) alignment where horizontal
                is ('center', 'left', 'right') and vertical is ('center',
                'top', 'bottom')
            rotation: Rotation angle in degrees
            rotation_mode: See Matplotlib documentation. 'anchor' or 'default'.
            rotation_global: Lock rotation to world rather than component. Defaults to True
            color: Color for this segment
            fontsize: Font size
            font: Font name/family
            mathfont: Math font name/family
            clip: Bounding box to clip to
            zorder: Z-order for segment
            visible: Show the segment when drawn
    NTé   Úposr   ÚlabelÚstrÚalignúOptional[tuple[Halign, Valign]]Úrotationrb   Úrotation_modeúOptional[RotationMode]Úrotation_globalrs   r_   r`   Úfontsizer   Úfontrj   Úmathfontrn   ro   rp   rq   rr   c                ó¼   — || _         || _        || _        |	| _        |
| _        || _        || _        || _        || _        || _	        || _
        || _        || _        d S r"   )ÚxyÚtextrÛ   râ   rã   rá   r_   rÝ   rÞ   rà   rn   rp   rr   )rx   rØ   rÙ   rÛ   rÝ   rÞ   rà   r_   rá   râ   rã   rn   rp   rr   s                 r'   ry   zSegmentText.__init__  se   € ð ˆŒØˆŒ	ØˆŒ
ØˆŒ	Ø ˆŒØ ˆŒØˆŒ
Ø ˆŒØ*ˆÔØ.ˆÔØˆŒ	ØˆŒØˆŒˆˆr)   r—   r   r˜   c                óÞ   — t          j        | j        |¦  «        | _        | j        sD| j        �?ddddœ}|                     | j        d         d¦  «        }|| j        d         f| _        dS dS dS )ú< Reverse the path (flip horizontal about the centerx point) NÚcenterÚrightÚleft)ré   rë   rê   r   r	   )r   r�   rå   rà   rÛ   r   )rx   r—   Úalign_lookupÚ	leftaligns       r'   r¤   zSegmentText.doreverse(  sz   € å”,˜tœw¨Ñ0Ô0ˆŒØÔ#ð 	4¨¬
Ð(>Ø9AÈ7Ð]cÐ.dÐ.dˆLØ$×(Ò(¨¬°A¬¸Ñ?Ô?ˆIØ# T¤Z°¤]Ð3ˆDŒJˆJˆJð	4ð 	4Ð(>Ð(>r)   c                óØ   — t          j        | j        ¦  «        | _        | j        sB| j        �=ddddœ}| j        d         |                     | j        d         d¦  «        f| _        dS dS dS )r¦   Nré   ÚbottomÚtop)ré   rð   rï   r   r	   )r   r©   rå   rà   rÛ   r   )rx   rì   s     r'   r«   zSegmentText.doflip0  sv   € å”)˜DœGÑ$Ô$ˆŒØÔ#ð 	T¨¬
Ð(>Ø9AÈ(Ð^cÐ.dÐ.dˆLØœ* Qœ-¨×)9Ò)9¸$¼*ÀQ¼-ÈÑ)RÔ)RÐSˆDŒJˆJˆJð	Tð 	TÐ(>Ð(>r)   ú'SegmentText'c                ó¨  ‡— | j         r| j         n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n)|                     d|                     dd¦  «        ¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     d	d¦  «        | j        | j	        | j
        �| j
        n|                     d
d¦  «        | j        dœŠˆfd„|                     ¦   «         D ¦   «         }‰                     |¦  «         ‰d         s)‰d         €|j        ‰d<   n‰d         |j        dz  z   ‰d<   t          |                     | j        ¦  «        | j        fi ‰¤ŽS )r|   rÛ   Nrâ   rã   rá   Úsizer_   rÝ   rÞ   rp   )rÛ   râ   rã   rá   r_   rÝ   rÞ   rà   rn   rp   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z%SegmentText.xform.<locals>.<dictcomp>L  r…   r)   rà   éh  )rÛ   r   râ   rã   rá   r_   rÝ   rÞ   rà   rn   rp   rr   r†   r‡   rÉ   rÖ   rŠ   rå   ræ   r‰   s      @r'   rŒ   zSegmentText.xform7  sÜ  ø€ ð $(¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!%¤ÐG�D”I�I°·	²	¸&À$Ñ0GÔ0GØ)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ)-¬Ðj˜œ˜¸E¿IºIÀjÐRW×R[ÒR[Ð\bÐdhÑRiÔRiÑ<jÔ<jØ#'¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ37Ô3EÐk˜TÔ/Ð/È5Ï9Ê9ÐUdÐfjÑKkÔKkØ#Ô3Ø”IØ%)¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø”|ð"%ð "%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐØÐ'Ô(ð 	PØ�jÔ!Ð)Ø%.¤_��zÑ"Ð"à%+¨JÔ%7¸)¼/ÈCÑ:OÑ%O��zÑ"å˜9×.Ò.¨t¬wÑ7Ô7Øœ9ð0ð 0Ø(.ð0ð 0ð 	0r)   r
   c                óT  — d}t          j        | j        | j        | j        | j        ¬¦  «        \  }}}||z  }||z  }||z  }| j        d         }| j        d         }t          | j                             ¦   «         ¦  «        }| j	        �‰| j	        d         dk    r	||dz  z  }n| j	        d         dk    r||z  }| j	        d         dk    r	||dz  z  }n?| j	        d         d	k    r||z  }n(| j	        d         d
k    rn||| j        |z  |dz
  z  z   z  }t          ||||z   ||z   ¦  «        S )ú} Get bounding box (untransformed)

            Returns:
                Bounding box limits (xmin, ymin, xmax, ymax)
        gÇqÇqœ?)râ   rã   ró   r   r	   Nré   r    rê   rð   rï   )r   Ú	text_sizeræ   râ   rã   rá   rå   r<   Ú
splitlinesrÛ   r
   )rx   ÚSCALEÚwÚhr0   r%   r&   Únliness           r'   r–   zSegmentText.get_bboxW  sV  € ð ˆÝ”= ¤°´Ø*.¬-¸d¼mðMñ Mô M‰ˆˆ1ˆbð
 	
ˆU‰
ˆØ	ˆU‰
ˆØ
ˆe‰ˆØŒG�AŒJˆØŒG�AŒJˆÝ�T”Y×)Ò)Ñ+Ô+Ñ,Ô,ˆàŒ:Ð!ØŒz˜!Œ} Ò(Ð(Ø�Q�q‘S‘��Ø”˜A” 'Ò)Ð)Ø�Q‘�àŒz˜!Œ} Ò(Ð(Ø�Q�q‘S‘��Ø”˜A” %Ò'Ð'Ø�Q‘��Ø”˜A” (Ò*Ð*Øð �b˜4œ=¨Ñ.°°q±Ñ9Ñ9Ñ:�å�A�q˜!˜A™#˜q ™sÑ#Ô#Ð#r)   c                óx  — | j         sdS |                     | j        ¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n)|                     d|                     dd¦  «        ¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n|                     d	d¦  «        }| j        r| j        n|                     d
d¦  «        }	| j	        r| j	        n|                     dd¦  «        }
| j
        r| j
        n|                     dd¦  «        }| j        �| j        n|                     dd¦  «        }| j        s|
€|j        }
n|
|j        dz  z   }
|                     | j        |d         |d         |||||
||	d         |	d         | j        |¬¦  «         dS )r­   Nr_   r®   rá   ró   r×   râ   z
sans-serifrã   rÛ   )ré   ré   rÝ   r   rÞ   Úanchorrp   é   rõ   r	   )
r_   rá   Ú
fontfamilyrã   rÝ   rÞ   ÚhalignÚvalignrn   rp   )rr   rŠ   rå   r_   r   rá   râ   rã   rÛ   rÝ   rÞ   rp   rà   rÉ   ræ   rn   )rx   rÃ   rŠ   r‹   rå   r_   rá   râ   rã   rÛ   rÝ   Úrotmoderp   s                r'   rÌ   zSegmentText.draw|  sÄ  € ð Œ|ð 	ØˆFØ× Ò  ¤Ñ)Ô)ˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØ$(¤MÐc�4”=�=°u·y²yÀÈUÏYÊYÐW]Ð_aÑMbÔMbÑ7cÔ7cˆØ œIÐJˆtŒyˆy¨5¯9ª9°V¸\Ñ+JÔ+JˆØ$(¤MÐR�4”=�=°u·y²yÀÈTÑ7RÔ7RˆØ"œjÐV�”
�
¨e¯iªi¸ÐAUÑ.VÔ.VˆØ$(¤MÐO�4”=�=°u·y²yÀÈQÑ7OÔ7OˆØ(,Ô(:Ðd�$Ô$Ð$ÀÇ	Â	È/Ð[cÑ@dÔ@dˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆàÔ#ð 	<ØÐØ$œ?��à# i¤o¸Ñ&;Ñ;�à�Š�”˜B˜qœE 2 a¤5Ø x¸DÈ8Ø"°'Ø˜aœ¨¨q¬¸¼	È&ð 	ñ 	Rô 	Rð 	Rð 	Rð 	Rr)   )NNNTNr×   NNNNT)rØ   r   rÙ   rÚ   rÛ   rÜ   rÝ   rb   rÞ   rß   rà   rs   r_   r`   rá   r   râ   rj   rã   rj   rn   ro   rp   rq   rr   rs   rÎ   rÏ   )r   rñ   rÍ   ©
rÑ   rÒ   rÓ   rÔ   ry   r¤   r«   rŒ   r–   rÌ   r+   r)   r'   rÖ   rÖ   ú   sÊ   € € € € € ðð ð( ;?Ø-1Ø9=Ø)-ØEIØ#%Ø'+Ø+/Ø(,Ø)-Ø!%ðð ð ð ð ð44ð 4ð 4ð 4ðTð Tð Tð Tð0ð 0ð 0ð 0ð@#$ð #$ð #$ð #$ðJRð Rð Rð Rð Rð Rr)   rÖ   c                  ó\   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 d)d*d„Zd+d"„Zd,d#„Zd-d%„Zd.d'„Zd,d(„Z	dS )/ÚSegmentPolyaí   A polygon segment

        Args:
            xy: List of (x,y) coordinates making the polygon
            closed: Draw a closed polygon (default True)
            cornerradius: Round the corners to this radius (0 for no rounding)
            color: Color for this segment
            fill: Color to fill if path is closed
            lw: Line width for the segment
            ls: Line style for the segment
            hatch: Show hatch lines
            capstyle: Capstyle for the segment: 'butt', 'round', 'square', ('projecting')
            joinstyle: Joinstyle for the segment: 'round', 'miter', or 'bevel'
            clip: Bounding box to clip to
            zorder: Z-order for segment
            visible: Show the segment when drawn
    Tr   NFr   r   Úclosedrs   Úcornerradiusr   r_   r`   ri   rj   ra   rb   rc   rd   Úhatchrg   rh   re   rf   rn   ro   rp   rq   rr   c                ó¼   — || _         || _        || _        || _        || _        || _        |	| _        |
| _        || _        || _	        || _
        || _        || _        d S r"   )r   r  r	  r_   ri   r
  rg   re   rp   ra   rc   rn   rr   )rx   r   r  r	  r_   ri   ra   rc   r
  rg   re   rn   rp   rr   s                 r'   ry   zSegmentPoly.__init__¶  sd   € ð ˆŒ
ØˆŒØ(ˆÔØˆŒ
ØˆŒ	ØˆŒ
Ø"ˆŒØ ˆŒØˆŒØˆŒØˆŒØˆŒ	ØˆŒˆˆr)   r—   r   r˜   c                óJ   ‡— ˆfd„| j         ddd…         D ¦   «         | _         dS )rè   c                ó:   •— g | ]}t          j        |‰¦  «        ‘ŒS r+   rœ   )r7   rF   r—   s     €r'   r:   z)SegmentPoly.doreverse.<locals>.<listcomp>Ó  s%   ø€ ÐIÐIÐI°1•d”l 1 gÑ.Ô.ÐIÐIÐIr)   Nr   ©r   r£   s    `r'   r¤   zSegmentPoly.doreverseÑ  s/   ø€ àIÐIÐIÐI¸¼
À4À4ÀRÀ4Ô8HÐIÑIÔIˆŒ
ˆ
ˆ
r)   c                ó2   — d„ | j         D ¦   «         | _         dS )r¦   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r+   r¨   rv   s     r'   r:   z&SegmentPoly.doflip.<locals>.<listcomp>×  s    € Ð7Ð7Ð7 q•d”i ‘l”lÐ7Ð7Ð7r)   Nr  rª   s    r'   r«   zSegmentPoly.doflipÕ  s   € à7Ð7¨D¬JÐ7Ñ7Ô7ˆŒ
ˆ
ˆ
r)   ú'SegmentPoly'c                óÌ  ‡— | j         r| j         n|                     dd¦  «        | j        �| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        | j        | j	        �| j	        n|                     dd¦  «        | j
        d	œ
Šˆfd
„|                     ¦   «         D ¦   «         }‰                     |¦  «         t          |                     | j        ¦  «        fi ‰¤ŽS )r|   r_   Nri   rg   re   ra   rc   rp   )
r_   ri   rg   re   ra   rc   r	  rn   rp   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z%SegmentPoly.xform.<locals>.<dictcomp>ì  r…   r)   )r_   r   ri   rg   re   ra   rc   r	  rn   rp   rr   r†   r‡   r  rˆ   r   r‰   s      @r'   rŒ   zSegmentPoly.xformÙ  sR  ø€ ð $(¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!%¤Ð!6�D”I�I¸E¿IºIÀfÈdÑ<SÔ<SØ+/¬>Ð[˜œ˜¸u¿yºyÈÐVZÑ?[Ô?[Ø)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø Ô-Ø”IØ%)¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø”|ð
"%ð 
"%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐÝ˜9×4Ò4°T´ZÑ@Ô@ÐKÐKÀFÐKÐKÐKr)   r
   c                óÒ   — d„ | j         D ¦   «         }d„ | j         D ¦   «         }t          t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        S )r÷   c                ó   — g | ]
}|d          ‘ŒS r�   r+   rv   s     r'   r:   z(SegmentPoly.get_bbox.<locals>.<listcomp>ö  ó   € Ð&Ð&Ð&�aˆQˆqŒTÐ&Ð&Ð&r)   c                ó   — g | ]
}|d          ‘ŒS r“   r+   rv   s     r'   r:   z(SegmentPoly.get_bbox.<locals>.<listcomp>÷  r  r)   )r   r
   r@   r”   ©rx   r%   r&   s      r'   r–   zSegmentPoly.get_bboxð  sZ   € ð 'Ð&˜4œ:Ð&Ñ&Ô&ˆØ&Ð&˜4œ:Ð&Ñ&Ô&ˆÝ•C˜‘F”F�C ™FœF¥C¨¡F¤F­C°©F¬FÑ3Ô3Ð3r)   c                óT  — | j         sdS | j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }|�)|du r|}|du rd}n|dk    r|                     dd	¦  «        }| j        r| j        n|                     d
d¦  «        }| j        r| j        n|                     dd¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }	| j        r| j        n|                     dd¦  «        }
|du r|n|du rdn|}| 	                    | j
        ¦  «        }| j        dk    rt          || j        ¦  «        }|                     || j        |||	|
| j        ||| j        |¬¦  «         dS )r­   Nri   r_   r®   TFÚbgÚbgcolorÚwhiterg   r°   re   rp   r	   ra   r    rc   r¯   r   )
r  r_   ri   ra   rc   r
  re   rg   rn   rp   )rr   ri   r   r_   rg   re   rp   ra   rc   rˆ   r   r	  rY   rE   r  r
  rn   )rx   rÃ   rŠ   r‹   ri   r_   rg   re   rp   ra   rc   r   s               r'   rÌ   zSegmentPoly.drawú  sÑ  € ð Œ|ð 	ØˆFØ œIÐ1ˆtŒyˆy°u·y²yÀÈÑ7NÔ7NˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØÐØ�tˆ|ˆ|Ø�Ø�uˆ}ˆ}Ø��Ø˜’�Ø—y’y ¨GÑ4Ô4�Ø&*¤nÐY�D”N�N¸%¿)º)ÀKÐQXÑ:YÔ:Yˆ	Ø$(¤MÐU�4”=�=°u·y²yÀÈWÑ7UÔ7UˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆà ˜˜ˆuˆu°$¸%°-°-¨$¨$ÀTˆØ×)Ò)¨$¬*Ñ5Ô5ˆàÔ˜qÒ Ð Ý  ¨Ô(9Ñ:Ô:ˆEà�Š�˜tœ{°%¸dÀrÈbØ”z¨HÀ	ÐPTÔPYÐbhð 	ñ 	jô 	jð 	jð 	jð 	jr)   )Tr   NNNNFNNNNT)r   r   r  rs   r	  r   r_   r`   ri   rj   ra   rb   rc   rd   r
  rs   rg   rh   re   rf   rn   ro   rp   rq   rr   rs   rÎ   rÏ   )r   r  rÍ   r  r+   r)   r'   r  r  ¤  sÏ   € € € € € ðð ð$ !%Ø'(ØEIØ'+Ø'+Ø+/Ø$Ø26Ø04Ø(,Ø)-Ø!%ðð ð ð ð ð6Jð Jð Jð Jð8ð 8ð 8ð 8ðLð Lð Lð Lð.4ð 4ð 4ð 4ð jð  jð  jð  jð  jð  jr)   r  c                  óT   — e Zd ZdZ	 	 	 	 	 	 	 	 d#d$d„Zd%d„Zd&d„Zd'd„Zd(d!„Zd&d"„Z	dS ))ÚSegmentCirclea   A circle drawing segment

        Args:
            center: (x, y) center of the circle
            radius: Radius of the circle
            color: Color for this segment
            lw: Line width for the segment
            ls: Line style for the segment
            fill: Color to fill if path is closed. True -> fill with element color.
            clip: Bounding box to clip to
            zorder: Z-order for segment
            ref: Flip reference ['start', 'end', None].
            visible: Show the segment when drawn
    NTré   r   r   r   r_   r`   ra   rb   rc   rd   ri   úbool | str | Nonern   ro   rp   rq   ÚrefúOptional[EndRef]rr   rs   c                ó’   — || _         || _        || _        || _        || _        || _        || _        || _        |
| _        |	| _	        d S r"   )
ré   r   rp   r_   ri   ra   rc   rn   rr   Úendref)rx   ré   r   r_   ra   rc   ri   rn   rp   r   rr   s              r'   ry   zSegmentCircle.__init__,  sP   € ð ˆŒØˆŒØˆŒØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ	ØˆŒð ˆŒˆˆr)   r—   r   r˜   c                óˆ   — t          j        | j        |¦  «        | _        dddœ                     | j        ¦  «        | _        dS )rè   ÚendÚstart)r&  r%  N)r   r�   ré   r   r#  r£   s     r'   r¤   zSegmentCircle.doreverseC  s:   € å”l 4¤;°Ñ8Ô8ˆŒØ %¨gÐ6Ð6×:Ò:¸4¼;ÑGÔGˆŒˆˆr)   c                óB   — t          j        | j        ¦  «        | _        dS )z Flip the segment up/down N)r   r©   ré   rª   s    r'   r«   zSegmentCircle.doflipH  s   € å”i ¤Ñ,Ô,ˆŒˆˆr)   ú'SegmentCircle' | 'SegmentArc'c           	     ó^  ‡— | j         �| j         n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        �| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        | j        | j        dœŠˆfd„| 	                    ¦   «         D ¦   «         }‰ 
                    |¦  «         |j        d	         |j        d
         k    r9t          |                     | j        ¦  «        | j        |j        d	         z  fi ‰¤ŽS ‰                     dd¦  «         t#          | j        f| j        dz  |j        d	         z  | j        dz  |j        d
         z  |j        d	ddœ‰¤ŽS )r|   Nrp   r_   ri   ra   rc   )rp   r_   ri   ra   rc   rn   r   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z'SegmentCircle.xform.<locals>.<dictcomp>]  r…   r)   r   r	   r   r    rõ   )ÚwidthÚheightrN   Útheta1Útheta2)rp   r   r_   ri   ra   rc   rn   r#  rr   r†   r‡   Úzoomr  rŠ   ré   r   ÚpopÚ
SegmentArcrÉ   r‰   s      @r'   rŒ   zSegmentCircle.xformL  sÁ  ø€ ð &*¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø#'¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!%¤Ð!6�D”I�I¸E¿IºIÀfÈdÑ<SÔ<SØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø”IØ”;Ø”|ð"%ð "%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐØŒ>˜!Ô 	¤¨qÔ 1Ò1Ð1å  ×!4Ò!4°T´[Ñ!AÔ!AØ!%¤¨Y¬^¸AÔ->Ñ!>ðJð JØBHðJð Jð Jð 	�
Š
�5˜$ÑÔÐÝ˜$œ+ð :Ø $¤¨A¡¨i¬n¸QÔ.?Ñ ?Ø!%¤¨Q¡¨y¬~¸aÔ/@Ñ!@Ø )¤Ø!"¨3ð	:ð :ð 39ð	:ð :ð 	:r)   r
   c                óÎ   — | j         d         | j        z
  }| j         d         | j        z   }| j         d         | j        z
  }| j         d         | j        z   }t          ||||¦  «        S )r÷   r   r	   )ré   r   r
   )rx   ÚxminÚxmaxÚyminÚymaxs        r'   r–   zSegmentCircle.get_bboxl  s`   € ð Œ{˜1Œ~ ¤Ñ+ˆØŒ{˜1Œ~ ¤Ñ+ˆØŒ{˜1Œ~ ¤Ñ+ˆØŒ{˜1Œ~ ¤Ñ+ˆÝ�D˜$  dÑ+Ô+Ð+r)   c                ó†  — | j         sdS |                     | j        ¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n|                     d	d
¦  «        }	|�)|du r|}|du rd}n|dk    r|                     dd¦  «        }|du r|n|du rdn|}|j	        d         |j	        d         k    r9|j	        d         | j
        z  }
|                     ||
|||	|| j        |¬¦  «         dS | j
        d
z  |j	        d         z  }| j
        d
z  |j	        d         z  }|                     |||dd|j        ||	||| j        |¬¦  «         dS )r­   Nrp   r	   r_   r®   ri   rc   r¯   ra   r    TFr  r  r  r   )r_   ri   ra   rc   rn   rp   rõ   )r+  r,  r-  r.  rN   r_   ra   rc   ri   rn   rp   )rr   rŠ   ré   rp   r   r_   ri   rc   ra   r/  r   rÁ   rn   rX   rÉ   )rx   rÃ   rŠ   r‹   ré   rp   r_   ri   rc   ra   r   r+  r,  s                r'   rÌ   zSegmentCircle.drawx  s  € ð Œ|ð 	ØˆFØ×$Ò$ T¤[Ñ1Ô1ˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØ œIÐ1ˆtŒyˆy°u·y²yÀÈÑ7NÔ7NˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆàÐØ�tˆ|ˆ|Ø�Ø�uˆ}ˆ}Ø��Ø˜’�Ø—y’y ¨GÑ4Ô4�à ˜˜ˆuˆu°$¸%°-°-¨$¨$ÀTˆàŒ>˜!Ô 	¤¨qÔ 1Ò1Ð1Ø”^ AÔ&¨¬Ñ4ˆFØ�JŠJ�v˜v¨U¸Ø ¨$¬)¸Fð ñ Dô Dð Dð Dð Dð ”K !‘O i¤n°QÔ&7Ñ7ˆEØ”[ 1‘_ y¤~°aÔ'8Ñ8ˆFØ�GŠG�F %°Ø S°	´Ø B¨2°DØœ¨6ð ñ 3ô 3ð 3ð 3ð 3r)   )NNNNNNNT)ré   r   r   r   r_   r`   ra   rb   rc   rd   ri   r  rn   ro   rp   rq   r   r!  rr   rs   rÎ   rÏ   )r   r(  rÍ   r  r+   r)   r'   r  r    s¼   € € € € € ðð ð  FJØ'+Ø+/Ø+/Ø(,Ø)-Ø)-Ø!%ðð ð ð ð ð.Hð Hð Hð Hð
-ð -ð -ð -ð:ð :ð :ð :ð@
,ð 
,ð 
,ð 
,ð%3ð %3ð %3ð %3ð %3ð %3r)   r  c                  óX   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d&d'd„Zd(d„Zd)d „Zd*d"„Zd+d$„Zd)d%„Z	dS ),ÚSegmentBezieraó   Quadratic or Cubic Bezier curve segment

        Args:
            p: control points (3 or 4)
            color: Color for this segment
            lw: Line width for the segment
            ls: Line style for the segment '-', '--', ':', etc.
            capstyle: Capstyle for the segment: 'butt', 'round', 'square', ('projecting')
            joinstyle: Joinstyle for the segment: 'round', 'miter', or 'bevel'
            fill: Color to fill if path is closed
            arrow: Arrowhead specifier, such as '->', '<-', or '<->'
            arrowwidth: Width of arrowhead
            arrowlength: Length of arrowhead
            clip: Bounding box to clip to
            zorder: Z-order for segment
            visible: Show the segment when drawn
    Nr]   r\   Trw   r   r_   r`   ra   rb   rc   rd   re   rf   rk   rj   rm   r   rl   rn   ro   rp   rq   rr   rs   c                ó´   — d„ |D ¦   «         | _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        d S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r+   r   )r7   rA   s     r'   r:   z*SegmentBezier.__init__.<locals>.<listcomp>½  s   € Ð(Ð(Ð( •%˜‘)”)Ð(Ð(Ð(r)   )rw   rk   r_   ra   rc   re   rm   rl   rn   rp   rr   )rx   rw   r_   ra   rc   re   rk   rm   rl   rn   rp   rr   s               r'   ry   zSegmentBezier.__init__²  sd   € ð )Ð( aÐ(Ñ(Ô(ˆŒØˆŒ
ØˆŒ
ØˆŒØˆŒØ ˆŒØ&ˆÔØ$ˆŒØˆŒ	ØˆŒØˆŒˆˆr)   r—   r   r˜   c                óÌ   ‡— ˆfd„| j         D ¦   «         | _         | j        rC| j        ddd…                              | j                             dd¦  «        ¦  «        | _        dS dS )rè   c                óT   •— g | ]$}t          t          j        |‰¦  «        ¦  «        ‘Œ%S r+   )r   r   r�   rž   s     €r'   r:   z+SegmentBezier.doreverse.<locals>.<listcomp>Ë  s-   ø€ ÐBÐBÐB°a•%�œ Q¨Ñ0Ô0Ñ1Ô1ÐBÐBÐBr)   Nr   rŸ   r    )rw   rk   r¡   r¢   r£   s    `r'   r¤   zSegmentBezier.doreverseÉ  so   ø€ àBÐBÐBÐB¸4¼6ÐBÑBÔBˆŒØŒ:ð 	VØœ D D b DÔ)×3Ò3°D´J×4HÒ4HÈÈtÑ4TÔ4TÑUÔUˆDŒJˆJˆJð	Vð 	Vr)   c                ó2   — d„ | j         D ¦   «         | _         dS )r¦   c                óP   — g | ]#}t          t          j        |¦  «        ¦  «        ‘Œ$S r+   )r   r   r©   rv   s     r'   r:   z(SegmentBezier.doflip.<locals>.<listcomp>Ñ  s(   € Ð6Ð6Ð6¨!•%�œ	 !™œÑ%Ô%Ð6Ð6Ð6r)   N)rw   rª   s    r'   r«   zSegmentBezier.doflipÏ  s   € à6Ð6¨t¬vÐ6Ñ6Ô6ˆŒˆˆr)   ú'SegmentBezier'c                óX  ‡— | j         r| j         n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        | j        | j        | j        | j	        �| j	        n|                     dd¦  «        | j
        dœ
Šˆfd„|                     ¦   «         D ¦   «         }‰                     |¦  «         t          |                     | j        ¦  «        fi ‰¤ŽS )	r|   r_   Nra   rc   re   rp   )
r_   ra   rc   re   rk   rm   rl   rn   rp   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z'SegmentBezier.xform.<locals>.<dictcomp>æ  r…   r)   )r_   r   ra   rc   re   rk   rm   rl   rn   rp   rr   r†   r‡   r9  rˆ   rw   r‰   s      @r'   rŒ   zSegmentBezier.xformÓ  s  ø€ ð $(¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ”ZØÔ+Øœ/Ø”IØ%)¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø”|ð
"%ð 
"%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐÝ˜Y×6Ò6°t´vÑ>Ô>ÐIÐIÀ&ÐIÐIÐIr)   r
   c                óØ  ‡‡— t          j        ddd¦  «        }d„ | j        D ¦   «         Šd„ | j        D ¦   «         Št          | j        ¦  «        dk    rˆfd„|D ¦   «         }ˆfd„|D ¦   «         }n6t          | j        ¦  «        d	k    sJ ‚ˆfd
„|D ¦   «         }ˆfd„|D ¦   «         }t	          t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        S )r÷   r   r	   é2   c                ó   — g | ]	}|j         ‘Œ
S r+   ©r%   rv   s     r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>ò  ó   € Ð"Ð"Ð"�aˆaŒcÐ"Ð"Ð"r)   c                ó   — g | ]	}|j         ‘Œ
S r+   ©r&   rv   s     r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>ó  rG  r)   r   c                óz   •— g | ]7}d |z
  dz  ‰d         z  dd |z
  z  |z  ‰d          z  z   |dz  ‰d         z  z   ‘Œ8S ©r	   r    r   r+   ©r7   ÚttÚpxs     €r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>õ  óe   ø€ ð ð ð Øð �B‘$˜‘˜R œUÑ" Q¨¨"©¡X¨b¡[°°A´Ñ%6Ñ6¸¸Q¹¸rÀ!¼u¹ÑDð ð ð r)   c                óz   •— g | ]7}d |z
  dz  ‰d         z  dd |z
  z  |z  ‰d          z  z   |dz  ‰d         z  z   ‘Œ8S rK  r+   ©r7   rM  Úpys     €r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>÷  rO  r)   é   c                ó°   •— g | ]R}d |z
  dz  ‰d         z  dd |z
  dz  z  |z  ‰d          z  z   dd |z
  z  |dz  z  ‰d         z  z   |dz  ‰d         z  z   ‘ŒSS ©r	   r   r   r    r+   rL  s     €r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>û  óŽ   ø€ ð ð ð Øð �B‘$˜‘˜R œUÑ" Q¨¨"©¨q¡y¡[°¡^°B°q´EÑ%9Ñ9¸A¸qÀ¹t¹HÀRÈÁU¹NÈ2ÈaÌ5Ñ<PÑPÐSUÐWXÑSXÐY[Ð\]ÔY^ÑS^Ñ^ð ð ð r)   c                ó°   •— g | ]R}d |z
  dz  ‰d         z  dd |z
  dz  z  |z  ‰d          z  z   dd |z
  z  |dz  z  ‰d         z  z   |dz  ‰d         z  z   ‘ŒSS rU  r+   rQ  s     €r'   r:   z*SegmentBezier.get_bbox.<locals>.<listcomp>ý  rV  r)   )r   rB   rw   r<   r
   r@   r”   )rx   Útr%   r&   rN  rR  s       @@r'   r–   zSegmentBezier.get_bboxê  s?  øø€ õ ŒM˜!˜Q Ñ#Ô#ˆØ"Ð"˜4œ6Ð"Ñ"Ô"ˆØ"Ð"˜4œ6Ð"Ñ"Ô"ˆÝˆtŒv‰;Œ;˜!ÒÐðð ð ð Øðñ ô ˆAðð ð ð Øðñ ô ˆAˆAõ �t”v‘;”; !Ò#Ð#Ð#Ð#ðð ð ð Øðñ ô ˆAðð ð ð Øðñ ô ˆAå•C˜‘F”F�C ™FœF¥C¨¡F¤F­C°©F¬FÑ3Ô3Ð3r)   c                ó  — | j         sdS |                     | j        ¦  «        }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n|                     dd	¦  «        }| j        r| j        n|                     d
d¦  «        }	| 	                    |||||	| j
        || j        | j        | j        ¬¦
  «
         dS )r­   Nrp   r	   r_   r®   rc   r¯   ra   r    re   r°   )	r_   ra   rc   re   rn   rp   rk   rm   rl   )rr   rˆ   rw   rp   r   r_   rc   ra   re   Úbezierrn   rk   rm   rl   )
rx   rÃ   rŠ   r‹   rw   rp   r_   rc   ra   re   s
             r'   rÌ   zSegmentBezier.draw  s  € ð Œ|ð 	ØˆFØ×%Ò% d¤fÑ-Ô-ˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆØ$(¤MÐU�4”=�=°u·y²yÀÈWÑ7UÔ7UˆØ�
Š
�1˜E b¨R¸(ÈÌØ ¨¬
Ø#Ô/¸D¼Oð 	ñ 	Mô 	Mð 	Mð 	Mð 	Mr)   )
NNNNNr]   r\   NNT)rw   r   r_   r`   ra   rb   rc   rd   re   rf   rk   rj   rm   r   rl   r   rn   ro   rp   rq   rr   rs   rÎ   rÏ   )r   r@  rÍ   r  r+   r)   r'   r9  r9     sË   € € € € € ðð ð$ FJØ'+Ø+/Ø04Ø(,Ø&)Ø%(Ø(,Ø)-Ø!%ðð ð ð ð ð.Vð Vð Vð Vð7ð 7ð 7ð 7ðJð Jð Jð Jð.4ð 4ð 4ð 4ð.Mð Mð Mð Mð Mð Mr)   r9  c                  óX   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d*d+d„Zd,d#„Zd-d$„Zd.d&„Zd/d(„Zd-d)„Z	dS )0r1  a‘   An elliptical arc drawing segment

        Args:
            center: Center of the arc ellipse
            width: Width of the arc ellipse
            height: Height of the arc ellipse
            theta1: Starting angle in degrees
            theta2: Ending angle in degrees
            arrow: Direction of arrowhead ('cw' or 'ccw')
            angle: Rotation of the ellipse defining the arc
            color: Color for this segment
            lw: Line width for the segment
            ls: Line style for the segment
            clip: Bounding box to clip to
            zorder: Z-order for segment
            visible: Show the segment when drawn
    é#   éÝÿÿÿNr   Tré   r   r+  r   r,  r-  r.  rk   úOptional[Arcdirection]rN   r_   r`   ra   rb   rc   rd   ri   rj   rn   ro   rp   rq   rr   rs   c                óÊ   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        d S r"   )ré   r+  r,  r-  r.  rk   rN   r_   ra   rc   ri   rn   rp   rr   )rx   ré   r+  r,  r-  r.  rk   rN   r_   ra   rc   ri   rn   rp   rr   s                  r'   ry   zSegmentArc.__init__(  sj   € ð ˆŒØˆŒ
ØˆŒØˆŒØˆŒØˆŒ
ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒ	ØˆŒ	ØˆŒØˆŒˆˆr)   r—   r   r˜   c                óÈ   — t          j        | j        |¦  «        | _        d| j        z
  d| j        z
  c| _        | _        dddœ                     | j        d¦  «        | _        dS )rè   é´   ÚccwÚcw©rc  rb  N)r   r�   ré   r.  r-  r   rk   r£   s     r'   r¤   zSegmentArc.doreverseC  sX   € å”l 4¤;°Ñ8Ô8ˆŒØ#& t¤{¡?°C¸¼±OÐ ˆŒ�T”[Ø!¨$Ð/Ð/×3Ò3°D´JÀÑEÔEˆŒ
ˆ
ˆ
r)   c                ó¾   — t          j        | j        ¦  «        | _        | j         | j         c| _        | _        dddœ                     | j        d¦  «        | _        dS )r¦   rb  rc  rd  N)r   r©   ré   r.  r-  r   rk   rª   s    r'   r«   zSegmentArc.doflipI  sR   € å”i ¤Ñ,Ô,ˆŒØ$(¤K <°$´+°Ð ˆŒ�T”[Ø!¨$Ð/Ð/×3Ò3°D´JÀÑEÔEˆŒ
ˆ
ˆ
r)   ú'SegmentArc'c           	     óÊ  ‡— | j         |j        z   }| j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        r| j        n|                     dd¦  «        | j        | j        �| j        n|                     dd¦  «        | j	        dœŠˆfd„| 
                    ¦   «         D ¦   «         }‰                     |¦  «         t          |                     | j        ¦  «        | j        |j        d	         z  | j        |j        d
         z  f|| j        | j        | j        dœ‰¤ŽS )r|   r_   Nra   rc   ri   rp   )r_   ra   rc   ri   rn   rp   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z$SegmentArc.xform.<locals>.<dictcomp>`  r…   r)   r   r	   )rN   rk   r-  r.  )rN   rÉ   r_   r   ra   rc   ri   rn   rp   rr   r†   r‡   r1  rŠ   ré   r+  r/  r,  rk   r-  r.  )rx   rŠ   r‹   rN   rƒ   s       @r'   rŒ   zSegmentArc.xformO  sd  ø€ ð ”
˜Yœ_Ñ,ˆà#'¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!%¤ÐG�D”I�I°·	²	¸&À$Ñ0GÔ0GØ”IØ%)¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø”|ð"%ð "%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐÝ˜)×-Ò-¨d¬kÑ:Ô:Øœ* Y¤^°AÔ%6Ñ6Øœ+ i¤n°QÔ&7Ñ7ð8ð !&Ø $¤
Ø!%¤Ø!%¤ð8ð 8ð 17ð8ð 8ð 	8r)   r
   c                óP  ‡ ‡‡‡‡— t          j        ‰ j        ¦  «        t          j        ‰ j        ¦  «        }}t          j        ‰ j        t          j        |¦  «        z  ‰ j        t          j        |¦  «        z  ¦  «        }t          j        ‰ j        t          j        |¦  «        z  ‰ j        t          j        |¦  «        z  ¦  «        }||k     r|dt           j	        z  z  }||k     °t          j        ||d¬¦  «        }t          t          t           j        |¦  «        ¦  «        }t          t          t           j        |¦  «        ¦  «        }t          j        ‰ j        ¦  «        }t          j        |¦  «        Št          j        |¦  «        Š‰ j        dz  Š‰ j        dz  Šˆˆˆˆ ˆfd„t          ||¦  «        D ¦   «         }	ˆˆˆˆ ˆfd„t          ||¦  «        D ¦   «         }
t!          t#          |	¦  «        t#          |
¦  «        t%          |	¦  «        t%          |
¦  «        ¦  «        S )r÷   r    iô  )Únumc                óT   •— g | ]$\  }}‰j         d          ‰|z  ‰z  z   ‰|z  ‰z  z
  ‘Œ%S r�   ©ré   ©r7   ÚstÚctÚcosphiÚrxÚryrx   Úsinphis      €€€€€r'   r:   z'SegmentArc.get_bbox.<locals>.<listcomp>€  ó=   ø€ Ð]Ð]Ð]Á6À2ÀrˆdŒk˜!Œn˜r B™w v™~Ñ-°°R±¸±Ñ>Ð]Ð]Ð]r)   c                óT   •— g | ]$\  }}‰j         d          ‰|z  ‰z  z   ‰|z  ‰z  z   ‘Œ%S r“   rl  rm  s      €€€€€r'   r:   z'SegmentArc.get_bbox.<locals>.<listcomp>�  rt  r)   )r#   Úradiansr-  r.  r=   r+  r6   r,  r5   rA   r   rB   rº   r»   rN   Úzipr
   r@   r”   )rx   r-  r.  Út1Út2rX  ÚsintÚcostÚphiÚxxÚyyrp  rq  rr  rs  s   `          @@@@r'   r–   zSegmentArc.get_bboxj  sÈ  øøøøø€ õ œ d¤kÑ2Ô2µD´LÀÄÑ4MÔ4M�ˆõ ŒZ˜œ
¥4¤8¨FÑ#3Ô#3Ñ3°T´[ÅÄÈ&ÑAQÔAQÑ5QÑRÔRˆÝŒZ˜œ
¥4¤8¨FÑ#3Ô#3Ñ3°T´[ÅÄÈ&ÑAQÔAQÑ5QÑRÔRˆØ�2ŠgˆgØ�!•D”G‘)‰OˆBð �2ŠgˆgåŒM˜"˜b cÐ*Ñ*Ô*ˆÝ•C�œ !Ñ$Ô$Ñ%Ô%ˆÝ•C�œ !Ñ$Ô$Ñ%Ô%ˆÝŒl˜4œ:Ñ&Ô&ˆÝ”˜#‘”ˆÝ”˜#‘”ˆØŒZ˜‰\ˆØŒ[˜‰]ˆØ]Ð]Ð]Ð]Ð]Ð]Ð]Ð]ÍSÐQUÐW[É_Ì_Ð]Ñ]Ô]ˆØ]Ð]Ð]Ð]Ð]Ð]Ð]Ð]ÍSÐQUÐW[É_Ì_Ð]Ñ]Ô]ˆÝ•C˜‘G”G�S ™WœW¥c¨"¡g¤g­s°2©w¬wÑ7Ô7Ð7r)   c                ó’  — | j         sdS |                     | j        ¦  «        }| j        |j        z   }| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j	        r| j	        n|                     dd	¦  «        }	| j
        r| j
        n|                     d
d¦  «        }
| j        |j        d         z  }| j        |j        d         z  }|                     |||| j        | j        |||	||
| j        || j        ¬¦  «         dS )r­   Nrp   r	   r_   r®   rc   r¯   ra   r    ri   r   )r+  r,  r-  r.  rN   r_   ra   rc   ri   rn   rp   rk   )rr   rŠ   ré   rN   rÉ   rp   r   r_   rc   ra   ri   r+  r/  r,  rX   r-  r.  rn   rk   )rx   rÃ   rŠ   r‹   ré   rN   rp   r_   rc   ra   ri   r+  r,  s                r'   rÌ   zSegmentArc.draw„  sL  € ð Œ|ð 	ØˆFØ×$Ò$ T¤[Ñ1Ô1ˆØ”
˜Yœ_Ñ,ˆà $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆØ œIÐBˆtŒyˆy¨5¯9ª9°V¸TÑ+BÔ+Bˆà”
˜Yœ^¨AÔ.Ñ.ˆØ”˜yœ~¨aÔ0Ñ0ˆØ�Š�˜e¨FØ”{¨4¬;¸eØ  r°Ø”Y v°T´Zð 	ñ 	Aô 	Að 	Að 	Að 	Ar)   )r\  r]  Nr   NNNNNNT)ré   r   r+  r   r,  r   r-  r   r.  r   rk   r^  rN   r   r_   r`   ra   rb   rc   rd   ri   rj   rn   ro   rp   rq   rr   rs   rÎ   rÏ   )r   rf  rÍ   r  r+   r)   r'   r1  r1    sÉ   € € € € € ðð ð& 69Ø15Ø !ØEIØ'+Ø+/Ø'+Ø(,Ø)-Ø!%ðð ð ð ð ð6Fð Fð Fð FðFð Fð Fð Fð8ð 8ð 8ð 8ð68ð 8ð 8ð 8ð4Að Að Að Að Að Ar)   r1  c                  óV   — e Zd ZdZ	 	 	 	 	 	 	 	 	 d$d%d„Zd&d„Zd'd„Zd(d!„Zd)d"„Zd)d#„Z	dS )*ÚSegmentPathzT Segment defined like svg <path> element made of
        M, L, C, Q, Z, etc....
    NTr^   úSequence[XY | str]r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rn   ro   rp   rq   rr   rs   c                ó’   — || _         |	| _        || _        || _        || _        || _        || _        || _        || _        |
| _	        d S r"   )
r^   rp   r_   ri   ra   rc   rn   re   rg   rr   )rx   r^   r_   ra   rc   re   rg   ri   rn   rp   rr   s              r'   ry   zSegmentPath.__init__£  sP   € ð )-ˆŒ	ð ˆŒØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ	Ø ˆŒØ"ˆŒØˆŒˆˆr)   r   ú'SegmentPath'c           
     óR  ‡— | j         �| j         n|                     dd ¦  «        | j        r| j        n|                     dd ¦  «        | j        �| j        n|                     dd ¦  «        | j        r| j        n|                     dd ¦  «        | j        r| j        n|                     dd ¦  «        | j        r| j        n|                     dd ¦  «        | j        r| j        n|                     dd ¦  «        | j        dœŠˆfd	„| 	                    ¦   «         D ¦   «         }‰ 
                    |¦  «         g }| j        D ]]}	 |                     |                     t          |¦  «        ¦  «        ¦  «         Œ9# t          $ r |                     |¦  «         Y ŒZw xY wt!          |fi ‰¤ŽS )
Nrp   r_   ri   ra   rc   re   rg   )rp   r_   ri   ra   rc   re   rg   rr   c                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z%SegmentPath.xform.<locals>.<dictcomp>Æ  r…   r)   )rp   r   r_   ri   ra   rc   re   rg   rr   r†   r‡   r^   rD   rŠ   r   Ú	TypeErrorr�  )rx   rŠ   r‹   Úxpathrw   rƒ   s        @r'   rŒ   zSegmentPath.xform¼  s©  ø€ à%)¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[Ø#'¤:ÐK�T”Z�Z°5·9²9¸WÀdÑ3KÔ3KØ!%¤Ð!6�D”I�I¸E¿IºIÀfÈdÑ<SÔ<SØ!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø!œWÐ?�$”'�'¨%¯)ª)°D¸$Ñ*?Ô*?Ø)-¬ÐW˜œ˜¸E¿IºIÀjÐRVÑ<WÔ<WØ+/¬>Ð[˜œ˜¸u¿yºyÈÐVZÑ?[Ô?[Ø”|ð"%ð "%ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐàˆØ”ð 	 ð 	 ˆAð Ø—’˜Y×0Ò0µ°q±´Ñ:Ô:Ñ;Ô;Ð;Ð;øÝð  ð  ð  Ø—’˜Q‘”���ð øøøõ ˜5Ð+Ð+ FÐ+Ð+Ð+s   Å5E7Å7FÆFr
   c                óÒ   — d„ | j         D ¦   «         }d„ | j         D ¦   «         }t          t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        S )rŽ   c                óH   — g | ]}t          |t          ¦  «        °|d          ‘Œ S r�   ©Ú
isinstancerÚ   rv   s     r'   r:   z(SegmentPath.get_bbox.<locals>.<listcomp>Ø  ó+   € Ð?Ð?Ð?�a­J°q½#Ñ,>Ô,>Ð?ˆQˆqŒTÐ?Ð?Ð?r)   c                óH   — g | ]}t          |t          ¦  «        °|d          ‘Œ S r“   r‹  rv   s     r'   r:   z(SegmentPath.get_bbox.<locals>.<listcomp>Ù  r�  r)   )r^   r
   r@   r”   r  s      r'   r–   zSegmentPath.get_bboxÒ  s[   € ð @Ð?˜4œ9Ð?Ñ?Ô?ˆØ?Ð?˜4œ9Ð?Ñ?Ô?ˆÝ•C˜‘F”F�C ™FœF¥C¨¡F¤F­C°©F¬FÑ3Ô3Ð3r)   r—   r   r˜   c                ó   — dS )rš   Nr+   r£   s     r'   r¤   zSegmentPath.doreverseÜ  ó   € € € r)   c                ó   — dS )r¦   Nr+   rª   s    r'   r«   zSegmentPath.doflipà  r�  r)   c                ó$  — | j         sdS g }| j        D ]]}	 |                     |                     t	          |¦  «        ¦  «        ¦  «         Œ9# t
          $ r |                     |¦  «         Y ŒZw xY w| j        �| j        n|                     dd¦  «        }| j        r| j        n|                     dd¦  «        }| j	        �| j	        n|                     dd¦  «        }| j
        r| j
        n|                     dd¦  «        }	| j        r| j        n|                     d	d¦  «        }
| j        r| j        n|                     d
d¦  «        }| j        r| j        n|                     dd¦  «        }|                     ||||	|
||| j        |¬¦	  «	         dS )r­   Nrp   r    r_   r®   ri   rc   r¯   ra   re   r°   rg   r·   )rr   r^   rD   rŠ   r   r‡  rp   r   r_   ri   rc   ra   re   rg   rn   )rx   rÃ   rŠ   r‹   rˆ  rw   rp   r_   ri   rc   ra   re   rg   s                r'   rÌ   zSegmentPath.drawä  s¤  € ð Œ|ð 	ØˆFàˆØ”ð 	 ð 	 ˆAð Ø—’˜Y×0Ò0µ°q±´Ñ:Ô:Ñ;Ô;Ð;Ð;øÝð  ð  ð  Ø—’˜Q‘”���ð øøøð !%¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ"œjÐI�”
�
¨e¯iªi¸ÀÑ.IÔ.IˆØ œIÐ1ˆtŒyˆy°u·y²yÀÈÑ7NÔ7NˆØœÐ9ˆTŒWˆW U§Y¢Y¨t°SÑ%9Ô%9ˆØœÐ7ˆTŒWˆW U§Y¢Y¨t°QÑ%7Ô%7ˆØ$(¤MÐU�4”=�=°u·y²yÀÈWÑ7UÔ7UˆØ&*¤nÐY�D”N�N¸%¿)º)ÀKÐQXÑ:YÔ:Yˆ	à�Š�˜e¨$Ø˜2¨¸IØ”i¨ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0s   –5AÁA.Á-A.)	NNNNNNNNT)r^   r‚  r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rn   ro   rp   rq   rr   rs   )r   r„  rÍ   rÎ   rÏ   rÐ   r+   r)   r'   r�  r�  Ÿ  s¾   € € € € € ðð ð
 FJØ'+Ø+/Ø04Ø26Ø'+Ø(,Ø)-Ø!%ðð ð ð ð ð2,ð ,ð ,ð ,ð,4ð 4ð 4ð 4ðPð Pð Pð Pð,ð ,ð ,ð ,ð0ð 0ð 0ð 0ð 0ð 0r)   r�  c                  ób   — e Zd ZdZ ed¦  «        dddddfdd„Zdd„Zd d„Zd!d„Zd"d„Z	d"d„Z
dS )#ÚSegmentImagez PNG or SVG Image )r   r   r   r	   r   NÚimageústr | BinaryIOrå   r   r+  r   r,  ÚrotateÚimgfmtrj   rp   rq   c                ó�   — || _         t          |¦  «        | _        || _        || _        || _        || _        || _        d| _        d S )NT)	r•  r   rå   r+  r,  r—  r˜  rp   rr   )rx   r•  rå   r+  r,  r—  r˜  rp   s           r'   ry   zSegmentImage.__init__  sF   € ð ˆŒ
Ý˜‘)”)ˆŒØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒˆˆr)   r   r
   c                ó:  — | j         dz  dk    rJt          | j        j        | j        j        | j        j        | j        z   | j        j        | j        z   ¦  «        S | j                              | j         ¦  «        }| j        t          | j        df¦  «        z                         | j         ¦  «        }| j        t          | j        | j        f¦  «        z                         | j         ¦  «        }| j        t          d| j        f¦  «        z                         | j         ¦  «        }t          t          d„ ||||fD ¦   «         ¦  «        t          d„ ||||fD ¦   «         ¦  «        t          d„ ||||fD ¦   «         ¦  «        t          d„ ||||fD ¦   «         ¦  «        ¦  «        S )r÷   rõ   r   c              3  ó$   K  — | ]}|j         V — Œd S r"   rF  rv   s     r'   ú	<genexpr>z(SegmentImage.get_bbox.<locals>.<genexpr>%  ó$   è è € Ð.Ð.˜�”Ð.Ð.Ð.Ð.Ð.Ð.r)   c              3  ó$   K  — | ]}|j         V — Œd S r"   rI  rv   s     r'   rœ  z(SegmentImage.get_bbox.<locals>.<genexpr>&  r�  r)   c              3  ó$   K  — | ]}|j         V — Œd S r"   rF  rv   s     r'   rœ  z(SegmentImage.get_bbox.<locals>.<genexpr>'  r�  r)   c              3  ó$   K  — | ]}|j         V — Œd S r"   rI  rv   s     r'   rœ  z(SegmentImage.get_bbox.<locals>.<genexpr>(  r�  r)   )
r—  r
   rå   r%   r&   r+  r,  r   r@   r”   )rx   rG   rH   rI   Úp4s        r'   r–   zSegmentImage.get_bbox  s}  € ð Œ;˜Ñ Ò!Ð!Ý˜œœ	 4¤7¤9¨d¬g¬i¸¼
Ñ.BÀDÄGÄIÈdÌkÑDYÑZÔZÐZàŒW�^Š^˜DœKÑ(Ô(ˆØŒg�˜tœz¨1˜oÑ.Ô.Ñ.×6Ò6°t´{ÑCÔCˆØŒg�˜tœz¨4¬;Ð7Ñ8Ô8Ñ8×@Ò@ÀÄÑMÔMˆØŒg�˜q $¤+Ð.Ñ/Ô/Ñ/×7Ò7¸¼ÑDÔDˆåÝÐ.Ð.˜b " b¨"Ð-Ð.Ñ.Ô.Ñ.Ô.ÝÐ.Ð.˜b " b¨"Ð-Ð.Ñ.Ô.Ñ.Ô.ÝÐ.Ð.˜b " b¨"Ð-Ð.Ñ.Ô.Ñ.Ô.ÝÐ.Ð.˜b " b¨"Ð-Ð.Ñ.Ô.Ñ.Ô.ñ	ô ð 	r)   ú'SegmentImage'c                óŠ  ‡— d| j         �| j         n|                     dd¦  «        iŠˆfd„|                     ¦   «         D ¦   «         }‰                     |¦  «         t	          | j        |                     | j        ¦  «        f| j        |j	        d         z  | j
        |j	        d         z  | j        |j        z   | j        dœ‰¤ŽS )r|   rp   Nc                ór   •— i | ]3\  }}‰                      |¦  «        ­|‰                     ¦   «         v ¯0||“Œ4S r"   r~   r�   s      €r'   r„   z&SegmentImage.xform.<locals>.<dictcomp>7  r…   r)   r   r	   )r+  r,  r—  r˜  )rp   r   r†   r‡   r”  r•  rŠ   rå   r+  r/  r,  r—  rÉ   r˜  r‰   s      @r'   rŒ   zSegmentImage.xform,  sÓ   ø€ ð  T¤[Ð%<�d”k�kÀ%Ç)Â)ÈHÐVZÑB[ÔB[ð"]ˆð aÐ`Ð`Ð` %§+¢+¡-¤-Ð`Ñ`Ô`ˆØ�Š�eÑÔÐÝ˜DœJ¨	×(;Ò(;¸D¼GÑ(DÔ(Dð 'Ø"&¤*¨Y¬^¸AÔ->Ñ">Ø#'¤;¨y¬~¸aÔ/@Ñ#@Ø#'¤;¨y¬Ñ#>Ø#'¤;ð	'ð 'ð
  &ð'ð 'ð 	'r)   r—   r˜   c                ó    — t          d¦  «        ‚)z Reverse the image z+Reversing an ElementImage is not supported.©Ú
ValueErrorr£   s     r'   r¤   zSegmentImage.doreverse@  s   € åÐFÑGÔGÐGr)   c                ó    — t          d¦  «        ‚)r¦   z*Flipping an ElementImage is not supported.r¦  rª   s    r'   r«   zSegmentImage.doflipD  s   € åÐEÑFÔFÐFr)   c           	     óN  — | j         sdS |                     | j        ¦  «        }| j        |j        d         z  }| j        |j        d         z  }| j        �| j        n|                     dd¦  «        }|                     | j        |||| j	        |j
        z   | j        |¬¦  «         dS )zÉ Draw the image

            Args:
                fig: schemdraw.Figure to draw on
                transform: Transform to apply before drawing
                style: Default style parameters
        Nr   r	   rp   )r+  r,  r—  r˜  rp   )rr   rŠ   rå   r+  r/  r,  rp   r   r•  r—  rÉ   r˜  )rx   rÃ   rŠ   r‹   rå   r+  r,  rp   s           r'   rÌ   zSegmentImage.drawH  s³   € ð Œ|ð 	ØˆFà× Ò  ¤Ñ)Ô)ˆØ”
˜Yœ^¨AÔ.Ñ.ˆØ”˜yœ~¨aÔ0Ñ0ˆØ $¤Ð 7�”�¸U¿YºYÀxÐQRÑ=SÔ=SˆØ�	Š	�$”*˜bØ fØœ Y¤_Ñ4ØœØð	 	ñ 	!ô 	!ð 	!ð 	!ð 	!r)   )r•  r–  rå   r   r+  r   r,  r   r—  r   r˜  rj   rp   rq   rÍ   )r   r¢  rÎ   rÏ   )rÑ   rÒ   rÓ   rÔ   r   ry   r–   rŒ   r¤   r«   rÌ   r+   r)   r'   r”  r”    s»   € € € € € ØÐð #˜U 6™]œ]Ø !Ø!"Ø!"Ø)-Ø)-ðð ð ð ð ð"ð ð ð ð,'ð 'ð 'ð 'ð(Hð Hð Hð HðGð Gð Gð Gð!ð !ð !ð !ð !ð !r)   r”  )r   )r   r   r   r   r   r   )$rÔ   Ú
__future__r   Útypingr   r   r   r   r   r#   Útypesr
   r   r   r   r   r   r   r   r   r   Ú r   r   Úbackendsr   rY   r[   rÖ   r  r  r9  r1  r�  r”  ÚSegmentTyper+   r)   r'   ú<module>r°     sÂ  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø €€€à oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð<ð <ð <ð <ð <ð~gMð gMð gMð gMð gMñ gMô gMð gMðT_Rð _Rð _Rð _Rð _Rñ _Rô _Rð _RðTvjð vjð vjð vjð vjñ vjô vjð vjðr@3ð @3ð @3ð @3ð @3ñ @3ô @3ð @3ðFsMð sMð sMð sMð sMñ sMô sMð sMðlFAð FAð FAð FAð FAñ FAô FAð FAðRa0ð a0ð a0ð a0ð a0ñ a0ô a0ð a0ðHX!ð X!ð X!ð X!ð X!ñ X!ô X!ð X!ðv �G˜[¨+°zÀ=ÐR_ÐalÐnzÐzÔ{€€€r)   