
    ib~                         d dl Z d dlZd dlZd dl d dlmZ d Z G d de j                        Ze	dk(  r e j                          yy)    N)*)SurfaceSubclassc                     | dd \  }}}d|cxk  rdk  rn n||z  dz  ||z  dz  ||z  dz  fS |d|z
  d|z
  z  dz  z   |d|z
  d|z
  z  dz  z   |d|z
  d|z
  z  dz  z   fS )zReturn color c changed by intensity i

    For 0 <= i <= 127 the color is a shade, with 0 being black, 127 being the
    unaltered color.

    For 128 <= i <= 255 the color is a tint, with 255 being white, 128 the
    unaltered color.

    r             )cirgbs        c/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/gfxdraw_test.py	intensityr      s     !fGAq!A}}Q3Q3Q3?? 	
cAg#'"s**	cAg#'"s**	cAg#'"s**     c                       e Zd ZdZdZdZd Z ee      ZdZd Z	d Z
e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 Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'y$)%GfxdrawDefaultTestF)   @      )r   r   r   c                 T    t        dd      D cg c]  }t        | |       c}S c c}w )z>Return color palette that is various intensities of base_colorr      )ranger   )
base_colorr   s     r   make_palettezGfxdrawDefaultTest.make_palette$   s%     383-@Q	*a(@@@s   %)d   r   c                     |j                  |      }d||||j                         |j                         |j                         fz  }| j	                  |||       y Nz1%s != %s at %s, bitsize: %i, flags: %i, masks: %s)get_atget_bitsize	get_flags	get_masksassertEqualselfsurfposncolorscfail_msgs         r   check_atzGfxdrawDefaultTest.check_at.   s]    [[FNNNNJ
 
 	UH-r   c                     |j                  |      }d||||j                         |j                         |j                         fz  }| j	                  |||       y r   )r   r    r!   r"   assertNotEqualr$   s         r   check_not_atzGfxdrawDefaultTest.check_not_at:   s]    [[FNNNNJ
 
 	Bx0r   c                 j    t        j                          t         j                  j                  d       y )N)   r0   )pygameinitdisplayset_modeclss    r   
setUpClasszGfxdrawDefaultTest.setUpClassF   s     	'r   c                 ,    t        j                          y )N)r1   quitr5   s    r   tearDownClassz GfxdrawDefaultTest.tearDownClassL   s    r   c           	         t        j                         st        j                          t         j                  }| j                  }| j
                  }| j                  sx ||dd       ||t        d       ||t        d      g| _        | j                  d   j                  |       d}|D ])  \  }}| j                  j                   ||d||             + | j                  D ]  }|j                  | j                          y )Nr   r          ))   )         r   )rA   ) |       r   )rA   )rD   rC   rB   r   )r<   )r?   r@   rA      )r<   )rE   r?   r@   rA   )r<   )rA   r@   r?   rE   )r<   )r@   r?   rE   rA   )r<   )rB   rC   rD      )r<   )     >   r0   )r<   )rD   rC   rB   rF   )r<   )rI   rH   rG   r0   )r<   )rG     rD   r   )r<   )rD   rJ   rG   r   )   r         r   )rK   rN   rM   r   r   )r=   rO   )r=   )      ~ rN   rM   r   )r=   rL   )r=   )rM   rN   rP   r   )r=   )rN   rM   r   rP   )r=   )rP   rN   rM   r   )r=   )r   rM   rN   rP   )r=   )rM   rN   rP   r   )r1   get_initr2   Surfacedefault_sizedefault_palette
