o
    hQ                     @   s  d dl Zd dlmZmZmZ d dl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mZmZmZmZmZmZ d dlmZ dd Zd	d
 Ze dd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd  Z(d!d" Z)d#d$ Z*d%d& Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1d3d4 Z2d5d6 Z3d7d8 Z4d9d: Z5d;d< Z6d=d> Z7d?d@ Z8dAdB Z9dCdD Z:dEdF Z;dGdH Z<dIdJ Z=dKdL Z>dMdN Z?dOdP Z@dQdR ZAdSdT ZBejCjDe
 dUdVdWdX ZEejCjDe
 dUdVdYdZ ZFd[d\ ZGd]d^ ZHd_d` ZIejCjDe
 dUdVdadb ZJejCjDe
 dUdVdcdd ZKejCjDe
 dUdVdedf ZLejCjDe
 dUdVdgdh ZMejCjDe
 dUdVdidj ZNejCjDe
 dUdVdkdl ZOdS )m    N)assert_array_equalassert_equalassert_almost_equal)run_in_parallel)has_mpl)	set_colorlineline_aapolygonpolygon_perimeterdiskcircle_perimetercircle_perimeter_aaellipseellipse_perimeter_bezier_segmentbezier_curve	rectanglerectangle_perimeter)regionpropsc                  C   sT   t d} tdddd\}}t| ||fd t d}d|dd d f< t| | d S )N
   r   r         )npzerosr   r   r   imgrrccimg_ r!   W/var/www/html/scripts/venv/lib/python3.10/site-packages/skimage/draw/tests/test_draw.pytest_set_color   s   

r#   c                  C   s   t d} tdddd\}}}t| ||fd|d tt t| ||fd|d W d    n1 s3w   Y  t d} tdddd\}}}t| ||fd|d d S )	Nr   r   r   r   alpha)   r   r   )r   r      )r   r   r   )r   r   r	   r   pytestraises
ValueError)r   r   r   r%   r!   r!   r"   test_set_color_with_alpha   s   

r+   c                  C   sP   t d} tdddd\}}d| ||f< t d}d|dd d f< t| | d S Nr   r   	   r   r   r   r   r   r   r!   r!   r"   test_line_horizontal,   s   

r/   c                  C   sP   t d} tdddd\}}d| ||f< t d}d|d d df< t| | d S r,   r.   r   r!   r!   r"   test_line_vertical9      

r0   c                  C   sP   t d} tdddd\}}d| ||f< t d}d|dd d f< t| | d S r,   r.   r   r!   r!   r"   test_line_reverseE   r1   r2   c                  C   s@   t d} tdddd\}}d| ||f< t d}t| | d S )N   r4   r      r   r4   )r   r   r   eyer   r   r!   r!   r"   test_line_diagQ   s
   

r7   c                  C   sZ   t d} tdddd\}}}t| ||fd|d t d}d|dd d f< t| | d S )Nr   r   r-   r   r$   )r   r   r	   r   r   r   r   r   valr    r!   r!   r"   test_line_aa_horizontal\   s   

r:   c                  C   sR   t d} tdddd\}}}|| ||f< t d}d|d d df< t| | d S r,   )r   r   r	   r   r8   r!   r!   r"   test_line_aa_verticalh   s   

r;   c                  C   sf   t d} tdddd\}}}d| ||f< tdddd\}}t||D ]\}}t| ||f d q#d S )Nr   r   r-      r   )r   r   r	   r   zipr   )r   r   r   r9   rcr_ic_ir!   r!   r"   test_line_aa_diagonalt   s   
rB   c                  C   sd   t d} t d}tdddd\}}}|| ||f< tdddd\}}}||||f< t| |j d S )N   rD   r            )r   r   r	   r   T)img0img1r   r   r9   r!   r!   r"   0test_line_equal_aliasing_horizontally_vertically   s   

rK   c                  C   sv   t dd} t d}t|d d df |d d df \}}d| ||f< t dd}d|ddddf< t| | d S )Nr   uint8)r   r   )r5   r   r5   r5   )r   r5   rM   r   r   r4   r   r   arrayr
   r   r   polyr   r   r    r!   r!   r"   test_polygon_rectangle   s   
&rS   c                  C   s   t dd} t d}t|d d df |d d df \}}d| ||f< t g dg dg dg d	g d
g dg dg dg dg dg
d}t| | d S )Nr   rL   )r   r'   )r5      )rU   r5   )r'   r   rT   r   r   
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   rO   rQ   r!   r!   r"   test_polygon_rectangle_angular   &   
&	rY   c                  C   s   t dd} t d}t|d d df |d d df \}}d| ||f< t g dg dg dg d	g d	g d	g d
g dg dg dg
d}t| | d S )Nr   rL   )rM   )r4   r   )rU   r<   )r'   r<   rM   r   r   rX   
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   rO   rQ   r!   r!   r"   test_polygon_parallelogram   rZ   r]   c                  C   sx   t dd} t d}t|d d df |d d df | j\}}d| ||f< t d}d|dd d d f< t| | d S )Nr   rL   ))r   )d   r^   )r_   r_   )r   r_   rM   r   r   )r   r   rP   r
   shaper   rQ   r!   r!   r"   test_polygon_exceed   s   
*
ra   c                  C   s2   t dd\} }| j|j  krdksJ  J d S )Nr   r   )r
   sizer   r   r!   r!   r"   test_polygon_0d_input   s   $rd   c                  C   s   t dd} tdd\}}d| ||f< t g dg dg dg dg d	g d	g d	g d	g d	g d	g d	g dg dg dg dg}t| | d S )
N   rf   rL   )rU   rU   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rP   r   r   r!   r!   r"   	test_disk   s,   rj   c                  C   s   t dd} tddddd\}}d| ||f< t | dksJ | d d dks)J t dd} tddddd\}}d| ||f< t g d	g d
g dg dg dg dg dg dg dg dg dg dg dg d
g d	g dg dg}t| | d S )Nre   rL   rU   r   	bresenhammethodr      rf   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   r   r   sumrP   r   r   r!   r!   r"   test_circle_perimeter_bresenham   :   ru   c                  C   s   t dd} tdddddd\}}d| ||f< d	}t d
d|  dfd}td| dddd d\}}d|||f< t| ||| d d f  d S )Nrf   rG   rL   rU   r   r-   rk   )rm   r`   r   r4   rf   rE   rG   )r   r   r   r   r   r   r   shiftr    r!   r!   r"   %test_circle_perimeter_bresenham_shape  s    rz   c                  C   s   t dd} tddddd\}}d| ||f< t | dksJ | d d dks)J t dd} tddddd\}}d| ||f< t g d	g d
g dg dg dg dg dg dg dg dg dg dg dg d
g d	g dg dg}t| | d S )Nre   rL   rU   r   andresrl   r   rn   rh   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   rg   rs   r   r!   r!   r"   test_circle_perimeter_andres&  rv   r|   c                  C   s   t dd} tddd\}}}d| ||f< t | dksJ | d d dks(J t dd} tddd\}}}|d | ||f< t g d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg d
g d	g}t| | d S )Nre   rL   rU   r   r   )ro   ro      r&   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   R         r&   r   r   r~   r   r   r   r   r   )r   r   r   r         J      r   r   r   r   r   r   r   r   r   )r   r   r      rD   r   r   r   r   r   r   r   rD   r   r   r   r   )r   r   r   rD   r   r   r   r   r   r   r   r   r   rD   r   r   r   )r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r   )r   r   r   rt   rP   r   r8   r!   r!   r"   test_circle_perimeter_aaF  s:   r   c                  C   s   t dd} tddddd\}}}|d | ||f< d}t d	d
|  dfd}td| ddd d\}}}|d |||f< t| ||| d d f  d S )Nrw   rL   rU   r   r-   r`   r&   r4   rf   rE   rG   )r   r   r   r   )r   r   r   r9   ry   r    r!   r!   r"   test_circle_perimeter_aa_shapef  s    r   c                  C   s  t dd} tdddd\}}d| ||f< t ddgddgg}t| | t dd} tdddd\}}d| ||f< t ddgddgg}t| | t dd} tdddd\}}d| ||f< t g d	g d
g d	g}t| | t dd} tdddd\}}d| ||f< t g d
g dg d
g}t| | t dd} tdddd\}}d| ||f< t g dg dg dg}t| | d S )NrE   rE   rL   g      ?r   r   皙?r'   r'   g?)r   r   r   )r   r   r   )r   r   r         ?r   r   r   rP   r   )r   r   r   img_correctr!   r!   r"   test_ellipse_trivialr  sV   



r   c                  C   sB  t dd} tdddd\}}d| ||f< t g dg dg dg dg}t| | t d	d} td
d
dd\}}d| ||f< t g dg dg dg dg dg}t| | t dd} tdddd\}}d| ||f< t g dg dg dg dg dg dg dg dg dg dg
}t| | t dd} tdddd\}}d| ||f< t g dg dg dg dg dg dg dg dg dg dg
}t| | t dd} tdddd\}}d| ||f< t g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg}t| | d S )NrN   rL   r   r   333333?r   )r   r   r   r   r   r   r   r   r3   rE   r   r   r   r   r   r   r   r   r   r   r   r4   r'   r5   rX   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   g      @g      @re   rU   rg   ri   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r"   test_ellipse_generic  s   



r   c                  C   s2  t dd} tdddd| jd\}}d| ||f< t g dg dg dg dg dg d	g d	g d	g d	g d	g dg dg dg dg dg}t| | t d
d} tdddd| jd\}}d| ||df< t | }t g dg dg dg dg dg dg dg dg dg dg
|d< t| | d S )Nre   rL   rU   r'   r   r   r   rg   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r-   r'   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   .r   )r   r   r   r`   rP   r   
zeros_liker   r!   r!   r"   test_ellipse_with_shape  sP   

