
    &hb~                         S SK r S SKrS SKrS SK7  S SKJr  S r " S S\ R                  5      r\	S:X  a  \ R                  " 5         gg)    N)*)SurfaceSubclassc                     U SS u  p#nSUs=::  a  S::  a  O  OX!-  S-  X1-  S-  XA-  S-  4$ USU-
  SU-
  -  S-  -   USU-
  SU-
  -  S-  -   USU-
  SU-
  -  S-  -   4$ )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        Q/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/gfxdraw_test.py	intensityr      s     !fGA!A}}333?? 	
cAg#'"s**	cAg#'"s**	cAg#'"s**     c                      \ rS rSrSrSrSrS r\" \5      rSr	S r
S r\S	 5       r\S
 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S  r$S! r%S" r&S# r'S$ r(S%r)g&)'GfxdrawDefaultTest   F)   @      )r   r   r   c                 X    [        SS5       Vs/ s H  n[        X5      PM     sn$ s  snf )z>Return color palette that is various intensities of base_colorr      )ranger   )
base_colorr   s     r   make_paletteGfxdrawDefaultTest.make_palette$   s'     383-@-Q	*(-@@@s   ')d   r   c                     UR                  U5      nSUUUUR                  5       UR                  5       UR                  5       4-  nU R	                  XCU5        g 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_atGfxdrawDefaultTest.check_at.   s[    [[FNNNNJ
 
 	H-r   c                     UR                  U5      nSUUUUR                  5       UR                  5       UR                  5       4-  nU R	                  XCU5        g r    )r!   r"   r#   r$   assertNotEqualr&   s         r   check_not_atGfxdrawDefaultTest.check_not_at:   s[    [[FNNNNJ
 
 	Bx0r   c                 l    [         R                  " 5         [         R                  R                  S5        g )N)   r4   )pygameinitdisplayset_modeclss    r   
setUpClassGfxdrawDefaultTest.setUpClassF   s     	'r   c                 .    [         R                  " 5         g )N)r5   quitr9   s    r   tearDownClass GfxdrawDefaultTest.tearDownClassL   s    r   c           	          [         R                  " 5       (       d  [         R                  " 5         [         R                  nU R                  nU R
                  nU R                  (       dx  U" USS5      U" U[        S5      U" U[        S5      /U l        U R                  S   R                  U5        SnU H(  u  pVU R                  R                  U" USXV5      5        M*     U R                   H  nUR                  U R                  5        M      g )Nr   r          ))   )         r   )rG   ) |       r   )rG   )rJ   rI   rH   r   )rB   )rE   rF   rG      )rB   )rK   rE   rF   rG   )rB   )rG   rF   rE   rK   )rB   )rF   rE   rK   rG   )rB   )rH   rI   rJ      )rB   )     >   r4   )rB   )rJ   rI   rH   rL   )rB   )rO   rN   rM   r4   )rB   )rM     rJ   r   )rB   )rJ   rP   rM   r   )   r         r   )rQ   rT   rS   r   r   )rC   rU   )rC   )      ~ rT   rS   r   )rC   rR   )rC   )rS   rT   rV   r   )rC   )rT   rS   r   rV   )rC   )rV   rT   rS   r   )rC   )r   rS   rT   rV   )rC   )rS   rT   rV   r   )r5   get_initr6   Surfacedefault_sizedefault_palette
