ó
fü÷Jc           @   sÔ   d  Z  d d l m Z d d l m Z d d l m Z m Z d d l m	 Z	 d d l
 Z
 e
 j Z e	 e j ƒ d d d d „ ƒ Z e	 e j ƒ d d d d „ ƒ Z e	 e j ƒ d d d d	 d
 d „ ƒ Z d Z d S(   s&   glu[Un]Project[4] convenience wrappersiÿÿÿÿ(   t   GL(   t   GLU(   R    t   arrays(   t   lazyNc      
   C   sô   | d k r! t j t j ƒ } n  | d k rB t j t j ƒ } n  | d k rc t j t j ƒ } n  t j d ƒ } t j d ƒ } t j d ƒ }	 |  | | | | | | | | |	 ƒ	 }
 |
 d k	 rÞ |
 t j	 k rÞ t
 d ƒ ‚ n  | j | j |	 j f S(   s±   Convenience wrapper for gluProject
    
    Automatically fills in the model, projection and viewing matrices
    if not provided.
    
    returns (winX,winY,winZ) doubles
    g        s   Projection failed!N(   t   NoneR    t   glGetDoublevt   GL_MODELVIEW_MATRIXt   GL_PROJECTION_MATRIXt   glGetIntegervt   GL_VIEWPORTt   simplet   GLdoublet   GLU_TRUEt
   ValueErrort   value(   t   baseFunctiont   objXt   objYt   objZt   modelt   projt   viewt   winXt   winYt   winZt   result(    (    s6   C:\Python27\Lib\site-packages\OpenGL\GLU\projection.pyt
   gluProject	   s     			c         C   sú   | d k r! t j t j ƒ } n  | d k rB t j t j ƒ } n  | d k rc t j t j ƒ } n  t j d ƒ } t j d ƒ } t j d ƒ }	 |  | | | | | | t	 j
 | ƒ t	 j
 | ƒ t	 j
 |	 ƒ ƒ	 }
 |
 sä t d ƒ ‚ n  | j | j |	 j f S(   s³   Convenience wrapper for gluUnProject
    
    Automatically fills in the model, projection and viewing matrices
    if not provided.
    
    returns (objX,objY,objZ) doubles
    g        s   Projection failed!N(   R   R    R   R   R   R   R	   R
   R   t   ctypest   byrefR   R   (   R   R   R   R   R   R   R   R   R   R   R   (    (    s6   C:\Python27\Lib\site-packages\OpenGL\GLU\projection.pyt   gluUnProject&   s     			*g        g      ð?c
         C   s  | d k r! t j t j ƒ } n  | d k rB t j t j ƒ } n  | d k rc t j t j ƒ } n  t j d ƒ }
 t j d ƒ } t j d ƒ } t j d ƒ } |  | | | | | | t	 j
 |
 ƒ t	 j
 | ƒ t	 j
 | ƒ t	 j
 | ƒ ƒ
 } | sÿ t d ƒ ‚ n  |
 j | j | j | j f S(   s³   Convenience wrapper for gluUnProject
    
    Automatically fills in the model, projection and viewing matrices
    if not provided.
    
    returns (objX,objY,objZ) doubles
    g        s   Projection failed!N(   R   R    R   R   R   R   R	   R
   R   R   R   R   R   (   R   R   R   R   t   clipWR   R   R   t   neart   farR   R   R   t   objWR   (    (    s6   C:\Python27\Lib\site-packages\OpenGL\GLU\projection.pyt   gluUnProject4@   s"    		6R   R   R"   (   s
   gluProjects   gluUnProjects   gluUnProject4(   t   __doc__t   OpenGL.platformR    t
   OpenGL.rawR   R
   t   OpenGLR   t   OpenGL.lazywrapperR   R   t   POINTERR   R   R   R"   t   __all__(    (    (    s6   C:\Python27\Lib\site-packages\OpenGL\GLU\projection.pyt   <module>   s    		  