U
    \	a)                     @   s   d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ dd	 Zd
d Zdd Zdd Zedgdddd Zdd Zdd Zejddd Z dd Z!dd Z"dS )     N)assert_array_almost_equal)ImageTiffTags)collectionspathpyplot
transformsrcParams)imread)Figure)image_comparisonc                  C   s   t ddg} | d | jd t }| j||  dd |d | j||  dd |d t	t
t|d d	d
d d S )N   皙?)r   r   r         ?none)Z	facecolorZ	edgecolorr   r   r   )              ?r   r      )decimal)r   Zset_facecolorpatchZ	set_alphaioBytesIOsavefigZget_facecolorseekr   tupler
   )figbuf r   =/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_agg.pytest_repeated_save_with_alpha   s$    


r    c               
   C   sh   t  } t \}}ttddgddgddgddgddggg}|| |	dd t
|  d S )Ni   
   gMbP?r   )r   r   pltsubplotsr   ZPathCollectionr   PathZ
add_artistset_xlimr   )bufffaxZ
collectionr   r   r   !test_large_single_path_collection/   s    (
r+   c                  C   sV   t d\} }d}t|}|| |||d |d  t }| j|dd d S )Nr     g?g333333?pngformat)	r$   r%   npZarangeZsemilogxZfill_betweenr   r   r   )r   r*   Zstepsdatar   r   r   r   test_marker_with_nan=   s    

r2   c                  C   sH   t  } t \}}tjd tjd}|| |j	| dd d S )Nr   ip r-   r.   )
r   r   r$   r%   r0   randomseedZrandplotr   )r(   r   r*   pointsr   r   r   test_long_pathI   s    
r7   zagg_filter.pngT)Zremove_textc                     sz  dd d%fdd	G dd d} G dd	 d	| G fd
dd|  G  fddd| }t  \}}|jdddgdddgdddddddd	\}|jdddgdddgdddddddd	\}|d}||fD ]v}| }| }	|||	\}
|
| tj| |j	dddd }|

| |
| d  |
| |
d! q|d"d# |d"d# |jd$ |jd$ d S )&Nc                 S   sv   t jd| d  | |dd  | d| d  | d| d  f }t |}t j||  |dd}||d | d  S )N   r   r   Zsame)mode)r0   Zr_ZhanningZconvolvesum)x
window_lenswyr   r   r   smooth1dU   s    6
z!test_agg_filter.<locals>.smooth1dr   c                    s:   t t|dd d }t d| |} t d| |} | S )Nr   r8   r   r   )maxintr0   Zapply_along_axis)Asigmar=   )rA   r   r   smooth2d]   s    z!test_agg_filter.<locals>.smooth2dc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z#test_agg_filter.<locals>.BaseFilterc                 S   s   dS )Nr   r   selfdpir   r   r   get_pade   s    z+test_agg_filter.<locals>.BaseFilter.get_padc                 S   s   t dd S )Nz"Should be overridden by subclasses)NotImplementedError)rH   
padded_srcrI   r   r   r   process_imageh   s    z1test_agg_filter.<locals>.BaseFilter.process_imagec                 S   s@   |  |}t|||f||fdgd}| ||}|| | fS )Nr   Zconstant)rJ   r0   padrM   )rH   imrI   rN   rL   	tgt_imager   r   r   __call__k   s    
z,test_agg_filter.<locals>.BaseFilter.__call__N)__name__
__module____qualname__rJ   rM   rQ   r   r   r   r   
BaseFilterc   s   rU   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
z%test_agg_filter.<locals>.OffsetFilterr   c                 S   s
   || _ d S N)offsets)rH   rW   r   r   r   __init__t   s    z.test_agg_filter.<locals>.OffsetFilter.__init__c                 S   s   t t| jd | S )NH   )rC   rB   rW   rG   r   r   r   rJ   w   s    z-test_agg_filter.<locals>.OffsetFilter.get_padc                 S   sH   | j \}}tj|t|d | dd}tj|t|d |  dd}|S )NrY   r   )Zaxisr   )rW   r0   ZrollrC   )rH   rL   rI   ZoxZoyZa1Za2r   r   r   rM   z   s    