is_startedSRCALPHAsurfacesset_paletteappendfillbackground_color)r'   rX   sizepalettenonpalette_fmtsbitsizemasksr(   s           r   setUpGfxdrawDefaultTest.setUpP   s       KKM..  && a#h+h+DM
 MM!((1O4 #2$$WT1g%EF #2MMDIId++, "r   c                 (   [        S[        S5      nUR                  [        R                  " S5      5        [        R                  " S5      nSu  p4[        R
                  R                  XXB5        U R                  UR                  X445      U5        g)z3Ensure pygame.gfxdraw works on subclassed surfaces.)      rC   bluered)r4      N)	r   r\   r`   r5   Colorgfxdrawpixelr%   r!   )r'   surfaceexpected_colorxys        r    test_gfxdraw__subclassed_surface3GfxdrawDefaultTest.test_gfxdraw__subclassed_surface   si    !(Hb9V\\&)*e,W;/@r   c                    U R                   nU R                  nU R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  USSU5        [        SS5       HL  n[        SS5       H9  nUS:X  a  US:X  a  U R                  X6U4U5        M%  U R                  X6U4U5        M;     MN     M     g)z(pixel(surface, x, y, color): return Nonern   r4      N)
foreground_colorra   r]   	unmap_rgbmap_rgbr5   rp   rq   r   r-   )r'   fgbgr(   fg_adjustedbg_adjustedrt   ru   s           r   
test_pixelGfxdrawDefaultTest.test_pixel   s    """"MMD..b)9:K..b)9:KNN  q!R01a[q!AAv!q&dFK@dFK@	 % !	 "r   c                    U R                   nU R                  nSnSnSnX54XE4XC-
  S-  U4/nUS-
  U4US-   U4X5S-
  4X5S-   4XES-
  4XES-   4/nU R                   H  nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  R                  XXEU5        U H  nU R                  XU	5        M     U H  nU R                  XU
5        M     M     g)z-hline(surface, x1, x2, y, color): return None
   P   2   rn   r4   N)	rz   ra   r]   r{   r|   r5   rp   hliner-   )r'   r}   r~   startxstopxru   fg_test_pointsbg_test_pointsr(   r   r   r)   s               r   
test_hlineGfxdrawDefaultTest.test_hline   s   """"!+zU^4I13MNaZOQYNUOUOENEN
 MMD..b)9:K..b)9:KNN  u<&d+6 '&d+6 ' "r   c                    U R                   nU R                  nSnSnSnX44X54X5U-
  S-  4/nX4S-
  4X5S-   4US-
  U4US-   U4US-
  U4US-   U4/nU R                   H  nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  R                  XXEU5        U H  nU R                  XU	5        M     U H  nU R                  XU
5        M     M     g)z-vline(surface, x, y1, y2, color): return Noner   r   r   rn   r4   N)	rz   ra   r]   r{   r|   r5   rp   vliner-   )r'   r}   r~   rt   startystopyr   r   r(   r   r   r)   s               r   
test_vlineGfxdrawDefaultTest.test_vline   s   """"+zA17L3MN
O	NUFOUFOUENUEN
 MMD..b)9:K..b)9:KNN  &<&d+6 '&d+6 ' "r   c           
         U R                   nU R                  n[        R                  " SSSS5      n[	        U5      nUR
                  UR                  S-
  UR                  4UR                  UR                  S-
  4UR                  S-
  UR                  S-
  4/nUR                  S-
  UR                  S-
  4UR                  S-   UR                  S-   4UR                  UR                  S-
  4UR                  S-
  UR                  S-   4UR                  S-
  UR                  4UR                  S-   UR                  S-
  4UR                  UR                  4UR                  S-
  UR                  S-
  4/nU R                   GH  nUR                  UR                  U5      5      nUR                  UR                  U5      5      n	[        R                  R                  XsU5        U H  n
U R                  XzU5        M     U H  n
U R                  XzU	5        M     UR!                  U5        [        R                  R                  XtU5        U H  n
U R                  XzU5        M     U H  n
U R                  XzU	5        M     GM     g)z,rectangle(surface, rect, color): return Noner   rG   7   rO   r4   rn   N)rz   ra   r5   Recttupletopleftrighttopleftbottomr]   r{   r|   rp   	rectangler-   r`   r'   r}   r~   rect
rect_tupler   r   r(   r   r   r)   s              r   test_rectangle!GfxdrawDefaultTest.test_rectangle   s   """"{{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_-	
 MMD..b)9:K..b)9:KNN$$T4&d+6 '&d+6 'IIbMNN$$Tr:&d+6 '&d+6 ' "r   c           
         U R                   nU R                  n[        R                  " SSSS5      n[	        U5      nUR
                  UR                  S-   UR                  S-   4UR                  S-
  UR                  4UR                  S-
  UR                  S-   4UR                  UR                  S-
  4UR                  S-   UR                  S-
  4UR                  S-
  UR                  S-
  4UR                  S-
  UR                  S-
  4/nUR                  S-
  UR                  S-
  4UR                  UR                  S-
  4UR                  S-
  UR                  4UR                  UR                  4/nU R                   GH  nUR                  UR                  U5      5      nUR                  UR                  U5      5      n	[        R                  R                  XsU5        U H  n
U R                  XzU5        M     U H  n
U R                  XzU	5        M     UR!                  U5        [        R                  R                  XtU5        U H  n
U R                  XzU5        M     U H  n
U R                  XzU	5        M     GM     g)z&box(surface, rect, color): return Noner   rG   r   rO   r4   rn   N)rz   ra   r5   r   r   r   r   r   r   r   r]   r{   r|   rp   boxr-   r`   r   s              r   test_boxGfxdrawDefaultTest.test_box   s   """"{{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%	
 MMD..b)9:K..b)9:KNNt2.&d+6 '&d+6 'IIbMNNt4&d+6 '&d+6 ' "r   c           	         U R                   nU R                  nSnSnSnSnX44XV4/nUS-
  U4X4S-
  4US-
  US-
  4US-   U4XVS-   4US-   US-   4/nU R                   H  n	U	R                  U	R	                  U5      5      n
