
    |h                        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 Zd Z e       d	        Zd
 Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d  Z5d! Z6d" Z7d# Z8d$ Z9d% Z:d& Z;d' Z<d( Z=d) Z>d* Z?d+ Z@d, ZAd- ZBej                  j                  e
 d./      d0        ZEej                  j                  e
 d./      d1        ZFd2 ZGd3 ZHd4 ZIej                  j                  e
 d./      d5        ZJej                  j                  e
 d./      d6        ZKej                  j                  e
 d./      d7        ZLej                  j                  e
 d./      d8        ZMej                  j                  e
 d./      d9        ZNej                  j                  e
 d./      d:        ZOy);    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                      t        j                  d      } t        dddd      \  }}t        | ||fd       t        j                  d      }d|dd d f<   t	        | |       y )N
   r   r         )npzerosr	   r   r   imgrrccimg_s       [/var/www/html/test/engine/venv/lib/python3.12/site-packages/skimage/draw/tests/test_draw.pytest_set_colorr$      sY    
((8
C!Q2FBcB8Q88HDDAJsD!    c                  b   t        j                  d      } t        dddd      \  }}}t        | ||fd|       t	        j
                  t              5  t        | ||fd|       d d d        t        j                  d      } t        dddd      \  }}}t        | ||fd|       y # 1 sw Y   BxY w)	Nr   r   r   r   alpha)   r   r   )r   r      )r   r   r   )r   r   r
   r   pytestraises
ValueError)r   r    r!   r(   s       r#   test_set_color_with_alphar.   '   s    
((8
CAq!R(MBEcB8Qe, 
z	" ;#BxE:; ((;
CAq!R(MBEcB8Ye4; ;s   B%%B.c                      t        j                  d      } t        dddd      \  }}d| ||f<   t        j                  d      }d|dd d f<   t        | |       y Nr   r   	   r   r   r   r	   r   r   s       r#   test_line_horizontalr3   7   sV    
((8
C!Q1FBCBK88HDDAJsD!r%   c                      t        j                  d      } t        dddd      \  }}d| ||f<   t        j                  d      }d|d d df<   t        | |       y r0   r2   r   s       r#   test_line_verticalr5   D   sV    
((8
C!Q1FBCBK88HDDAJsD!r%   c                      t        j                  d      } t        dddd      \  }}d| ||f<   t        j                  d      }d|dd d f<   t        | |       y r0   r2   r   s       r#   test_line_reverser7   P   sV    
((8
C!Q1FBCBK88HDDAJsD!r%   c                      t        j                  d      } t        dddd      \  }}d| ||f<   t        j                  d      }t	        | |       y )N   r:   r      r   r:   )r   r   r	   eyer   r   s       r#   test_line_diagr=   \   sH    
((6
C!Q1FBCBK66!9DsD!r%   c                      t        j                  d      } t        dddd      \  }}}t        | ||fd|       t        j                  d      }d|dd d f<   t	        | |       y )Nr   r   r1   r   r'   )r   r   r
   r   r   r   r    r!   valr"   s        r#   test_line_aa_horizontalrA   g   s]    
((8
C!Q1%KBCcB8Qc*88HDDAJsD!r%   c                      t        j                  d      } t        dddd      \  }}}|| ||f<   t        j                  d      }d|d d df<   t        | |       y r0   )r   r   r
   r   r?   s        r#   test_line_aa_verticalrC   s   sX    
((8
C!Q1%KBCCBK88HDDAJsD!r%   c                      t        j                  d      } t        dddd      \  }}}d| ||f<   t        dddd      \  }}t	        ||      D ]  \  }}t        | ||f   d        y )Nr   r   r1      r   )r   r   r
   r	   zipr   )r   r    r!   r@   rcr_ic_is           r#   test_line_aa_diagonalrK      st    
((8
C!Q1%KBCCBK 1aDAq1I 'SSc]A&'r%   c                      t        j                  d      } t        j                  d      }t        dddd      \  }}}|| ||f<   t        dddd      \  }}}||||f<   t        | |j                         y )N   rN   r            )r   r   r
   r   T)img0img1r    r!   r@   s        r#   0test_line_equal_aliasing_horizontally_verticallyrU      sx    88HD88HD "aR(KBCDRL !RR(KBCDRL tTVV$r%   c                      t        j                  dd      } t        j                  d      }t        |d d df   |d d df         \  }}d| ||f<   t        j                  dd      }d|ddddf<   t	        | |       y )Nr   uint8)r   r   )r;   r   r;   r;   )r   r;   rX   r   r   r:   r   r   arrayr   r   r   polyr    r!   r"   s        r#   test_polygon_rectangler^      s}    