is_startedSRCALPHAsurfacesset_paletteappendfillbackground_color)r%   rR   sizepalettenonpalette_fmtsbitsizemasksr&   s           r   setUpzGfxdrawDefaultTest.setUpP   s      KKM..  && a#h+h+DM
 MM!((1O4 #2 G$$WT1gu%EFGMM 	-DIId++,	-r   c                 ,   t        dt        d      }|j                  t        j                  d             t        j                  d      }d\  }}t        j
                  j                  ||||       | j                  |j                  ||f      |       y)z3Ensure pygame.gfxdraw works on subclassed surfaces.)      r=   bluered)r0      N)	r   rV   rZ   r1   Colorgfxdrawpixelr#   r   )r%   surfaceexpected_colorxys        r    test_gfxdraw__subclassed_surfacez3GfxdrawDefaultTest.test_gfxdraw__subclassed_surface   sq    !(Hb9V\\&)*e,1WaN;A/@r   c                    | j                   }| j                  }| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  |dd|       t        dd      D ]H  }t        dd      D ]7  }|dk(  r|dk(  r| j                  |||f|       #| j                  |||f|       9 J  y)z(pixel(surface, x, y, color): return Nonerg   r0      N)
foreground_colorr[   rW   	unmap_rgbmap_rgbr1   ri   rj   r   r+   )r%   fgbgr&   fg_adjustedbg_adjustedrm   rn   s           r   
test_pixelzGfxdrawDefaultTest.test_pixel   s    """"MM 		AD..b)9:K..b)9:KNN  q!R01a[ Aq! AAAv!q&dQFK@dQFK@	AA			Ar   c                    | j                   }| j                  }d}d}d}||f||f||z
  dz  |fg}|dz
  |f|dz   |f||dz
  f||dz   f||dz
  f||dz   fg}| j                  D ]  }|j                  |j	                  |            }	|j                  |j	                  |            }
t
        j                  j                  |||||       |D ]  }| j                  |||	        |D ]  }| j                  |||
         y)z-hline(surface, x1, x2, y, color): return None
   P   2   rg   r0   N)	rr   r[   rW   rs   rt   r1   ri   hliner+   )r%   ru   rv   startxstopxrn   fg_test_pointsbg_test_pointsr&   rw   rx   r'   s               r   
test_hlinezGfxdrawDefaultTest.test_hline   s-   """"!1+qzUV^4I13MNaZOQYNQUOQUOAENAEN
 MM 	7D..b)9:K..b)9:KNN  vua<& 7dD+67& 7dD+67	7r   c                    | j                   }| j                  }d}d}d}||f||f|||z
  dz  fg}||dz
  f||dz   f|dz
  |f|dz   |f|dz
  |f|dz   |fg}| j                  D ]  }|j                  |j	                  |            }	|j                  |j	                  |            }
t
        j                  j                  |||||       |D ]  }| j                  |||	        |D ]  }| j                  |||
         y)z-vline(surface, x, y1, y2, color): return Noner}   r{   r|   rg   r0   N)	rr   r[   rW   rs   rt   r1   ri   vliner+   )r%   ru   rv   rm   startystopyr   r   r&   rw   rx   r'   s               r   
