o
    :a,                     @   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 d dl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gd dgdgd fej"#ddej"#ddej"#dddd Z$edd Z%ej"#d e%g d!dd"d#g d$fd%e%g d!d&d"d&g d$fd%e%g d!d'd"d'g d$fd%gd(d) Z&ej"#d e%d*gd ddd"g d+fd%e%g d!d&d"d&g d,fd%e%g d!d'd"d'g d-fd%gd.d/ Z'ej"#d e%g d0d1dd1g d2fd%e%g d3dddg d4fd%e%g d5dd"d1g d2fd%gd6d7 Z(d8d9 Z)ej"#d:g d;ej"#d<g d=d>d? Z*e	d@gddAdBdCdD Z+dEdF Z,dGdH Z-dS )I    )
namedtupleN)assert_allclose)image_comparison)MouseButton)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea	OffsetBoxOffsetImageTextArea_get_packed_offsetsZ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 )Nd   TZclipr   r   #CCCCCCNoner   Z	facecolorZ	edgecolor	linewidth      ?      ?   black
   Z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 r6   A/usr/lib/python3/dist-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clipping   s4   	
"
	


r8   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rUJ d|_| js]J 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   r*   r+   canvasdrawZstaleZclip_childrenr.   r6   r6   r7   test_offsetbox_clip_children6   s8   
"
	



r;   c                  C   s^   ddddddddd	d
d
} t  \}}tdd}| D ]}t||d}|| q|j  d S )Nr#   r                     	   r   )
zupper rightz
upper leftz
lower leftzlower rightrightcenter leftcenter rightzlower centerzupper centerr   r   )r    r!   )r$   r%   r	   r   r+   r9   r:   )Zcodesr/   r0   r2   coder5   r6   r6   r7   test_offsetbox_loc_codes[   s"   
rG   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)Zlabelzseries 2expand)Zncolmode)r$   r%   ZplotZlegendtight_layout)r/   r0   Zd1Zd2r6   r6   r7   test_expand_with_tight_layoutp   s   rK   wd_list)   r#   r<   )皙?r#   r   total)   r   r   Nsep)rP   r#   r   rQ   rI   )rH   fixedequalc                 C   s   t | |||d d S )NrI   )r   )rL   rO   rR   rI   r6   r6   r7   test_get_packed_offsets}   s   rV   Z_paramszwd_list, total, sep, expected)r<   r   r#   r   r   r   r#   rA   )r   r=   r?   )rO   rR   expectedr   r>   c                 C   :   t | ||dd}|d |d ksJ t|d |d  d S )NrS   rU   r   r#   r   r   rL   rO   rR   rZ   resultr6   r6   r7   test_get_packed_offsets_fixed      	r_   )rN   r   )r   g??)r   r>   rA   )r   g      @r<   c                 C   r[   )NrH   rU   r   r#   r\   r]   r6   r6   r7   test_get_packed_offsets_expand   r`   rb   )rW   rY   rX   r?   )r   r   r=   )rW   rY   rX   r   r   )r   r   r#   r   )rc   rX   )皙?r   c                 C   r[   )NrT   rU   r   r#   r\   r]   r6   r6   r7   test_get_packed_offsets_equal   s   re   c                   C   sF   t t tdgd d d dd W d    d S 1 sw   Y  d S )NrX   r<   rT   )rO   rR   rI   )pytestZraises
ValueErrorr   r6   r6   r6   r7   1test_get_packed_offsets_equal_total_none_sep_none   s   "rh   
child_type)r:   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac           	         s  | dkrt dd}|tjddddd n&| dkr(td}d|d< t|}n| d	kr5td
ddid}nJ 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r|jd\}}|d7 }|d7 }n|jd\}}|j     |j||tj t dkr d j|ksJ |dd |dd |j     |j||tj t dksJ d S )Nr:   r>   r   r   )r   rj   )r>   r>   )r   r   rk   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r   )rl   TZ
pick_eventc                    s
     | S )N)append)ZeventZcallsr6   r7   <lambda>   s   
 ztest_picking.<locals>.<lambda>ro   r   H   rn   r#   rQ   )r	   r+   r&   r'   npZonesr   r   r$   r%   r   Z
set_pickerr9   Zmpl_connectr*   Ztransform_pointdpir:   clearZbutton_press_eventr   ZLEFTlenZartistr,   r-   )	ri   rl   Zpicking_childimr/   r0   abxyr6   rr   r7   test_picking   sF   







r}   zanchoredtext_align.pngZmpl20)r   Z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 textrD   rd   haleft)r    r"   Zpropr   rE   rC   )r$   r%   r   r+   )r/   r0   Ztext0Ztext1Ztext2r6   r6   r7   &test_anchoredtext_horizontal_alignment   s   

r   c               
   C   s  t jt j t jddd\} }|g d |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 }||}	||}
g d"}t|	j|d#d$ t|
j|d#d$ ||}||}g d%}t|j|d#d$ t|j|d#d$ ||}||}g d&}t|j|d#d$ t|j|d#d$ t }| j|d'd( |d t |j}d)}t||d#d$ | j  |    | j  d S )*N)r=   r<   r   )Zfigsizerv   )r   r#   r   r#   Z
Annotation)ra   ra   )皙?r   z->)Z
arrowstyleFZbaseliner   )ZxyZxytext
arrowpropsZclip_onZvar~      r   Tr   )i       r   )gɿr   rp   rm   )r   r   )xyboxxycoordsrl   Zbox_alignmentr   r   r<   )Zzoom)r   g333333ӿ)r   K   zoffset pointsg333333?)r   r   rl   r"   r   )gffffft@gYn@g     0}@gfffffr@r   )Zatol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@Ztight)Zbbox_inches)i^  i  r=   )!r$   ZrcParamsupdateZrcParamsDefaultr%   ZaxisZannotatedictr	   r&   ZCircler+   r   r   ru   ZrandomZrandrj   Zaxesr9   r:   Zget_rendererZget_window_extentZget_tightbboxr   ZextentsioBytesIOZsavefigseekZimreadshaperJ   )r/   r0   Zan1r2   pZab3ry   Zab6ZrendererZbb1wZbb1eZtarget1Zbb3wZbb3eZtarget3Zbb6wZbb6eZtarget6bufr   Ztargetshaper6   r6   r7   test_annotationbbox_extents  sb   














r   c                   C   s   t ddjdks
J d S )N*   )zorder)r
   r   r6   r6   r6   r7   test_zorderF  s   r   ).collectionsr   r   Znumpyru   Znumpy.testingr   rf   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr$   Zmatplotlib.patchesZpatchesr&   Zmatplotlib.lineslinesr(   Zmatplotlib.backend_basesr   Zmatplotlib.offsetboxr   r   r   r	   r
   r   r   r   r8   r;   rG   rK   ZmarkZparametrizerV   Z_Paramsr_   rb   re   rh   r}   r   r   r   r6   r6   r6   r7   <module>   s    (
"%
	






0
C