§
    èƒñj_Q  ã                  óÒ  — d Z ddlmZ ddlmZmZ ddlZddlmZm	Z	m
Z
mZ ddlmZmZ dd	lmZmZ dd
lmZmZmZmZmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ d e¦  «        Z" G d!„ d"e¦  «        Z#dS )#z Connectors and bus lines é    )Úannotations)ÚOptionalÚSequenceNé   )ÚSegmentÚSegmentTextÚSegmentCircleÚSegmentPoly)ÚElementÚLineé   )Ú	resheightÚgap)ÚPointÚXYÚValignÚHeaderStyleÚHeaderNumberingc                  óV   ‡ — e Zd ZdZddiZdddddœdˆ fd„Zdd„Zddd„Zdˆ fd„Zˆ xZ	S ) Ú
OrthoLinesa   Orthogonal multiline connectors

        Use `at()` and `to()` methods to specify starting and
        ending location of OrthoLines.

        The default lines are spaced to provide connection to
        pins with default spacing on Ic element or connector
        such as a Header.

        Args:
            n: Number of parallel lines
            dy: Distance between parallel lines [default: 0.6]
            xstart: Fractional distance (0-1) to start vertical
                portion of first ortholine
    Údyç333333ã?r   N)Únr   ÚxstartÚarrowr   ÚintúOptional[float]r   r   úOptional[str]c               óp   •—  t          ¦   «         j        di |¤Ž | j                             dd¦  «         d S )NÚto)r   r   © )ÚsuperÚ__init__Ú_userparamsÚ
setdefault)Úselfr   r   r   r   ÚkwargsÚ	__class__s         €ú\/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/elements/connectors.pyr#   zOrthoLines.__init__    sA   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØÔ×#Ò# D¨&Ñ1Ô1Ð1Ð1Ð1ó    Úxyr   Úreturnú	'Element'c                ó   — || j         d<   | S ©z' Specify ending position of OrthoLines r    ©r$   ©r&   r+   s     r)   r    zOrthoLines.to)   ó   € à!#ˆÔ˜ÑØˆr*   r   ÚdxÚfloatc                ó8   — t          ||f¦  «        | j        d<   | S ©z4 Specify ending position relative to start position Údelta©r   r$   ©r&   r3   r   s      r)   r7   zOrthoLines.delta.   ó   € å$)¨2¨r¨(¡O¤OˆÔ˜Ñ!Øˆr*   ÚdwgxyÚdwgthetaútuple[Point, float]c                óÂ  •— || _         | j        s|                      ¦   «          d| j        d<   | j                             d|¦  «        }| j                             d|¦  «        }| j                             dd¦  «        }| j                             dd¦  «        }| j                             d	d
¦  «        }| j                             dd¦  «        }	| j                             dd¦  «        }
|�|\  }}n"|d         |d         z
  }|d         |d         z
  }t          |¦  «        dk     rFt          |¦  «        D ]5}| |z  }| j                             t          d|f||fg¦  «        ¦  «         Œ6nØ|	�!|dk    r||	z  }n>||	z  |z
  ||dz
  z  |	z  z
  }n)|dk    r|dz  ||dz
  z  dz  z
  }n|dz  ||dz
  z  dz  z   }t          |¦  «        D ]|}| |z  }|dk    r|dk    r|||z  z   n|||z  z
  }n|dk    r|||z
  |z  z   n
|||z
  |z  z
  }| j                             t          d|f||f|||z   f|||z   fg|
¬¦  «        ¦  «         Œ} t          ¦   «         j        ||fi |¤ŽS )ú) Calculate absolute placement of Element r   ÚthetaÚatr    r7   Nr   r   r   r   r   r   çš™™™™™©?r   ©r   )Ú
_dwgparamsÚ_positionedÚ	_positionÚparamsÚgetÚabsÚrangeÚsegmentsÚappendr   r"   Ú_place)r&   r;   r<   Ú	dwgparamsr+   r    r7   r   Úndyr   r   r3   r   ÚiÚyÚx0Úxr(   s                    €r)   rM   zOrthoLines._place3   s¸  ø€ à#ˆŒØÔð 	Ø�NŠNÑÔÐà ˆŒ�GÑØ”—’  uÑ-Ô-ˆØ”—’  uÑ-Ô-ˆØ”—’ ¨Ñ.Ô.ˆØŒK�OŠO˜C Ñ#Ô#ˆØŒk�oŠo˜d BÑ'Ô'ˆØ”—’ ¨4Ñ0Ô0ˆØ”—’ ¨Ñ.Ô.ˆØÐØ‰FˆB��à�A”˜˜Aœ‘ˆBØ�A”˜˜Aœ‘ˆBåˆr‰7Œ7�SŠ=ˆ=Ý˜1‘X”Xð Að A�Ø�B�s‘F�Ø”×$Ò$¥W¨q°!¨f°r¸1°gÐ->Ñ%?Ô%?Ñ@Ô@Ð@Ð@ðAð
 Ð!Ø˜’6�6Ø˜F™�B�Bà˜F™ S™¨3°°!±©9°VÑ+;Ñ;�B�Bà�a’�Ø˜‘T˜S ! A¡#™Y q™[Ñ)��à˜‘T˜S ! A¡#™Y q™[Ñ)�å˜1‘X”Xð dð d�Ø�B�s‘F�Ø˜’6�6Ø&(¨1¢f f˜˜S ™U™