U	R                  U	R	                  U5      5      n[
        R                  R                  XXEXa5        U H  nU R                  XU
5        M     U H  nU R                  XU5        M     M     g)z1line(surface, x1, y1, x2, y2, color): return Noner   rG   \   M   r4   N)	rz   ra   r]   r{   r|   r5   rp   liner-   )r'   r}   r~   x1y1x2y2r   r   r(   r   r   r)   s                r   	test_lineGfxdrawDefaultTest.test_line  s   """"(RH-!VRLaL!VR!V!VRLaL!VR!V
 MMD..b)9:K..b)9:KNN""9&d+6 '&d+6 ' "r   c           
      H   U R                   nU R                  nSnSnSnX4U-
  4X4U-   4X5-
  U4X5-   U4/nX44X4U-
  S-   4X4U-
  S-
  4X4U-   S-   4X4U-   S-
  4X5-
  S-
  U4X5-
  S-   U4X5-   S-   U4X5-   S-
  U4/	nU R                   H  nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  R                  XXEU5        U H  nU R                  XU	5        M     U H  nU R                  XU
5        M     M     g)z,circle(surface, x, y, r, color): return None-   (   r   r4   N)	rz   ra   r]   r{   r|   r5   rp   circler-   r'   r}   r~   rt   ru   r   r   r   r(   r   r   r)   s               r   test_circleGfxdrawDefaultTest.test_circle0  sE   """"!e*qa%j15!*quajIFA	NA	NA	NA	NUQYNUQYNUQYNUQYN

 MMD..b)9:K..b)9:KNN!!$14&d+6 '&d+6 ' "r   c           
      2   U R                   nU R                  nSnSnSnSnSnX4U-   4X5-   US-   4/nX44X4U-
  4X5-
  U4X4U-   S-   4X4U-   S-
  4US-
  XE-   4X5-   S-   U4X5-   S-
  U4X5-   U4/	n	U R                   H  n
U
R                  U
R	                  U5      5      nU
R                  U
R	                  U5      5      n[
        R                  R                  XXEXgU5        U H  nU R                  XU5        M     U	 H  nU R                  XU5        M     M     g)z5arc(surface, x, y, r, start, end, color): return Noner   r   r   r   Z   r4   N)	rz   ra   r]   r{   r|   r5   rp   arcr-   r'   r}   r~   rt   ru   r   startendr   r   r(   r   r   r)   s                 r   test_arcGfxdrawDefaultTest.test_arcL  s9   """"!e*qua!en5FAJUAJA	NA	NUAENUQYNUQYNUAJ

 MMD..b)9:K..b)9:KNNte"=&d+6 '&d+6 ' "r   c           
      H   U R                   nU R                  nSnSnSnX4U-
  4X4U-   4X5-
  U4X5-   U4/nX44X4U-
  S-   4X4U-
  S-
  4X4U-   S-   4X4U-   S-
  4X5-
  S-
  U4X5-
  S-   U4X5-   S-   U4X5-   S-
  U4/	nU R                   H  nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  R                  XXEU5        U H  nU R                  XU
