U
    ÂmœdC6  ã                   @   s  d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z! e	dgdd	�d
d„ ƒZ"dd„ Z#dd„ Z$dd„ Z%ej& 'ddgdddgdgddgf¡ej& 'dd¡ej& 'dd¡ej& 'dd¡dd„ ƒƒƒƒZ(eddƒZ)ej& 'de)d d!d"gdd!d#d d$d%gfd&�e)d d!d"gd'd!d'd d$d%gfd&�e)d d!d"gd(d!d(d d$d%gfd&�g¡d)d*„ ƒZ*ej& 'de)dddgddd!d d+d,gfd&�e)d d!d"gd'd!d'd d(d#gfd&�e)d d!d"gd(d!d(d d-d gfd&�g¡d.d/„ ƒZ+ej& 'de)d d"d!gd%dd%d d"d$gfd&�e)d d"d!d0gd"dd"d d0d!d1gfd&�e)d0d!d2gdd!d%d d"d$gfd&�g¡d3d4„ ƒZ,d5d6„ Z-ej& 'd7d8d9d:g¡ej& 'd;d<d=d>d?g¡d@dA„ ƒƒZ.e	dBgddCdD�dEdF„ ƒZ/dGdH„ Z0dIdJ„ Z1dKdL„ Z2ej& 'dMdNdOdPdQdRdSg¡dTdU„ ƒZ3dVdW„ Z4dS )Xé    )Ú
namedtupleN)Úassert_allclose)Úimage_comparison)ÚMouseButtonÚ
MouseEvent)ÚAnchoredOffsetboxÚAnnotationBboxÚAnchoredTextÚDrawingAreaÚ	OffsetBoxÚOffsetImageÚ	PaddedBoxÚTextAreaÚ_get_packed_offsetsÚHPackerÚVPackerZoffsetbox_clippingT)Úremove_textc               	   C   s®   t  ¡ \} }d}t||dd�}tjd||dddd�}tj| d	 |d
 g|d |d gddd�}td|ddd|jdd�}| 	|¡ | 	|¡ | 	|¡ | 
d¡ | d¡ d S )Néd   T©Zclip©r   r   ú#CCCCCCÚNoner   ©Ú	facecolorZ	edgecolorÚ	linewidthç      à?ç      ø?é   Úblacké
   ©Úcolorr   Úcenterç        F©r   r   ©ÚlocÚchildÚpadZframeonZbbox_to_anchorZbbox_transformZ	borderpad)r   é   )ÚpltÚsubplotsr
   ÚmpatchesÚ	RectangleÚmlinesÚLine2Dr   Ú	transAxesÚ
add_artistÚset_xlimÚset_ylim©ÚfigÚaxÚsizeÚdaÚbgÚlineÚanchored_box© r<   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_offsetbox.pyÚtest_offsetbox_clipping   s4    	
ý"þù	



r>   c               	   C   s¾   t  ¡ \} }d}t||dd�}tjd||dddd�}tj| d	 |d
 g|d |d gddd�}td|ddd|jdd�}| 	|¡ | 	|¡ | 	|¡ | j
 ¡  | jrªt‚d|_| jsºt‚d S )Nr   Tr   r   r   r   r   r   r   r   r   r   r   r    r"   r#   Fr$   r%   )r*   r+   r
   r,   r-   r.   r/   r   r0   r1   ÚcanvasÚdrawÚstaleÚAssertionErrorZclip_childrenr4   r<   r<   r=   Útest_offsetbox_clip_children6   s8    
ý"þù	