r   c               
   C   sd   t dddd\} }ttg dg dg dg dg dg\}}t| |d  t||d  d S )Nr   r   r   r4   )r   r   nonzerorP   r   )r   r   rr_cc_r!   r!   r"   test_ellipse_negative%  s   r   c               
   C   s   t jdt jd} t jdt jd}tdddD ];}| d tdddd	t |d
\}}d| ||f< |d tdddd	t |d d
\}}d|||f< t| | qd S )N   r   dtyper   r   rf   P   F   <   (   rotationr   )r   r   rL   rangefillr   deg2radr   )rJ   img2angler   r   r!   r!   r"   test_ellipse_rotation_symmetry3  s   

 r   c                  C   s   t jdt jd} tdddD ]:}| d t |}tdddd	|d
\}}d| ||f< t| d j}t 	|dt j
d  }t||t j
d  d qd S )N)i  i  r   r   r   r   i  iX     i  r   r   r'   rE   )r   r   rL   r   r   r   r   r   orientationroundpir   )r   rotr   r   r   angle_estim_rawangle_estimr!   r!   r"   test_ellipse_rotated@  s   

r   c                  C   sV   t dd} tddddd\}}d| ||f< t | dksJ | d d dks)J d S Nr   rf   rL   rf   rU   r   r   r   r   r   rt   r   r   r   r!   r!   r"   $test_ellipse_perimeter_dot_zeroangleM  
   r   c                  C   sV   t dd} tddddd\}}d| ||f< t | dksJ | d d dks)J d S r   r   r   r!   r!   r"   %test_ellipse_perimeter_dot_nzeroangleV  r   r   c                  C   sd   t dd} t dd}tddddd\}}d| ||f< tdddd	\}}d|||f< t| | d S )