˜
°"°s¸1±u±*�A�Aà*,¨qª&¨&˜˜a ™c 3™Y™˜°b¸A¸a¹CÀ¹9±n�AØ”×$Ò$¥W¨q°!¨f°q¸!°f¸qÀ!ÀBÁ$¸iÈ"ÈaÐPRÉdÈÐ-TÐ\aÐ%bÑ%bÔ%bÑcÔcÐcÐcØ�u‰wŒwŒ~˜e XÐ;Ð;°Ð;Ð;Ð;r*   )r   r   r   r   r   r   r   r   ©r+   r   r,   r-   ©r   r   ©r3   r4   r   r4   r,   r-   ©r;   r   r<   r4   r,   r=   ©
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_element_defaultsr#   r    r7   rM   Ú__classcell__©r(   s   @r)   r   r      s¹   ø€ € € € € ðð ð  	ˆcðÐð Ø'+Ø+/Ø(,ð	2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ðð ð ð ð
ð ð ð ð ð
,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<r*   r   c                  óZ   ‡ — e Zd ZdZdddddœZddddœdˆ fd„Zdd„Zddd„Zd ˆ fd„Zˆ xZ	S )!Ú
RightLinesa‹   Right-angle multi-line connectors

        Use `at()` and `to()` methods to specify starting and ending
        location.

        The default lines are spaced to provide connection to
        pins with default spacing on Ic element or connector
        such as a Header.

        Args:
            n: Number of parallel lines
            dy: Distance between parallel lines [default: 0.6]
    r   )é   éþÿÿÿr   r   )r   r    r@   r   N)r   r   r   r   r   r   r   r   r   c               ó:   •—  t          ¦   «         j        di |¤Ž d S ©Nr!   ©r"   r#   )r&   r   r   r   r'   r(   s        €r)   r#   zRightLines.__init__v   s(   ø€ ð
 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"r*   r+   r   r,   r-   c                ó   — || j         d<   | S r/   r0   r1   s     r)   r    zRightLines.to}   r2   r*   r3   r4   c                ó8   — t          ||f¦  «        | j        d<   | S r6   r8   r9   s      r)   r7   zRightLines.delta‚   r:   r*   r;   r<   r=   c           	     óB  •— || _         | j        s|                      ¦   «          | j                             d|¦  «        }| j                             dd¦  «        }| j        d         }| j        d         }| j        d         }| j                             dd¦  «        }	|�|\  }
}n"|d         |d         z
  }
|d	         |d	         z
  }t          |¦  «        D ]y}| |z  }|dk    r|
dk     r|
||z  z
  n|
||z  z   }n"|
dk    r|
||z
  d	z
  |z  z   n|
||z
  d	z
  |z  z
  }| j                             t          d|f||f||fg|	¬