z3test_agg_filter.<locals>.OffsetFilter.process_imageN)r   rR   rS   rT   rX   rJ   rM   r   r   r   r   OffsetFilterr   s   
r[   c                       s.   e Zd ZdZdddZdd Z fdd	Zd
S )z'test_agg_filter.<locals>.GaussianFilterzSimple Gaussian filter.      ?r   r   r   c                 S   s   || _ || _|| _d S rV   )rE   alphacolor)rH   rE   r^   r_   r   r   r   rX      s    z0test_agg_filter.<locals>.GaussianFilter.__init__c                 S   s   t | jd d | S Nr   rY   )rC   rE   rG   r   r   r   rJ      s    z/test_agg_filter.<locals>.GaussianFilter.get_padc                    sh   t |}| j|d d d d d df<  |d d d d df | j | jd | |d d d d df< |S r`   )r0   Z
empty_liker_   r^   rE   )rH   rL   rI   rP   rF   r   r   rM      s    
z5test_agg_filter.<locals>.GaussianFilter.process_imageN)r\   r]   )rR   rS   rT   __doc__rX   rJ   rM   r   ra   r   r   GaussianFilter   s   
rc   c                       s,   e Zd Zd fdd	Zdd Zdd	 Zd
S )z)test_agg_filter.<locals>.DropShadowFilter333333?r]   r   c                    s    |||| _ || _d S rV   )gauss_filteroffset_filter)rH   rE   r^   r_   rW   rc   r[   r   r   rX      s    z2test_agg_filter.<locals>.DropShadowFilter.__init__c                 S   s   t | j|| j|S rV   )rB   re   rJ   rf   rG   r   r   r   rJ      s    
z1test_agg_filter.<locals>.DropShadowFilter.get_padc                 S   s    | j ||}| j||}|S rV   )re   rM   rf   )rH   rL   rI   t1t2r   r   r   rM      s    z7test_agg_filter.<locals>.DropShadowFilter.process_imageN)rd   r]   r   rZ   r   rg   r   r   DropShadowFilter   s   rj   g?r\   g?zbo-br?   r!   r"   zLine 1)ZmecZmfcZlwZmewmslabelg?gffffff?zro-r   g      @g      r6   )r<   r@   ZunitsTr   r   F)r   )r$   r%   r5   Z	get_xdataZ	get_ydataZupdate_frommtransformsZoffset_copyZget_transformfigureZset_transformZ
set_zorderZ
get_zorderZset_agg_filterZset_rasterizedr'   Zset_ylimZxaxisZset_visibleZyaxis)rU   rj   r   r*   Zline1Zline2gausslineZxxyyZshadowZotr   )rc   r[   rA   rF   r   test_agg_filterS   sT              
  

ru   c               	   C   s8   t jdd} t }tt | | W 5 Q R X d S )N)i,  r,   )Zfigsize)r$   rq   r   r   pytestZraises
ValueErrorr   )r   r(   r   r   r   test_too_large_image   s    rx   c                  C   sd   t d} t \}}|| t|  |j  t \}}dtd< || t|  |j  d S )N   i   zagg.path.chunksize)	ranger$   r%   r5   r0   sinZcanvasZdrawr	   )r<   r   r*   r   r   r   test_chunksize   s    
r}   ZAggc                  C   sP   t dddgdddg t } t j| ddd t| }|jd dksLtd S )	Nr   r   r8   Zjpgry   )r/   rI   rI   )ry   ry   )	r$   r5   r   r   r   r   openinfoAssertionError)r   rO   r   r   r   test_jpeg_dpi   s
    
r   c                  C   s^   ddl m}  t }|  }|dd t j|dd|id t	|}|j
d dksZtd S )Nr   )PngInfoZSoftwaretestr-   pnginfor/   
pil_kwargs)ZPIL.PngImagePluginr   r   r   add_textr$   rq   r   r   r~   r   r   )r   r   r   rO   r   r   r   test_pil_kwargs_png   s    
r   c                  C   sV   t  } ddi}t j| d|d t| }dd |j D }|d dksRt	d S )Ndescriptionz
test imageZtiffr   c                 S   s   i | ]\}}t j| j|qS r   )r   ZTAGS_V2name).0kvr   r   r   
<dictcomp>   s     
 z(test_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)
r   r   r$   rq   r   r   r~   Ztag_v2itemsr   )r   r   rO   tagsr   r   r   test_pil_kwargs_tiff   s    
r   )#r   Znumpyr0   Znumpy.testingr   ZPILr   r   rv   Z
matplotlibr   r   r   r$   r   rp   r	   Zmatplotlib.imager
   Zmatplotlib.figurer   Zmatplotlib.testing.decoratorsr   r    r+   r2   r7   ru   rx   r}   markbackendr   r   r   r   r   r   r   <module>   s(   

r

	
