a
    ij?!                     @   s  d Z ddlmZmZmZ ddlmZmZ ddlZddlm	Z	m
Z
 ddlT ddlmZ dd	 Zeed
dZeeddZeeddZeejde
jdddZeejde
jdddZeeddZeeddZeeddZeeddZeeddZeejde
jdddZeejde
jdddZeeddddZeejde
jdddZeejde
jdddZee jde
jdddZ ee!jde
jdddZ!ddl"m#Z# ddl$m%Z& e#'e#j(ed
ddZe#'e#j(eddZe#'e#j(e#j(eddddddZe#'e#j(edddZe#'e#j(edddZe&e)dd Z)e&e*dd Z*e&e+dd Z+e&e,d"ddZ,e&e-d#d d!Z-dS )$zOpenGL extension ARB.imaging

This module customises the behaviour of the 
OpenGL.raw.GL.ARB.imaging to provide a more 
Python-friendly API

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/imaging.txt
    )platformconstantarrays)
extensionswrapperN)_types_glgets)*)_EXTENSION_NAMEc                  C   s   ddl m}  | tS )z=Return boolean indicating whether this extension is availabler   r   )OpenGLr   ZhasGLExtensionr
   r    r   S/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/GL/ARB/imaging.pyglInitImagingARB   s    r   tableparamsZpnameT)sizeZpnameArgZorPassIndataimagecolumnrow)images)lazytype)	pixelNameZtypeName)r   c              	   C   sx   t |td f}|tkr,|t |td f7 }|d7 }tj|||}tjtjj	|| }| |||t
|| |S )z>Retrieve 1 or 2D convolution parameter "kernels" as pixel datar   )   )glGetConvolutionParameterivGL_CONVOLUTION_WIDTHZGL_CONVOLUTION_1DGL_CONVOLUTION_HEIGHTr   SetupPixelReadr   GL_CONSTANT_TO_ARRAY_TYPETYPE_TO_ARRAYTYPEgetctypesc_void_pdataPointerbaseFunctiontargetformatr   dimsarray	arrayTyper   r   r   glGetConvolutionFilter   s     r-   c           	   
   C   s   t td df}t td df}tjtjj|| }tj|||}tj|||}| |||t	
||t	
||d ||fS )z;Retrieve 2 1D convolution parameter "kernels" as pixel datar   r   N)r   r   r   r   r    r   r!   r"   r   r#   r$   r%   )	r'   r(   r)   r   ZrowDimsZ
columnDimsr,   r   r   r   r   r   glGetSeparableFilter   s$    

r.   c              	   C   sR   t |tdf}tj|||}tjtjj|| }| |||t	|
| |S )z/Retrieve the current 1D color table as a bitmapr   )glGetColorTableParameterivZGL_COLOR_TABLE_WIDTHr   r   r   r    r!   r"   r#   r$   r%   r&   r   r   r   glGetColorTable   s    r0   c              
   C   s\   |du r&t |t}tj||df|}tjtjj|| }| ||||t	|
| |S )z,Retrieve current 1D histogram as a 1D bitmapNr   )glGetHistogramParameterivZGL_HISTOGRAM_WIDTHr   r   r   r    r!   r"   r#   r$   r%   r'   r(   resetr)   r   valueswidthr,   r   r   r   glGetHistogram   s    r6   c              
   C   sV   |du r d}t j ||df|}tjt j j|| }| ||||t|| |S )z8Retrieve minimum and maximum values as a 2-element imageN   r   )	r   r   r   r    r!   r"   r#   r$   r%   r2   r   r   r   glGetMinmax   s    r8   )N)N).__doc__r   r   r   r   r   r   r#   ZOpenGL.raw.GLr   r   ZOpenGL.raw.GL.ARB.imagingr
   r   ZglColorTableZsetInputArraySizeZglColorTableParameterfvZglColorTableParameterivZglGetColorTableParameterfvZ	setOutputZ_glget_size_mappingr/   ZglColorSubTableZglConvolutionFilter1DZglConvolutionFilter2DZglConvolutionParameterfvZglConvolutionParameterivZglGetConvolutionParameterfvr   ZglSeparableFilter2DZglGetHistogramParameterfvr1   ZglGetMinmaxParameterfvZglGetMinmaxParameterivZ	OpenGL.GLr   ZOpenGL.lazywrapperr   Z_lazyZsetDimensionsAsIntsZsetImageInputr-   r.   r0   r6   r8   r   r   r   r   <module>   s   	



























