| 
									
										
										
										
											1998-04-04 07:23:21 +00:00
										 |  |  | \section{Built-in Module \module{gl}} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \label{module-gl} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \bimodindex{gl} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This module provides access to the Silicon Graphics | 
					
						
							| 
									
										
										
										
											1998-01-14 14:51:31 +00:00
										 |  |  | \emph{Graphics Library}. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | It is available only on Silicon Graphics machines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \strong{Warning:} | 
					
						
							|  |  |  | Some illegal calls to the GL library cause the Python interpreter to dump | 
					
						
							|  |  |  | core. | 
					
						
							|  |  |  | In particular, the use of most GL calls is unsafe before the first | 
					
						
							|  |  |  | window is opened. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The module is too large to document here in its entirety, but the | 
					
						
							|  |  |  | following should help you to get started. | 
					
						
							|  |  |  | The parameter conventions for the C functions are translated to Python as | 
					
						
							|  |  |  | follows: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | All (short, long, unsigned) int values are represented by Python | 
					
						
							|  |  |  | integers. | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | All float and double values are represented by Python floating point | 
					
						
							|  |  |  | numbers. | 
					
						
							|  |  |  | In most cases, Python integers are also allowed. | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | All arrays are represented by one-dimensional Python lists. | 
					
						
							|  |  |  | In most cases, tuples are also allowed. | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | \begin{sloppypar} | 
					
						
							|  |  |  | All string and character arguments are represented by Python strings, | 
					
						
							|  |  |  | for instance, | 
					
						
							|  |  |  | \code{winopen('Hi There!')} | 
					
						
							|  |  |  | and | 
					
						
							|  |  |  | \code{rotate(900, 'z')}. | 
					
						
							|  |  |  | \end{sloppypar} | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | All (short, long, unsigned) integer arguments or return values that are | 
					
						
							|  |  |  | only used to specify the length of an array argument are omitted. | 
					
						
							|  |  |  | For example, the C call | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | lmdef(deftype, index, np, props) | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | is translated to Python as | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | lmdef(deftype, index, props) | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \item | 
					
						
							|  |  |  | Output arguments are omitted from the argument list; they are | 
					
						
							|  |  |  | transmitted as function return values instead. | 
					
						
							|  |  |  | If more than one value must be returned, the return value is a tuple. | 
					
						
							|  |  |  | If the C function has both a regular return value (that is not omitted | 
					
						
							|  |  |  | because of the previous rule) and an output argument, the return value | 
					
						
							|  |  |  | comes first in the tuple. | 
					
						
							|  |  |  | Examples: the C call | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | getmcolor(i, &red, &green, &blue) | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | is translated to Python as | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | red, green, blue = getmcolor(i) | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following functions are non-standard or have special argument | 
					
						
							|  |  |  | conventions: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{varray}{argument} | 
					
						
							|  |  |  | %JHXXX the argument-argument added
 | 
					
						
							|  |  |  | Equivalent to but faster than a number of | 
					
						
							|  |  |  | \code{v3d()} | 
					
						
							|  |  |  | calls. | 
					
						
							|  |  |  | The \var{argument} is a list (or tuple) of points. | 
					
						
							|  |  |  | Each point must be a tuple of coordinates | 
					
						
							|  |  |  | \code{(\var{x}, \var{y}, \var{z})} or \code{(\var{x}, \var{y})}. | 
					
						
							|  |  |  | The points may be 2- or 3-dimensional but must all have the | 
					
						
							|  |  |  | same dimension. | 
					
						
							|  |  |  | Float and int values may be mixed however. | 
					
						
							|  |  |  | The points are always converted to 3D double precision points | 
					
						
							|  |  |  | by assuming \code{\var{z} = 0.0} if necessary (as indicated in the man page), | 
					
						
							|  |  |  | and for each point | 
					
						
							|  |  |  | \code{v3d()} | 
					
						
							|  |  |  | is called. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{nvarray}{} | 
					
						
							|  |  |  | Equivalent to but faster than a number of | 
					
						
							|  |  |  | \code{n3f} | 
					
						
							|  |  |  | and | 
					
						
							|  |  |  | \code{v3f} | 
					
						
							|  |  |  | calls. | 
					
						
							|  |  |  | The argument is an array (list or tuple) of pairs of normals and points. | 
					
						
							|  |  |  | Each pair is a tuple of a point and a normal for that point. | 
					
						
							|  |  |  | Each point or normal must be a tuple of coordinates | 
					
						
							|  |  |  | \code{(\var{x}, \var{y}, \var{z})}. | 
					
						
							|  |  |  | Three coordinates must be given. | 
					
						
							|  |  |  | Float and int values may be mixed. | 
					
						
							|  |  |  | For each pair, | 
					
						
							|  |  |  | \code{n3f()} | 
					
						
							|  |  |  | is called for the normal, and then | 
					
						
							|  |  |  | \code{v3f()} | 
					
						
							|  |  |  | is called for the point. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{vnarray}{} | 
					
						
							|  |  |  | Similar to  | 
					
						
							|  |  |  | \code{nvarray()} | 
					
						
							|  |  |  | but the pairs have the point first and the normal second. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{nurbssurface}{s_k, t_k, ctl, s_ord, t_ord, type} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | % XXX s_k[], t_k[], ctl[][]
 | 
					
						
							|  |  |  | Defines a nurbs surface. | 
					
						
							|  |  |  | The dimensions of | 
					
						
							|  |  |  | \code{\var{ctl}[][]} | 
					
						
							|  |  |  | are computed as follows: | 
					
						
							|  |  |  | \code{[len(\var{s_k}) - \var{s_ord}]}, | 
					
						
							|  |  |  | \code{[len(\var{t_k}) - \var{t_ord}]}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{nurbscurve}{knots, ctlpoints, order, type} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | Defines a nurbs curve. | 
					
						
							|  |  |  | The length of ctlpoints is | 
					
						
							|  |  |  | \code{len(\var{knots}) - \var{order}}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{pwlcurve}{points, type} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | Defines a piecewise-linear curve. | 
					
						
							|  |  |  | \var{points} | 
					
						
							|  |  |  | is a list of points. | 
					
						
							|  |  |  | \var{type} | 
					
						
							|  |  |  | must be | 
					
						
							|  |  |  | \code{N_ST}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{pick}{n} | 
					
						
							|  |  |  | \funcline{select}{n} | 
					
						
							|  |  |  | The only argument to these functions specifies the desired size of the | 
					
						
							|  |  |  | pick or select buffer. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{endpick}{} | 
					
						
							|  |  |  | \funcline{endselect}{} | 
					
						
							|  |  |  | These functions have no arguments. | 
					
						
							|  |  |  | They return a list of integers representing the used part of the | 
					
						
							|  |  |  | pick/select buffer. | 
					
						
							|  |  |  | No method is provided to detect buffer overrun. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Here is a tiny but complete example GL program in Python: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | import gl, GL, time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							|  |  |  |     gl.foreground() | 
					
						
							|  |  |  |     gl.prefposition(500, 900, 500, 900) | 
					
						
							|  |  |  |     w = gl.winopen('CrissCross') | 
					
						
							|  |  |  |     gl.ortho2(0.0, 400.0, 0.0, 400.0) | 
					
						
							|  |  |  |     gl.color(GL.WHITE) | 
					
						
							|  |  |  |     gl.clear() | 
					
						
							|  |  |  |     gl.color(GL.RED) | 
					
						
							|  |  |  |     gl.bgnline() | 
					
						
							|  |  |  |     gl.v2f(0.0, 0.0) | 
					
						
							|  |  |  |     gl.v2f(400.0, 400.0) | 
					
						
							|  |  |  |     gl.endline() | 
					
						
							|  |  |  |     gl.bgnline() | 
					
						
							|  |  |  |     gl.v2f(400.0, 0.0) | 
					
						
							|  |  |  |     gl.v2f(0.0, 400.0) | 
					
						
							|  |  |  |     gl.endline() | 
					
						
							|  |  |  |     time.sleep(5) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | main() | 
					
						
							| 
									
										
										
										
											1998-02-13 06:58:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | %
 | 
					
						
							| 
									
										
										
										
											1998-04-04 07:23:21 +00:00
										 |  |  | \section{Standard Modules \module{GL} and \module{DEVICE}} | 
					
						
							| 
									
										
										
										
											1995-03-20 12:59:56 +00:00
										 |  |  | \nodename{GL and DEVICE} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \stmodindex{GL} | 
					
						
							|  |  |  | \stmodindex{DEVICE} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These modules define the constants used by the Silicon Graphics | 
					
						
							| 
									
										
										
										
											1998-01-14 14:51:31 +00:00
										 |  |  | \emph{Graphics Library} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | that C programmers find in the header files | 
					
						
							|  |  |  | \file{<gl/gl.h>} | 
					
						
							|  |  |  | and | 
					
						
							|  |  |  | \file{<gl/device.h>}. | 
					
						
							|  |  |  | Read the module source files for details. |