N)rG   r   rL   r<   rU   r   r4   r   rE   rF   )r   r   r   r   r   )r   r    r   r   r!   r!   r"   %test_ellipse_perimeter_flat_zeroangle_  s   r   c               !   C   s   t dd} tddddd\}}d| ||f< t g d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d
g}t| | d S )Nr   rL   rf   rU      r<   r   r   rg   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   rq   r   r   r   rP   r   r   r!   r!   r"    test_ellipse_perimeter_zeroanglej  sJ   !r   c               !   C   s   t dd} tddddd\}}d| ||f< t g d	g d	g d	g d	g d	g d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d	g d	g d	g d	g d	g d	g}t| | d S )N)r   rD   rL   rf      rF   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r"   !test_ellipse_perimeter_nzeroangle  sJ    r   c                  C   s   t dd} tddddddd\}}d| ||f< d	}t d
d|  dfd}td| ddddd d\}}d|||f< t| ||| d d f  d S )Nrw   rL   rU   r   r-   r   r   r   r4   rf   rE   rG   )r   r   r   r   rx   r!   r!   r"   test_ellipse_perimeter_shape  s    r   c            
      C   s   t jdtd} d\}}}d\}}}t||||||d\}}d| ||f< t jdtd}	t||||\}}d|	||f< t| |	 d S )Nr   r   r   )2   r   r   )r   r   r   r   r   )r   r   intr   r   r   )
