
    3j&                        S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSK
Jr  \R                  " \5      r \  S=rr\R,                  SS	 S
:  a  \R.                  (       a	   SSKJr  \r\(       d   " S S\	R8                  5      r\R:                  r\R<                  rg! \ a  rSSKJr   SrCNwSrCff = f! \ a,  r\R4                  " 5         \R7                  S5         SrCN{SrCff = f)zTest for a buffer-protocol-based access mechanism

Will *only* work for Python 2.6+, and pretty much just works for strings
under 2.6 (in terms of the common object types).
    N)_buffers)_types)formathandler)_configflags)acceleratesupport)reduce   )r	      )MemoryviewHandlerzGUnable to load buffers_formathandler accelerator from OpenGL_acceleratec                   6   \ rS rSrSrSr\R                  r\R                  S   S:  a  \
SS j5       rO
\
SS j5       rS	 r\" \5      r\
SS
 j5       r\
SS j5       r\
S 5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       rSrg)BufferHandler&   z,Buffer-protocol data-type handler for OpenGLFr      Nc                     [        U[        R                  5      (       d  U R                  U5      n[        R
                  " UR                  5      $ N)
isinstancer   	Py_bufferasArrayr   GLvoidpbufclsvaluetypeCodes      O/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/arrays/buffers.py
from_paramBufferHandler.from_param-   s8    !%););<<KK.E ~~eii00    c                 z    [        U[        R                  5      (       d  U R                  U5      nUR                  $ r   )r   r   r   r   r   r   s      r   r   r   8   s-    !%););<<KK.Eyy r   c                     [        U [        R                  5      (       d  [        R                  R                  U 5      n U R                  $ r   )r   r   r   from_objectr   )r   s    r   dataPointerBufferHandler.dataPointer?   s5    eX%7%788 **66u=99r   c                     [        S5      e).Currently don't allow strings as output types!z3Generic buffer type does not have output capability)NotImplementedErrorr   	bytearrayr   operatormul
BYTE_SIZESr   dimsr   s      r   zerosBufferHandler.zerosF   s     &E r   c                     [        S5      e)r%   z)Have not implemented ones for buffer type)r&   r+   s      r   onesBufferHandler.onesP   s     &&UVVr   c                 ^    UR                   nU[        ;   a	  [        U   $ [        SU< 35      e)z=Given a value, guess OpenGL type of the corresponding pointerzUnknown format: )formatARRAY_TO_GL_TYPE_MAPPING	TypeError)r   r   r3   s      r   arrayToGLTypeBufferHandler.arrayToGLTypeU   s/     \\F11/77F<==r   c                 4    UR                   UR                  -  $ )z9Given a data-value, calculate ravelled size for the array)lenitemsizer   s      r   	arraySizeBufferHandler.arraySize]   s     99..r   c                     UR                   $ )zCGiven a data-value, calculate number of bytes required to represent)r9   r   s      r   arrayByteCountBufferHandler.arrayByteCountb   s     99r   c                      UR                   S   $ )Nr,   )r   r   defaults      r   unitSizeBufferHandler.unitSizeg   s    ::b>!r   c                 D    [         R                  R                  U5      nU$ )z7Convert given value to an array value of given typeCode)r   r   r!   )r   r   r   r   s       r   r   BufferHandler.asArrayk   s     $$007CJr   c                     UR                   $ )z<Determine dimensions of the passed array value (if possible)rB   r   s      r   
dimensionsBufferHandler.dimensionsq   s     ::r    r   )__name__
__module____qualname____firstlineno____doc__isOutputr   ERROR_ON_COPYsysversion_infoclassmethodr   r"   staticmethodr-   r0   r6   r;   r>   rD   r   rI   __static_attributes__rK   r   r   r   r   &   s    :$22A!#1 1 ! !	
 #;/		 
	 
	W 
	W 
	> 
	> 
	/ 
	/ 
	 
	 
	" 
	" 
	 
	
 
	 
	r   r   )rP   rS   r(   logging	tracebackOpenGL.arraysr   OpenGL.raw.GLr   r   OpenGLr   r   	getLoggerrL   _logr   	NameErrorerr	functoolsr   r   rT   ACCELERATE_AVAILABLE'OpenGL_accelerate.buffers_formathandlerImportError	print_excwarningFormatHandlerr4   r*   rK   r   r   <module>rh      s   
 ) ( "   (  $"!
 %) ( MBQ&  --	.Q .MN33 Nb $<<   
K  !  !  	!LLY 	s0   B, /C ,C2B==CC7"C22C7