§
    èƒñjÿ  ã                  óŠ   — d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZmZmZ dd	lmZ erdd
lmZ  G d„ de	¦  «        ZdS )z Container Element é    )ÚannotationsN)ÚUnionÚOptionalÚTYPE_CHECKINGé   )ÚElementé   )ÚSegmentÚSegmentPolyÚBBox)Údrawing_stack)ÚDrawingc            	      ó”   ‡ — e Zd ZdZddddddddd	œZd
d
d
dœd&ˆ fd„Z	 	 	 d'd(d„Zd)d„Zd)d„Zd„ Z	d„ Z
d„ Zd*d+d!„Zd,d-d$„Zˆ fd%„Zˆ xZS ).Ú	Containera‰   Container element - a group of elements surrounded by a box
    
        Args:
            drawing: The schemdraw Drawing or another Container to contain
            cornerradius: Radius to round the corners of the box [default: 0.3]
            padx: Spacing from element to box in x direction [default: 0.75]
            pady: Spacing from element to box in y direction [default: 0.75]
    g333333Ó?g      è?ÚNW)gš™™™™™¹?gš™™™™™¹¿)ÚleftÚtopr   ÚboxNW)ÚcornerradiusÚpadxÚpadyÚlbllocÚlblofstÚlblalignÚthetaÚanchorN©r   r   r   ÚdrawingúUnion['Drawing', 'Container']r   úOptional[float]r   r   c               ód   •— t          ¦   «                              ¦   «          || _        g | _        d S ©N)ÚsuperÚ__init__r   Úelements)Úselfr   r   r   r   Ú	__class__s        €ú[/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/elements/container.pyr$   zContainer.__init__!   s-   ø€ õ 	‰Œ×ÒÑÔÐØˆŒØ')ˆŒˆˆó    Úreturnú'Container'c                ó(   — t          | |||¬¦  «        S )a   Add a container to the container. Use as a context manager,
            such that elemnents inside the `with` are surrounded by
            the container.
            
            >>> with container.container():
            >>>    elm.Resistor()
            >>>    ...

            Args:
            cornerradius: Radius to round the corners of the box [default: 0.3]
            padx: Spacing from element to box in x direction [default: 0.75]
            pady: Spacing from element to box in y direction [default: 0.75]
        r   )r   )r&   r   r   r   s       r(   Ú	containerzContainer.container+   s   € õ" ˜¨L¸tÈ$ÐOÑOÔOÐOr)   Úelementr   c                ó,   — |                       |¦  «        S r"   )Úadd©r&   r.   s     r(   Ú__iadd__zContainer.__iadd__>   s   € Ø�xŠx˜Ñ Ô Ð r)   c                ón   — | j                              |¦  «         | j                             |¦  «         | S )z! Add an element to the container )r%   Úappendr   r0   r1   s     r(   r0   zContainer.addA   s3   € àŒ×Ò˜WÑ%Ô%Ð%ØŒ×Ò˜Ñ!Ô!Ð!Øˆr)   c                ó.   — t          j        | ¦  «         | S r"   )r   Úpush_drawing)r&   s    r(   Ú	__enter__zContainer.__enter__G   s   € ÝÔ" 4Ñ(Ô(Ð(Øˆr)   c                óV   — t          j        | ¦  «         t          j        | ¦  «         d S r"   )r   Úpush_elementÚpop_drawing)r&   Úexc_typeÚexc_valÚexc_tbs       r(   Ú__exit__zContainer.__exit__K   s*   € ÝÔ" 4Ñ(Ô(Ð(ÝÔ! $Ñ'Ô'Ð'Ð'Ð'r)   c                ó   — || j         v S r"   )r%   r1   s     r(   Ú__contains__zContainer.__contains__O   s   € Ø˜$œ-Ð'Ð'r)   TÚ	transformÚboolr   c                ór  — t           j        }t           j         }t           j        }t           j         }| j        D ]l}|                     |¬¦  «        }t	          |j        |¦  «        }t          |j        |¦  «        }t	          |j        |¦  «        }t          |j	        |¦  «        }Œmt          ||||¦  «        S )z# Bounding box of the contents only ©rA   )ÚmathÚinfr%   Úget_bboxÚminÚxminÚmaxÚxmaxÚyminÚymaxr   )r&   rA   rI   rK   rL   rM   r.   Úbboxs           r(   Úcontainer_bboxzContainer.container_bboxR   s£   € åŒxˆÝ”ˆyˆÝŒxˆÝ”ˆyˆØ”}ð 	(ð 	(ˆGØ×#Ò#¨iÐ#Ñ8Ô8ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDˆDÝ�D˜$  dÑ+Ô+Ð+r)   FÚincludetextc                óê   — |                       |¬¦  «        }t          |j        | j        d         z
  |j        | j        d         z
  |j        | j        d         z   |j        | j        d         z   ¦  «        S )z Bounding box including border rD   r   r   )rO   r   rI   ÚparamsrL   rK   rM   )r&   rA   rP   rN   s       r(   rG   zContainer.get_bbox`   sm   € à×"Ò"¨YÐ"Ñ7Ô7ˆÝ�D”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1ñ3ô 3ð 	3r)   c                óˆ  •— |                       ¦   «         }|j        |j        z
  | j        d         dz  z   }|j        |j        z
  | j        d         dz  z   }| j        d         }t          |j        | j        d         z
  |j        | j        d         z
  |j        | j        d         z   |j        | j        d         z   ¦  «        }|                      |j        |j        f¦  «         |dk    r2t          d|dz  f||dz  f|| dz  fd| dz  fg|¬¦  «        g| _	        nC| j	         
                    t          dd|dz  f||dz  f|| dz  fd| dz  fdg¦  «        ¦  «         |dz  df| j        d<   d|dz  f| j        d	<   |dz  |dz  f| j        d
<   |df| j        d<   |dz  | dz  f| j        d<   d| j        d<   ||t          j        d¦  «        z  dz  z
  }||z
  |dz  |z
  f| j        d<   ||dz  |z
  f| j        d<   ||z
  | dz  |z   f| j        d<   || dz  |z   f| j        d<   ||dz  k     rd|z  dz  n||z
  |dz  f| j        d<   ||dz  k     r|dz  n||dz  f| j        d<   ||dz  k     rd|z  dz  n||z
  | dz  f| j        d<   ||dz  k     r|dz  n|| dz  f| j        d<   |||dz  k     r|dz  n|dz  |z
  f| j        d<   |||dz  k     r| dz  n| dz  |z   f| j        d<   d||dz  k     r|dz  n|dz  |z
  f| j        d<   d||dz  k     r| dz  n| dz  |z   f| j        d<    t          ¦   «         j        ||fi |¤ŽS )Nr   r	   r   r   r   )r   )r   r   Úcenterr   ÚNÚEÚSÚWÚNEr   ÚSEÚSWé   é   ÚNNEÚNNWÚSSEÚSSWÚENEÚESEÚWNWÚWSW)rO   rK   rI   rR   rM   rL   r   Úatr   Úsegmentsr4   r
   ÚanchorsrE   Úsqrtr#   Ú_place)
r&   ÚdwgxyÚdwgthetaÚ	dwgparamsrN   ÚwÚhr   Úkr'   s
            €r(   rj   zContainer._placeh   s9  ø€ Ø×"Ò"Ñ$Ô$ˆØŒI˜œ	Ñ! D¤K°Ô$7¸Ñ$9Ñ9ˆØŒI˜œ	Ñ! D¤K°Ô$7¸Ñ$9Ñ9ˆØ”{ >Ô2ˆÝ�D”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1Ø”I˜dœk¨&Ô1Ñ1ñ3ô 3ˆð 	�Š�”˜DœIÐ&Ñ'Ô'Ð'Ø˜!ÒÐÝ(Ø�Q�q‘S�˜A˜q ™s˜8 a¨!¨¨A© Y°°Q°B°q±D°	Ð:Ø*ð,ñ ,ô ,ð -ˆDŒMˆMð ŒM× Ò ¥¨&°1°a¸±c°(¸QÀÀ!Á¸HØ+,¨q¨b°©d¨)°a¸!¸¸A¹°YÀð*Hñ "Iô "Iñ Jô Jð Jà"# A¡# q ˆŒ�XÑØ!" A a¡C ˆŒ�WÑØ˜q™S ! A¡#˜JˆŒ�SÑØ ˜FˆŒ�SÑØ˜q™S 1 " Q¡$˜KˆŒ�SÑØ"ˆŒ�SÑØ˜<­¬	°!©¬Ñ4°QÑ6Ñ6ˆØ ™c 1 Q¡3 q¡5˜\ˆŒ�TÑØ  1¡ Q¡˜ZˆŒ�TÑØ ™c A 2 a¡4¨¡6˜]ˆŒ�TÑØ !  A¡ a¡˜[ˆŒ�TÑØ(4°q¸±sÒ(:Ð(:˜q ™s 1™u˜uÀÀ,ÁÐPQÐRSÑPSÐTˆŒ�UÑØ&2°Q°q±SÒ&8Ð&8˜q ™s˜s¸lÈAÈaÉCÐPˆŒ�UÑØ(4°q¸±sÒ(:Ð(:˜q ™s 1™u˜uÀÀ,ÁÐQRÐPRÐSTÑPTÐUˆŒ�UÑØ&2°Q°q±SÒ&8Ð&8˜q ™s˜s¸lÈQÈBÈqÉDÐQˆŒ�UÑØ ¨¸¸!¹Ò);Ð); ! A¡# #ÀÀ1ÁÀ\ÑAQÐRˆŒ�UÑØ ¨,¸¸1¹Ò*<Ð*< 1 " Q¡$ $À1À"ÀQÁ$À|ÑBSÐTˆŒ�UÑØ ¨¸¸!¹Ò);Ð); ! A¡# #ÀÀ1ÁÀ\ÑAQÐRˆŒ�UÑØ ¨,¸¸1¹Ò*<Ð*< 1 " Q¡$ $À1À"ÀQÁ$À|ÑBSÐTˆŒ�UÑØ�u‰wŒwŒ~˜e XÐ;Ð;°Ð;Ð;Ð;r)   )r   r   r   r    r   r    r   r    )NNN)r   r    r   r    r   r    r*   r+   )r.   r   r*   r+   )T)rA   rB   r*   r   )FT)rA   rB   rP   rB   r*   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_element_defaultsr$   r-   r2   r0   r7   r>   r@   rO   rG   rj   Ú__classcell__)r'   s   @r(   r   r      sL  ø€ € € € € ðð ð ØØØØØ#ØØð	ð 	Ðð 26Ø)-Ø)-ð*ð *ð *ð *ð *ð *ð *ð *ð 37Ø*.Ø*.ðPð Pð Pð Pð Pð&!ð !ð !ð !ðð ð ð ðð ð ð(ð (ð (ð(ð (ð (ð,ð ,ð ,ð ,ð ,ð3ð 3ð 3ð 3ð 3ð$<ð $<ð $<ð $<ð $<ð $<ð $<ð $<ð $<r)   r   )rt   Ú
__future__r   rE   Útypingr   r   r   r%   r   rg   r
   r   r   Ú r   Ú	schemdrawr   r   © r)   r(   ú<module>r|      sÞ   ðØ Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð àð $Ø#Ð#Ð#Ð#Ð#Ð#ð~<ð ~<ð ~<ð ~<ð ~<�ñ ~<ô ~<ð ~<ð ~<ð ~<r)   