imager0r1r2c0c1c2r   r   image2r!   r!   r"   test_bezier_segment_straight  s   

r   c            
      C   s  t dd} d\}}d\}}d\}}t||||||d\}}d| ||f< t g dg dg dg dg dg dg dg dg d	g d	g d	g d
g d
g dg dg dg dg dg dg dg dg dg dg dg dg}	t| ||f d t| ||f d t| |	 d S )NrC   rL   )rG   rG   )rG   rE   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rP   r   r   
r   r   r   r   r   r   r   r   r   r    r!   r!   r"   test_bezier_segment_curved  sJ   r   c            
      C   s   t jdtd} d\}}d\}}d\}}t||||||d\}}d| ||f< t jdtd}	t||||\}}d|	||f< t| |	 d S )Nr   r   )r   r   )r   r   r   r   r   )r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r!   r!   r"   test_bezier_curve_straight  s   r   c            
      C   s  t dd} d\}}d\}}d\}}t||||||d\}}d| ||f< t| ||f d t| ||f d t g dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d
g d	g dg dg}	t| |	 d S )N)   r}   rL   rM   r   r      r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rP   r   r!   r!   r"   test_bezier_curved_weight_eq_1  F   r   c            
      C   s  t dd} d\}}d\}}d\}}t||||||d\}}d| ||f< t| ||f d t| ||f d t g dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d
g d	g dg}	t| |	 d S )N)r   r   rL   rM   r   r   rE   r   rX   r[   )
r   r   r   r   r   r   r   r   r   r   rV   rW   )
r   r   r   r   r   r   r   r   r   r   r\   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r"   test_bezier_curved_weight_neq_1-  r   r   c               
   C   s   t dd} d\}}d\}}d\}}t||||||ddd\}}d| ||f< d	}	t d
d|	  dfd}
d|	 d	}}d|	 d}}d|	 d}}t||||||dd d\}}d|
||f< t| |
|	|	 d d f  d S )Nrw   rL   )r   r4   )r<   r   )r   r   rE   r   r   r4   rf   rG   r<   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   ry   r    r!   r!   r"   test_bezier_curve_shapeR  s    r   zmatplotlib not installed)reasonc                  C   s   t g dg dg dg} t | }tg dg d\}}d|||f< t||  t | }tg dg d|jdd	\}}d|||f< t||  tt td
gdgdd W d    d S 1 sbw   Y  d S )Nr   )r   r   r   r   )r   rE   rE   r   )r   r   r'   r'   r   r^   r^   r'   r'   r^   r5   r5   r^   T)r`   clipr   )r   )	r   rP   r   r   r   r`   r(   r)   r*   )expectedoutr   r   r!   r!   r"   test_polygon_perimeterc  s,   




"r   c                  C   s:   t g dg ddd\} }tt| d tt|d d S )Nr   r   )r'   r5   r   r   )r   r   lenrc   r!   r!   r"   $test_polygon_perimeter_outside_image}  s
   
r   c                  C   "  t jg dg dg dg dg dgt jd} d}d}t jdt jd}t|||jd\}}d|||f< t||  t jdt jd}t|||jd	\}}d|||f< t||  t jdt jd}td
d|jd\}}d|||f< t||  t jdt jd}td
d|jd	\}}d|||f< t||  d S )Nr   r   r   )r   r   r   r3   endr`   r   r   startr`   )r'   r   rT   r   r   r`   r   rP   rL   r   r   r`   r   r   r   r   r   r   r   r!   r!   r"   test_rectangle_end  4   