¦  «        ¦  «         Œz|
dz  df| j	        d<   d| j
        d<   ||f| j
        d<   |dk    rdnd| j
        d<    t          ¦   «         j        ||fi |¤ŽS )r?   rA   r7   Nr    r   r   r   r   r   rC   r   ÚmidÚlbllocÚdropéZ   i¦ÿÿÿÚ	droptheta)rD   rE   rF   rG   rH   rJ   rK   rL   r   ÚanchorsÚ	elmparamsr"   rM   )r&   r;   r<   rN   r+   r7   r    r   rO   r   r3   r   rP   rQ   rS   r(   s                  €r)   rM   zRightLines._place‡   sÞ  ø€ à#ˆŒØÔð 	Ø�NŠNÑÔÐàŒ[�_Š_˜T 5Ñ)Ô)ˆØ”—’ ¨Ñ.Ô.ˆØŒ[˜ÔˆØŒK˜ÔˆØŒk˜$ÔˆØ”—’ ¨Ñ.Ô.ˆØÐØ‰FˆB��à�A”˜˜Aœ‘ˆBØ�A”˜˜Aœ‘ˆBÝ�q‘”ð 	Rð 	RˆAØ��3‘ˆAØ�AŠvˆvØ"$ q¢& &�B˜˜3™‘J�J¨b°1°S±5©j��à(*¨Qª¨�B˜!˜A™#˜a™% ™Ñ$Ð$°B¸!¸A¹#¸a¹%À¹Ñ4D�ØŒM× Ò ¥¨1¨a¨&°1°a°&¸1¸b¸'Ð)BÈ%Ð!PÑ!PÔ!PÑQÔQÐQÐQà! !™t Q˜iˆŒ�UÑØ#(ˆŒ�xÑ Ø"# R ˆŒ�vÑØ,.°ªF¨F b b¸ˆŒ�{Ñ#Ø�u‰wŒwŒ~˜e XÐ;Ð;°Ð;Ð;Ð;r*   )r   r   r   r   r   r   rT   rU   rV   rW   rX   r_   s   @r)   ra   ra   b   sÂ   ø€ € € € € ðð ð ØØØð	ð Ðð Ø'+Ø(,ð#ð #ð #ð #ð #ð #ð #ð #ðð ð ð ð
ð ð ð ð ð
<ð <ð <ð <ð <ð <ð <ð <ð <ð <r*   ra   c                  ób   ‡ — e Zd ZdZddddddddd	d	d
dœZ	 	 	 	 d'dddddddddddœ
d(ˆ fd&„Zˆ xZS ))ÚHeaderau   Header connector element

        Args:
            rows: Number of rows
            cols: Number of columns. Pin numbering requires 1 or 2 columns
            pinsleft: List of pin labels for left side
            pinsright: List of pin labels for right side
            style: Connector style, 'round', 'square', or 'screw' [default: round]
            numbering: Pin numbering order. 'lr' for left-to-right numbering,
                'ud' for up-down numbering, or 'ccw' for counter-clockwise
                (integrated-circuit style) numbering. Pin 1 is always at the
                top-left corner, unless `flip` method is also called. [default: lr]
            shownumber: Draw pin numbers outside the header
            pinalignleft: Vertical alignment for pins on left side
                ('center', 'top', 'bottom') [default: 'bottom']
            pinalignright: Vertical alignment for pins on right side
                ('center', 'top', 'bottom') [default: 'bottom']
            pinfontsizeleft: Font size for pin labels on left [default: 9]
            pinfontsizeright: Font size for pin labels on right [default: 9]
            pinspacing: Distance between pins [default: 0.6]
            edge: Distance between header edge and first pin row/column [default: 0.3]
            pinfill: Color to fill pin circles [default: bg]

        Anchors:
            pin[X] for each pin
    r   ÚroundÚlré	   ç333333Ó?ÚbgFÚbottomçš™™™™™¹?)Ú
