
    _ew                        d Z dZddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZ dxZZ G d d	ej                        Zeej"                  ej$                  feej(                  ej*                  fe
ej(                  ej*                  fiZ eej0                  D  cg c]  \  } } ee|       |f c}}       Z eej0                  D  cg c]  \  } } ee|        c}}       a eej0                  D  cg c]  \  } }| ee|       f c}}       Z eej0                  D  cg c]   \  } }| ej<                   ee|             f" c}}       Z	 [[yc c}} w c c}} w c c}} w c c}} w # e $ r
Z!Y dZ![!ydZ![!ww xY w)
z3Numbers passed as array handling code for PyOpenGL
numbers    )_types)GL_1_1)formathandlerN)longinteger_typesc                   "   e Zd ZdZeeej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  f
z   ZddZeZddZddZd ZddZddZdd	Zd
 Zy)NumberHandlerzKAllows the user to pass a bald Python float,int, etceteras as an array-of-1Nc                 |    	 t        j                  |      S # t        $ r}|xj                  dz  c_         d}~ww xY w)z5If it's a ctypes value, pass on, otherwise do asArray)z^ If you have ERROR_ON_COPY enabled, remember to pass in an array to array-requiring functions.N)ctypesbyref	TypeErrorargs)selfvaluetypeCodeerrs       7/usr/lib/python3/dist-packages/OpenGL/arrays/numbers.py
from_paramzNumberHandler.from_param   s>    	<<&& 	HH  H 		s    	;6;c                     t        d      z-Currently don't allow Number as output types!z6Number data-type not allowed as an output array formatNotImplementedr   dimsr   s      r   zeroszNumberHandler.zeros)       H
 	
    c                     t        d      r   r   r   s      r   oneszNumberHandler.ones/   r   r   c                     |j                   t        v rt        |j                      S t        j                  |j                         }||d   S t	        dt        |      z        )z=Given a value, guess OpenGL type of the corresponding pointer   z(Can't guess array data-type for %r types)	__class__TARGET_TYPESDEFAULT_TYPESgetr   type)r   r   guesss      r   arrayToGLTypezNumberHandler.arrayToGLType5   sY    ??l*00!%%eoo6E Qx>$u+N r   c                      y)z9Given a data-value, calculate ravelled size for the arrayr"    r   r   r   s      r   	arraySizezNumberHandler.arraySizeA       r   c                     |j                   t        v r|S t        j                  |      }| ||      S t	        d|d      )z7Convert given value to an array value of given typeCodezDon't know how to convert z to an array type)r#   r$   CONSTANT_TO_TYPEr&   r   )r   r   r   
targetTypes       r   asArrayzNumberHandler.asArrayE   sI     ??l*L%))(3
!e$$CKM
 	
r   c                      y)z-Determine unit size of an array (if possible)r"   r+   r,   s      r   unitSizezNumberHandler.unitSizeQ   r.   r   c                 p    t         t        t        fD ]  }||v s||   ||<    |t        v rt        |fz   ayy)z2Register a sub-class for handling as the base-typeN)r%   r$   
BYTE_SIZESTARGET_TYPE_TUPLE)r   typbasesources       r   registerEquivalentz NumberHandler.registerEquivalentU   sJ     %lJ? 	+Fv~$Tls	+ < 1TG ;  r   )N)__name__
__module____qualname____doc__r   floatr   GLdoubleGLfloatGLintGLshortGLuintGLulongGLushortGLclampfGLclampdHANDLED_TYPESr   dataPointerr   r    r)   r-   r2   r4   r;   r+   r   r   r
   r
      s    U!% M K




<r   r
   )"r?   REGISTRY_NAMEOpenGL.raw.GLr   OpenGL.raw.GL.VERSIONr   OpenGL.arraysr   r   OpenGL._bytesr   r   ncFormatHandlerr
   r@   rA   	GL_DOUBLEintrC   GL_INTr%   dictARRAY_TYPE_TO_CONSTANTgetattrr$   tupler7   r0   sizeofr6   	NameErrorr   )rQ   rR   s   00r   <module>r]      s|     ( '  -AO<M// O<f 
FOOV--.&,,	&6<<
'
 +1+H+HI!Qgfa!I &,&C&CDFQWVQD  +1+H+HI!Qa	I  :@:W:WXAawvq)	*+X
		1 J E J Y
  		s*   E
E
1E
%E"
E( (E72E7