
    G8c.                        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  e	dgd	      d
        Zd Z d Z!d Z"ejF                  jI                  ddgdgdz  dgdgdz  f      ejF                  jI                  dd      ejF                  jI                  dd      ejF                  jI                  dd      d                             Z% edd      Z&ejF                  jI                  d e&g ddddg df        e&g dd!dd!g df        e&g dd"dd"g df       g      d#        Z'ejF                  jI                  d e&d$gdz  dddg d%f        e&g dd!dd!g d&f        e&g dd"dd"g d'f       g      d(        Z(ejF                  jI                  d e&g d)d*dd*g d+f        e&g d,dddg d-f        e&g d.ddd*g d+f       g      d/        Z)d0 Z*ejF                  jI                  d1g d2      ejF                  jI                  d3g d4      d5               Z+ e	d6gdd78      d9        Z,d: Z-d; Z.d< Z/y)=    )
namedtupleN)assert_allclose)image_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingArea	OffsetBoxOffsetImageTextArea_get_packed_offsetsoffsetbox_clippingT)remove_textc            	         t        j                         \  } }d}t        ||d      }t        j                  d||ddd      }t        j                  | d	z  |d
z  g|dz  |dz  gdd      }t        d|ddd|j                  d      }|j                  |       |j                  |       |j                  |       |j                  d       |j                  d       y )Nd   Tclipr   r   #CCCCCCNoner   	facecolor	edgecolor	linewidth      ?      ?   black
   colorr   center        Fr   r   locchildpadframeonbbox_to_anchorbbox_transform	borderpad)r      )pltsubplotsr   mpatches	RectanglemlinesLine2Dr   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_boxs          A/usr/lib/python3/dist-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clippingrC      s     llnGCD	T4d	+B			FD$&/&,&'
)B ==4%(DH-QQ/?&#%'D %||L MM"MM$MM,KKKK    c            	         t        j                         \  } }d}t        ||d      }t        j                  d||ddd      }t        j                  | d	z  |d
z  g|dz  |dz  gdd      }t        d|ddd|j                  d      }|j                  |       |j                  |       |j                  |       | j                  j                          | j                  rJ d|_        | j                  sJ y )Nr   Tr   r   r   r   r   r   r   r   r   r    r!   r"   r$   r%   Fr&   r'   )r0   r1   r   r2   r3   r4   r5   r   r6   r7   canvasdrawstaleclip_childrenr:   s          rB   test_offsetbox_clip_childrenrJ   6   s     llnGCD	T4d	+B			FD$&/&,&'
)B ==4%(DH-QQ/?&#%'D %||L MM"MM$MM,JJOOyy=B999rD   c                      ddddddddd	d
d
} t        j                         \  }}t        dd      }| D ]   }t        ||      }|j	                  |       " |j
                  j                          y )Nr/   r                     	   r!   )
zupper rightz
upper leftz
lower leftzlower rightrightcenter leftcenter rightzlower centerzupper centerr$   r   )r(   r)   )r0   r1   r   r   r7   rF   rG   )codesr;   r<   r>   coderA   s         rB   test_offsetbox_loc_codesrX   [   s{    
E llnGC	S#	B $(T<
l#$ JJOOrD   c                      t        j                         \  } }ddg}ddg}|j                  |d       |j                  |d       |j                  dd       | j	                          y )Nr/   r   zseries 1)labelzseries 2expand)ncolsmode)r0   r1   plotlegendtight_layout)r;   r<   d1d2s       rB   test_expand_with_tight_layoutrc   p   s_    llnGC
QB
QBGGBjG!GGBjG!IIAHI%rD   wd_list)   r/   rL   )皙?r/   r   total)   r   r   Nsep)rh   r/   r   ri   r]   )r[   fixedequalc                 "    t        | |||       y )Nr]   )r   )rd   rg   rj   r]   s       rB   test_get_packed_offsetsro   }   s     $7rD   _paramszwd_list, total, sep, expected)rL   r   r/   r   r   r   r/   rQ   )r   rM   rO   )rg   rj   expectedr!   rN   c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nrk   rn   r   r/   r   r   rd   rg   rj   rt   results        rB   test_get_packed_offsets_fixedry      s<     !%7CF!9###F1Ix{+rD   )rf   r   )r   g??)r   rN   rQ   )r   g      @rL   c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nr[   rn   r   r/   rv   rw   s        rB   test_get_packed_offsets_expandr|      s<     !%8DF!9###F1Ix{+rD   )rq   rs   rr   rO   )r   r   rM   )rq   rs   rr   r   r   )r   r   r/   r   )r}   rr   )皙?r   c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nrl   rn   r   r/   rv   rw   s        rB   test_get_packed_offsets_equalr      s<     !%7CF!9###F1Ix{+rD   c                      t        j                  t              5  t        dgdz  d d d       d d d        y # 1 sw Y   y xY w)Nrr   rL   rl   )rg   rj   r]   )pytestraises
ValueErrorr    rD   rB   1test_get_packed_offsets_equal_total_none_sep_noner      s;    	z	" NVHqL$WMN N Ns	   7A 
child_type)rG   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac                 :  	 | dk(  r5t        dd      }|j                  t        j                  dddd             nJ| dk(  r&t	        j
                  d      }d|d<   t        |      }n| d	k(  rt        d
ddi      }n
J d|         t        j                         \  }}t        |d|      }|j                  d       |j                  |       g 	|j                  j                  d	fd       |dk(  rI|j                  j                  d      \  }}|d|j                   z  dz  z  }|d|j                   z  dz  z  }nL|dk(  r)|j                  j                  d      \  }}|dz  }|dz  }n|j                  j                  d      \  }}|j                  j#                          	j%                          t'        d|j                  ||t(        j*                        j-                          t/        	      dk(  r	d   j0                  |k(  sJ |j3                  dd       |j5                  dd       |j                  j#                          	j%                          t'        d|j                  ||t(        j*                        j-                          t/        	      dk(  sJ y )NrG   rN   r   r   )r   r   )rN   rN   )r   r   r   u   ■fontsize)	textpropszUnknown picking child type r&   )r   T
pick_eventc                 &    j                  |       S )N)append)eventcallss    rB   <lambda>ztest_picking.<locals>.<lambda>   s    u||E7J rD   r   r   H   r   button_press_eventr/   ri   )r   r7   r2   r3   nponesr   r   r0   r1   r	   
set_pickerrF   mpl_connectr6   transform_pointdpirG   clearr   r   LEFT_processlenartistr8   r9   )
r   r   picking_childimr;   r<   abxyr   s
            @rB   test_pickingr      s9    V#Aq)  !3!3FAqA!NO	w	WWV_4#B	v	 !3