r   c                  C   r   )Nr   r   r   )皙?皙?)@333333@r3   r   r   r   )r   r   )r   r   r   r   r   r!   r!   r"   test_rectangle_float_input  r   r   c                  C   s   t jg dg dg dg dg dgt jd} d}d}t jdt jd}t|||jd\}}d|||f< t||  t jd	t jd}t|||jd\}}d|||d
f< t |}| |d< t|| d S )Nr   r   r   rM   r   r3   extentr`   r   )r4   r4   r'   r   r   )r   rP   rL   r   r   r`   r   r   )r   r   r   r   r   r   
expected_2r!   r!   r"   test_rectangle_extent  s(   


r   c                  C   s   t jg dg dg dg dg dgt jd} d}d}t j| jt jd}t|||jd\}}d|||f< t|||jd\}}d	|||f< t||  t j| jt jd}t|||jd\}}d	|||f< t|||jd\}}d|||f< t||  d S )
Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rE   rE   r   r   )r'   r4   )r^   r   r   rE   )r   rP   rL   r   r`   r   r   r   )r   r   r   r   r   r   r!   r!   r"   test_rectangle_extent_negative  s,   

r   c                  C   s   t jg dg dg dg dg dgt jd} d}d}t j| jt jd}t|||jd\}}d|||f< t||  t j| jt jd}t|||jd	\}}d|||f< t||  t j| jt jd}d}d
}t|||jd\}}d|||f< t||  d S )Nr   r   )r   r   r   r   r   r   r   )rE   r'   )rE   r5   r   r   r   )r   rE   r   )r   rP   rL   r   r`   r   r   )r   r   r   r   r   r   r   r!   r!   r"   test_rectangle_perimiter  s0   


r   c                  C   s   t jg dg dg dg dg dgt jd} t jdt jd}d}d}t|||jdd	\}}d
|||f< t||  t jg dg dg dg dg dgt jd} t jdt jd}t|||jdd	\}}d
|||f< t||  d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r3   r   r   F)r   r`   r   r   r   r   r   r   r   Tr   rP   rL   r   r   r`   r   )r   r   r   r   r   r   r!   r!   r"   *test_rectangle_perimiter_clip_bottom_right  <   






r  c                  C   s   t jg dg dg dg dg dgt jd} t jdt jd}d}d}t|||jdd	\}}d
|||f< t||  t jg dg dg dg dg dgt jd} t jdt jd}t|||jdd	\}}d
|||f< t||  d S )N)r   r   r   r   r   )r   r   r   r   r   r   r   r3   )r  r   Fr   r`   r   r   )r   r   r   r   r   Tr   r   r   r   r   r   r   r!   r!   r"   &test_rectangle_perimiter_clip_top_left/  r  r  c                  C   s   t jg dg dg dg dg dgt jd} t jdt jd}d}d}t|||jdd	\}}d
|||f< t||  t jg dg dg dg dg dgt jd} t jdt jd}t|||jdd	\}}d
|||f< t||  d S )Nr   r   r   r   r3   )irE   )rE   r   Tr  r   r   Fr   r  r!   r!   r"   'test_rectangle_perimiter_clip_top_rightL  s<   






r  c                  C   s   t jg dg dg dg dg dgt jd} t jdt jd}d}d}t|||jdd	\}}d
|||f< t||  t jg dg dg dg dg dgt jd} t jdt jd}t|||jdd	\}}d
|||f< t||  d S )Nr   )r   r   r   r   r   )r   r   r   r   r   r   r3   )rE   r   )r   r   Tr  r   )r   r   r   r   r   Fr   r  r!   r!   r"   )test_rectangle_perimiter_clip_bottom_leftg  s<   






r  )Pnumpyr   numpy.testingr   r   r   r(   skimage._shared.testingr   "skimage._shared._dependency_checksr   skimage.drawr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   skimage.measurer   r#   r+   r/   r0   r2   r7   r:   r;   rB   rK   rS   rY   r]   ra   rd   rj   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r  r  r  r  r!   r!   r!   r"   <module>   s    @
   2Q0		)('%%