((8W
%C88<=DT!Q$Zad,FBCBK88Hg&DD1acNsD!r%   c                  "   t        j                  dd      } t        j                  d      }t        |d d df   |d d df         \  }}d| ||f<   t        j                  g dg dg dg d	g d
g dg dg dg dg dg
d      }t	        | |       y )Nr   rW   )r   r*   )r;      )ra   r;   )r*   r   r`   r   r   
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   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   r\   s        r#   test_polygon_rectangle_angularre          
((8W
%C88<=DT!Q$Zad,FBCBK88**********	
 	D  sD!r%   c                  "   t        j                  dd      } t        j                  d      }t        |d d df   |d d df         \  }}d| ||f<   t        j                  g dg dg dg d	g d	g d	g d
g dg dg dg
d      }t	        | |       y )Nr   rW   )rX   )r:   r   )ra   rE   )r*   rE   rX   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   rZ   r\   s        r#   test_polygon_parallelogramrj      rf   r%   c                     t        j                  dd      } t        j                  d      }t        |d d df   |d d df   | j                        \  }}d| ||f<   t        j                  d      }d|dd d d f<   t        | |       y )Nr   rW   ))r   )d   rl   )rm   rm   )r   rm   rX   r   r   )r   r   r[   r   shaper   r\   s        r#   test_polygon_exceedro      s{    
((8W
%C88FGDT!Q$ZadSYY7FBCBK88HDDQKsD!r%   c                  j    t        dd      \  } }| j                  |j                  cxk(  rdk(  sJ  J y )Nr   r   )r   sizer    r!   s     r#   test_polygon_0d_inputrs      s2    Q]FB77bgg""""""r%   c                      t        j                  dd      } t        dd      \  }}d| ||f<   t        j                  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	        | |       y )
N   rv   rW   )ra   ra   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   s       r#   	test_diskrz      sz    
((8W
%C&!_FBCBK88999999999999999	
D( sD!r%   c                     t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  |       dk(  sJ | d   d   dk(  sJ t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  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        | |       y )Nru   rW   ra   r   	bresenhammethodr      rv   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r   r   sumr[   r   r   s       r#   test_circle_perimeter_bresenhamr     s    
((8W
%CaAk:FBCBK66#;!q6!9>>
((8W
%CaAk:FBCBK8899999999999999999#	
D* sD!r%   c                  
   t        j                  dd      } t        ddddd      \  }}d| ||f<   d	}t        j                  d
d|z  z   dfd      }t        d|z   dddd       \  }}d|||f<   t        | ||| d d f          y )Nrv   rQ   rW   ra   r   r1   r|   )r~   rn   r   r:   rv   rO   rQ   )r   r   r   r   r   r    r!   shiftr"   s        r#   %test_circle_perimeter_bresenham_shaper   0  s    
((8W
%CaQ{(KFBCBKE88R!e)^R('2Da%iQ{$OFBDRLsDvq12r%   c                     t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  |       dk(  sJ | d   d   dk(  sJ t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  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        | |       y )Nru   rW   ra   r   andresr}   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   rw   r   r   s       r#   test_circle_perimeter_andresr   ;  s    
((8W
%CaAh7FBCBK66#;!q6!9>>
((8W
%CaAh7FBCBK8899999999999999999#	
D* sD!r%   c                     t        j                  dd      } t        ddd      \  }}}d| ||f<   t        j                  |       dk(  sJ | d   d   dk(  sJ t        j                  dd      } t        ddd      \  }}}|dz  | ||f<   t        j                  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        | |       y )Nru   rW   ra   r   r   )r   r      r)   )r   r   r   r   r   r   r   r   r   r   r   r   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      rN   r   r   r   r   r   r   r   rN   r   r   r   r   )r   r   r   rN   r   r   r   r   r   r   r   r   r   rN   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r)   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r   )r   r   r   r   r[   r   r?   s        r#   test_circle_perimeter_aar   ]  s    
((8W
%C%aA.KBCCBK66#;!q6!9>>
((8W
%C%aA.KBC)CBK88	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^	^!	`D( sD!r%   c                     t        j                  dd      } t        dddd      \  }}}|dz  | ||f<   d}t        j                  d	d
|z  z   dfd      }t        d|z   ddd       \  }}}|dz  |||f<   t        | ||| d d f          y )Nr   rW   ra   r   r1   rn   r)   r:   rv   rO   rQ   )r   r   r   r   )r   r    r!   r@   r   r"   s         r#   test_circle_perimeter_aa_shaper     s    
((8W
%C%aQh?KBC)CBKE88R!e)^R('2D%a%iQdCKBC9DRLsDvq12r%   c                  h   t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  ddgddgg      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  ddgddgg      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g d	g d
g d	g      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g d
g dg d
g      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g dg dg dg      }t	        | |       y )NrO   rO   rW   g      ?r   r   皙?r*   r*   g?)r   r   r   )r   r   r   )r   r   r         ?r   r   r   r[   r   )r   r    r!   img_corrects       r#   test_ellipse_trivialr     s   
((67
#CS#sC(FBCBK((QFQF+,KsK(
((67
#CS#sC(FBCBK((FF	
K sK(
((67
#CQ3$FBCBK((	
K sK(
((67
#CQ3$FBCBK((	
K sK(
((67
#CQ3$FBCBK((	
K sK(r%   c                  "   t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g dg dg dg dg      }t	        | |       t        j                  d	d      } t        d
d
dd      \  }}d| ||f<   t        j                  g dg dg dg dg dg      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g dg dg dg dg dg dg dg dg dg dg
      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  g dg dg dg dg dg dg dg dg dg dg
      }t	        | |       t        j                  dd      } t        dddd      \  }}d| ||f<   t        j                  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	        | |       y )NrY   rW   r   r   333333?r   )r   r   r   r   r   r   r   r   r9   rO   r   r   r   r   r   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   g      @g      @ru   ra   rw   ry   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s       r#   test_ellipse_genericr     s   
((67
#CS#sC(FBCBK88		
D sD!
((67
#CQ3$FBCBK88	
D sD!
((8W
%CQ1a FBCBK88**********	
D sD!
((8W
%CS!S!$FBCBK88**********	
D sD!
((8W
%CQ1a FBCBK88999999999999999	
D& sD!r%   c                  8   t        j                  dd      } t        dddd| j                        \  }}d| ||f<   t        j                  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        j                  d
d      } t        dddd| j                        \  }}d| ||df<   t        j                  |       }t        j                  g dg dg dg dg dg dg dg dg dg dg
      |d<   t        | |       y )Nru   rW   ra   r*   r   r   r   rw   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r1   r*   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   .r   )r   r   r   rn   r[   r   
zeros_liker   s       r#   test_ellipse_with_shaper     s   
((8W
%CQ1b		2FBCBK88999999999999999	
D( sD!
((:w
'CQ1b		2FBCB	N==D88''''''''''	
DL sD!r%   c            
          t        dddd      \  } }t        j                  t        j                  g dg dg dg dg dg            \  }}t	        | |dz
         t	        ||dz
         y )Nr   r   r   r:   )r   r   nonzeror[   r   )r    r!   rr_cc_s       r#   test_ellipse_negativer   Q  sf    RS#&FBzz
	

HC r37#r37#r%   c                     t        j                  dt         j                        } t        j                  dt         j                        }t        ddd      D ]  }| j	                  d       t        dddd	t        j                  |      
      \  }}d| ||f<   |j	                  d       t        dddd	t        j                  |dz         
      \  }}d|||f<   t        | |        y )N   r   dtyper   r   rv   P   F   <   (   rotationr   )r   r   rW   rangefillr   deg2radr   )rT   img2angler    r!   s        r#   test_ellipse_rotation_symmetryr   c  s    88Jbhh/D88Jbhh/Dq#r" '		!RR"**U2CDBRV		!RR"**US[2IJBRV4&'r%   c                     t        j                  dt         j                        } t        ddd      D ]  }| j	                  d       t        j
                  |      }t        dddd	|
      \  }}d| ||f<   t        |       d   j                  }t        j                  |d      t         j                  dz  z  }t        ||t         j                  dz  z  d        y )N)i  i  r   r   r   r   i  iX     i  r   r   r*   rO   )r   r   rW   r   r   r   r   r   orientationroundpir   )r   rotr   r    r!   angle_estim_rawangle_estims          r#   test_ellipse_rotatedr   p  s    
((<rxx
0CQR  A

3c3e<BBF%c*1-99hh2beeai@K"%%!))<a@Ar%   c                      t        j                  dd      } t        ddddd      \  }}d| ||f<   t        j                  |       dk(  sJ | d   d   dk(  sJ y Nr   rv   rW   rv   ra   r   r   r   r   r   r   r   r    r!   s      r#   $test_ellipse_perimeter_dot_zeroangler   }  _    
((8W
%Cr1aA.FBCBK66#;!r71:??r%   c                      t        j                  dd      } t        ddddd      \  }}d| ||f<   t        j                  |       dk(  sJ | d   d   dk(  sJ y r   r   r   s      r#   %test_ellipse_perimeter_dot_nzeroangler     r   r%   c                      t        j                  dd      } t        j                  dd      }t        ddddd      \  }}d| ||f<   t        dddd	      \  }}d|||f<   t	        | |       y )
N)rQ   r   rW   rE   ra   r   r:   r   rO   rP   )r   r   r   r	   r   )r   r"   r    r!   s       r#   %test_ellipse_perimeter_flat_zeroangler     sp    
((8W
%C88Hg&Dq!Q1-FBCBK!Q2FBDRLsD!r%   c            !      X   t        j                  dd      } t        ddddd      \  }}d| ||f<   t        j                  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	        | |       y )Nr   rW   rv   ra      rE   r   r   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   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r   r   s       r#    test_ellipse_perimeter_zeroangler     s    
((8W
%Cr1b!Q/FBCBK88999999999999999999999999999999=	
!DF sD!r%   c            !      X   t        j                  dd      } t        ddddd      \  }}d| ||f<   t        j                  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	        | |       y )N)r   rN   rW   rv      rP   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s       r#   !test_ellipse_perimeter_nzeroangler     s    
((8W
%Cr2r1c2FBCBK88WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW=	
!DD sD!r%   c                     t        j                  dd      } t        dddddd      \  }}d| ||f<   d	}t        j                  d
d|z  z   dfd      }t        d|z   ddddd       \  }}d|||f<   t        | ||| d d f          y )Nr   rW   ra   r   r1   r   r   r   r:   rv   rO   rQ   )r   r   r   r   r   s        r#   test_ellipse_perimeter_shaper     s    
((8W
%Cq"aAX>FBCBKE88R!e)^R('2Dq5y"aATBFBDRLsDvq12r%   c            	         t        j                  dt              } d\  }}}d\  }}}t        ||||||d      \  }}d| ||f<   t        j                  dt              }	t	        ||||      \  }}d|	||f<   t        | |	       y )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!   image2s
             r#   test_bezier_segment_straightr     s    HHZs+EJBBJBBRRRQ7FBE"b&MXXj,F"b"b!FBF2r6Nuf%r%   c                     t        j                  dd      } d\  }}d\  }}d\  }}t        ||||||d      \  }}d| ||f<   t        j                  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        | |	       y )NrM   rW   )rQ   rQ   )rQ   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r[   r   r   
r   r   r   r   r   r   r   r    r!   r"   s
             r#   test_bezier_segment_curvedr     s    
((8W
%CFBFBFBRRRQ7FBCBK88WWWWWWWWWWWWWWWWWWWWWWWWW3	
D: RVa RVa sD!r%   c            	         t        j                  dt              } d\  }}d\  }}d\  }}t        ||||||d      \  }}d| ||f<   t        j                  dt              }	t	        ||||      \  }}d|	||f<   t        | |	       y )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   s
             r#   test_bezier_curve_straightr   0  s    HHZs+EFBFBFB"b"b"b!4FBE"b&MXXj,F"b"b!FBF2r6Nuf%r%   c                     t        j                  dd      } d\  }}d\  }}d\  }}t        ||||||d      \  }}d| ||f<   t        | ||f   d       t        | ||f   d       t        j                  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        | |	       y )N)   r   rW   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   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r[   r   s
             r#   test_bezier_curved_weight_eq_1r   >  s    
((7G
$CFBFBFB"b"b"b!4FBCBKRVa RVa 88$$$$$$$$$$$$$$$$$$$$$$$/	
D6 dr%   c                     t        j                  dd      } d\  }}d\  }}d\  }}t        ||||||d      \  }}d| ||f<   t        | ||f   d       t        | ||f   d       t        j                  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        | |	       y )N)r   r   rW   rX   r   r   rO   r   rd   rh   )
r   r   r   r   r   r   r   r   r   r   rb   rc   )
r   r   r   r   r   r   r   r   r   r   ri   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   s
             r#   test_bezier_curved_weight_neq_1r   e  s    
((8W
%CFBFBFB"b"b"b!4FBCBKRVa RVa 88***********************/	
D6 dr%   c            
      X   t        j                  dd      } d\  }}d\  }}d\  }}t        ||||||dd      \  }}d| ||f<   d	}	t        j                  d
d|	z  z   dfd      }
d|	z   d	}}d|	z   d}}d|	z   d}}t        ||||||dd       \  }}d|
||f<   t        | |
|	|	 d d f          y )Nr   rW   )r   r:   )rE   r   )r   r   rO   r   r   r:   rv   rQ   rE   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r    r!   r   r"   s              r#   test_bezier_curve_shaper     s    
((8W
%CFBFBFB"b"b"b!8DFBCBKE88R!e)^R('2DYBYBYB"b"b"b!4@FBDRLsDvq12r%   zmatplotlib not installed)reasonc                     t        j                  g dg dg dg      } t        j                  |       }t        g dg d      \  }}d|||f<   t	        ||        t        j                  |       }t        g dg d|j
                  d	      \  }}d|||f<   t	        ||        t        j                  t              5  t        d
gdgd       d d d        y # 1 sw Y   y xY w)Nr   )r   r   r   r   )r   rO   rO   r   )r   r   r*   r*   r   rl   rl   r*   r*   rl   r;   r;   rl   T)rn   clipr   )r  )	r   r[   r   r   r   rn   r+   r,   r-   )expectedoutr    r!   s       r#   test_polygon_perimeterr    s    xx|\BCH
--
!C|\:FBCBKsH%
--
!CciidFB CBKsH%	z	" /1#s./ / /s   ;CCc                      t        g dg dd      \  } }t        t        |       d       t        t        |      d       y )Nr  r  )r*   r;   r   r   )r   r   lenrr   s     r#   $test_polygon_perimeter_outside_imager    s0    ~~VLFBR!R!r%   c                     t        j                  g dg dg dg dg dgt         j                        } d}d}t        j                  dt         j                        }t	        |||j
                        \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        |||j
                  	      \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        d
d|j
                        \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        d
d|j
                  	      \  }}d|||f<   t        ||        y )Nr   r   r   )r   r   r   r9   endrn   r   r  startrn   )r*   r   r`   r  r  rn   r   r[   rW   r   r   rn   r   r  r  r  r   r    r!   s         r#   test_rectangle_endr    sA   xx	
 hh	H E
C
((6
*Cu#SYY7FBCBKsH% ((6
*C5399=FBCBKsH% ((6
*CVsyyAFBCBKsH%
((6
*C6syyAFBCBKsH%r%   c                     t        j                  g dg dg dg dg dgt         j                        } d}d}t        j                  dt         j                        }t	        |||j
                        \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        |||j
                  	      \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        d
d|j
                        \  }}d|||f<   t        ||        t        j                  dt         j                        }t	        d
d|j
                  	      \  }}d|||f<   t        ||        y )Nr   r   r   )皙?皙?)@333333@r9   r  r   r  )r  r  )r  r  r  r  r  s         r#   test_rectangle_float_inputr    sA   xx	
 hh	H E
C
((6
*Cu#SYY7FBCBKsH% ((6
*C5399=FBCBKsH% ((6
*CZZsyyIFBCBKsH%
((6
*C:ZsyyIFBCBKsH%r%   c                     t        j                  g dg dg dg dg dgt         j                        } d}d}t        j                  dt         j                        }t	        |||j
                        \  }}d|||f<   t        ||        t        j                  d	t         j                        }t	        |||j
                        \  }}d|||d
f<   t        j                  |      }| |d<   t        ||       y )Nr   r   r   rX   r   r9   extentrn   r   )r:   r:   r*   r   r   )r   r[   rW   r   r   rn   r   r   )r  r  r  r   r    r!   
expected_2s          r#   test_rectangle_extentr    s    xx	
 hh	H EF
((6
*CuV399=FBCBKsH%
((9BHH
-CuV399=FBCB	Ns#J!JvsJ'r%   c                  p   t        j                  g dg dg dg dg dgt         j                        } d}d}t        j                  | j                  t         j                        }t        |||j                        \  }}d|||f<   t        |||j                        \  }}d	|||f<   t        ||        t        j                  | j                  t         j                        }t        |||j                        \  }}d	|||f<   t        |||j                        \  }}d|||f<   t        ||        y )
Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rO   rO   r   r   )r*   r:   )rl   r  r   rO   )r   r[   rW   r   rn   r   r   r   )r  r  r  r   r    r!   s         r#   test_rectangle_extent_negativer$    s    xx	
 hh	H EF
((8>>
2C vSYYGFBCBKuV399=FBCBKsH% ((8>>
2CuV399=FBCBK vSYYGFBCBKsH%r%   c                     t        j                  g dg dg dg dg dgt         j                        } d}d}t        j                  | j                  t         j                        }t        |||j                        \  }}d|||f<   t        ||        t        j                  | j                  t         j                        }t        |||j                  	      \  }}d|||f<   t        ||        t        j                  | j                  t         j                        }d}d
}t        |||j                        \  }}d|||f<   t        ||        y )Nr!  r"  )r   r   r   r   r   r   r   )rO   r*   )rO   r;   r   r   r  )r   rO   r  )r   r[   rW   r   rn   r   r   )r  r  r  r   r    r!   r  s          r#   test_rectangle_perimiterr&  =  s   xx	
 hh	H E
C
((8>>
2C 399=FBCBKsH% ((8>>
2C U#SYYGFBCBKsH%
((8>>
2CEF vSYYGFBCBKsH%r%   c                  ,   t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }d}d}t	        |||j
                  d	      \  }}d
|||f<   t        ||        t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }t	        |||j
                  d	      \  }}d
|||f<   t        ||        y )Nr   r   r   r   r   r   r   r   r   r   r   r   r9   r   r   F)r  rn   r  r   r   r   r   r   r   Tr   r[   rW   r   r   rn   r   )r  r   r  r  r    r!   s         r#   *test_rectangle_perimiter_clip_bottom_rightr,  _  s     xx	
 hh	H ((6
*CEF vSYYUSFBCBKsH% xx	
 hh	H ((6
*C vSYYTRFBCBKsH%r%   c                  ,   t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }d}d}t	        |||j
                  d	      \  }}d
|||f<   t        ||        t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }t	        |||j
                  d	      \  }}d
|||f<   t        ||        y )N)r   r   r   r   r   )r   r   r   r   r   r   r   r9   )r.  r   Fr  rn   r  r   )r   r   r   r   r   Tr+  r  r   r  r  r    r!   s         r#   &test_rectangle_perimiter_clip_top_leftr1    s     xx	
 hh	H ((6
*CE
C CsyyuMFBCBKsH% xx	
 hh	H ((6
*C CsyytLFBCBKsH%r%   c                  ,   t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }d}d}t	        |||j
                  d	      \  }}d
|||f<   t        ||        t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }t	        |||j
                  d	      \  }}d
|||f<   t        ||        y )Nr(  r*  r   r   r9   )irO   )rO   r   Tr/  r   r)  Fr+  r0  s         r#   'test_rectangle_perimiter_clip_top_rightr3    s    xx	
 hh	H ((6
*CE
C CsyytLFBCBKsH%xx	
 hh	H ((6
*C CsyyuMFBCBKsH%r%   c                  ,   t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }d}d}t	        |||j
                  d	      \  }}d
|||f<   t        ||        t        j                  g dg dg dg dg dgt         j                        } t        j                  dt         j                        }t	        |||j
                  d	      \  }}d
|||f<   t        ||        y )Nr   )r   r   r   r   r   )r   r   r   r   r   r   r9   )rO   r   )r   r   Tr/  r   )r   r   r   r   r   Fr+  r0  s         r#   )test_rectangle_perimiter_clip_bottom_leftr5    s    xx	
 hh	H ((6
*CE
C CsyytLFBCBKsH%xx	
 hh	H ((6
*C CsyyuMFBCBKsH%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.   r3   r5   r7   r=   rA   rC   rK   rU   r^   re   rj   ro   rs   rz   r   r   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,  r1  r3  r5   r%   r#   <module>r?     s    O O  3 6     (	"5  	" 	"	"	""	"	"
'% 
""4"4
"#":"D3"D"D	34)nX"v1"h$$
'
A"("V'"T3
&&"R&$N$N3" K(BC/ D/( K(BC D!&H!&H(4 K(BC& D&B K(BC& D&B K(BC!& D!&H K(BC!& D!&H K(BC& D&D K(BC & D &r%   