
    _ed                        d Z ddl ddlZd Zeeeeeeeeeee	e	e
e
eeeeeeeeeeeeeeeeiZd Zd Zd)dZeeeeeeegZee e!e"e#gZ$e%e&e'gZ(e%e)gZ*g e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=e>e?e@eAeBeCeDeEeFeGeHeIeJZK eLeFefeCe$fe8e$fe7e(feGe*fg      ZMd ZNe+d	d
dfe2dddfe9dddfe,dddfe-dddfe.dddfe0dddfe/dddfe3dddfeEdddfeDdddfeAd	d
dfeC eNe      ddfeC eNe       d dfeC eNe!      d!dfeC eNe"      d"dfeC eNe#      d#dfeF eNe      d$d%feF eNe      d&d%feF eNe      d'd%fgZOeOfd(ZPy)*z"Debug utilities for EGL operations    )*Nc                 .    t         j                  | |       S )z8Returns error constant if known, otherwise returns value)KNOWN_ERRORSget)values    2/usr/lib/python3/dist-packages/OpenGL/EGL/debug.pyeglErrorNamer	      s    E5))    c                    t        |d      5 }| j                  \  }}}|j                  d       |j                  d       |j                  d||fz         |j                  d       t        |dz
  dd      D ]L  }t        |      D ]+  }| ||f   }d|d	   |d   |d
   fz  }	|j                  |	       - |j                  d       N 	 ddd       y# 1 sw Y   yxY w)zWrite height * width * 3-component buffer as ppm to filename
    
    This lets us write a simple image format without
    using any libraries that can be viewed on most
    linux workstations.
    wzP3
z%# ascii ppm file created by pyopengl
z%i %i
z255
   z %3d %3d %3dr      
N)openshapewriterange)
buffilenamefhr   cyxpixells
             r   	write_ppmr      s     
h	 II	Aq		89		QF"#	q1ub"% 	A1X AqD	"eAha%(%CC
 GGDM	  s   B9CCc                 $   i }t               }t        D ]z  }t        | |||      st        j	                  d|       (|t
        v r0i }t
        |   D ]!  }|j                  |z  sd||j                  <   # n|j                  }|||j                  <   | |S )z-Get debug display for the given configurationz&Failed to get attribute %s from configT)EGLintCONFIG_ATTRSeglGetConfigAttriblogwarningBITMASK_FIELDSr   name)displayconfigresultr   attr