pinspacingÚstyleÚ	numberingÚpinfontsizeleftÚpinfontsizerightÚedgeÚpinfillÚ
shownumberÚpinalignleftÚpinalignrightÚpinradé   r   N)
r{   r|   r�   r‚   rƒ   r~   r}   rz   r   r€   Úrowsr   ÚcolsÚpinsleftúOptional[Sequence[str]]Ú	pinsrightr{   úOptional[HeaderStyle]r|   úOptional[HeaderNumbering]r�   úOptional[bool]r‚   úOptional[Valign]rƒ   r~   r   r}   rz   r   r€   r   c       
        ó`  •—  t          ¦   «         j        d#i |¤Ž |€g }|€g }|dk    rt          j        d¦  «         d| j        d<   |dz
  | j        d         z  | j        d         dz  z   }|dz
  | j        d         z  | j        d         dz  z   }| j        d         }| j                             t          d	d
|f||f|d
fg¦  «        ¦  «         t          |¦  «        D �]P}t          |¦  «        D �]<}|| j        d         z  | j        d         z   ||| j        d         z  z
  | j        d         z
  f}| j        d         dk    rT|\  }}| j                             t          ||z
  ||z
  f||z   ||z
  f||z   ||z   f||z
  ||z   fgdd¬¦  «        ¦  «         nÁ| j        d         dk    rz|\  }}| j                             t          ||dz  | j        d         d¬¦  «        ¦  «         | j                             t          ||z   ||z   f||z
  ||z
  fgd¬¦  «        ¦  «         n6| j                             t          ||| j        d         d¬¦  «        ¦  «         | j        d         dk    s| j        d         du rt          ||z  |z   dz   ¦  «        }nY| j        d         dk    rt          |||z  z   dz   ¦  «        }n/|dz  rt          ||z  ||z
  z   ¦  «        nt          |dz   ¦  «        }|| j        d                     |¦  «        <   | j        d         rU|dz  r|dz   nd|d         f}|dz  rdnddf}| j                             t          ||| j        d         |¬ ¦  «        ¦  «         |r^|dk    s|dz  sSd|d         f}| j                             t          |||         | j        d         d| j        d!         f¬ ¦  «        ¦  «         |ra|dk    s|dz  rV|dz   |d         f}| j                             t          |||         | j        d"         d| j        d!         f¬ ¦  «        ¦  «         �Œ>�ŒRd S )$Nr   z,Header numbering not supported with cols > 2ÚrightÚdr   rz   r   r„   rU   r   r{   Úsquarerw   r…   ©ÚfillÚzorderÚscrewg      ü?r€   é   )r•   r|   rt   TÚudzpin{}r�   rB   gš™™™™™©¿Úleftrx   r}   ©ÚfontsizeÚalignr‚   r~   r!   )r"   r#   ÚwarningsÚwarnrp   rG   rK   rL   r
   rJ   r	   r   Ústrro   Úformatr   )r&   r†   r‡   rˆ   rŠ   r{   r|   r�   r‚   rƒ   r~   r}   rz   r   r€   r'   ÚwÚhr„   ÚrowÚcolr+   rS   rQ   ÚpnumberÚnumxyrœ   Úlblxyr(   s                               €r)   r#   zHeader.__init__Ï   s  ø€ ð" 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØÐØˆHØÐØˆIØ�!Š8ˆ8ÝŒMÐHÑIÔIÐIà%ˆŒ�sÑØ�!‰V�t”{ <Ô0Ñ0°4´;¸vÔ3FÀqÑ3HÑHˆØ�!‰V�t”{ <Ô0Ñ0°4´;¸vÔ3FÀqÑ3HÑHˆØ”˜XÔ&ˆàŒ×Ò�[¨&°1°a°&¸1¸a¸&À1ÀaÀ&Ð)IÑJÔJÑKÔKÐKÝ˜‘;”;ð (	cñ (	cˆCÝ˜T‘{”{ð 'cñ 'c�Ø˜$œ+ lÔ3Ñ3°D´KÀÔ4GÑGØ˜˜DœK¨Ô5Ñ5Ñ5°d´kÀ&Ô6IÑIðK�ð ”;˜wÔ'¨8Ò3Ð3Ø‘D�A�qØ”M×(Ò(­°q¸±xÀÀ6ÁÐ6JÈQÈvÉXÐWXÐY_ÑW_ÐL`Ø78¸±xÀÀ6ÁÐ6JÈQÈvÉXÐWXÐY_ÑW_ÐL`ð6bà:>Àqð*Jñ *Jô *Jñ Kô Kð Kð Kð ”[ Ô)¨WÒ4Ð4Ø‘D�A�qØ”M×(Ò(­°r¸6À$¹;ÈTÌ[ÐYbÔMcÐlmÐ)nÑ)nÔ)nÑoÔoÐoØ”M×(Ò(­°1°V±8¸Q¸v¹XÐ2FÈÈ6ÉÐSTÐU[ÑS[ÐH\Ð1]ÐfgÐ)hÑ)hÔ)hÑiÔiÐiÐið ”M×(Ò(­°r¸6ÈÌÐT]ÔH^ÐghÐ)iÑ)iÔ)iÑjÔjÐjà”;˜{Ô+¨tÒ3Ð3°t´{À;Ô7OÐSWÐ7WÐ7WÝ! # d¡(¨S¡.°1Ñ"4Ñ5Ô5�G�GØ”[ Ô-°Ò5Ð5Ý! #¨¨D©¡.°1Ñ"4Ñ5Ô5�G�Gà:=À¹'ÐQ�c $ s¡(¨D°©HÑ"5Ñ6Ô6Ð6ÅsÈ3ÈqÉ5ÁzÄz�GØ8:�”˜WŸ^š^¨GÑ4Ô4Ñ5à”;˜|Ô,ð _Ø&)¨A¡gÐ7˜Q˜s™U˜U°4¸¸A¼Ð?�EØ'*¨Q¡wÐ;˜V˜V°G¸XÐF�EØ”M×(Ò(­Ø˜w°´Ð=NÔ1OÐW\ð*^ñ *^ô *^ñ _ô _ð _ð ð d ¨¢ °#¸±' Ø! 2 a¤5˜M�EØ”M×(Ò(­°U¸HÀS¼MÐTXÔT_Ð`qÔTrØ<CÀTÄ[ÐQ_ÔE`Ð;að*cñ *cô *cñ dô dð dð ð c $¨!¢) )¨s°Q©w )Ø˜s™U B q¤E˜N�EØ”M×(Ò(­°U¸IÀc¼NÐUYÔU`ÐasÔUtØ<BÀDÄKÐP^ÔD_Ð;`ð*bñ *bô *bñ cô cð cùñM'cð(	cð (	cr*   )r…   r   NN)r†   r   r‡   r   rˆ   r‰   rŠ   r‰   r{   r‹   r|   rŒ   r�   r�   r‚   rŽ   rƒ   rŽ   r~   r   r}   r   rz   r   r   r   r€   r   ©rY   rZ   r[   r\   r]   r#   r^   r_   s   @r)   rr   rr   §   sÎ   ø€ € € € € ðð ð6 ØØØØØØØØ Ø!Øðð Ðð ØØ59Ø6:ð	Gcð 15Ø8<Ø.2Ø26Ø37Ø59Ø48Ø/3Ø)-Ø*.ðGcð Gcð Gcð Gcð Gcð Gcð Gcð Gcð Gcð Gcð Gcð Gcr*   rr   c                  ó6   ‡ — e Zd ZdZddddœZddœdˆ fd
„Zˆ xZS )ÚJumperzÛ Jumper for use on a Header element

        Set position using `at()` method with a Header
        pin location, e.g. `Jumper().at(H.in1)`

        Args:
            pinspacing: Spacing between pins [default: 0.6]
    r   ry   r   )rz   r„   r@   N)rz   rz   r   c          	     ó  •—  t          ¦   «         j        di |¤Ž | j        d         }|dz  }| j                             t          | | f| j        d         |z   | f| j        d         |z   |f| |fg¦  «        ¦  «         d S )Nr„   g      @rz   r!   )r"   r#   rG   rK   rL   r
   )r&   rz   r'   r„   rS   r(   s        €r)   r#   zJumper.__init__'  s²   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø”˜XÔ&ˆØ�3‰JˆØŒ×Ò�[¨A¨2°¨r¨(°T´[ÀÔ5NÈqÑ5PÐSTÐRTÐ4UØ*.¬+°lÔ*CÀAÑ*EÀqÐ)IÈQÈBÐPQÈ7ð*Tñ Uô Uñ 	Vô 	Vð 	Vð 	Vð 	Vr*   )rz   r   r¨   r_   s   @r)   rª   rª     sz   ø€ € € € € ðð ð ØØðð Ðð 04ðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vr*   rª   c                  óB   ‡ — e Zd ZdZdddddœZ	 	 dd	d	d	d
œdˆ fd„Zˆ xZS )Ú
BusConnecta   Data bus connection.

        Adds the short diagonal lines that break out a bus (wide line)
        to connect to an Ic or Header element.

        Args:
            n: Number of parallel lines
            up: Slant up or down
            dy: Distance between parallel lines [default: 0.6]
            lwbus: Line width of bus line [default: 4]
            l: length of connection lines [default: 3]

        Anchors:
            * start
            * end
            * p[X] where X is int for each data line
    r   r…   rb   ç      à?)r   ÚlwbusÚlÚslantxr   TN)r   r¯   r°   r   r   ÚupÚboolr   r   r¯   r°   c          
     óB  •—  t          ¦   «         j        di |¤Ž d| j        d<   | j        d         }| j        d         }| j        d         }	| j        d         }
|r|
n|
 }t          |¦  «        D ]P}| |z  }| j                             t          d|f||
z
  |f|||z   fg¦  «        ¦  «         d|f| j        d|dz   › �<   ŒQ| j                             t          ||
f||||z  z
  fg|	¬	¦  «        ¦  «         ||
f| j        d
<   ||
f| j        d<   ||
||z  z
  f| j        d<   d S )Nr   r@   r°   r   r¯   r±   Úpinr   )Úlwrl   ÚstartÚendr!   )	r"   r#   rG   rJ   rK   rL   r   ro   rp   )r&   r   r²   r   r¯   r°   r'   ÚdeltaxÚdeltayr¶   r±   ÚslantyrP   rQ   r(   s                 €r)   r#   zBusConnect.__init__I  sc  ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø ˆŒ�GÑà”˜SÔ!ˆØ”˜TÔ"ˆØŒ[˜Ô!ˆØ”˜XÔ&ˆØÐ*�� F 7ˆå�q‘”ð 	/ð 	/ˆAØ��6‘	ˆAØŒM× Ò ¥¨1¨a¨&°6¸&±=À!Ð2DÀvÈqÐQWÉxÐFXÐ)YÑ!ZÔ!ZÑ[Ô[Ð[Ø)*¨A¨ˆDŒL˜˜q ™s˜˜Ñ%Ð%ØŒ×Ò�W v¨vÐ&6¸ÀÈÈ&ÉÁÐ8QÐ%RÐWYÐZÑZÔZÑ[Ô[Ð[Ø"(¨&Ð!1ˆŒ�vÑØ!'¨Ð 0ˆŒ�WÑØ% v¨a°©h¡Ð7ˆŒ�UÑÐÐr*   )r   T)
r   r   r²   r³   r   r   r¯   r   r°   r   r¨   r_   s   @r)   r­   r­   1  s„   ø€ € € € € ðð ð$ ØØØð	ð Ðð Ø ð8ð (,Ø*.Ø&*ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r*   r­   c                  ó.   ‡ — e Zd ZdZddiZddˆ fd„Zˆ xZS )	ÚBusLinezž Data bus line. Just a wide line.

        Use BusConnect to break out connections to the BusLine.

        Args:
            lw: Line width [default: 4]
    r¶   r…   Nr   c                ó:   •—  t          ¦   «         j        di |¤Ž d S re   rf   )r&   r¶   r'   r(   s      €r)   r#   zBusLine.__init__o  s&   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"r*   )N)r¶   r   r¨   r_   s   @r)   r½   r½   d  s[   ø€ € € € € ðð ð 	ˆaðÐð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #r*   r½   c                  óB   ‡ — e Zd ZdZdddddddœZd	d	d	d	d
œdˆ fd„Zˆ xZS )ÚDB9aA   DB9 Connector

        Args:
            pinspacing: Distance between pins [default: 0.6]
            edge: Distance between edge and pins [default: 0.3]
            number: Draw pin numbers [default: False]
            pinfill: Color to fill pin circles [default: bg]

        Anchors:
            * pin1 thru pin9
    r   rv   rw   ry   Fr   )rz   r   r€   r„   Únumberr@   N©rz   r   rÁ   r€   rz   r   r   rÁ   r�   r€   r   c          
     ó  •—  t          ¦   «         j        di |¤Ž | j        d         }| j        d         }| j        d         }||dz  z   }	d|z  |dz  z   }
|
dz   }| j        d         }| j                             t          dd	|
f|	|f|	d
fgd¬¦  «        ¦  «         t          d¦  «        D ]¦}||
|dz   |z  z
  |z
  f}| j                             t          |||d¬¦  «        ¦  «         || j        dd|z
  › �<   | j        d         rL| j                             t          |d	         |d         |z   ft          d|z
  ¦  «        dd¬¦  «        ¦  «         Œ§t          d¦  «        D ]©}||z   ||dz   |z  z
  |z
  f}| j                             t          |||d¬¦  «        ¦  «         || j        dd|z
  › �<   | j        d         rL| j                             t          |d	         |d         |z   ft          d|z
  ¦  «        dd¬¦  «        ¦  «         Œªd S )Nrz   r   r€   r   r…   r®   r„   rU   r   ç      à¿ç      Ð?©Úcornerradiusr“   rµ   ru   rÁ   r   ©Úcenterrx   rš   r—   ç      è?r!   ©r"   r#   rG   rK   rL   r
   rJ   r	   ro   r   rŸ   ©r&   rz   r   rÁ   r€   r'   ÚspacingÚedgepadr”   r¡   Úh1Úh2r„   rP   r+   r(   s                  €r)   r#   zDB9.__init__‡  st  ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø”+˜lÔ+ˆØ”+˜fÔ%ˆØŒ{˜9Ô%ˆØ�g˜a‘iÑˆØ�‰[˜7 1™9Ñ$ˆØ�"‰WˆØ”˜XÔ&ˆàŒ×Ò�[¨&°1°b°'¸A¸r¸7ÀQÈÀHÐ)MÐ\_Ð`Ñ`Ô`ÑaÔaÐaå�q‘”ð 	Nð 	NˆAØ˜2˜q ™t W™nÑ,¨WÑ4Ð5ˆBØŒM× Ò ¥¨r°6ÀÈQÐ!OÑ!OÔ!OÑPÔPÐPØ(*ˆDŒL˜˜q ™s˜˜Ñ%ØŒ{˜8Ô$ð NØ”×$Ò$¥[°"°Q´%¸¸A¼¸v¹Ð1FÝ14°Q°q±S±´ÀAØ7Kð&Mñ &Mô &Mñ Nô Nð Nøõ �q‘”ð 	Nð 	NˆAØ˜'‘/ 2 q¨¡u¨g¡oÑ#5°gÑ#=Ð>ˆBØŒM× Ò ¥¨r°6ÀÈQÐ!OÑ!OÔ!OÑPÔPÐPØ(*ˆDŒL˜˜q ™s˜˜Ñ%ØŒ{˜8Ô$ð NØ”×$Ò$¥[°"°Q´%¸¸A¼¸v¹Ð1FÝ14°Q°q±S±´ÀAØ7Kð&Mñ &Mô &Mñ Nô Nð Nøð	Nð 	Nr*   ©rz   r   r   r   rÁ   r�   r€   r   r¨   r_   s   @r)   rÀ   rÀ   s  sŒ   ø€ € € € € ð
ð 
ð ØØØØØðð Ðð 04Ø)-Ø*.Ø*.ð	 Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nr*   rÀ   c                  óB   ‡ — e Zd ZdZdddddddœZd	d	d	d	d
œdˆ fd„Zˆ xZS )ÚDB25a2   DB25 Connector

        Args:
            pinspacing: Distance between pins [default: 0.6]
            edge: Distance between edge and pins [default: 0.3]
            number: Draw pin numbers
            pinfill: Color to fill pin circles [default: bg]

        Anchors:
            * pin1 thru pin25
    r   rv   rw   Fry   r   )rz   r   r€   rÁ   r„   r@   NrÂ   rz   r   r   rÁ   r�   r€   r   c          
     óê  •—  t          ¦   «         j        di |¤Ž | j        d         }| j        d         }| j        d         }||dz  z   }	d|z  |dz  z   }
