
    _eg                        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dlmZ ddZ G d	 d
ej                        Z G d de      Zej"                   ej$                  ej&                        ej(                   ej$                  ej*                        ej,                   ej$                  ej.                        ej0                   ej$                  ej2                        ej4                   ej$                  ej6                        ej8                   ej$                  ej2                        ej:                   ej$                  ej<                        ej>                   ej$                  ej@                        iZ!y)z(String-array-handling code for PyOpenGL
    )_types)GL_1_1)formathandlerN)_byteserror)ERROR_ON_COPYc                     t        j                  t        j                  |       t         j                        j                  S N)ctypescastc_char_pc_void_pvalue)r   typeCodes     7/usr/lib/python3/dist-packages/OpenGL/arrays/strings.pydataPointerr   
   s*    ;;vu-!??,,1E2    c                       e Zd ZdZej
                  fZedd       Z e	e
      Z
ddZddZd ZddZddZdd	Zdd
Zy)StringHandlerz,String-specific data-type handler for OpenGLNc                 >    t        j                  t        |            S r
   )r   r   r   )clsr   r   s      r   
from_paramzStringHandler.from_param   s    U 466r   c                     t        d      z.Currently don't allow strings as output types!z0Don't currently support strings as output arraysNotImplementedselfdimsr   s      r   zeroszStringHandler.zeros       TVVr   c                     t        d      r   r   r   s      r   oneszStringHandler.ones   r!   r   c                     t        d      )z=Given a value, guess OpenGL type of the corresponding pointerz1Can't guess data-type from a string-type argumentr   )r   r   s     r   arrayToGLTypezStringHandler.arrayToGLType   s    UWWr   c                 0    t         |   }t        |      |z  S )z9Given a data-value, calculate ravelled size for the array)
BYTE_SIZESlen)r   r   r   	byteCounts       r   	arraySizezStringHandler.arraySize   s     *	5z9$$r   c                     t        |      S )zCGiven a data-value, calculate number of bytes required to represent)r(   r   r   r   s      r   arrayByteCountzStringHandler.arrayByteCount#   s    5zr   c                     t        |t              r|S t        |d      r|j                         S t        |d      r|j                  S t        dt        |      z        )z7Convert given value to an array value of given typeCodetostringrawz(String handler got non-string object: %r)
isinstancebyteshasattrr/   r0   	TypeErrortyper,   s      r   asArrayzStringHandler.asArray&   sS    ue%LeZ)>>##eU$99 GeUVVr   c                     t        d      )z<Determine dimensions of the passed array value (if possible)z2Cannot calculate dimensions for a String data-type)r4   r,   s      r   
dimensionszStringHandler.dimensions1   s    D
 	
r   r
   )__name__
__module____qualname____doc__r   r2   HANDLED_TYPESclassmethodr   staticmethodr   r    r#   r%   r*   r-   r6   r8    r   r   r   r      sT    6\\$M7 7-KWWX%

W
r   r   c                   @    e Zd Zej                  fZedd       ZddZy)UnicodeHandlerNc                     t        j                  |      }t        j                  |      }||ur"t        rt        j                  d      ||_        |S )NzSUnicode string passed, cannot copy with ERROR_ON_COPY set, please use 8-bit strings)r   as_8_bitr   r   r   r   	CopyError_temporary_array_)r   r   r   	convertedresults        r   r   zUnicodeHandler.from_param9   sP     OOU,	))96E!oom  (1F$r   c                 \    t        j                  |      }t        j                  | ||      S )N)r   )r   rD   r   r6   r,   s      r   r6   zUnicodeHandler.asArrayE   s(    ($$dEH$FFr   r
   )	r9   r:   r;   r   unicoder=   r>   r   r6   r@   r   r   rB   rB   7   s&    ^^%M
 
Gr   rB   r
   )"r<   OpenGL.raw.GLr   OpenGL.raw.GL.VERSIONr   OpenGL.arraysr   r   OpenGLr   r   OpenGL._configflagsr   r   FormatHandlerr   rB   	GL_DOUBLEsizeofGLdoubleGL_FLOATGLfloatGL_INTGLintGL_SHORTGLshortGL_UNSIGNED_BYTEGLubyteGL_UNSIGNED_SHORTGL_BYTEGLbyteGL_UNSIGNED_INTGLuintr'   r@   r   r   <module>ra      s     ( '    -2'
]00 '
RGm G( mfmmV__6
OO]V]]FNN4
MM=6==&,,0
OO]V]]FNN4
]V]]FNN<
mfmmV^^=
NNMFMM6==2
MFMM6==:	
r   