a
    ij]                      @   s  d Z ddlT ddlZd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d Zdd	 Zd0d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*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=e>e?e@eAeBeCeDeEeFeGeHeIeJg ZKeLeFefeCe$fe8e$fe7e(feGe*fgZMdd 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eCeNed$d%feCeNe d&d%feCeNe!d'd%feCeNe"d(d%feCeNe#d)d%feFeNed*d+feFeNed,d+feFeNed-d+fgZOeOfd.d/ZPdS )1z"Debug utilities for EGL operations    )*Nc                 C   s   t | | S )z8Returns error constant if known, otherwise returns value)KNOWN_ERRORSgetvalue r   N/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/EGL/debug.pyeglErrorName   s    r	   c           
      C   s   t |d}| j\}}}|d |d |d||f  |d t|d ddD ]L}t|D ]4}| ||f }d|d	 |d |d
 f }	||	 qd|d qXW d   n1 s0    Y  dS )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xZpixellr   r   r   	write_ppm   s    


r   c                 C   st   i }t  }tD ]`}t| |||s.td| q|tv r^i }t| D ]}|j|@ rBd||j< qBn|j}|||j< q|S )z-Get debug display for the given configurationz&Failed to get attribute %s from configT)EGLintCONFIG_ATTRSZeglGetConfigAttriblogwarningBITMASK_FIELDSr   name)displayconfigresultr   attrZ
attr_valueZsubattrr   r   r   debug_config4   s    
r&      c                    sT   |du r>t |  }t }t ||| |js0g S |d|j } fdd|D }|S )z3Present a formatted list of configs for the displayNc                    s   g | ]}t  |qS r   )r&   ).0cfgr"   r   r   
<listcomp>P       z!debug_configs.<locals>.<listcomp>)	EGLConfigr   ZeglGetConfigsr   )r"   Zconfigs	max_countZnum_configsdebug_configsr   r*   r   r/   G   s    
r/   c                    s    fdd}|S )Nc                    s    j | v rdS dS d S )Nz Yz .)r!   r   bitr   r   render   s    
zbit_renderer.<locals>.renderr   )r1   r2   r   r0   r   bit_renderer   s    r3   z0x%xidr)   z%iszbfr   lvrZcbufgbathZdptsnsZmultZbuZvisualglr2   ese2Ze3vgZwnZsurfaceZpbZpxc              
   C   sv  g }|D ]\}}}}g }d}| D ]t}	t |	tr8t|	dz|	|j }
W n ty\   d}Y n0 t |trr||
 }n||
}tt||f}|| q |||||||d qg }g }||g}t	
|dd D ]H\}}t|}tdd |D t|d	  }|||d
d|  q|D ]*}||d |d d|d   q|tdd |D   ddd |D S )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widthc                 S   s   | d S )NrI   r   )r   r   r   r   <lambda>   r,   z&format_debug_configs.<locals>.<lambda>c                 S   s   g | ]}|d  qS )rJ   r   )r(   rI   r   r   r   r+      r,   z(format_debug_configs.<locals>.<listcomp>r   .NrH   rJ   c                    s"   g | ]  fd d d D qS )c                    s   g | ]}|  d  dqS )rJ    )rjust)r(   vrI   r   r   r+      r,   z3format_debug_configs.<locals>.<listcomp>.<listcomp>rE   r   )r(   r   rP   r   r+      r,   r   c                 S   s   g | ]}d  |qS )rM   )join)r(   rowr   r   r   r+      r,   )
isinstancer-   	TypeErrorr!   KeyErrorstrmaxlenappend	itertoolsgroupbylistsumcenterrN   extendziprQ   )r/   formatscolumnsrF   rG   rH   rI   column	max_widthrR   r   	formattedheadersZ
subheadersrE   headerZsubcolsrJ   r   r   r   format_debug_configs   sL    





(rh   )Nr'   )Q__doc__Z
OpenGL.EGLrZ   r	   ZEGL_SUCCESSZEGL_NOT_INITIALIZEDZEGL_BAD_ACCESSZEGL_BAD_ALLOCZEGL_BAD_ATTRIBUTEZEGL_BAD_CONTEXTZEGL_BAD_CONFIGZEGL_BAD_CURRENT_SURFACEZEGL_BAD_DISPLAYZEGL_BAD_SURFACEZEGL_BAD_MATCHZEGL_BAD_PARAMETERZEGL_BAD_NATIVE_PIXMAPZEGL_BAD_NATIVE_WINDOWZEGL_CONTEXT_LOSTr   r   r&   r/   ZEGL_MULTISAMPLE_RESOLVE_BOX_BITZEGL_PBUFFER_BITZEGL_PIXMAP_BITZEGL_SWAP_BEHAVIOR_PRESERVED_BITZEGL_VG_ALPHA_FORMAT_PRE_BITZEGL_VG_COLORSPACE_LINEAR_BITZEGL_WINDOW_BITZSURFACE_TYPE_BITSZEGL_OPENGL_BITZEGL_OPENGL_ES_BITZEGL_OPENGL_ES2_BITZEGL_OPENGL_ES3_BITZEGL_OPENVG_BITZRENDERABLE_TYPE_BITSZEGL_NONEZEGL_SLOW_CONFIGZEGL_NON_CONFORMANT_CONFIGZCAVEAT_BITSZEGL_TRANSPARENT_RGBZTRANSPARENT_BITSZEGL_CONFIG_IDZEGL_RED_SIZEZEGL_GREEN_SIZEZEGL_BLUE_SIZEZEGL_DEPTH_SIZEZEGL_ALPHA_SIZEZEGL_ALPHA_MASK_SIZEZEGL_BUFFER_SIZEZEGL_STENCIL_SIZEZEGL_BIND_TO_TEXTURE_RGBZEGL_BIND_TO_TEXTURE_RGBAZEGL_COLOR_BUFFER_TYPEZEGL_CONFIG_CAVEATZEGL_CONFORMANTZ	EGL_LEVELZEGL_LUMINANCE_SIZEZEGL_MAX_PBUFFER_WIDTHZEGL_MAX_PBUFFER_HEIGHTZEGL_MAX_PBUFFER_PIXELSZEGL_MIN_SWAP_INTERVALZEGL_MAX_SWAP_INTERVALZEGL_NATIVE_RENDERABLEZEGL_NATIVE_VISUAL_IDZEGL_NATIVE_VISUAL_TYPEZEGL_RENDERABLE_TYPEZEGL_SAMPLE_BUFFERSZEGL_SAMPLESZEGL_SURFACE_TYPEZEGL_TRANSPARENT_TYPEZEGL_TRANSPARENT_RED_VALUEZEGL_TRANSPARENT_GREEN_VALUEZEGL_TRANSPARENT_BLUE_VALUEr   dictr    r3   ZCONFIG_FORMATrh   r   r   r   r   <module>   s   

#