attr_valuesubattrs          r   debug_configr-   3   s    FHE '!'64?KK@$G>!J)$/ 4;;(/3Jw||,4 J&tyy' Mr
   c                     |Bt        |z         }t               }t        | |||       |j                  sg S |d|j                   }|D cg c]  }t	        | |       }}|S c c}w )z3Present a formatted list of configs for the displayN)	EGLConfigr    eglGetConfigsr   r-   )r'   configs	max_countnum_configscfgdebug_configss         r   r5   r5   F   sp    y(+hgw	;?  I-K--.;BCC\'3/CMC Ds   	A c                       fd}|S )Nc                 $    j                   | v ryy)Nz Yz .)r&   )r   bits    r   renderzbit_renderer.<locals>.render   s    88ur
    )r8   r9   s   ` r   bit_rendererr;      s     Mr
   z0x%xidr4   z%iszbfr   lvrcbufgbathdptsnsmultbuvisualglr9   ese2e3vgwnsurfacepbpxc                    g }|D ]  \  }}}}g }d}| D ]t  }	t        |	t              rt        |	d      	 |	|j                     }
t        |t              r||
z  }n	 ||
      }	 t        t        |      |f      }|j                  |       v |j                  ||||||d        g }g }||g}d}d}t        j                  |d       D ]_  \  }}t        |      }t        |D cg c]  }|d   	 c}      t        |      dz
  z   }|j                  |j                  |d	      d|        a |D ].  }|j                  |d
   j                  |d         d|d           0 |j                  t!        |D cg c](  }|d   D cg c]  }|j                  |d   d       c}* c}}        dj#                  |D 	cg c]  }	dj#                  |	       c}	      S # t
        $ r d}Y w xY wc c}w c c}w c c}}w c c}	w )a  Format config for compact debugging display
    
    Produces a config summary display for a set of 
    debug_configs as a text-mode table.

    Uses `formats` (default `CONFIG_FORMAT`) to determine 
    which fields are extracted and how they are formatted
    along with the column/subcolum set to be rendered in
    the overall header.

    returns formatted ASCII table for display in debug
    logs or utilities
    r   z!Call debug_config(display,config)_)rowskeyformatsubcolcolwidthNc                     | d   S )Nr\   r:   )r   s    r   <lambda>z&format_debug_configs.<locals>.<lambda>   s
    % r
   r]   r   .r[   rX    r   )
isinstancer/   	TypeErrorr&   strKeyErrormaxlenappend	itertoolsgroupbylistsumcenterrjustextendzipjoin)r5   formatscolumnsrY   rZ   r[   r\   column	max_widthrowr   	formattedheaders
subheadersrX   last_columnlast_column_widthheadersubcolsr]   vs                        r   format_debug_configsr      s     G&- 
"ffc	  	%C#y)%HII.CHH fc* &% 0I &uIS^Y78IMM)$	% 	  "		
#
6 GJZ DK$,,W6HI :w-W5cS\56#g,:JKv}}UC0%89:  V&*00ABSF7OTUVKK7SC3v;?aqwws7|S)?ST 99t4chhsm455C   	 4 6
 @S4s5   G!G'
1G1=G,G16G7G$#G$,G1)N   )Q__doc__
OpenGL.EGLri   r	   EGL_SUCCESSEGL_NOT_INITIALIZEDEGL_BAD_ACCESSEGL_BAD_ALLOCEGL_BAD_ATTRIBUTEEGL_BAD_CONTEXTEGL_BAD_CONFIGEGL_BAD_CURRENT_SURFACEEGL_BAD_DISPLAYEGL_BAD_SURFACEEGL_BAD_MATCHEGL_BAD_PARAMETEREGL_BAD_NATIVE_PIXMAPEGL_BAD_NATIVE_WINDOWEGL_CONTEXT_LOSTr   r   r-   r5   EGL_MULTISAMPLE_RESOLVE_BOX_BITEGL_PBUFFER_BITEGL_PIXMAP_BITEGL_SWAP_BEHAVIOR_PRESERVED_BITEGL_VG_ALPHA_FORMAT_PRE_BITEGL_VG_COLORSPACE_LINEAR_BITEGL_WINDOW_BITSURFACE_TYPE_BITSEGL_OPENGL_BITEGL_OPENGL_ES_BITEGL_OPENGL_ES2_BITEGL_OPENGL_ES3_BITEGL_OPENVG_BITRENDERABLE_TYPE_BITSEGL_NONEEGL_SLOW_CONFIGEGL_NON_CONFORMANT_CONFIGCAVEAT_BITSEGL_TRANSPARENT_RGBTRANSPARENT_BITSEGL_CONFIG_IDEGL_RED_SIZEEGL_GREEN_SIZEEGL_BLUE_SIZEEGL_DEPTH_SIZEEGL_ALPHA_SIZEEGL_ALPHA_MASK_SIZEEGL_BUFFER_SIZEEGL_STENCIL_SIZEEGL_BIND_TO_TEXTURE_RGBEGL_BIND_TO_TEXTURE_RGBAEGL_COLOR_BUFFER_TYPEEGL_CONFIG_CAVEATEGL_CONFORMANT	EGL_LEVELEGL_LUMINANCE_SIZEEGL_MAX_PBUFFER_WIDTHEGL_MAX_PBUFFER_HEIGHTEGL_MAX_PBUFFER_PIXELSEGL_MIN_SWAP_INTERVALEGL_MAX_SWAP_INTERVALEGL_NATIVE_RENDERABLEEGL_NATIVE_VISUAL_IDEGL_NATIVE_VISUAL_TYPEEGL_RENDERABLE_TYPEEGL_SAMPLE_BUFFERSEGL_SAMPLESEGL_SURFACE_TYPEEGL_TRANSPARENT_TYPEEGL_TRANSPARENT_RED_VALUEEGL_TRANSPARENT_GREEN_VALUEEGL_TRANSPARENT_BLUE_VALUEr!   dictr%   r;   CONFIG_FORMATr   r:   r
   r   <module>r      s   (  * ,N=(_N4__=(00&&*&
 $#       
!!! ! 	!
 ! ! ! ! ! ! ! ! ! ! !  !!" #!$ %!& '!( )!* +!, -!. /!0 1!2 3!4 5!6 7!8 9!: ;!< =!>  ?!@ A!F 	,-	23	-.	K(	/0 FD%(dD$'c4 4f%T3'D#v&T3'T4&tS#&$f%tV,642,~6hG,'894J,'9:D(K,'9:D(K,~6hG|N3T9E|O4dIF|N3T9E)0 1> 86r
   