test_vlinezGfxdrawDefaultTest.test_vline   s-   """"f+5zA17L3MN
O	NUFOUFOUENUEN
 MM 	7D..b)9:K..b)9:KNN  q&%<& 7dD+67& 7dD+67	7r   c           
      
   | j                   }| j                  }t        j                  dddd      }t	        |      }|j
                  |j                  dz
  |j                  f|j                  |j                  dz
  f|j                  dz
  |j                  dz
  fg}|j                  dz
  |j                  dz
  f|j                  dz   |j                  dz   f|j                  |j                  dz
  f|j                  dz
  |j                  dz   f|j                  dz
  |j                  f|j                  dz   |j                  dz
  f|j                  |j                  f|j                  dz
  |j                  dz
  fg}| j                  D ]  }|j                  |j                  |            }|j                  |j                  |            }	t        j                  j                  |||       |D ]  }
| j                  ||
|        |D ]  }
| j                  ||
|	        |j!                  |       t        j                  j                  |||       |D ]  }
| j                  ||
|        |D ]  }
| j                  ||
|	         y)z,rectangle(surface, rect, color): return Noner{   rA   7   rI   r0   rg   N)rr   r[   r1   RecttupletopleftrighttopleftbottomrW   rs   rt   ri   	rectangler+   rZ   r%   ru   rv   rect
rect_tupler   r   r&   rw   rx   r'   s              r   test_rectanglez!GfxdrawDefaultTest.test_rectangle   s2   """"{{2r2r*4[
LLZZ!^TXX&YYa(ZZ!^T[[1_-	
 YY]DHHqL)YY]DHHqL)ZZA&ZZ!^TXX\*YY]DKK(YY]DKK!O,ZZ%ZZ!^T[[1_-	
 MM 	7D..b)9:K..b)9:KNN$$T44& 7dD+67& 7dD+67IIbMNN$$T:r:& 7dD+67& 7dD+67	7r   c           
      
   | j                   }| j                  }t        j                  dddd      }t	        |      }|j
                  |j                  dz   |j                  dz   f|j                  dz
  |j                  f|j                  dz
  |j                  dz   f|j                  |j                  dz
  f|j                  dz   |j                  dz
  f|j                  dz
  |j                  dz
  f|j                  dz
  |j                  dz
  fg}|j                  dz
  |j                  dz
  f|j                  |j                  dz
  f|j                  dz
  |j                  f|j                  |j                  fg}| j                  D ]  }|j                  |j                  |            }|j                  |j                  |            }	t        j                  j                  |||       |D ]  }
| j                  ||
|        |D ]  }
| j                  ||
|	        |j!                  |       t        j                  j                  |||       |D ]  }
| j                  ||
|        |D ]  }
| j                  ||
|	         y)z&box(surface, rect, color): return Noner{   rA   r   rI   r0   rg   N)rr   r[   r1   r   r   r   r   r   r   r   rW   rs   rt   ri   boxr+   rZ   r   s              r   test_boxzGfxdrawDefaultTest.test_box   s2   """"{{2r2r*4[
LLYY]DHHqL)ZZ!^TXX&ZZ!^TXX\*YYa(YY]DKK!O,ZZ!^T[[1_-ZZ!^T[[1_-	
 YY]DHHqL)ZZA&YY]DKK(ZZ%	
 MM 	7D..b)9:K..b)9:KNNtT2.& 7dD+67& 7dD+67IIbMNNtZ4& 7dD+67& 7dD+67	7r   c           	         | j                   }| j                  }d}d}d}d}||f||fg}|dz
  |f||dz
  f|dz
  |dz
  f|dz   |f||dz   f|dz   |dz   fg}| j                  D ]  }	|	j                  |	j	                  |            }
|	j                  |	j	                  |            }t
        j                  j                  |	|||||       |D ]  }| j                  |	||
        |D ]  }| j                  |	||         y)z1line(surface, x1, y1, x2, y2, color): return Noner{   rA   \   M   r0   N)	rr   r[   rW   rs   rt   r1   ri   liner+   )r%   ru   rv   x1y1x2y2r   r   r&   rw   rx   r'   s                r   	test_linezGfxdrawDefaultTest.test_line  s.   """"r(RH-!VRLaL!VR!V!VRLaL!VR!V
 MM 	7D..b)9:K..b)9:KNNb"b"b9& 7dD+67& 7dD+67	7r   c           
      ^   | j                   }| j                  }d}d}d}|||z
  f|||z   f||z
  |f||z   |fg}||f|||z
  dz   f|||z
  dz
  f|||z   dz   f|||z   dz
  f||z
  dz
  |f||z
  dz   |f||z   dz   |f||z   dz
  |fg	}| j                  D ]  }|j                  |j	                  |            }	|j                  |j	                  |            }