AO@3J<@@ullnGC	zY	GBMM$MM"EJJ<)JK M!||++F31	S377]R	S377]R	m	#||++F31	S	S||++J71JJOO	KKMcjj!Q0@0@BBJ(*u:?uQx"444 KKAKKAJJOO	KKMcjj!Q0@0@BBJ(*u:??rD   zanchoredtext_align.pngmpl20)r   stylec                      t        j                         \  } }t        dddddi      }|j                  |       t        dddddi      }|j                  |       t        ddddd	i      }|j                  |       y )
Nztest
test long textrT   r~   haleft)r(   r*   propr$   rU   rS   )r0   r1   r
   r7   )r;   r<   text0text1text2s        rB   &test_anchoredtext_horizontal_alignmentr      s~    llnGC/] f~7EMM%/X h'79EMM%/^ g8EMM%rD   c                  \   t         j                  j                  t         j                         t        j                  dd      \  } }|j                  g d       |j                  dddt        d	      d
dd      }t        ddddd      }t        j                  dd      }|j                  |       t        |ddgddddt        d	            }|j                  |       t        t        j                  j!                  dd      d      }||j"                  _        t        |ddddd t        d	      !      }|j                  |       | j&                  j)                          | j&                  j+                         }|j-                  |      }	|j/                  |      }
g d"}t1        |	j2                  |d#$       t1        |
j2                  |d#$       |j-                  |      }|j/                  |      }g d%}t1        |j2                  |d#$       t1        |j2                  |d#$       |j-                  |      }|j/                  |      }g d&}t1        |j2                  |d#$       t1        |j2                  |d#$       t5        j6                         }| j9                  |d'(       |j;                  d       t        j<                  |      j>                  }d)}t1        ||d#$       | j&                  j)                          | jA                          | j&                  j)                          y )*N)rM   rL   r   )figsizer   )r   r/   r   r/   
Annotation)rz   rz   )皙?r   ->)
arrowstyleFbaseliner   )xyxytext
arrowpropsclip_onvar      r   Tr   )i       r   gɿr   r   r   r%   r   xyboxxycoordsr   box_alignmentr   r!   rL   )zoom)r   g333333ӿ)r   K   zoffset points333333?)r   r   r   r*   r   )gffffft@gYn@g     0}@gfffffr@r   )atol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@tight)bbox_inches)i^  i  rM   )!r0   rcParamsupdatercParamsDefaultr1   axisannotatedictr   r2   Circler7   r	   r   r   randomrandr   axesrF   rG   get_rendererget_window_extentget_tightbboxr   extentsioBytesIOsavefigseekimreadshaper`   )r;   r<   an1r>   pab3r   ab6rendererbb1wbb1etarget1bb3wbb3etarget3bb6wbb6etarget6bufr   targetshapes                        rB   test_annotationbbox_extentsr     s   LL++,ll6s3GCGGL
++lx
!%!6#  0C 
RQ	-B	2&AMM!
b"X[6#2($(D$9;C MM#	RYY^^B+!	4BBHHM
Zw"1#2$(D$9;C MM#JJOOzz&&(H   *DX&D*GDLL'2DLL'2   *DX&D*GDLL'2DLL'2  *DX&D)GDLL'2DLL'2 **,CKKK)HHQKJJsO!!EKE;Q/ JJOOJJOOrD   c                  :    t        d      j                  dk(  sJ y )N*   )zorder)r   r   r   rD   rB   test_zorderr   H  s    B&&",,,rD   c            	          t        ddddd      } ddd}t        | ddgd	d
dd|      }|j                  |usJ |d   dk(  sJ y )Nr   r   Tr   r   )r   gffffff?)r   relposr   r   r   r   r   r   r   )r   r	   r   )r>   r   r   s      rB   test_arrowprops_copiedr   L  sc    	RQ	-B $9J	RHK&"1#-
/B =="""h8+++rD   )0collectionsr   r   numpyr   numpy.testingr   r   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr0   matplotlib.patchespatchesr2   matplotlib.lineslinesr4   matplotlib.backend_basesr   r   matplotlib.offsetboxr   r	   r
   r   r   r   r   r   rC   rJ   rX   rc   markparametrizero   _Paramsry   r|   r   r   r   r   r   r   r   r   rD   rB   <module>r     s   " 	  )  :  % ! <0 0 0
 '(d; <D"J*
 #*xjlXJ
1MO"9:0!=>8 ? 1 ;O
8 Y ?
@ 8 !q)nN ROM qAy>K; ,, 8		ATtq,6GI ROM qA{;KM; ,, 8 tq)nN)%&( "$AY!
; 
,
,N
 '@A"#/# B/d +,$gN O@F-,rD   