5        M     U H  nU R                  XU
5        M     M     g)z.aacircle(surface, x, y, r, color): return Noner   r   r   r4   N)
rz   ra   r]   r{   r|   r5   rp   aacircler1   r-   r   s               r   test_aacircle GfxdrawDefaultTest.test_aacirclej  sG   """"!e*qa%j15!*quajIFA	NA	NA	NA	NUQYNUQYNUQYNUQYN

 MMD..b)9:K..b)9:KNN##DQ26&!!$k: '&d+6 ' "r   c           
      H   U R                   nU R                  nSnSnSnX4U-
  4X4U-
  S-   4X4U-   4X4U-   S-
  4X5-
  U4X5-
  S-   U4X5-   U4X5-   S-
  U4X44/	nX4U-
  S-
  4X4U-   S-   4X5-
  S-
  U4X5-   S-   U4/nU R                   H  nUR                  UR	                  U5      5      n	UR                  UR	                  U5      5      n
[
        R                  R                  XXEU5        U H  nU R                  XU	5        M     U H  nU R                  XU
5        M     M     g)z3filled_circle(surface, x, y, r, color): return Noner   r   r   r4   N)	rz   ra   r]   r{   r|   r5   rp   filled_circler-   r   s               r   test_filled_circle%GfxdrawDefaultTest.test_filled_circle  sL   """"AJA	NAJA	NUAJUQYNUAJUQYNF

 A	NA	NUQYNUQYN	
 MMD..b)9:K..b)9:KNN((!;&d+6 '&d+6 ' "r   c           
      L   U R                   nU R                  nSnSnSnSnX4U-
  4X4U-   4X5-
  U4X5-   U4/nX44X4U-
  S-   4X4U-
  S-
  4X4U-   S-   4X4U-   S-
  4X5-
  S-
  U4X5-
  S-   U4X5-   S-   U4X5-   S-
  U4/	nU R                   H  n	U	R                  U	R	                  U5      5      n
U	R                  U	R	                  U5      5      n[
        R                  R                  XXEXa5        U H  nU R                  XU
5        M     U H  nU R                  XU5        M     M     g)z2ellipse(surface, x, y, rx, ry, color): return Noner   r   r   #   r4   N)	rz   ra   r]   r{   r|   r5   rp   ellipser-   r'   r}   r~   rt   ru   rxryr   r   r(   r   r   r)   s                r   test_ellipseGfxdrawDefaultTest.test_ellipse  sJ   """""f+r6{QVQK!&!MFB
OB
OB
OB
OVaZOVaZOVaZOVaZO

 MMD..b)9:K..b)9:KNN""4A2:&d+6 '&d+6 ' "r   c           
      L   U R                   nU R                  nSnSnSnSnX4U-
  4X4U-   4X5-
  U4X5-   U4/nX44X4U-
  S-   4X4U-
  S-
  4X4U-   S-   4X4U-   S-
  4X5-
  S-
  U4X5-
  S-   U4X5-   S-   U4X5-   S-
  U4/	nU R                   H  n	U	R                  U	R	                  U5      5      n
U	R                  U	R	                  U5      5      n[
        R                  R                  XXEXa5        U H  nU R                  XU5        M     U H  nU R                  XU5        M     M     g)z4aaellipse(surface, x, y, rx, ry, color): return Noner   r   r   r   r4   N)