t
        j                  j                  |||||       |D ]  }| j                  |||	        |D ]  }| j                  |||
         y)z,circle(surface, x, y, r, color): return None-   (      r0   N)	rr   r[   rW   rs   rt   r1   ri   circler+   r%   ru   rv   rm   rn   r   r   r   r&   rw   rx   r'   s               r   test_circlezGfxdrawDefaultTest.test_circle0  sv   """"a!e*q!a%j1q5!*q1uajIFA	NA	NA	NA	NUQYNUQYNUQYNUQYN

 MM 	7D..b)9:K..b)9:KNN!!$1a4& 7dD+67& 7dD+67	7r   c           
      F   | j                   }| j                  }d}d}d}d}d}|||z   f||z   |dz   fg}||f|||z
  f||z
  |f|||z   dz   f|||z   dz
  f|dz
  ||z   f||z   dz   |f||z   dz
  |f||z   |fg	}	| j                  D ]  }
|
j                  |
j	                  |            }|
j                  |
j	                  |            }t
        j                  j                  |
||||||       |D ]  }| j                  |
||        |	D ]  }| j                  |
||         y)z5arc(surface, x, y, r, start, end, color): return Noner   r   r   r   Z   r0   N)	rr   r[   rW   rs   rt   r1   ri   arcr+   r%   ru   rv   rm   rn   r   startendr   r   r&   rw   rx   r'   s                 r   test_arczGfxdrawDefaultTest.test_arcL  sh   """"a!e*q1ua!en5FAJUAJA	NA	NUAENUQYNUQYNUAJ

 MM 	7D..b)9:K..b)9:KNNtQ1eS"=& 7dD+67& 7dD+67	7r   c           
      ^   | j                   }| j                  }d}d}d}|||z
  f|||z   f||z
  |f||z   |fg}||f|||z
  dz   f|||z
  dz
  f|||z   dz   f|||z   dz
  f||z
  dz
  |f||z
  dz   |f||z   dz   |f||z   dz
  |fg	}| j                  D ]  }|j                  |j	                  |            }	|j                  |j	                  |            }
t
        j                  j                  |||||       |D ]  }| j                  |||
        |D ]  }| j                  |||
         y)z.aacircle(surface, x, y, r, color): return Noner   r   r   r0   N)
rr   r[   rW   rs   rt   r1   ri   aacircler.   r+   r   s               r   test_aacirclez GfxdrawDefaultTest.test_aacirclej  sx   """"a!e*q!a%j1q5!*q1uajIFA	NA	NA	NA	NUQYNUQYNUQYNUQYN

 MM 	7D..b)9:K..b)9:KNN##D!Q26& ;!!$k:;& 7dD+67	7r   c           
      ^   | j                   }| j                  }d}d}d}|||z
  f|||z
  dz   f|||z   f|||z   dz
  f||z
  |f||z
  dz   |f||z   |f||z   dz
  |f||fg	}|||z
  dz
  f|||z   dz   f||z
  dz
  |f||z   dz   |fg}| j                  D ]  }|j                  |j	                  |            }	|j                  |j	                  |            }
t
        j                  j                  |||||       |D ]  }| j                  |||	        |D ]  }| j                  |||
         y)z3filled_circle(surface, x, y, r, color): return Noner   r   r   r0   N)	rr   r[   rW   rs   rt   r1   ri   filled_circler+   r   s               r   test_filled_circlez%GfxdrawDefaultTest.test_filled_circle  s}   """"AJA	NAJA	NUAJUQYNUAJUQYNF

 A	NA	NUQYNUQYN	
 MM 	7D..b)9:K..b)9:KNN((q!Q;& 7dD+67& 7dD+67	7r   c           
      d   | j                   }| j                  }d}d}d}d}|||z
  f|||z   f||z
  |f||z   |fg}||f|||z
  dz   f|||z
  dz
  f|||z   dz   f|||z   dz
  f||z
  dz
  |f||z
  dz   |f||z   dz   |f||z   dz
  |fg	}| j                  D ]  }	|	j                  |	j	                  |            }