|
dz   }| j        d         }| j                             t          dd	|
f|	|f|	d
fgd¬¦  «        ¦  «         t          d¦  «        D ]›}||
|dz   |z  z
  |z
  f}| j                             t          |||d¬¦  «        ¦  «         || j        dd|z
  › �<   |rL| j                             t          |d	         |d         |z   ft          d|z
  ¦  «        dd¬¦  «        ¦  «         Œœt          d¦  «        D ]ž}||z   ||dz   |z  z
  |z
  f}| j                             t          |||d¬¦  «        ¦  «         || j        dd|z
  › �<   |rL| j                             t          |d	         |d         |z   ft          d|z
  ¦  «        dd¬¦  «        ¦  «         ŒŸd S )Nrz   r   r€   r   é   r®   r„   rU   r   rÄ   rÅ   rÆ   r…   r“   rµ   é   r   ru   rÈ   rš   é   rÊ   r!   rË   rÌ   s                  €r)   r#   zDB25.__init__¾  sf  ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø”+˜lÔ+ˆØ”+˜fÔ%ˆØŒ{˜9Ô%ˆØ�g˜a‘iÑˆØ�'‰\˜G A™IÑ%ˆØ�"‰WˆØ”˜XÔ&ˆàŒ×Ò�[¨&°1°b°'¸A¸r¸7ÀQÈÀHÐ)MÐ\_Ð`Ñ`Ô`ÑaÔaÐaå�r‘”ð 	Nð 	NˆAØ˜2˜q ™t W™nÑ,¨WÑ4Ð5ˆBØŒM× Ò ¥¨r°6ÀÈQÐ!OÑ!OÔ!OÑPÔPÐPØ)+ˆDŒL˜˜r !™t˜˜Ñ&Øð NØ”×$Ò$¥[°"°Q´%¸¸A¼¸v¹Ð1FÝ14°R¸±T±´ÀQØ7Kð&Mñ &Mô &Mñ Nô Nð Nøõ �r‘”ð 	Nð 	NˆAØ˜'‘/ 2 q¨¡u¨g¡oÑ#5°gÑ#=Ð>ˆBØŒM× Ò ¥¨r°6ÀÈQÐ!OÑ!OÔ!OÑPÔPÐPØ)+ˆDŒL˜˜r !™t˜˜Ñ&Øð NØ”×$Ò$¥[°"°Q´%¸¸A¼¸v¹Ð1FÝ14°R¸±T±´ÀQØ7Kð&Mñ &Mô &Mñ Nô Nð Nøð	Nð 	Nr*   rÑ   r¨   r_   s   @r)   rÓ   rÓ   ª  sŒ   ø€ € € € € ð