rz   ra   r]   r{   r|   r5   rp   	aaellipser1   r-   r   s                r   test_aaellipse!GfxdrawDefaultTest.test_aaellipse  sL   """""f+r6{QVQK!&!MFB
OB
OB
OB
OVaZOVaZOVaZOVaZO

 MMD..b)9:K..b)9:KNN$$TaR<&!!$k: '&d+6 ' "r   c           
      L   U R                   nU R                  nSnSnSnSnX4U-
  4X4U-
  S-   4X4U-   4X4U-   S-
  4X5-
  U4X5-
  S-   U4X5-   U4X5-   S-
  U4X44/	nX4U-
  S-
  4X4U-   S-   4X5-
  S-
  U4X5-   S-   U4/nU R                   H  n	U	R                  U	R	                  U5      5      n
U	R                  U	R	                  U5      5      n[
        R                  R                  XXEXa5        U H  nU R                  XU
5        M     U H  nU R                  XU5        M     M     g)z9filled_ellipse(surface, x, y, rx, ry, color): return Noner   r   r   r   r4   N)	rz   ra   r]   r{   r|   r5   rp   filled_ellipser-   r   s                r   test_filled_ellipse&GfxdrawDefaultTest.test_filled_ellipse  sQ   """"BKB
OBKB
OVQKVaZOVQKVaZOF

 B
OB
OVaZOVaZO	
 MMD..b)9:K..b)9:KNN))$1"A&d+6 '&d+6 ' "r   c           
      4   U R                   nU R                  nSnSnSnSnSnX44US-   U4X4S-   4X5-   U4/nUS-
  U4X4S-
  4US-
  US-
  4US-   US-   4X5-   S-   U4X5-   US-
  4X4U-   S-   4/n	U R                   H  n
U
R                  U
R	                  U5      5      nU
R                  U
R	                  U5      5      n[
        R                  R                  XXEXgU5        U H  nU R                  XU5        M     U	 H  nU R                  XU5        M     M     g)z5pie(surface, x, y, r, start, end, color): return Noner   r   r   r   r   r4   N)	rz   ra   r]   r{   r|   r5   rp   pier-   r   s                 r   test_pieGfxdrawDefaultTest.test_pie  s;   """"&1q5!*qa%j15!*EUAJAJUAENUAENUQYNUAENA	N
 MMD..b)9:K..b)9:KNNte"=&d+6 '&d+6 ' "r   c                    U R                   nU R                  nSnSnSnSnSnSnX44XV4Xx4/n	US-
  US-
  4US-   US-   4US-
  US-   4US-   US-   4/n
U R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XXEXgX5        U	 H  nU R                  XU5        M     U
 H  nU R                  XU5        M     M     g	)
z;trigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner   rG   r   r      <   r4   r   N)	rz   ra   r]   r{   r|   r5   rp   trigonr-   r'   r}   r~   r   r   r   r   x3y3r   r   r(   r   r   r)   s                  r   test_trigonGfxdrawDefaultTest.test_trigon  s   """"(RHrh7!VR!V!VR!V!VR!V"Wb2g	
 MMD..b)9:K..b)9:KNN!!$BBBC&d+6 '&d+6 ' "r   c                    U R                   nU R                  nSnSnSnSnSnSnX44XV4Xx4/n	US-
  US-
  4US-   US-   4US-
  US-   4US-   US-   4/n
U R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XXEXgX5        U	 H  nU R                  XU5        M     U
 H  nU R                  XU5        M     M     g	)