|	j                  |	j	                  |            }t
        j                  j                  |	|||||       |D ]  }| j                  |	||
        |D ]  }| j                  |	||         y)z2ellipse(surface, x, y, rx, ry, color): return Noner   r   r   #   r0   N)	rr   r[   rW   rs   rt   r1   ri   ellipser+   r%   ru   rv   rm   rn   rxryr   r   r&   rw   rx   r'   s                r   test_ellipsezGfxdrawDefaultTest.test_ellipse  s}   """"a"f+1r6{QVQK!b&!MFB
OB
OB
OB
OVaZOVaZOVaZOVaZO

 MM 	7D..b)9:K..b)9:KNN""4Ar2r:& 7dD+67& 7dD+67	7r   c           
      d   | j                   }| j                  }d}d}d}d}|||z
  f|||z   f||z
  |f||z   |fg}||f|||z
  dz   f|||z
  dz
  f|||z   dz   f|||z   dz
  f||z
  dz
  |f||z
  dz   |f||z   dz   |f||z   dz
  |fg	}| j                  D ]  }	|	j                  |	j	                  |            }
|	j                  |	j	                  |            }t
        j                  j                  |	|||||       |D ]  }| j                  |	||        |D ]  }| j                  |	||         y)z4aaellipse(surface, x, y, rx, ry, color): return Noner   r   r   r   r0   N)
rr   r[   rW   rs   rt   r1   ri   	aaellipser.   r+   r   s                r   test_aaellipsez!GfxdrawDefaultTest.test_aaellipse  s   """"a"f+1r6{QVQK!b&!MFB
OB
OB
OB
OVaZOVaZOVaZOVaZO

 MM 	7D..b)9:K..b)9:KNN$$T1aR<& ;!!$k:;& 7dD+67	7r   c           
      d   | j                   }| j                  }d}d}d}d}|||z
  f|||z
  dz   f|||z   f|||z   dz
  f||z
  |f||z
  dz   |f||z   |f||z   dz
  |f||fg	}|||z
  dz
  f|||z   dz   f||z
  dz
  |f||z   dz   |fg}| j                  D ]  }	|	j                  |	j	                  |            }
|	j                  |	j	                  |            }t
        j                  j                  |	|||||       |D ]  }| j                  |	||
        |D ]  }| j                  |	||         y)z9filled_ellipse(surface, x, y, rx, ry, color): return Noner   r   r   r   r0   N)	rr   r[   rW   rs   rt   r1   ri   filled_ellipser+   r   s                r   test_filled_ellipsez&GfxdrawDefaultTest.test_filled_ellipse  s   """"BKB
OBKB
OVQKVaZOVQKVaZOF

 B
OB
OVaZOVaZO	
 MM 	7D..b)9:K..b)9:KNN))$1b"bA& 7dD+67& 7dD+67	7r   c           
      @   | j                   }| j                  }d}d}d}d}d}||f|dz   |f||dz   f||z   |fg}|dz
  |f||dz
  f|dz
  |dz
  f|dz   |dz   f||z   dz   |f||z   |dz
  f|||z   dz   fg}	| j                  D ]  }
|
j                  |
j	                  |            }|
j                  |
j	                  |            }t
        j                  j                  |
||||||       |D ]  }| j                  |
||        |	D ]  }| j                  |
||         y)z5pie(surface, x, y, r, start, end, color): return Noner   r   r   r   r   r0   N)	rr   r[   rW   rs   rt   r1   ri   pier+   r   s                 r   test_piezGfxdrawDefaultTest.test_pie  sb   """"a&1q5!*q!a%j1q5!*EUAJAJUAENUAENUQYNUAENA	N
 MM 	7D..b)9:K..b)9:KNNtQ1eS"=& 7dD+67& 7dD+67	7r   c                    | j                   }| j                  }d}d}d}d}d}d}||f||f||fg}	|dz
  |dz
  f|dz   |dz   f|dz
  |dz   f|dz   |dz   fg}
| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  ||||||||       |	D ]  }| j                  |||        |
D ]  }| j                  |||         y	)
z;trigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner{   rA   r   r      <   r0   r   N)	rr   r[   rW   rs   rt   r1   ri   trigonr+   r%   ru   rv   r   r   r   r   x3y3r   r   r&   rw   rx   r'   s                  r   test_trigonzGfxdrawDefaultTest.test_trigon  s6   """"r(RHr2h7!VR!V!VR!V!VR!V"Wb2g	
 MM 	7D..b)9:K..b)9:KNN!!$BBBC& 7dD+67& 7dD+67	7r   c                    | j                   }| j                  }d}d}d}d}d}d}||f||f||fg}	|dz
  |dz
  f|dz   |dz   f|dz
  |dz   f|dz   |dz   fg}
| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  ||||||||       |	D ]  }| j                  |||        |
D ]  }| j                  |||         y	)
z=aatrigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner{   rA   r   r   r   r   r0   r   N)
rr   r[   rW   rs   rt   r1   ri   aatrigonr.   r+   r   s                  r   test_aatrigonz GfxdrawDefaultTest.test_aatrigon9  s8   """"r(RHr2h7!VR!V!VR!V!VR!V"Wb2g	
 MM 	7D..b)9:K..b)9:KNN##D"b"b"b"E& ;!!$k:;& 7dD+67	7r   c                    t        j                  d      }t        j                  d      }d\  }}t        j                  ||fdd      }|j                  |       t        j                  ||fdd      }|j                  |       |dz
  d}}|dz
  dz  |dz
  }
}	d\  }}t         j                  j                  ||||	|
|||       t         j                  j                  ||||	|
|||       |j                          |j                          t        |      D ]N  }t        |      D ]>  }| j                  |j                  ||f      |j                  ||f      d	| d
| d       @ P |j                          |j                          y)a  Ensure aatrigon draws horizontal edges correctly.

        This test creates 2 surfaces and draws an aatrigon on each. The pixels
        on each surface are compared to ensure they are the same. The only
        difference between the 2 aatrigons is the order the points are drawn.
        The order of the points should have no impact on the final drawing.

        Related to issue #622.
        whiteblackrc   r{   r   r=   r0   rg   r   r   pos=(, )N)r1   rh   rR   rZ   ri   r   lockr   r#   r   unlock)r%   bg_color
line_colorwidthheightexpected_surfacerk   r   r   r   r   r   r   rm   rn   s                  r   #test_aatrigon__with_horizontal_edgez6GfxdrawDefaultTest.test_aatrigon__with_horizontal_edgeS  sx    <<(\\'*
v!>>5&/1bAh'..%!R8XAB!)!6A:BB 	 0"b"b"b*U 	RRRL 	u 	A6]   $++QF3NNAq6*A3b1%	 	!r   c                    | j                   }| j                  }d}d}d}d}d}d}||f||f||f|dz   |dz   fg}	|dz
  |dz
  f|dz   |dz   f|dz
  |dz   fg}
| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  ||||||||       |	D ]  }| j                  |||        |
D ]  }| j                  |||         y	)
zBfilled_trigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner{   rA   r   r   r   r   r   r0   N)	rr   r[   rW   rs   rt   r1   ri   filled_trigonr+   r   s                  r   test_filled_trigonz%GfxdrawDefaultTest.test_filled_trigon~  s/   """"r(RHr2hb"r'8JK626*R!VR!V,<rAvrAv>NOMM 	7D..b)9:K..b)9:KNN((r2r2r2rJ& 7dD+67& 7dD+67	7r   c                 B   | j                   }| j                  }g d}||d   d   |d   d   dz
  f|d   d   dz   |d   d   f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   |d   d   dz   fgz   }|d   d   dz
  |d   d   f|d   d   |d   d   dz   f|d   d   dz
  |d   d   dz   f|d   d   dz   |d   d   dz
  f|d   d   dz   |d   d   f|d   d   |d   d   dz   f|d   d   dz   |d   d   dz   f|d   d   dz
  |d   d   dz
  f|d   d   dz   |d   d   f|d   d   dz
  |d   d   dz   f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   dz
  |d   d   dz
  fg}| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  |||       |D ]  }	| j                  ||	|        |D ]  }	| j                  ||	|         y)z,polygon(surface, points, color): return None)r{   r|   )r{   rA   )r      )r   r|   r   r0   r   rg   N)	rr   r[   rW   rs   rt   r1   ri   polygonr+   
r%   ru   rv   pointsr   r   r&   rw   rx   r'   s
             r   test_polygonzGfxdrawDefaultTest.test_polygon  s   """"9AYq\6!9Q<!+,AYq\Avay|,AYq\Avay|,AYq\6!9Q<!+,AYq\6!9Q<!+,#
 
 AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|a/0AYq\Avay|,AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0
 MM 	7D..b)9:K..b)9:KNN""44& 7dD+67& 7dD+67	7r   c                    | j                   }| j                  }g d}|}|d   d   dz
  |d   d   f|d   d   |d   d   dz   f|d   d   dz
  |d   d   dz   f|d   d   dz   |d   d   dz
  f|d   d   dz   |d   d   f|d   d   |d   d   dz   f|d   d   dz   |d   d   dz   f|d   d   dz
  |d   d   dz
  f|d   d   dz   |d   d   f|d   d   dz
  |d   d   dz   f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   dz
  |d   d   dz
  fg}| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  |||       |D ]  }	| j                  ||	|        |D ]  }	| j                  ||	|        |D ]  }	| j                  ||	|         y)z.aapolygon(surface, points, color): return Noner   r   r0   r   rg   N)
rr   r[   rW   rs   rt   r1   ri   	aapolygonr+   r.   r   s
             r   test_aapolygonz!GfxdrawDefaultTest.test_aapolygon  sx   """"9AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|a/0AYq\Avay|,AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0
 MM 		7D..b)9:K..b)9:KNN$$T626& 7dD+67& ;!!$k:;& 7dD+67		7r   c                 B   t        j                  d      }t        j                  d      }d\  }}t        j                  ||fdd      }|j                  |       t        j                  ||fdd      }|j                  |       dd|dz
  f|dz
  |dz
  f|dz
  dff}t	        ||dd |dd z         D ]/  \  \  }}	\  }
}t         j
                  j                  |||	|
