o
    &?eQ                     @   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!   ]/home/www/facesmatcher.com/pyenv/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cZr_iZc_ir!   r!   r"   test_line_aa_diagonalt   s   
r@   c                  C   sd   t d} t d}tdddd\}}}|| ||f< tdddd\}}}||||f< t| |j d S )N   rB   r            )r   r   r	   r   T)Zimg0img1r   r   r9   r!   r!   r"   0test_line_equal_aliasing_horizontally_vertically   s   

rH   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   rJ   r   r   r4   r   r   arrayr
   r   r   Zpolyr   r   r    r!   r!   r"   test_polygon_rectangle   s   
&rO   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   rI   )r   r'   )r5      )rQ   r5   )r'   r   rP   r   r   
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   rL   rN   r!   r!   r"   test_polygon_rectangle_angular   &   
&	rU   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   rI   )rJ   )r4   r   )rQ   r<   )r'   r<   rJ   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   rL   rN   r!   r!   r"   test_polygon_parallelogram   rV   rY   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   rI   ))r   )d   rZ   )r[   r[   )r   r[   rJ   r   r   )r   r   rM   r
   shaper   rN   r!   r!   r"   test_polygon_exceed   s   
*
r]   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   $r`   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   rb   rI   )rQ   rQ   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rM   r   r   r!   r!   r"   	test_disk   s,   rf   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 )Nra   rI   rQ   r   	bresenhammethodr      rb   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   r   sumrM   r   r   r!   r!   r"   test_circle_perimeter_bresenham   :   rq   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rb   rE   rI   rQ   r   r-   rg   )ri   r\   r   r4   rb   rC   rE   )r   r   r   r   r   r   r   shiftr    r!   r!   r"   %test_circle_perimeter_bresenham_shape  s    rv   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 )Nra   rI   rQ   r   Zandresrh   r   rj   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   rm   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rc   ro   r   r!   r!   r"   test_circle_perimeter_andres&  rr   rw   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 )Nra   rI   rQ   r   r   )rk   rk      r&   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   R         r&   r{   rz   ry   r   r   r   r   r   )r   r   r   r         J      r   r   r~   r}   r|   r   r   r   r   )r   r   r      rB   r   r   r   r   r   r   r   rB   r   r   r   r   )r   r   r|   rB   r   r   r   r   r   r   r   r   r   rB   r|   r   r   )r   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r}   ry   r   )r   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r~   rz   r   )r   r{   r   r   r   r   r   r   r   r   r   r   r   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   rM   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 )Nrs   rI   rQ   r   r-   r\   r&   r4   rb   rC   rE   )r   r   r   r   )r   r   r   r9   ru   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rC   rC   rI   g      ?r   r   皙?r'   r'   g?)r   r   r   )r   r   r   )r   r   r         ?r   r   r   rM   r   )r   r   r   Z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 )NrK   rI   r   r   333333?r   )r   r   r   r   r   r   r   r   r3   rC   r   r   r   r   r   r   r   r   r   r   r   r4   r'   r5   rT   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   g      @g      @ra   rQ   rc   re   )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 )Nra   rI   rQ   r'   r   r   r   rc   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r-   r'   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   .r   )r   r   r   r\   rM   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   ZnonzerorM   r   )r   r   Zrr_Z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   Zdtyper   rz   rb   P   F   <   (   Zrotationr   )r   r   rI   rangefillr   deg2radr   )rG   Z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   rz   r   i  iX     i  r   r   r'   rC   )r   r   rI   r   r   r   r   r   Zorientationroundpir   )r   Zrotr   r   r   Zangle_estim_rawZ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   rb   rI   rb   rQ   r   r   r   r   r   rp   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)rE   r   rI   r<   rQ   r   r4   r   rC   rD   )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   rI   rb   rQ      r<   r   r   rc   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   rm   r   r   r   rM   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   rB   rI   rb      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   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   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 )Nrs   rI   rQ   r   r-   r   r   r   r4   rb   rC   rE   )r   r   r   r   rt   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 )NrA   rI   )rE   rE   )rE   rC   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rM   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)   rx   rI   rJ   r   r      r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rM   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   rI   rJ   r   r   rC   r   rT   rW   )
r   r   r   r   r   r   r   r   r   r   rR   rS   )
r   r   r   r   r   r   r   r   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"   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 )Nrs   rI   )r   r4   )r<   r   )r   r   rC   r   r   r4   rb   rE   r<   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   ru   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   rC   rC   r   )r   r   r'   r'   r   rZ   rZ   r'   r'   rZ   r5   r5   rZ   T)r\   clipr   )r   )	r   rM   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   lenr_   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   rP   r   r   r\   r   rM   rI   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   rJ   r   r3   extentr\   r   )r4   r4   r'   r   r   )r   rM   rI   r   r   r\   r   r   )r   r   r   r   r   r   Z
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   rC   rC   r   r   )r'   r4   )rZ   r   r   rC   )r   rM   rI   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   )rC   r'   )rC   r5   r   r   r   )r   rC   r   )r   rM   rI   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   rM   rI   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   )irC   )rC   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   )rC   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   Znumpy.testingr   r   r   r(   Zskimage._shared.testingr   Z"skimage._shared._dependency_checksr   Zskimage.drawr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Zskimage.measurer   r#   r+   r/   r0   r2   r7   r:   r;   r@   rH   rO   rU   rY   r]   r`   rf   rq   rv   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markZskipifr   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s    @
   2Q0		)('%%






