1 /***********************************************************
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
7 Permission to use, copy, modify, and distribute this software and its
8 documentation for any purpose and without fee is hereby granted,
9 provided that the above copyright notice appear in all copies and that
10 both that copyright notice and this permission notice appear in
11 supporting documentation, and that the names of Stichting Mathematisch
12 Centrum or CWI not be used in advertising or publicity pertaining to
13 distribution of the software without specific, written prior permission.
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 ******************************************************************/
26 Input used to generate the Python module "glmodule.c".
27 The stub generator is a Python script called "cgen.py".
29 Each definition must be contained on one line:
31 <returntype> <name> <type> <arg> <type> <arg>
33 <returntype> can be: void, short, long (XXX maybe others?)
35 <type> can be: char, string, short, float, long, or double
36 string indicates a null terminated string;
37 if <type> is char and <arg> begins with a *, the * is stripped
38 and <type> is changed into string
40 <arg> has the form <mode> or <mode>[<subscript>]
43 r: arg is received (arg is a pointer)
44 and <subscript> can be (N and I are numbers):
51 In the case where the subscript consists of two parts
52 separated by *, the first part is the width of the matrix, and
53 the second part is the length of the matrix. This order is
54 opposite from the order used in C to declare a two-dimensional
59 * An attempt has been made to make this module switch threads on qread
60 * calls. It is far from safe, though.
66 #include "allobjects.h"
68 #include "modsupport.h"
69 #include "cgensupport.h"
73 Some stubs are too complicated for the stub generator.
74 We can include manually written versions of them here.
75 A line starting with '%' gives the name of the function so the stub
76 generator can include it in the table of functions.
89 retval = qread( & arg1 );
91 { object *v = newtupleobject( 2 );
92 if (v == NULL) return NULL;
93 settupleitem(v, 0, mknewlongobject(retval));
94 settupleitem(v, 1, mknewshortobject(arg1));
101 varray -- an array of v.. calls.
102 The argument is an array (maybe list or tuple) of points.
103 Each point must be a tuple or list of coordinates (x, y, z).
104 The points may be 2- or 3-dimensional but must all have the
105 same dimension. Float and int values may be mixed however.
106 The points are always converted to 3D double precision points
107 by assuming z=0.0 if necessary (as indicated in the man page),
108 and for each point v3d() is called.
114 gl_varray(self, args)
121 object * (*getitem) FPROTO((object *, int));
123 if (!getiobjectarg(args, 1, 0, &v))
126 if (is_listobject(v)) {
128 getitem = getlistitem;
130 else if (is_tupleobject(v)) {
132 getitem = gettupleitem;
144 w = (*getitem)(v, 0);
149 else if (is_listobject(w)) {
150 width = getlistsize(w);
152 else if (is_tupleobject(w)) {
153 width = gettuplesize(w);
167 for (i = 0; i < n; i++) {
168 w = (*getitem)(v, i);
169 if (!getidoublearray(w, 1, 0, width, vec))
179 vnarray, nvarray -- an array of n3f and v3f calls.
180 The argument is an array (list or tuple) of pairs of points and normals.
181 Each pair is a tuple (NOT a list) of a point and a normal for that point.
182 Each point or normal must be a tuple (NOT a list) of coordinates (x, y, z).
183 Three coordinates must be given. Float and int values may be mixed.
184 For each pair, n3f() is called for the normal, and then v3f() is called
187 vnarray and nvarray differ only in the order of the vector and normal in
188 the pair: vnarray expects (v, n) while nvarray expects (n, v).
191 static object *gen_nvarray(); /* Forward */
196 gl_nvarray(self, args)
200 return gen_nvarray(args, 0);
206 gl_vnarray(self, args)
210 return gen_nvarray(args, 1);
213 /* Generic, internal version of {nv,nv}array: inorm indicates the
214 argument order, 0: normal first, 1: vector first. */
217 gen_nvarray(args, inorm)
221 object *v, *w, *wnorm, *wvec;
223 float norm[3], vec[3];
224 object * (*getitem) FPROTO((object *, int));
226 if (!getiobjectarg(args, 1, 0, &v))
229 if (is_listobject(v)) {
231 getitem = getlistitem;
233 else if (is_tupleobject(v)) {
235 getitem = gettupleitem;
242 for (i = 0; i < n; i++) {
243 w = (*getitem)(v, i);
244 if (!is_tupleobject(w) || gettuplesize(w) != 2) {
248 wnorm = gettupleitem(w, inorm);
249 wvec = gettupleitem(w, 1 - inorm);
250 if (!getifloatarray(wnorm, 1, 0, 3, norm) ||
251 !getifloatarray(wvec, 1, 0, 3, vec))
261 /* nurbssurface(s_knots[], t_knots[], ctl[][], s_order, t_order, type).
262 The dimensions of ctl[] are computed as follows:
263 [len(s_knots) - s_order], [len(t_knots) - t_order]
269 gl_nurbssurface(self, args)
282 long s_byte_stride, t_byte_stride;
287 if (!getilongarraysize(args, 6, 0, &arg1))
289 if ((arg2 = NEW(double, arg1 )) == NULL) {
292 if (!getidoublearray(args, 6, 0, arg1 , arg2))
294 if (!getilongarraysize(args, 6, 1, &arg3))
296 if ((arg4 = NEW(double, arg3 )) == NULL) {
299 if (!getidoublearray(args, 6, 1, arg3 , arg4))
301 if (!getilongarg(args, 6, 3, &arg6))
303 if (!getilongarg(args, 6, 4, &arg7))
305 if (!getilongarg(args, 6, 5, &arg8))
309 else if (arg8 == N_XYZW)
315 s_nctl = arg1 - arg6;
316 t_nctl = arg3 - arg7;
317 if (!getiobjectarg(args, 6, 2, &v))
319 if (!is_listobject(v) || getlistsize(v) != s_nctl) {
323 if ((arg5 = NEW(double, s_nctl*t_nctl*ncoords )) == NULL) {
327 for (s = 0; s < s_nctl; s++) {
328 w = getlistitem(v, s);
329 if (w == NULL || !is_listobject(w) ||
330 getlistsize(w) != t_nctl) {
334 for (t = 0; t < t_nctl; t++) {
335 pt = getlistitem(w, t);
336 if (!getidoublearray(pt, 1, 0, ncoords, pnext))
341 s_byte_stride = sizeof(double) * ncoords;
342 t_byte_stride = s_byte_stride * s_nctl;
343 nurbssurface( arg1 , arg2 , arg3 , arg4 ,
344 s_byte_stride , t_byte_stride , arg5 , arg6 , arg7 , arg8 );
352 /* nurbscurve(knots, ctlpoints, order, type).
353 The length of ctlpoints is len(knots)-order. */
358 gl_nurbscurve(self, args)
368 int ncoords, npoints;
372 if (!getilongarraysize(args, 4, 0, &arg1))
374 if ((arg2 = NEW(double, arg1 )) == NULL) {
377 if (!getidoublearray(args, 4, 0, arg1 , arg2))
379 if (!getilongarg(args, 4, 2, &arg5))
381 if (!getilongarg(args, 4, 3, &arg6))
385 else if (arg6 == N_STW)
391 npoints = arg1 - arg5;
392 if (!getiobjectarg(args, 4, 1, &v))
394 if (!is_listobject(v) || getlistsize(v) != npoints) {
398 if ((arg4 = NEW(double, npoints*ncoords )) == NULL) {
402 for (i = 0; i < npoints; i++) {
403 if (!getidoublearray(getlistitem(v, i), 1, 0, ncoords, pnext))
407 arg3 = (sizeof(double)) * ncoords;
408 nurbscurve( arg1 , arg2 , arg3 , arg4 , arg5 , arg6 );
415 /* pwlcurve(points, type).
416 Points is a list of points. Type must be N_ST. */
421 gl_pwlcurve(self, args)
427 double *data, *pnext;
428 long npoints, ncoords;
430 if (!getiobjectarg(args, 2, 0, &v))
432 if (!getilongarg(args, 2, 1, &type))
434 if (!is_listobject(v)) {
438 npoints = getlistsize(v);
445 if ((data = NEW(double, npoints*ncoords)) == NULL) {
449 for (i = 0; i < npoints; i++) {
450 if (!getidoublearray(getlistitem(v, i), 1, 0, ncoords, pnext))
454 pwlcurve(npoints, data, sizeof(double)*ncoords, type);
461 /* Picking and Selecting */
463 static short *pickbuffer = NULL;
464 static long pickbuffersize;
467 pick_select(args, func)
471 if (!getilongarg(args, 1, 0, &pickbuffersize))
473 if (pickbuffer != NULL) {
474 err_setstr(RuntimeError,
475 "pick/gselect: already picking/selecting");
478 if ((pickbuffer = NEW(short, pickbuffersize)) == NULL) {
481 (*func)(pickbuffer, pickbuffersize);
487 endpick_select(args, func)
495 if (pickbuffer == NULL) {
496 err_setstr(RuntimeError,
497 "endpick/endselect: not in pick/select mode");
500 nhits = (*func)(pickbuffer);
502 nhits = -nhits; /* How to report buffer overflow otherwise? */
504 /* Scan the buffer to see how many integers */
506 for (; nhits > 0; nhits--) {
507 n += 1 + pickbuffer[n];
509 v = newlistobject(n);
512 /* XXX Could do it nicer and interpret the data structure here,
513 returning a list of lists. But this can be done in Python... */
514 for (i = 0; i < n; i++) {
515 w = newintobject((long)pickbuffer[i]);
520 setlistitem(v, i, w);
527 extern void pick(), gselect();
528 extern long endpick(), endselect();
531 static object *gl_pick(self, args) object *self, *args; {
532 return pick_select(args, pick);
536 static object *gl_endpick(self, args) object *self, *args; {
537 return endpick_select(args, endpick);
541 static object *gl_gselect(self, args) object *self, *args; {
542 return pick_select(args, gselect);
546 static object *gl_endselect(self, args) object *self, *args; {
547 return endpick_select(args, endselect);
551 /* XXX The generator botches this one. Here's a quick hack to fix it. */
553 /* XXX The generator botches this one. Here's a quick hack to fix it. */
555 % getmatrix float r[16]
558 gl_getmatrix(self, args)
566 v = newlistobject(16);
570 for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
571 w = mknewfloatobject(arg1[i][j]);
576 setlistitem(v, i*4+j, w);
581 /* Here's an alternate version that returns a 4x4 matrix instead of
582 a vector. Unfortunately it is incompatible with loadmatrix and
585 % altgetmatrix float r[4][4]
588 gl_altgetmatrix(self, args)
596 v = newlistobject(4);
600 for (i = 0; i < 4; i++) {
601 w = newlistobject(4);
606 setlistitem(v, i, w);
608 for (i = 0; i < 4; i++) {
609 for (j = 0; j < 4; j++) {
610 w = mknewfloatobject(arg1[i][j]);
615 setlistitem(getlistitem(v, i), j, w);
624 gl_lrectwrite(self, args)
635 if (!getishortarg(args, 5, 0, &x1))
637 if (!getishortarg(args, 5, 1, &y1))
639 if (!getishortarg(args, 5, 2, &x2))
641 if (!getishortarg(args, 5, 3, &y2))
643 if (!getistringarg(args, 5, 4, &parray))
645 if (!getiobjectarg(args, 5, 4, &s))
648 /* Don't check this, it breaks experiments with pixmode(PM_SIZE, ...) */
649 pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
650 if (!is_stringobject(s) || getstringsize(s) != pixcount*sizeof(long)) {
651 err_setstr(RuntimeError,
652 "string arg to lrectwrite has wrong size");
656 lrectwrite( x1 , y1 , x2 , y2 , (unsigned long *) parray );
664 gl_lrectread(self, args)
674 if (!getishortarg(args, 4, 0, &x1))
676 if (!getishortarg(args, 4, 1, &y1))
678 if (!getishortarg(args, 4, 2, &x2))
680 if (!getishortarg(args, 4, 3, &y2))
682 pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
683 parray = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
685 return NULL; /* No memory */
686 lrectread(x1, y1, x2, y2, (unsigned long *) getstringvalue(parray));
693 gl_readdisplay(self, args)
697 short x1, y1, x2, y2;
698 unsigned long *parray, hints;
702 if ( !getargs(args, "hhhhl", &x1, &y1, &x2, &y2, &hints) )
704 size = (long)(x2+1-x1) * (long)(y2+1-y1);
705 rv = newsizedstringobject((char *)NULL, size*sizeof(long));
708 parray = (unsigned long *)getstringvalue(rv);
709 size_ret = readdisplay(x1, y1, x2, y2, parray, hints);
710 if ( size_ret != size ) {
711 printf("gl_readdisplay: got %d pixels, expected %d\n",
713 err_setstr(RuntimeError, "readdisplay returned unexpected length");
719 /* Desperately needed, here are tools to compress and decompress
720 the data manipulated by lrectread/lrectwrite.
722 gl.packrect(width, height, packfactor, bigdata) --> smalldata
723 makes 'bigdata' 4*(packfactor**2) times smaller by:
724 - turning it into B/W (a factor 4)
725 - replacing squares of size pacfactor by one
728 gl.unpackrect(width, height, packfactor, smalldata) --> bigdata
729 is the inverse; the numeric arguments must be *the same*.
731 Both work best if width and height are multiples of packfactor
732 (in fact unpackrect will leave garbage bytes).
738 gl_packrect(self, args)
742 long width, height, packfactor;
744 object *unpacked, *packed;
745 int pixcount, packedcount, x, y, r, g, b;
748 unsigned long *parray;
749 if (!getilongarg(args, 4, 0, &width))
751 if (!getilongarg(args, 4, 1, &height))
753 if (!getilongarg(args, 4, 2, &packfactor))
755 if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
757 if (!getiobjectarg(args, 4, 3, &unpacked))
759 if (width <= 0 || height <= 0 || packfactor <= 0) {
760 err_setstr(RuntimeError, "packrect args must be > 0");
763 pixcount = width*height;
764 packedcount = ((width+packfactor-1)/packfactor) *
765 ((height+packfactor-1)/packfactor);
766 if (getstringsize(unpacked) != pixcount*sizeof(long)) {
767 err_setstr(RuntimeError,
768 "string arg to packrect has wrong size");
771 packed = newsizedstringobject((char *)NULL, packedcount);
774 parray = (unsigned long *) getstringvalue(unpacked);
775 p = (unsigned char *) getstringvalue(packed);
776 for (y = 0; y < height; y += packfactor, parray += packfactor*width) {
777 for (x = 0; x < width; x += packfactor) {
780 g = (pixel >> 8) & 0xff;
781 b = (pixel >> 16) & 0xff;
782 *p++ = (30*r+59*g+11*b) / 100;
790 static unsigned long unpacktab[256];
791 static int unpacktab_inited = 0;
794 gl_unpackrect(self, args)
798 long width, height, packfactor;
800 object *unpacked, *packed;
801 int pixcount, packedcount, y;
802 register unsigned char *p;
803 register unsigned long *parray;
804 if (!unpacktab_inited) {
806 for (white = 256; --white >= 0; )
807 unpacktab[white] = white * 0x010101L;
810 if (!getilongarg(args, 4, 0, &width))
812 if (!getilongarg(args, 4, 1, &height))
814 if (!getilongarg(args, 4, 2, &packfactor))
816 if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
818 if (!getiobjectarg(args, 4, 3, &packed))
820 if (width <= 0 || height <= 0 || packfactor <= 0) {
821 err_setstr(RuntimeError, "packrect args must be > 0");
824 pixcount = width*height;
825 packedcount = ((width+packfactor-1)/packfactor) *
826 ((height+packfactor-1)/packfactor);
827 if (getstringsize(packed) != packedcount) {
828 err_setstr(RuntimeError,
829 "string arg to unpackrect has wrong size");
832 unpacked = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
833 if (unpacked == NULL)
835 parray = (unsigned long *) getstringvalue(unpacked);
836 p = (unsigned char *) getstringvalue(packed);
837 if (packfactor == 1 && width*height > 0) {
838 /* Just expand bytes to longs */
839 register int x = width * height;
841 *parray++ = unpacktab[*p++];
846 for (y = 0; y < height-packfactor+1;
847 y += packfactor, parray += packfactor*width) {
849 for (x = 0; x < width-packfactor+1; x += packfactor) {
850 register unsigned long pixel = unpacktab[*p++];
852 for (i = packfactor*width; (i-=width) >= 0;) {
854 for (j = packfactor; --j >= 0; )
855 parray[i+x+j] = pixel;
865 gl_gversion(self, args)
871 return newstringobject(buf);
875 /* End of manually written stubs */
880 if !solaris void devport short s long s
881 void rdr2i long s long s
882 void rectfs short s short s short s short s
883 void rects short s short s short s short s
884 void rmv2i long s long s
921 if !solaris void spclos
929 if !solaris void endpupmode
931 if !solaris void pupmode
933 void pagecolor short s
934 void textcolor short s
938 void linewidth short s
939 void setlinestyle short s
941 void swapinterval short s
942 void writemask short s
943 if !solaris void textwritemask short s
945 void unqdevice short s
946 void curvebasis short s
947 void curveprecision short s
948 void loadname short s
949 void passthrough short s
950 void pushname short s
951 void setmonitor short s
952 if !solaris void setshade short s
953 void setpattern short s
954 if !solaris void pagewritemask short s
961 void chunksize long s
962 void compactify long s
965 void objinsert long s
966 void objreplace long s
968 void blanktime long s
970 # This is not in the library!?
971 ###void pupcolor long s
973 void backbuffer long s
974 void frontbuffer long s
975 if !solaris void lsbackup long s
980 void blankscreen long s
985 void cmov2i long s long s
986 void draw2i long s long s
987 void move2i long s long s
988 void pnt2i long s long s
989 void patchbasis long s long s
990 void patchprecision long s long s
991 void pdr2i long s long s
992 void pmv2i long s long s
993 void rpdr2i long s long s
994 void rpmv2i long s long s
995 void xfpt2i long s long s
996 void objdelete long s long s
997 void patchcurves long s long s
998 void minsize long s long s
999 void maxsize long s long s
1000 void keepaspect long s long s
1001 void prefsize long s long s
1002 void stepunit long s long s
1003 void fudge long s long s
1004 void winmove long s long s
1006 void attachcursor short s short s
1007 void deflinestyle short s short s
1008 void noise short s short s
1009 void picksize short s short s
1010 void qenter short s short s
1011 void setdepth short s short s
1012 void cmov2s short s short s
1013 void draw2s short s short s
1014 void move2s short s short s
1015 void pdr2s short s short s
1016 void pmv2s short s short s
1017 void pnt2s short s short s
1018 void rdr2s short s short s
1019 void rmv2s short s short s
1020 void rpdr2s short s short s
1021 void rpmv2s short s short s
1022 void xfpt2s short s short s
1024 void cmov2 float s float s
1025 void draw2 float s float s
1026 void move2 float s float s
1027 void pnt2 float s float s
1028 void pdr2 float s float s
1029 void pmv2 float s float s
1030 void rdr2 float s float s
1031 void rmv2 float s float s
1032 void rpdr2 float s float s
1033 void rpmv2 float s float s
1034 void xfpt2 float s float s
1036 void loadmatrix float s[4*4]
1038 void multmatrix float s[4*4]
1040 void crv float s[3*4]
1042 void rcrv float s[4*4]
1045 # Methods that have strings.
1047 void addtopup long s char *s long s
1048 void charstr char *s
1049 void getport char *s
1050 long strwidth char *s
1051 long winopen char *s
1052 void wintitle char *s
1054 # Methods that have 1 long (# of elements) and an array
1056 void polf long s float s[3*arg1]
1057 void polf2 long s float s[2*arg1]
1058 void poly long s float s[3*arg1]
1059 void poly2 long s float s[2*arg1]
1060 void crvn long s float s[3*arg1]
1061 void rcrvn long s float s[4*arg1]
1063 void polf2i long s long s[2*arg1]
1064 void polfi long s long s[3*arg1]
1065 void poly2i long s long s[2*arg1]
1066 void polyi long s long s[3*arg1]
1068 void polf2s long s short s[2*arg1]
1069 void polfs long s short s[3*arg1]
1070 void polys long s short s[3*arg1]
1071 void poly2s long s short s[2*arg1]
1073 void defcursor short s u_short s[128]
1075 void writepixels short s u_short s[arg1]
1076 # Should be unsigned short...
1077 void defbasis long s float s[4*4]
1078 if !solaris void gewrite short s short s[arg1]
1080 void rotate short s char s
1081 # This is not in the library!?
1082 ###void setbutton short s char s
1083 void rot float s char s
1085 void circfi long s long s long s
1086 void circi long s long s long s
1087 void cmovi long s long s long s
1088 void drawi long s long s long s
1089 void movei long s long s long s
1090 void pnti long s long s long s
1091 void newtag long s long s long s
1092 void pdri long s long s long s
1093 void pmvi long s long s long s
1094 void rdri long s long s long s
1095 void rmvi long s long s long s
1096 void rpdri long s long s long s
1097 void rpmvi long s long s long s
1098 void xfpti long s long s long s
1100 void circ float s float s float s
1101 void circf float s float s float s
1102 void cmov float s float s float s
1103 void draw float s float s float s
1104 void move float s float s float s
1105 void pnt float s float s float s
1106 void scale float s float s float s
1107 void translate float s float s float s
1108 void pdr float s float s float s
1109 void pmv float s float s float s
1110 void rdr float s float s float s
1111 void rmv float s float s float s
1112 void rpdr float s float s float s
1113 void rpmv float s float s float s
1114 void xfpt float s float s float s
1116 void RGBcolor short s short s short s
1117 void RGBwritemask short s short s short s
1118 void setcursor short s short s short s
1119 void tie short s short s short s
1120 void circfs short s short s short s
1121 void circs short s short s short s
1122 void cmovs short s short s short s
1123 void draws short s short s short s
1124 void moves short s short s short s
1125 void pdrs short s short s short s
1126 void pmvs short s short s short s
1127 void pnts short s short s short s
1128 void rdrs short s short s short s
1129 void rmvs short s short s short s
1130 void rpdrs short s short s short s
1131 void rpmvs short s short s short s
1132 void xfpts short s short s short s
1133 void curorigin short s short s short s
1134 void cyclemap short s short s short s
1136 void patch float s[4*4] float s[4*4] float s[4*4]
1137 void splf long s float s[3*arg1] u_short s[arg1]
1138 void splf2 long s float s[2*arg1] u_short s[arg1]
1139 void splfi long s long s[3*arg1] u_short s[arg1]
1140 void splf2i long s long s[2*arg1] u_short s[arg1]
1141 void splfs long s short s[3*arg1] u_short s[arg1]
1142 void splf2s long s short s[2*arg1] u_short s[arg1]
1143 ###void defpattern short s short s u_short s[arg2*arg2/16]
1145 void rpatch float s[4*4] float s[4*4] float s[4*4] float s[4*4]
1147 # routines that send 4 floats
1149 void ortho2 float s float s float s float s
1150 void rect float s float s float s float s
1151 void rectf float s float s float s float s
1152 void xfpt4 float s float s float s float s
1154 void textport short s short s short s short s
1155 void mapcolor short s short s short s short s
1156 void scrmask short s short s short s short s
1157 void setvaluator short s short s short s short s
1158 void viewport short s short s short s short s
1159 void shaderange short s short s short s short s
1160 void xfpt4s short s short s short s short s
1161 void rectfi long s long s long s long s
1162 void recti long s long s long s long s
1163 void xfpt4i long s long s long s long s
1164 void prefposition long s long s long s long s
1166 void arc float s float s float s short s short s
1167 void arcf float s float s float s short s short s
1168 void arcfi long s long s long s short s short s
1169 void arci long s long s long s short s short s
1171 void bbox2 short s short s float s float s float s float s
1172 void bbox2i short s short s long s long s long s long s
1173 void bbox2s short s short s short s short s short s short s
1174 void blink short s short s short s short s short s
1175 void ortho float s float s float s float s float s float s
1176 void window float s float s float s float s float s float s
1177 void lookat float s float s float s float s float s float s short s
1179 void perspective short s float s float s float s
1180 void polarview float s short s short s short s
1181 # XXX getichararray not supported
1182 #void writeRGB short s char s[arg1] char s[arg1] char s[arg1]
1184 void arcfs short s short s short s short s short s
1185 void arcs short s short s short s short s short s
1186 void rectcopy short s short s short s short s short s short s
1187 if !solaris void RGBcursor short s short s short s short s short s short s short s
1189 long getbutton short s
1197 long isqueued short s
1220 long getothermonitor
1223 long getvaluator short s
1226 void getdepth short r short r
1227 void getcpos short r short r
1228 void getsize long r long r
1229 void getorigin long r long r
1230 void getviewport short r short r short r short r
1231 if !solaris void gettp short r short r short r short r
1232 void getgpos float r float r float r float r
1233 void winposition long s long s long s long s
1234 void gRGBcolor short r short r short r
1235 void gRGBmask short r short r short r
1236 void getscrmask short r short r short r short r
1237 ###void gRGBcursor short r short r short r short r short r short r short r short r
1238 void getmcolor short s short r short r short r
1239 void mapw long s short s short s float r float r float r float r float r float r
1240 void mapw2 long s short s short s float r float r
1241 ###void defrasterfont short s short s short s Fontchar s[arg3] short s short s[4*arg5]
1242 ###long qread short r
1243 void getcursor short r u_short r u_short r long r
1245 # For these we receive arrays of stuff
1247 ###void getdev long s short s[arg1] short r[arg1]
1248 #XXX not generated correctly yet
1249 #void getmatrix float r[16]
1250 ###long readpixels short s short r[retval]
1251 ###long readRGB short s char r[retval] char r[retval] char r[retval]
1252 ###long blkqread short s short r[arg1]
1258 void curstype long s
1259 void drawmode long s
1260 void gammaramp short s[256] short s[256] short s[256]
1266 long getvideo long s
1267 void imakebackground
1268 void lmbind short s short s
1269 void lmdef long s long s long s float s[arg3]
1271 void normal float s[3]
1273 void RGBrange short s short s short s short s short s short s short s short s
1274 if !solaris void setvideo long s long s
1275 void shademodel long s
1276 void underlay long s
1278 # New Personal Iris/GT Routines
1294 void blendfunction long s long s
1303 void czclear long s long s
1304 void dglclose long s
1305 long dglopen char *s long s
1306 long getgdesc long s
1307 void getnurbsproperty long s float r
1308 void glcompat long s long s
1309 void iconsize long s long s
1310 void icontitle char *s
1311 void lRGBrange short s short s short s short s short s short s long s long s
1312 void linesmooth long s
1315 ###long lrectread short s short s short s short s long r[retval]
1316 ###void lrectwrite short s short s short s short s long s[(arg2-arg1+1)*(arg4-arg3+1)]
1317 ### Now manual, with string last arg
1318 ###long rectread short s short s short s short s short r[retval]
1319 ###void rectwrite short s short s short s short s short s[(arg2-arg1+1)*(arg4-arg3+1)]
1320 void lsetdepth long s long s
1321 void lshaderange short s short s long s long s
1324 void pntsmooth long s
1325 void readsource long s
1326 void rectzoom float s float s
1327 void sbox float s float s float s float s
1328 void sboxi long s long s long s long s
1329 void sboxs short s short s short s short s
1330 void sboxf float s float s float s float s
1331 void sboxfi long s long s long s long s
1332 void sboxfs short s short s short s short s
1333 void setnurbsproperty long s float s
1334 void setpup long s long s long s
1335 void smoothline long s
1336 void subpixel long s
1338 long swinopen long s
1348 void videocmd long s
1349 long windepth long s
1352 void zfunction long s
1354 void zwritemask long s
1358 void v2d double s[2]
1359 void v3d double s[3]
1360 void v4d double s[4]
1362 # Why isn't this here?
1364 void pixmode long s long s