||       1 t         j
                  j                  |||       |j                          |j                          t        |      D ]N  }t        |      D ]>  }| j                  |j                  ||f      |j                  ||f      d	| d
| d       @ P |j                          |j                          y)a  Ensure aapolygon draws horizontal edges correctly.

        This test creates 2 surfaces and draws a polygon on each. The pixels
        on each surface are compared to ensure they are the same. The only
        difference between the 2 polygons is that one is drawn using
        aapolygon() and the other using multiple line() calls. They should
        produce the same final drawing.

        Related to issue #622.
        r   r   r   r   r=   r   r0   Nr   r   r   )r1   rh   rR   rZ   zipri   r   r   r   r   r#   r   r   )r%   r   r   r   r   r   rk   r   r   r   r   r   rm   rn   s                 r   $test_aapolygon__with_horizontal_edgez7GfxdrawDefaultTest.test_aapolygon__with_horizontal_edge  s    <<(\\'*
v!>>5&/1bAh'..%!R8X1fqj/EAIvz+BUQYPQNS #&ffQRj6"1:.E"F 	NHRhr2NN 0"b"b*M	N
 	  &*= 	u 	A6]   $++QF3NNAq6*A3b1%	 	!r   c                 B   | j                   }| j                  }g d}||d   d   |d   d   dz
  f|d   d   dz   |d   d   f|d   d   dz   |d   d   dz
  f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   dz
  |d   d   dz
  f|d   d   |d   d   dz   f|d   d   dz
  |d   d   dz   fgz   }|d   d   dz
  |d   d   f|d   d   |d   d   dz   f|d   d   dz
  |d   d   dz   f|d   d   dz   |d   d   f|d   d   |d   d   dz   f|d   d   dz   |d   d   dz   f|d   d   dz   |d   d   f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   dz
  |d   d   dz
  fg
}| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  |||       |D ]  }	| j                  ||	|        |D ]  }	| j                  ||	|         y)z3filled_polygon(surface, points, color): return Noner   r   r0   r   rg   N)	rr   r[   rW   rs   rt   r1   ri   filled_polygonr+   r   s
             r   test_filled_polygonz&GfxdrawDefaultTest.test_filled_polygon  s   """"9AYq\6!9Q<!+,AYq\Avay|,AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\6!9Q<!+,AYq\Avay|a/0	#
 	
 AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|,AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0
 MM 	7D..b)9:K..b)9:KNN))$;& 7dD+67& 7dD+67	7r   c                    | j                   \  }}| j                  }| j                  }d}d}t        j                  ||z   ||z   fdd      }|j                  |dd||f       g d}|d   d   dz   |d   d   dz   fg}	|d   d   dz
  |d   d   f|d   d   |d   d   dz   f|d   d   dz
  |d   d   dz   f|d   d   dz   |d   d   f|d   d   |d   d   dz   f|d   d   dz   |d   d   dz   f|d   d   dz   |d   d   f|d   d   dz
  |d   d   f|d   d   |d   d   dz
  f|d   d   dz
  |d   d   dz
  fg
}
| j                  dd	 D ]  }|j                  |j                  |            }|j                  |j                  |            }t        j                  j                  |||| |        |	D ]  }| j                  |||        |
D ]  }| j                  |||         t        j                  | j                   t        d
      }| j                  t        t        j                  j                  | j                  d   ||dd       y	)z?textured_polygon(surface, points, texture, tx, ty): return Noner   rK   r   r0   r   r   r   rg   Nr=   )rS   rr   r[   r1   rR   rZ   rW   rs   rt   ri   textured_polygonr+   rV   assertRaises
ValueError)r%   whru   rv   txtytexturer   r   r   r&   rw   rx   r'   s                  r   test_textured_polygonz(GfxdrawDefaultTest.test_textured_polygon'  s     1""""..!b&!b&!11b9R!Q1&9 "!9Q<",fQilR.?@AAYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0AYq\Avay|,AYq\Avay|,AYq\6!9Q<!+,AYq\Avay|a/0
 MM!"% 	7D..b)9:K..b)9:KNN++D&'B3L& 7dD+67& 7dD+67	7 ..!2!2HbANN++MM!	
r   c                 2   | j                   }| j                  }g d}|d   |d   g}|d   d   dz
  |d   d   f|d   d   dz   |d   d   f|d   d   |d   d   dz   f|d   d   |d   d   dz
  fg}| j                  D ]  }|j                  |j	                  |            }|j                  |j	                  |            }t
        j                  j                  ||d|       |D ]  }	| j                  ||	|        |D ]  }	| j                  ||	|         y)z2bezier(surface, points, steps, color): return None))r{   r}   )r   rA   )r   r|   )r   r   r   r   r0   rg   r   N)	rr   r[   rW   rs   rt   r1   ri   bezierr+   r   s
             r   test_bezierzGfxdrawDefaultTest.test_bezierU  sC   """"9 )VAY/AYq\Avay|,AYq\Avay|,AYq\6!9Q<!+,AYq\6!9Q<!+,	
 MM 	7D..b)9:K..b)9:KNN!!$B7& 7dD+67& 7dD+67	7r   N)(__name__
__module____qualname__rU   rr   r[   r   rT   rS   r+   r.   classmethodr7   r:   ra   ro   ry   r   r   r   r   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    J#&A ##34OL
.
1 ( (
  .-`	AA7272#7J#7J74787<787B7:7: 7D787474)"V7*"7H7@*"X"7H,
\7r   r   __main__)unittestr1   pygame.gfxdrawpygame.localspygame.tests.test_utilsr   r   TestCaser   r  mainr	   r   r   <module>r     sH        3,J7** J7Z zHMMO r   