/usr/share/pyshared/OpenGL/GLU/projection.py is in python-opengl 3.0.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | """glu[Un]Project[4] convenience wrappers"""
from OpenGL.platform import GL
from OpenGL.raw import GLU as simple
from OpenGL import GL, arrays
from OpenGL.lazywrapper import lazy
import ctypes
POINTER = ctypes.POINTER
@lazy( simple.gluProject )
def gluProject( baseFunction, objX, objY, objZ, model=None, proj=None, view=None ):
"""Convenience wrapper for gluProject
Automatically fills in the model, projection and viewing matrices
if not provided.
returns (winX,winY,winZ) doubles
"""
if model is None:
model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX )
if proj is None:
proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX )
if view is None:
view = GL.glGetIntegerv( GL.GL_VIEWPORT )
winX = simple.GLdouble( 0.0 )
winY = simple.GLdouble( 0.0 )
winZ = simple.GLdouble( 0.0 )
result = baseFunction(
objX,objY,objZ,
model,proj,view,
winX,winY,winZ,
)
# On Ubuntu 9.10 we see a None come out of baseFunction,
# despite it having a return-type specified of GLint!
if result is not None and result != simple.GLU_TRUE:
raise ValueError( """Projection failed!""" )
return winX.value, winY.value, winZ.value
@lazy( simple.gluUnProject )
def gluUnProject( baseFunction, winX, winY, winZ, model=None, proj=None, view=None ):
"""Convenience wrapper for gluUnProject
Automatically fills in the model, projection and viewing matrices
if not provided.
returns (objX,objY,objZ) doubles
"""
if model is None:
model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX )
if proj is None:
proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX )
if view is None:
view = GL.glGetIntegerv( GL.GL_VIEWPORT )
objX = simple.GLdouble( 0.0 )
objY = simple.GLdouble( 0.0 )
objZ = simple.GLdouble( 0.0 )
result = baseFunction(
winX,winY,winZ,
model,proj,view,
ctypes.byref(objX),ctypes.byref(objY),ctypes.byref(objZ),
)
if not result:
raise ValueError( """Projection failed!""" )
return objX.value, objY.value, objZ.value
@lazy( simple.gluUnProject4 )
def gluUnProject4(
baseFunction,
winX, winY, winZ, clipW,
model=None, proj=None, view=None,
near=0.0, far=1.0
):
"""Convenience wrapper for gluUnProject
Automatically fills in the model, projection and viewing matrices
if not provided.
returns (objX,objY,objZ) doubles
"""
if model is None:
model = GL.glGetDoublev( GL.GL_MODELVIEW_MATRIX )
if proj is None:
proj = GL.glGetDoublev( GL.GL_PROJECTION_MATRIX )
if view is None:
view = GL.glGetIntegerv( GL.GL_VIEWPORT )
objX = simple.GLdouble( 0.0 )
objY = simple.GLdouble( 0.0 )
objZ = simple.GLdouble( 0.0 )
objW = simple.GLdouble( 0.0 )
result = baseFunction(
winX,winY,winZ,
model,proj,view,
ctypes.byref(objX),ctypes.byref(objY),ctypes.byref(objZ),ctypes.byref(objW)
)
if not result:
raise ValueError( """Projection failed!""" )
return objX.value, objY.value, objZ.value, objW.value
__all__ = (
'gluProject',
'gluUnProject',
'gluUnProject4',
)
|