rC   c                  C   s^   ddddddddd	d
dœ
} t  ¡ \}}tddƒ}| D ]}t||d�}| |¡ q4|j ¡  d S )Nr)   r   é   é   é   é   é   é   é	   r   )
zupper rightú
upper leftz
lower leftzlower rightÚrightúcenter leftúcenter rightzlower centerzupper centerr"   r   )r&   r'   )r*   r+   r
   r   r1   r?   r@   )Úcodesr5   r6   r8   Úcoder;   r<   r<   r=   Útest_offsetbox_loc_codes[   s"    ÷
rQ   c                  C   sR   t  ¡ \} }ddg}ddg}|j|dd� |j|dd� |jddd� |  ¡  d S )Nr)   r   zseries 1)Úlabelzseries 2Úexpand)ZncolsÚmode)r*   r+   ZplotZlegendÚtight_layout)r5   r6   Zd1Zd2r<   r<   r=   Útest_expand_with_tight_layoutp   s    rV   Úwidthsé–   gš™™™™™¹?Útotal)éú   r   r   éÿÿÿÿNÚsep)rZ   r)   r   r[   rT   )rS   ÚfixedÚequalc                 C   s   t | |||d� d S )N©rT   )r   )rW   rY   r\   rT   r<   r<   r=   Útest_get_packed_offsets}   s    r`   Ú_paramszwd_list, total, sep, expectedzwidths, total, sep, expectedrD   r)   r   rI   rE   rG   )rY   r\   Úexpectedr   rF   c                 C   s:   t | ||dd�}|d |d ks$t‚t|d |d ƒ d S )Nr]   r_   r   r)   ©r   rB   r   ©rW   rY   r\   rb   Úresultr<   r<   r=   Útest_get_packed_offsets_fixedŽ   s    	rf   gÍÌÌÌÌÌÜ?çÍÌÌÌÌÌì?g      @c                 C   s:   t | ||dd�}|d |d ks$t‚t|d |d ƒ d S )NrS   r_   r   r)   rc   rd   r<   r<   r=   Útest_get_packed_offsets_expandœ   s    	rh   r   r   çš™™™™™É?c                 C   s:   t | ||dd�}|d |d ks$t‚t|d |d ƒ d S )Nr^   r_   r   r)   rc   rd   r<   r<   r=   Útest_get_packed_offsets_equalª   s    
rj   c                	   C   s0   t  t¡� tdddgd d dd� W 5 Q R X d S )Nr)   r^   )rY   r\   rT   )ÚpytestZraisesÚ
ValueErrorr   r<   r<   r<   r=   Ú1test_get_packed_offsets_equal_total_none_sep_none¹   s    rm   Ú
child_typer@   ÚimageÚtextÚ	boxcoordsúaxes fractionúaxes pixelsúaxes pointsÚdatac           	         sä  | dkr,t ddƒ}| tjddddd�¡ nP| dkrPt d¡}d|d< t|ƒ}n,| d	krjtd
ddid�}nds|td| › �ƒ‚t	 
¡ \}}t|d|d�}| d¡ | |¡ g ‰ |j d‡ fdd„¡ |dk�r|j d¡\}}|d|j d 7 }|d|j d 7 }n<|dk�r0|j d¡\}}|d7 }|d7 }n|j d¡\}}|j ¡  ˆ  ¡  td|j||tjƒ ¡  tˆ ƒdk�rˆˆ d j|k�sŒt‚| dd¡ | dd¡ |j ¡  ˆ  ¡  td|j||tjƒ ¡  tˆ ƒdk�sàt‚d S )Nr@   rF   r   r   )r   ro   )rF   rF   )r   r   rp   u   â– Zfontsize)Z	textpropsFzUnknown picking child type r$   )rq   TZ
pick_eventc                    s
   ˆ   | ¡S )N)Úappend)Úevent©Zcallsr<   r=   Ú<lambda>Ö   ó    ztest_picking.<locals>.<lambda>rt   r   éH   rs   Zbutton_press_eventr)   r[   )r
   r1   r,   r-   ÚnpZonesr   r   rB   r*   r+   r   Z
set_pickerr?   Zmpl_connectr0   Ztransform_pointÚdpir@   Úclearr   r   ÚLEFTZ_processÚlenZartistr2   r3   )	rn   rq   Zpicking_childÚimr5   r6   ÚabÚxÚyr<   rx   r=   Útest_picking¾   s^    








    ÿ"
    ÿr…   zanchoredtext_align.pngZmpl20)r   Ústylec                  C   sj   t  ¡ \} }tdddddid�}| |¡ tdddddid�}| |¡ tddddd	id�}| |¡ d S )
Nztest
test long textrM   ri   ÚhaÚleft)r&   r(   Úpropr"   rN   rL   )r*   r+   r	   r1   )r5   r6   Ztext0Ztext1Ztext2r<   r<   r=   Ú&test_anchoredtext_horizontal_alignmentô   s      ÿ
 ÿ
 ÿrŠ   c               
   C   s  t j t j¡ t jddd�\} }| ddddg¡ |jdddtd	d
�dddd�}tdddddd�}t	 
dd¡}| |¡ t|ddgddddtd	d
�d�}| |¡ ttj dd¡dd�}||j_t|ddddd td	d
�d!�}| |¡ | j ¡  | j ¡ }| |¡}	| |¡}
d"d#d$d%g}t|	j|d&d'� t|
j|d&d'� | |¡}| |¡}d(d)d*d+g}t|j|d&d'� t|j|d&d'� | |¡}| |¡}d,d-d.d/g}t|j|d&d'� t|j|d&d'� t ¡ }| j|d0d1� | d¡ t  |¡j}d2}t||d&d'� | j ¡  |   ¡  | j ¡  d S )3N)rE   rD   r   )Zfigsizer}   r   r)   Z
Annotation)rg   rg   )çš™™™™™ñ?r‹   ú->)Ú
arrowstyleFÚbaselinerˆ   )ZxyZxytextÚ
arrowpropsZclip_onÚvar‡   é   Tr   )iöÿÿÿé   é    r   ©gš™™™™™É¿r   ru   rr   ©r#   r   ©ÚxyboxÚxycoordsrq   Zbox_alignmentr�   r   rD   )Zzoom)r   g333333Ó¿)r   éK   zoffset pointsç333333Ó?)r—   r˜   rq   r(   r�   gfffffÎt@gš™™™™Yn@g     0}@gfffff®r@r   )Zatolgš™™™™™1Àg      `@gfffffi@gÍÌÌÌÌüd@g     €f@g      @Àg     Àl@gš™™™™9W@Ztight)Zbbox_inches)i^  iø  rE   )!r*   ZrcParamsÚupdateZrcParamsDefaultr+   ZaxisZannotateÚdictr
   r,   ZCircler1   r   r   r|   ÚrandomZrandro   Zaxesr?   r@   Úget_rendererZget_window_extentZget_tightbboxr   ZextentsÚioÚBytesIOZsavefigÚseekZimreadÚshaperU   )r5   r6   Zan1r8   ÚpZab3r�   Zab6ÚrendererZbb1wZbb1eZtarget1Zbb3wZbb3eZtarget3Zbb6wZbb6eZtarget6Úbufr¢   Ztargetshaper<   r<   r=   Útest_annotationbbox_extents  sj    
  þ
 þ
 ý