z=aatrigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner   rG   r   r   r   r   r4   r   N)
rz   ra   r]   r{   r|   r5   rp   aatrigonr1   r-   r   s                  r   test_aatrigon GfxdrawDefaultTest.test_aatrigon9  s   """"(RHrh7!VR!V!VR!V!VR!V"Wb2g	
 MMD..b)9:K..b)9:KNN##DbbbE&!!$k: '&d+6 ' "r   c                    [         R                  " S5      n[         R                  " S5      nSu  p4[         R                  " X44SS5      nUR                  U5        [         R                  " X44SS5      nUR                  U5        US-
  SpUS-
  S-  US-
  pSu  p[         R                  R                  XWXXX5        [         R                  R                  XkXXX5        UR                  5         UR                  5         [        U5       HO  n[        U5       H=  nU R                  UR                  X45      UR                  X45      S	U S
U S35        M?     MQ     UR                  5         UR                  5         g)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rj   r   r   rC   r4   rn   r   r   pos=(, )N)r5   ro   rX   r`   rp   r   lockr   r%   r!   unlock)r'   bg_color
line_colorwidthheightexpected_surfacerr   r   r   r   r   r   r   rt   ru   s                  r   #test_aatrigon__with_horizontal_edge6GfxdrawDefaultTest.test_aatrigon__with_horizontal_edgeS  sN    <<(\\'*
!>>5/1bAh'..%!R8XAB!)!6A:B 	 0bbbU 	RRRL 	uA6]  $++QF3NNA6*A3b1% #  	!r   c                    U R                   nU R                  nSnSnSnSnSnSnX44XV4Xx4US-   US-   4/n	US-
  US-
  4US-   US-   4US-
  US-   4/n
U R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XXEXgX5        U	 H  nU R                  XU5        M     U
 H  nU R                  XU5        M     M     g	)
zBfilled_trigon(surface, x1, y1, x2, y2, x3, y3, color): return Noner   rG   r   r   r   r   r   r4   N)	rz   ra   r]   r{   r|   r5   rp   filled_trigonr-   r   s                  r   test_filled_trigon%GfxdrawDefaultTest.test_filled_trigon~  s   """"(RHrhb"r'8JK626*R!VR!V,<rAvrAv>NOMMD..b)9:K..b)9:KNN((222J&d+6 '&d+6 ' "r   c                 H   U R                   nU R                  n/ SQnUUS   S   US   S   S-
  4US   S   S-   US   S   4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   US   S   S-   4/-   nUS   S   S-
  US   S   4US   S   US   S   S-   4US   S   S-
  US   S   S-   4US   S   S-   US   S   S-
  4US   S   S-   US   S   4US   S   US   S   S-   4US   S   S-   US   S   S-   4US   S   S-
  US   S   S-
  4US   S   S-   US   S   4US   S   S-
  US   S   S-   4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   S-
  US   S   S-
  4/nU R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XcU5        U H  n	U R                  XiU5        M     U H  n	U R                  XiU5        M     M     g)z,polygon(surface, points, color): return None)r   r   )r   rG   )r      )r   r   r   r4   r   rn   N)	rz   ra   r]   r{   r|   r5   rp   polygonr-   
r'   r}   r~   pointsr   r   r(   r   r   r)   s
             r   test_polygon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
 MMD..b)9:K..b)9:KNN""44&d+6 '&d+6 ' "r   c                    U R                   nU R                  n/ SQnUnUS   S   S-
  US   S   4US   S   US   S   S-   4US   S   S-
  US   S   S-   4US   S   S-   US   S   S-
  4US   S   S-   US   S   4US   S   US   S   S-   4US   S   S-   US   S   S-   4US   S   S-
  US   S   S-
  4US   S   S-   US   S   4US   S   S-
  US   S   S-   4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   S-
  US   S   S-
  4/nU R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XcU5        U H  n	U R                  XiU5        M     U H  n	U R                  XiU5        M     U H  n	U R                  XiU5        M     M     g)z.aapolygon(surface, points, color): return Noner   r   r4   r   rn   N)