ð 
ð ØØØØØðð Ðð 04Ø)-Ø*.Ø*.ð	 Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nð  Nr*   rÓ   c                  ó:   ‡ — e Zd ZdZddddœZddddœdˆ fd„Zˆ xZS )ÚCoaxConnectaL   Coaxial connector

        Args:
            radius: Radius of outer shell [defualt: 0.4]
            radiusinner: Radius of inner conductor [default: 0.12]
            fillinner: Color to fill inner conductor [default: bg]

        Anchors:
            * center
            * N
            * S
            * E
            * W
    gš™™™™™Ù?g¸…ëQ¸¾?rw   )ÚradiusÚradiusinnerÚ	fillinnerNrÚ   r   rÛ   rÜ   r   c               ó¦  •—  t          ¦   «         j        di |¤Ž | j        d         }| j        d         }| j        d         }| j                             t          d|¦  «        ¦  «         | j                             t          d||d¬¦  «        ¦  «         d| j        d<   d|f| j        d	<   d| f| j        d
<   |df| j        d<   | df| j        d<   d S )NrÚ   rÛ   rÜ   rU   r…   r“   rÉ   r   ÚNÚSÚEÚWr!   )r"   r#   rG   rK   rL   r	   ro   )	r&   rÚ   rÛ   rÜ   r'   Úr1Úr2r”   r(   s	           €r)   r#   zCoaxConnect.__init__õ  sã   ø€ ð
 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØŒ[˜Ô"ˆØŒ[˜Ô'ˆØŒ{˜;Ô'ˆØŒ×Ò�]¨6°2Ñ6Ô6Ñ7Ô7Ð7ØŒ×Ò�]¨6°2¸DÈÐKÑKÔKÑLÔLÐLØ!'ˆŒ�XÑØ ˜GˆŒ�SÑØ  ˜HˆŒ�SÑØ ˜GˆŒ�SÑØ ˜S !˜HˆŒ�SÑÐÐr*   )rÚ   r   rÛ   r   rÜ   r   r¨   r_   s   @r)   rÙ   rÙ   á  st   ø€ € € € € ðð ð ØØðð Ðð ,0Ø04Ø,0ð%ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %ð %r*   rÙ   c                  ó*   ‡ — e Zd ZdZddiZˆ fd„Zˆ xZS )ÚPlugz Plug (male connector) Úpluggapç
×£p=
Ç?c                ó  •—  t          ¦   «         j        di |¤Ž | j        d         }| j                             t          ddt          dt          z
  t          fddt          z
  t           fg¦  «        ¦  «         d|z   df| j        d<   d S )Nræ   rU   ©r   r   r   r   rl   r!   )	r"   r#   rG   rK   rL   r   r   r   rp   )r&   r'   ræ   r(   s      €r)   r#   zPlug.__init__  s™   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø”+˜iÔ(ˆØŒ×Ò�W f¨fµc¸A½i¹KÍÐ;SÐU[Ø'(­¡{µY°JÐ&?ð&Añ Bô Bñ 	Cô 	Cð 	Cà"# G¡)¨Q ˆŒ�vÑÐÐr*   r¨   r_   s   @r)   rå   rå     sK   ø€ € € € € Ø!Ð!à�4ðÐð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r*   rå   c                  ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚJackz Jack (female connector) c           
     óè   •—  t          ¦   «         j        di |¤Ž | j                             t	          dt
           t
          ft          t
           t
           fddg¦  «        ¦  «         d| j        d<   d S )NrU   ré   rl   r!   )r"   r#   rK   rL   r   r   r   rp   )r&   r'   r(   s     €r)   r#   zJack.__init__  s€   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØŒ×Ò�W fµ	¨z½9Ð.EÅsÝ(1 zµI°:Ð&>ÀÈð&Pñ Qô Qñ 	Rô 	Rð 	Rà!'ˆŒ�vÑÐÐr*   )rY   rZ   r[   r\   r#   r^   r_   s   @r)   rë   rë     s>   ø€ € € € € Ø#Ð#ð(ð (ð (ð (ð (ð (ð (ð (ð (r*   rë   c                  ó>   ‡ — e Zd ZdZdddddddœZd	d	d
