
    3jS                     p   S r SSKJrJrJr  SSKJrJrJr  SSK	J
r
  SSKJrJr  SSKJr  SSKrS r\R$                  R'                  0 \R(                  S	_\R*                  S	_\R,                  S	_\R.                  S	_\R0                  S	_\R2                  S	_\R4                  S	_\R6                  S	_\R8                  S	_\R:                  S	_\R<                  S
_\R>                  S	_\R@                  S	_\RB                  S	_\RD                  S_\RF                  S_\RH                  S_0 \RJ                  S_\RL                  S_\RN                  S_\RP                  S_\RR                  S_\RT                  S_\RV                  S_\RX                  S_\RZ                  S_\R\                  S_\R^                  S_\R`                  S_\Rb                  S_\Rd                  S_\Rf                  S_\Rh                  S_\Rj                  S_E\Rl                  S\Rn                  S\Rp                  S0E5        \Rr                  R'                  0 \Rt                  \Rt                  _\Rv                  \Rx                  _\Rz                  \Rx                  _\R|                  \R~                  _\R                  \R~                  _\R                  \R~                  _\R                  \R~                  _\R                  \R~                  _\R                  \R~                  _\R                  \R                  _\R                  \R                  _\R                  \R                  _\R                  \R                  _\Rx                  \Rx                  _\R                  \R                  _\R~                  \R~                  _\R                  \R                  _\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R(                  \Rx                  0E5        \R                  R'                  \Rv                  S\Rz                  S\R|                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R(                  S05        \R                  R'                  \R                  \R                  S	4/\R                  \R                  S4\R                  \R                  S4\R                  \R                  S	4/\R                  \R                  S4\R                  \R                  S4\R                  \R                  S	4/\R                  \R                  S4\R                  \R                  S	4/S.5        SrXS rYS\R                  4S\R                  4S\R                  4S\R                  4S\R                  4S\Rx                  4S\R                  4S\R~                  44 H5  u  rZr[\[S\4S jr\\\\]" 5       S\Z< 3'   \[S\4S jr^\^\]" 5       S\Z< 3'    CZC[M7     S\4S jr\S\4S jr^/ SQraS  rbS! rcS" rd " S# S$\e5      rf " S% S&\f5      rg " S' S(\e5      rhS)riS*rjS+rkS\iS,S4S- jrl\d" \l" \R                  5      5      rm\d" \l" \R                  5      5      rn\d" \l" \R                  5      5      ro\d" \l" \R                  5      5      rp\d" \l" \R                  5      5      rqS. rrS+S/ jrsS0 rtS\R                  4S\R                  4S\R                  4S\R                  4S\Rx                  4S\R                  4S\R~                  44 H3  u  rZruS1 H$  rv\r" \Z\u\w" \\v5      5      u  rvrx\x\]" 5       \v'    CxCvM&      CZCuM5     g! \_ a  r` Sr`C`GM  Sr`C`ff = f! \_ a  r` Sr`C`MQ  Sr`C`ff = f! \_ a  r` Sr`C`Mm  Sr`C`ff = f)2aZ  Image-handling routines