rz   ra   r]   r{   r|   r5   rp   	aapolygonr-   r1   r  s
             r   test_aapolygon!GfxdrawDefaultTest.test_aapolygon  s\   """"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
 MMD..b)9:K..b)9:KNN$$T26&d+6 '&!!$k: '&d+6 ' "r   c                 >   [         R                  " S5      n[         R                  " S5      nSu  p4[         R                  " X44SS5      nUR                  U5        [         R                  " X44SS5      nUR                  U5        SSUS-
  4US-
  US-
  4US-
  S44n[	        XwSS USS -   5       H+  u  u  pu  p[         R
                  R                  XXXX5        M-     [         R
                  R                  XgU5        UR                  5         UR                  5         [        U5       HO  n[        U5       H=  nU R                  UR                  X45      UR                  X45      S	U S
U S35        M?     MQ     UR                  5         UR                  5         g)at  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   rC   r   r4   Nr   r   r   )r5   ro   rX   r`   ziprp   r   r  r   r   r%   r!   r   )r'   r   r   r   r   r   rr   r  r   r   r   r   rt   ru   s                 r   $test_aapolygon__with_horizontal_edge7GfxdrawDefaultTest.test_aapolygon__with_horizontal_edge  sx    <<(\\'*
!>>5/1bAh'..%!R8X1fqj/EAIvz+BUQYPQNS #&fQRj6"1:.E"FHRhrNN 0bbM #G
 	  *= 	uA6]  $++QF3NNA6*A3b1% #  	!r   c                 H   U R                   nU R                  n/ SQnUUS   S   US   S   S-
  4US   S   S-   US   S   4US   S   S-   US   S   S-
  4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   S-
  US   S   S-
  4US   S   US   S   S-   4US   S   S-
  US   S   S-   4/-   nUS   S   S-
  US   S   4US   S   US   S   S-   4US   S   S-
  US   S   S-   4US   S   S-   US   S   4US   S   US   S   S-   4US   S   S-   US   S   S-   4US   S   S-   US   S   4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   S-
  US   S   S-
  4/
nU R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XcU5        U H  n	U R                  XiU5        M     U H  n	U R                  XiU5        M     M     g)z3filled_polygon(surface, points, color): return Noner   r   r4   r   rn   N)	rz   ra   r]   r{   r|   r5   rp   filled_polygonr-   r  s
             r   test_filled_polygon&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
 MMD..b)9:K..b)9:KNN))$;&d+6 '&d+6 ' "r   c                    U R                   u  pU R                  nU R                  nSnSn[        R                  " X-   X&-   4SS5      nUR                  USSX45        / SQnUS   S   S-   US   S   S-   4/n	US   S   S-
  US   S   4US   S   US   S   S-   4US   S   S-
  US   S   S-   4US   S   S-   US   S   4US   S   US   S   S-   4US   S   S-   US   S   S-   4US   S   S-   US   S   4US   S   S-
  US   S   4US   S   US   S   S-
  4US   S   S-
  US   S   S-
  4/
n
U R                  SS	  H  nUR                  UR                  U5      5      nUR                  UR                  U5      5      n[        R                  R                  XXu* U* 5        U	 H  nU R                  XU5        M     U
 H  nU R                  XU5        M     M     [        R                  " U R                   [        S
5      nU R                  [        [        R                  R                  U R                  S   UUSS5        g	)z?textured_polygon(surface, points, texture, tx, ty): return Noner   rQ   r   r4   r   r   r   rn   NrC   )rY   rz   ra   r5   rX   r`   r]   r{   r|   rp   textured_polygonr-   r\   assertRaises
ValueError)r'   whr}   r~   txtytexturer  r   r   r(   r   r   r)   s                  r   test_textured_polygon(GfxdrawDefaultTest.test_textured_polygon'  s     """"..!&!&!11b9R!Q&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!"%D..b)9:K..b)9:KNN++D'3L&d+6 '&d+6 ' & ..!2!2HbANN++MM!	
r   c                 8   U R                   nU R                  n/ SQnUS   US   /nUS   S   S-
  US   S   4US   S   S-   US   S   4US   S   US   S   S-   4US   S   US   S   S-
  4/nU R                   H  nUR                  UR	                  U5      5      nUR                  UR	                  U5      5      n[
        R                  R                  XcSU5        U H  n	U R                  XiU5        M     U H  n	U R                  XiU5        M     M     g)z2bezier(surface, points, steps, color): return None))r   r   )r   rG   )r   r   )r   r   r   r   r4   rn   r   N)	rz   ra   r]   r{   r|   r5   rp   bezierr-   r  s
             r   test_bezierGfxdrawDefaultTest.test_bezierU  s.   """"9 )VAY/AYq\Avay|,AYq\Avay|,AYq\6!9Q<!+,AYq\6!9Q<!+,	
 MMD..b)9:K..b)9:KNN!!$B7&d+6 '&d+6 ' "r   )r]   N)*__name__
__module____qualname____firstlineno__r[   rz   ra   r   rZ   rY   r-   r1   classmethodr;   r?   rg   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  __static_attributes__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__)unittestr5   pygame.gfxdrawpygame.localspygame.tests.test_utilsr   r   TestCaser   r!  mainr	   r   r   <module>r.     sF        3,J7** J7Z zMMO r   