œdˆ fd„Zˆ xZS )ÚTerminalz� Terminal element
    
        Args:
            r: Radius of terminal [default: 0.18]
            open: Draw as open circle
    rç   Trw   rU   r   r…   )ÚrÚopenr”   rl   r@   r•   N)rï   rð   rï   r   rð   r�   c               ó�  •—  t          ¦   «         j        di |¤Ž | j        d         }d| j        d<   d| j        d<   d| j        d<   | j        d         rdnd| j        d	<   | j                             t          d|¦  «        ¦  «         d
}d}| j                             t          | |z  | |z  f||z  ||z  fg¦  «        ¦  «         d S )Nrï   rU   r·   rÉ   r¸   rð   rw   Tr”   g      ð?g       @r!   )	r"   r#   rG   ro   rp   rK   rL   r	   r   )r&   rï   rð   r'   rÚ   ÚkxÚkyr(   s          €r)   r#   zTerminal.__init__,  sñ   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø”˜SÔ!ˆØ &ˆŒ�WÑØ!'ˆŒ�XÑØ$ˆŒ�UÑØ)-¬°VÔ)<Ð!F  À$ˆŒ�vÑØŒ×Ò�]¨6°6Ñ:Ô:Ñ;Ô;Ð;ØˆØˆØŒ×Ò�WØˆc�&‰j˜2˜#˜f™*Ð%Ø�&‰y˜2˜f™9Ð%ð'ñ(ô (ñ 	)ô 	)ð 	)ð 	)ð 	)r*   )rï   r   rð   r�   r¨   r_   s   @r)   rî   rî     sz   ø€ € € € € ðð ð ØØØØØðð Ðð '+Ø(,ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )r*   rî   )$r\   Ú
__future__r   Útypingr   r   r�   rK   r   r   r	   r
   Úelementsr   r   Útwotermr   r   Útypesr   r   r   r   r   r   ra   rr   rª   r­   r½   rÀ   rÓ   rÙ   rå   rë   rî   r!   r*   r)   ú<module>rù      sý  ðØ  Ð  à "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø €€€à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CðR<ð R<ð R<ð R<ð R<�ñ R<ô R<ð R<ðjB<ð B<ð B<ð B<ð B<�ñ B<ô B<ð B<ðJocð ocð ocð ocð ocˆWñ ocô ocð ocðdVð Vð Vð Vð VˆWñ Vô Vð Vð008ð 08ð 08ð 08ð 08�ñ 08ô 08ð 08ðf#ð #ð #ð #ð #ˆdñ #ô #ð #ð4Nð 4Nð 4Nð 4Nð 4Nˆ'ñ 4Nô 4Nð 4Nðn4Nð 4Nð 4Nð 4Nð 4Nˆ7ñ 4Nô 4Nð 4Nðn#%ð #%ð #%ð #%ð #%�'ñ #%ô #%ð #%ðL
0ð 
0ð 
0ð 
0ð 
0ˆ7ñ 
0ô 
0ð 
0ð(ð (ð (ð (ð (ˆ7ñ (ô (ð (ð)ð )ð )ð )ð )ˆwñ )ô )ð )ð )ð )r*   