U
    Fvf6                     @   s8  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/ej&'dGdHdIgdJdK Z0dLdM Z1dNdO Z2ej&'dPdQdRdSdTdUdVgdWdX Z3dYdZ Z4d[d\ Z5dS )]    )
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 )Nd   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<   C/tmp/pip-unpacked-wheel-7vhvci0g/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rtd|_| jst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   d1Zd2r<   r<   r=   test_expand_with_tight_layoutp   s    rW   widths   g?total)   r   r   Nsep)r[   r)   r   r\   rT   )rS   fixedequalc                 C   s   t | |||d d S )NrT   )r   )rX   rZ   r]   rT   r<   r<   r=   test_get_packed_offsets}   s    ra   _paramszwd_list, total, sep, expectedzwidths, total, sep, expectedrD   r)   r   rI   rE   rG   )rZ   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   rX   rZ   r]   rc   resultr<   r<   r=   test_get_packed_offsets_fixed   s    	rg   g??g      @c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )NrS   r`   r   r)   rd   re   r<   r<   r=   test_get_packed_offsets_expand   s    	ri   r   r   皙?c                 C   s:   t | ||dd}|d |d ks$tt|d |d  d S )Nr_   r`   r   r)   rd   re   r<   r<   r=   test_get_packed_offsets_equal   s    
rk   c                	   C   s0   t t tdddgd d dd W 5 Q R X d S )Nr)   r_   )rZ   r]   rT   )pytestZraises
ValueErrorr   r<   r<   r<   r=   1test_get_packed_offsets_equal_total_none_sep_none   s    rn   
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st|dd |dd |j     td|j||tj  t dkstd S )Nr@   rF   r   r   )r   rp   )rF   rF   )r   r   rq   u   ■Zfontsize)Z	textpropsFzUnknown picking child type r$   )rr   TZ
pick_eventc                    s
     | S )N)append)eventZcallsr<   r=   <lambda>       ztest_picking.<locals>.<lambda>ru   r   H   rt   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   LEFT_processlenZartistr2   r3   )	ro   rr   Zpicking_childimr5   r6   abxyr<   ry   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   rj   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   extent_kindZwindow_extentZ	tightbboxc              
   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!}|| t|d"|   }	d#d$d%d&g}
t|	j|
d'd( t|d"|   }d)d*d+d,g}t|j|d'd( t|d"|   }d-d.d/d0g}t|j|d'd( t }|j|d1d2 |d t |j}d3}t||d'd( |j  |  |j  d S )4N)rE   rD   r   )Zfigsizer~   r   r)   Z
Annotation)rh   rh   )皙?r   ->)
arrowstyleFbaseliner   )ZxyZxytext
arrowpropsZclip_onvar      Tr   )i       r   gɿr   rv   rs   r#   r   xyboxxycoordsrr   Zbox_alignmentr   r   rD   )Zzoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   rr   r(   r   get_gffffft@gYn@g     0}@gfffffr@r   )Zatolg1g      `@gfffffi@gd@g     f@g      @g     l@g9W@Ztight)Zbbox_inches)i^  i  rE   )r*   ZrcParamsupdateZrcParamsDefaultr+   Zaxisannotatedictr
   r,   ZCircler1   r   r   r}   randomZrandrp   Zaxesgetattrr   ZextentsioBytesIOZsavefigseekZimreadshaper?   r@   rU   )r   r5   r6   Zan1r8   pZab3r   Zab6Zbb1Ztarget1Zbb3Ztarget3Zbb6Ztarget6bufr   Ztargetshaper<   r<   r=   test_annotationbbox_extents  sZ    
  
 
 


r   c                   C   s   t ddjdkstd S )N*   )zorder)r   r   rB   r<   r<   r<   r=   test_zorder>  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   rv   rs   r   r   r   )r
   r   r   rB   )r8   r   r   r<   r<   r=   test_arrowprops_copiedB  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rd}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>g  s     z test_packers.<locals>.<listcomp>c                 S   s   g | ]}|  qS r<   r   r   r<   r<   r=   r   y  s     )r*   figurer?   Zget_rendererr
   r   r@   Zget_bboxr   r   ZboundsmaxZget_childrenr   )r   r5   Zrendererx1y1Zx2y2Zr1Zr2ZhpackerZbboxZpxpyZy_heightZvpackerZx_heightr<   r<   r=   test_packersL  sD    







&



r   c                  C   s>   t  \} }tdd}t|ddidd}|| |   d S )N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   c                  C   sB   t  \} }|dd}|d |  td| jdd  d S )Nr   r$   TZbutton_release_eventr)   )r*   r+   r   Z	draggableremover   r?   r   )r5   r6   Zanr<   r<   r=   test_remove_draggable  s
    
r   )6collectionsr   r   Znumpyr}   Znumpy.testingr   rl   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   rW   markZparametrizera   Z_Paramsrg   ri   rk   rn   r   r   r   r   r   r   r   r   r<   r<   r<   r=   <module>   s   4
"%	
         
         
   
      	
2

:
  
/	