r¦   c                   C   s   t dd�jdkst‚d S )Né*   )Úzorder)r   r¨   rB   r<   r<   r<   r=   Útest_zorderF  s    r©   c               	   C   sX   t dddddd�} dddœ}t| ddgd	d
dd|d�}|j|k	sDt‚|d dksTt‚d S )Nr‘   r   Tr   rŒ   )rš   gffffffæ?)r�   Úrelposr   r”   ru   rr   r•   r–   rª   )r
   r   r�   rB   )r8   r�   r‚   r<   r<   r=   Útest_arrowprops_copiedJ  s    
 þr«   ÚalignrŽ   ÚbottomÚtoprˆ   rL   r"   c                 C   s°  t jdd�}|j ¡ }d\}}d\}}t||ƒ}t||ƒ}t||g| d�}	|	 |¡ |	 |¡}
|	 |
|¡\}}t	|
j
dd|| t||ƒfƒ | dkršd}n&| dkr¬|| }n| d	krÀ|| d
 }t	dd„ |	 ¡ D ƒ||| f|| |fgƒ t||g| d�}| |¡ | |¡}
| |
|¡\}}t	|
j
dt||ƒ t||ƒ|| fƒ | dk�rVd}n*| dk�rj|| }n| d	k�r€|| d
 }t	dd„ | ¡ D ƒ|| |f||| fgƒ d S )Nr{   )r}   )r   r’   )r‘   é<   )Úchildrenr¬   r   )rŽ   rˆ   r­   )rL   r®   r"   r   c                 S   s   g | ]}|  ¡ ‘qS r<   ©Ú
get_offset©Ú.0r'   r<   r<   r=   Ú
<listcomp>o  s     z test_packers.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS r<   r±   r³   r<   r<   r=   rµ   �  s     )r*   Zfigurer?   rž   r
   r   r@   Zget_bboxr²   r   ZboundsÚmaxZget_childrenr   )r¬   r5   r¤   Úx1Úy1Zx2Úy2Úr1Úr2ZhpackerZbboxZpxÚpyZy_heightZvpackerZx_heightr<   r<   r=   Útest_packersT  sD    





ÿ

&



ÿr½   c                  C   s>   t  ¡ \} }tddƒ}t|ddidd�}| |¡ |  ¡  d S )NZfoorK   r   ÚrT)Zpatch_attrsZ
draw_frame)r*   r+   r	   r   r1   Zdraw_without_rendering)r5   r6   ÚatZpbr<   r<   r=   Útest_paddedbox…  s
    

rÀ   )5Úcollectionsr   rŸ   Únumpyr|   Znumpy.testingr   rk   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr*   Zmatplotlib.patchesZpatchesr,   Zmatplotlib.linesÚlinesr.   Zmatplotlib.backend_basesr   r   Zmatplotlib.offsetboxr   r   r	   r
   r   r   r   r   r   r   r   r>   rC   rQ   rV   ÚmarkZparametrizer`   Z_Paramsrf   rh   rj   rm   r…   rŠ   r¦   r©   r«   r½   rÀ   r<   r<   r<   r=   Ú<module>   sÔ   4
"%ÿ	
   ÿ   ÿ   ÿû
   ÿ   ÿ   ÿû
   ÿ
   ÿ   ÿû	
ÿÿ2
C
  ÿ
/