a
    ij\                     @   sx   d Z ddlmZ ddlmZ dd Zejejejejej	ej	ej
ej
iZejejejejiZG dd deZdd	 Zd
S )z)Utility module to parse a Feedback buffer    )contextdata)GL_1_1c                 C   s>  d}g }t  }||k r:t| | }|d7 }|tv r\|| |\}}|t|t| f q|tv r|| |\}}|| |\}}|t|t| t| f q|tjkr|tj| | f |d7 }q|tj	kr*tj	g}t| | }	|d7 }t
|	D ] }
|| |\}}|t|  q|t| qtd|f q|S )z4Parse the feedback buffer into Python object recordsr      z(Unrecognised token %r in feedback stream)createGetVertexintSINGLE_VERTEX_TOKENSappendgetVertexDOUBLE_VERTEX_TOKENS_simpleZGL_PASS_THROUGH_TOKENZGL_POLYGON_TOKENrangetuple
ValueError)bufferZ
entryCountbufferIndexresult	getVertextokenZvDataZvData2tempcountitem r   P/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/GL/feedback.pyparseFeedback   s@    


r   c                   @   s   e Zd ZdZdZdddZdS )r
   z8Simplistic holder for vertex data from a feedback buffervertexcolortextureNc                 C   s   || _ || _|| _dS )zStore values for accessNr   )selfr   r   r   r   r   r   __init__6   s    zVertex.__init__)NN)__name__
__module____qualname____doc__	__slots__r    r   r   r   r   r
   3   s   r
   c                     s   t d} ttj}ddgt|  | tjtjfv rX| tjkrFdndfdd}n:| tjkrp fdd}n"| tj	krdnd fd	d}|S )
NZGL_FEEDBACK_BUFFER_TYPE   r         c                    s   |  }| || d d f|fS )Nr   )r   r   end)sizer   r   r   D   s    z"createGetVertex.<locals>.getVertexc                    s.   |d }|  }| || | || d f|fS )Nr(   r   )r   r   r)   colorEnd)	colorSizer   r   r   H   s    c                    s>   | }|  }|d }| || | || | || f|fS )Nr&   r   )r   r   r)   r+   Z
textureEndr,   r*   r   r   r   Q   s    )
r   ZgetValuer   ZglGetBooleanvZGL_INDEX_MODEr   ZGL_2DZGL_3DZGL_3D_COLORZGL_3D_COLOR_TEXTURE)modeZ	indexModer   r   r-   r   r   ;   s    



r   N)r$   ZOpenGLr   ZOpenGL.GL.VERSIONr   r   r   ZGL_BITMAP_TOKENZGL_COPY_PIXEL_TOKENZGL_DRAW_PIXEL_TOKENZGL_POINT_TOKENr   ZGL_LINE_TOKENZGL_LINE_RESET_TOKENr   objectr
   r   r   r   r   r   <module>   s   %