### Unresolved:

    Following methods are not yet resolved due to my not being sure how the
    function should be wrapped:

        glCompressedTexImage3D
        glCompressedTexImage2D
        glCompressedTexImage1D
        glCompressedTexSubImage3D
        glCompressedTexSubImage2D
        glCompressedTexSubImage1D
    )GL_1_1GL_1_2GL_3_0)imagesarrayswrapper)arraydatatype)bytesinteger_types)_typesNc                 Z    [        U [        5      (       a  [        [        U S5      5      $ U $ Nr   
isinstancefloatintroundvalues    J/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GL/images.pyasIntr      %    5%!!5q>""L                   )r   r   r   r   ):glReadPixelsglReadPixelsbglReadPixelsdglReadPixelsfglReadPixelsiglReadPixelssglReadPixelsubglReadPixelsuiglReadPixelsusglGetTexImageglDrawPixelsglDrawPixelsbglDrawPixelsfglDrawPixelsiglDrawPixelssglDrawPixelsubglDrawPixelsuiglDrawPixelsusglTexSubImage2DglTexSubImage1DglTexImage1DglTexImage2DglGetTexImagebglGetTexImagedglGetTexImagefglGetTexImageiglGetTexImagesglGetTexImageubglGetTexImageuiglGetTexImageusglTexImage1DbglTexImage2DbglTexSubImage1DbglTexSubImage2DbglTexImage1DfglTexImage2DfglTexSubImage1DfglTexSubImage2DfglTexImage1DiglTexImage2DiglTexSubImage1DiglTexSubImage2DiglTexImage1DsglTexImage2DsglTexSubImage1DsglTexSubImage2DsglTexImage1DubglTexImage2DubglTexSubImage1DubglTexSubImage2DubglTexImage1DuiglTexImage2DuiglTexSubImage1DuiglTexSubImage2DuiglTexImage1DusglTexImage2DusglTexSubImage1DusglTexSubImage2Dusc                    / n[         R                  " 5       n[        R                  " X[        R                  U5        UR
                  /nU [        R                  :w  a  [        R                  " X[        R                  U5        UR                  UR
                  5        U [        R                  :w  aA  [        R                  " X[        R                  U5        UR                  UR
                  5        U$ )z0Retrieve texture dims for given level and target)r   GLuintr   glGetTexLevelParameterivGL_TEXTURE_WIDTHr   GL_TEXTURE_1DGL_TEXTURE_HEIGHTappendGL_TEXTURE_2Dr   GL_TEXTURE_DEPTH)targetleveldimsdims       r   _get_texture_level_dimsrf      s    D
--/C
##VF4K4KSRII;D%%%''8P8PRUWSYY V)))++VF<S<SUXZKK$Kr   bdfisubuiusc           	         [        U 5      [        U5      [        U5      [        U5      4u  pp#[        R                  [        R                  R                  XU5         nUc  [        R                  " XBU4U5      =piSn
OP[        U[        5      (       a  [        R                  " U5      n	O"UR                  U5      nUR                  U5      n	Sn
[        R                  " XX#XEU	5        U
(       a  U[        L a  [        R                   " Xe5      $ U$ )zRead specified pixels from the current display buffer

This typed version returns data in your specified default
array data-type format, or in the passed array, which will
be converted to the array-type required by the format.
TFr   r   GL_CONSTANT_TO_ARRAY_TYPEr   TYPE_TO_ARRAYTYPEgetSetupPixelReadr   r   ctypesc_void_pasArrayvoidDataPointerr   r   r
   returnFormatxywidthheightformattypearray
outputType	arrayType	imageDataowneds              r   r   r      s     !8E!HU5\%-GE44f6N6N6R6RSW6]_	= & 5 5vf~t UUEE5-00"OOU4	!))52%55u>	E		
 Z5(&&55Lr   r   c                    [         R                  [        R                  R	                  X35         nUc0  [        X5      n[        R                  " U[        U5      U5      =pHSn	OP[        U[        5      (       a  [        R                  " U5      nO"UR                  U5      nUR                  U5      nSn	[        R                  " XX#U5        U	(       a  U[         L a  [        R"                  " XC5      $ U$ )T  Get a texture-level as an image

target -- enum constant for the texture engine to be read
level -- the mip-map level to read
format -- image format to read out the data
type -- data-type into which to read the data
array -- optional array/offset into which to store the value

outputType -- default (bytes) provides string output of the
    results iff OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING is True
    and type == GL_UNSIGNED_BYTE.  Any other value will cause
    output in the default array output format.

returns the pixel data array in the format defined by the
format, type and outputType
TFr   rq   r   rr   rs   rf   rt   tupler   r   ru   rv   rw   rx   r   r(   r
   ry   )
rb   rc   r   r   r   r   r   rd   r   r   s
             r   r(   r(     s    " 44f6N6N6R6RSW6]_	=*68D & 5 5vuT{D RREE5-00"OOU4	!))52%55u>	E6	
 Z5(&&55Lr   r(   c           	         [        U 5      [        U5      [        U5      [        U5      4u  pp#[        R                  [        R                  R                  XU5         nUc  [        R                  " XBU4U5      =piSn
OP[        U[        5      (       a  [        R                  " U5      n	O"UR                  U5      nUR                  U5      n	Sn
[        R                  " XX#XEU	5        U
(       a  U[        L a  [        R                   " Xe5      $ U$ )a`  Read specified pixels from the current display buffer

x,y,width,height -- location and dimensions of the image to read
    from the buffer
format -- pixel format for the resulting data
type -- data-format for the resulting data
array -- optional array/offset into which to store the value
outputType -- default (bytes) provides string output of the
    results iff OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING is True
    and type == GL_UNSIGNED_BYTE.  Any other value will cause
    output in the default array output format.

returns the pixel data array in the format defined by the
format, type and outputType
TFrp   rz   s              r   r   r   T  s      QxaueFmCA00&2J2J2N2Nt2Y[I}"116&>4QQum,,0I%%u.E!115:I
	E
 u$""E11r   c                    [         R                  [        R                  R	                  X35         nUc.  [        X5      n[        R                  " U[        U5      U5      =pHON[        U[        5      (       a  [        R                  " U5      nO"UR                  U5      nUR                  U5      n[        R                  " XX#U5        U[         L a  [        R"                  " XC5      $ U$ )r   r   )	rb   rc   r   r   r   r   r   rd   r   s	            r   r(   r(   |  s    " 00&2J2J2N2Nt2Y[I}&v4"1165;NN	um,,0I%%u.E!115:I
vY U""E11r   )r}   r~   depthr{   r|   zxoffsetyoffsetzoffsetstartcountc                 p    [        U [        R                  5      (       d  [        R                  " U 5      $ U $ N)r   r   Wrapperr   s    r   	asWrapperr     s'    ugoo//''Lr   c                 Z    [        U [        5      (       a  [        [        U S5      5      $ U $ r   r   )r   argss     r   asIntConverterr     r   r   c                     [        U 5      n [        U SU R                  5      n[        U5       H'  u  p#U[        ;   d  M  U R                  U[        5        M)     U $ )zCSet arguments with names in INT_DIMENSION_NAMES to asInt processingpyConverterNames)r   getattrargNames	enumerateINT_DIMENSION_NAMESsetPyConverterr   )baseOperationr   rj   argNames       r   setDimensionsAsIntsr     sS    }.M'9=;Q;QSHx(	))(('>C ) r   c                   *    \ rS rSrSS jrS rS rSrg)ImageInputConverteri  Nc                 (    Xl         X0l        X l        g r   )ranktypeName
pixelsName)selfr   r   r   s       r   __init__ImageInputConverter.__init__  s    	 $r   c                     UR                   " U R                  5      U l        UR                   " U R                  5      U l        g$Get our pixel index from the wrapperN)
pyArgIndexr   	typeIndexr   pixelsIndexr   r   s     r   finaliseImageInputConverter.finalise  s/     ++T]]<"--t@r   c                     [         R                  " 5         [         R                  " U R                  5        X0R                     n[
        R                  [         R                  U      nUR                  U5      $ )z#pyConverter for the pixels argument)	r   setupDefaultTransferModerankPackingr   r   r   rq   rr   rw   )r   argr   pyArgsr   r   s         r   __call__ImageInputConverter.__call__  sY    '')DII'~~'44f6N6NPT6VX	  #''r   )r   r   r   r   r   )Nr   )__name__
__module____qualname____firstlineno__r   r   r   __static_attributes__ r   r   r   r     s    %A(r   r   c                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)TypedImageInputConverteri  Nc                 4    Xl         X0l        X l        X@l        g r   )r   r   r   r   )r   r   r   r   r   s        r   r   !TypedImageInputConverter.__init__  s    	"$ r   c                     [         R                  " 5         [         R                  " U R                  5        U R                  R                  U5      $ )zThe pyConverter for the pixels)r   r   r   r   r   rw   )r   r   r   r   s       r   r   !TypedImageInputConverter.__call__  s5    '')DII'~~%%s,,r   c                 F    UR                   " U R                  5      U l        gr   )r   r   r   r   s     r   r   !TypedImageInputConverter.finalise  s    "--t@r   c                 V    U R                   R                  XR                     5      S   $ )z*Extract the width from the pixels argumentr   r   
dimensionsr   r   r   indexwrappedOperations       r   r}   TypedImageInputConverter.width  %    ~~((&1A1A*BDQGGr   c                 V    U R                   R                  XR                     5      S   $ )z+Extract the height from the pixels argumentr   r   r   s       r   r~   TypedImageInputConverter.height  r   r   c                 V    U R                   R                  XR                     5      S   $ )z*Extract the depth from the pixels argumentr   r   r   s       r   r   TypedImageInputConverter.depth  r   r   c                     U R                   $ )zProvide the item-type argument from our stored value

This is used for pre-bound processing where we want to provide
the type by implication...
r   r   s       r   r   TypedImageInputConverter.type  s     }}r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r}   r~   r   r   r   r   r   r   r   r     s)    !
-
AHHHr   r   c                        \ rS rSrS rS rSrg)CompressedImageConverteri  c                 2    UR                   " S5      U l        g)r   dataN)r   	dataIndexr   s     r   r   !CompressedImageConverter.finalise  s     ++V5r   c                 \    XR                      n[        R                  R                  U5      $ )z,Create a data-size measurement for our image)r   r	   ArrayDatatypearrayByteCount)r   r   r   r   r   s        r   r   !CompressedImageConverter.__call__  s%    nn&**99#>>r   )r   N)r   r   r   r   r   r   r   r   r   r   r   r     s    6?r   r   )r}   r~   r   )pixelsrowcolumn)	imageSizer   c                    [        U 5      n [        U R                   Vs/ s H  nXR;   d  M
  UPM     sn5      S-   nU(       a  [        XcXS9n[	        U R                  5       Hq  u  pXR;   a.  U R                  U5        U R                  U[        Xu5      5        M8  US:X  d  M@  Uc  ME  U R                  U5        U R                  XWR                  5        Ms     O[        XcU=(       d    SS9nU R                   H;  nU[        ;   d  M  U R                  U5        U R                  XWR                  5        M=     U R                  X75        U $ s  snf )zCDetermine how to convert "pixels" into an image-compatible argumentr   r   r   )r   r   )r   lenr   r   r   r   setCConverterr   r   r   DATA_SIZE_NAMESimageDataSize)	r   r   dimNames	pixelNamer   r   r   	converterrj   s	            r   setImageInputr     s5   
 }.M,555G 	5  
	D
 ,dy]	"=#9#9:IA",,g7++Wgi6PRF"x';,,g7++WnnF ; (hN`Z`b	 ))o%(('3''2I2IK *    5s
   	E	E	c                     UR                   nS[        5       -  n[        R                  U   n[	        [        UUUS95      nX54$ )z3Produce a typed version of the given image functionz%(functionName)s%(suffix)sr   )r   localsr   rq   r   r   )suffixarrayConstantbaseFunctionfunctionNamer   functions         r   typedImageFunctionr   ?  sO    ((L/8L00-AI"$	
H !!r   c                 h    [        5       n[        U 5      R                  U5      R                  X5      $ )z3Set the data-size value to come from the data field)r   r   r   r   )r   argumentr   s      r   _setDataSizer   M  s/    (*Il$33mX*+r   c                 (    [        [        U SS95      $ )zDSet the imageSize and dimensions-as-ints converters for baseFunctionr   )r   )r   r   )r   s    r   compressedImageFunctionr   T  s    ;	
 r   )r3   r4   r2   r1   r)   )y__doc__OpenGL.raw.GL.VERSIONr   r   r   OpenGLr   r   r   OpenGL.arraysr	   OpenGL._bytesr
   r   OpenGL.raw.GLr   ru   r   COMPONENT_COUNTSupdate	GL_BITMAPGL_REDGL_GREENGL_BLUEGL_ALPHAGL_RED_INTEGERGL_GREEN_INTEGERGL_BLUE_INTEGERGL_ALPHA_INTEGERGL_LUMINANCEGL_LUMINANCE_ALPHAGL_COLOR_INDEXGL_STENCIL_INDEXGL_DEPTH_COMPONENTGL_RGBGL_BGR	GL_RGB16F	GL_RGB16I
GL_RGB16UI	GL_RGB32F	GL_RGB32I
GL_RGB32UIGL_RGB8I	GL_RGB8UI
GL_RGB9_E5GL_RGB_INTEGERGL_RGBAGL_BGRA
GL_RGBA16F
GL_RGBA16IGL_RGBA16UI
GL_RGBA32F
GL_RGBA32IGL_RGBA32UI	GL_RGBA8I
GL_RGBA8UIGL_RGBA_INTEGERrr   GL_HALF_FLOATGL_UNSIGNED_BYTE_3_3_2GL_UNSIGNED_BYTEGL_UNSIGNED_BYTE_2_3_3_REVGL_UNSIGNED_SHORT_4_4_4_4GL_UNSIGNED_SHORTGL_UNSIGNED_SHORT_4_4_4_4_REVGL_UNSIGNED_SHORT_5_5_5_1GL_UNSIGNED_SHORT_1_5_5_5_REVGL_UNSIGNED_SHORT_5_6_5GL_UNSIGNED_SHORT_5_6_5_REVGL_UNSIGNED_INT_8_8_8_8GL_UNSIGNED_INTGL_UNSIGNED_INT_8_8_8_8_REVGL_UNSIGNED_INT_10_10_10_2GL_UNSIGNED_INT_2_10_10_10_REVGL_BYTEGL_SHORTGL_INTGL_FLOAT	GL_DOUBLETIGHT_PACK_FORMATSRANK_PACKINGSglPixelStoreiGL_PACK_ALIGNMENTGL_PACK_SKIP_IMAGESGL_PACK_IMAGE_HEIGHTGL_PACK_ROW_LENGTHGL_PACK_SKIP_ROWSGL_PACK_SKIP_PIXELS__all__rf   r   r   r   globalsr(   	NameErrorerrr   r   r   r   objectr   r   r   DIMENSION_NAMESPIXEL_NAMESr   r   r)   r1   r2   r4   r3   r   r   r   r   r   r   r   r   r   r   <module>rP     sU	   8 7 * * ' -         )!
q)! MMA)! OOa	)!
 NNQ)! OOa)! A)! a)! Q)! a)! !)! )! A)! a)! )!" MMA#)!$ MMA%)!& q')!( q))!* +)!, q-)!. q/)!0 1)!2 OOa3)!4 q5)!6 7)!8 A9)!< NNQ=)!> NNQ?)!@ A)!B C)!D E)!F G)!H I)!J K)!L q

QQ)! )V      "
6//"
!!F$;$;" %%(?(?" $$v'?'?	"
 ((6+C+C" $$v'?'?" ((6+C+C" ""V%=%=" &&)A)A" ""V%;%;" &&)?)?" %%(>(>" ))F,B,B" f55" NNFNN"  v77!"" OOv#"$ V33
MMFMM
OOfoo
v''
v..-" 0       
!!A
%%
$$q
((1
$$q
((1
""Q
&&
""Q
&&
%%
))A
a"        
		f66: 
		f88!<			f991=			f66: 
		f77;			f66:			f66: 
		f88!<			f66:! .]~ 				&
!
!"	&
 
 !	&
"
"#	KF4 48tPU < -9GI()15Te #H .;GI)*4{	B 7;u &P 59U !H 


(6 (( 3 >? ?
 "O!F #
 &
 &
 #
 #"+ 	&..&//&--&//	6""#	6!!"	6##$F= "4M76,#?"
h #+	,	,=1W  @	  		  s6   _;-`4`$;```!`!$`50`5