2 Input used to generate the Python module "glmodule.c".
3 The stub generator is a Python script called "cgen.py".
5 Each definition must be contained on one line:
7 <returntype> <name> <type> <arg> <type> <arg>
9 <returntype> can be: void, short, long (XXX maybe others?)
11 <type> can be: char, string, short, float, long, or double
12 string indicates a null terminated string;
13 if <type> is char and <arg> begins with a *, the * is stripped
14 and <type> is changed into string
16 <arg> has the form <mode> or <mode>[<subscript>]
19 r: arg is received (arg is a pointer)
20 and <subscript> can be (N and I are numbers):
27 In the case where the subscript consists of two parts
28 separated by *, the first part is the width of the matrix, and
29 the second part is the length of the matrix. This order is
30 opposite from the order used in C to declare a two-dimensional
35 * An attempt has been made to make this module switch threads on qread
36 * calls. It is far from safe, though.
42 #include "allobjects.h"
44 #include "modsupport.h"
45 #include "cgensupport.h"
49 Some stubs are too complicated for the stub generator.
50 We can include manually written versions of them here.
51 A line starting with '%' gives the name of the function so the stub
52 generator can include it in the table of functions.
65 retval = qread( & arg1 );
67 { object *v = newtupleobject( 2 );
68 if (v == NULL) return NULL;
69 settupleitem(v, 0, mknewlongobject(retval));
70 settupleitem(v, 1, mknewshortobject(arg1));
77 varray -- an array of v.. calls.
78 The argument is an array (maybe list or tuple) of points.
79 Each point must be a tuple or list of coordinates (x, y, z).
80 The points may be 2- or 3-dimensional but must all have the
81 same dimension. Float and int values may be mixed however.
82 The points are always converted to 3D double precision points
83 by assuming z=0.0 if necessary (as indicated in the man page),
84 and for each point v3d() is called.
97 object * (*getitem) FPROTO((object *, int));
99 if (!getiobjectarg(args, 1, 0, &v))
102 if (is_listobject(v)) {
104 getitem = getlistitem;
106 else if (is_tupleobject(v)) {
108 getitem = gettupleitem;
120 w = (*getitem)(v, 0);
125 else if (is_listobject(w)) {
126 width = getlistsize(w);
128 else if (is_tupleobject(w)) {
129 width = gettuplesize(w);
143 for (i = 0; i < n; i++) {
144 w = (*getitem)(v, i);
145 if (!getidoublearray(w, 1, 0, width, vec))
155 vnarray, nvarray -- an array of n3f and v3f calls.
156 The argument is an array (list or tuple) of pairs of points and normals.
157 Each pair is a tuple (NOT a list) of a point and a normal for that point.
158 Each point or normal must be a tuple (NOT a list) of coordinates (x, y, z).
159 Three coordinates must be given. Float and int values may be mixed.
160 For each pair, n3f() is called for the normal, and then v3f() is called
163 vnarray and nvarray differ only in the order of the vector and normal in
164 the pair: vnarray expects (v, n) while nvarray expects (n, v).
167 static object *gen_nvarray(); /* Forward */
172 gl_nvarray(self, args)
176 return gen_nvarray(args, 0);
182 gl_vnarray(self, args)
186 return gen_nvarray(args, 1);
189 /* Generic, internal version of {nv,nv}array: inorm indicates the
190 argument order, 0: normal first, 1: vector first. */
193 gen_nvarray(args, inorm)
197 object *v, *w, *wnorm, *wvec;
199 float norm[3], vec[3];
200 object * (*getitem) FPROTO((object *, int));
202 if (!getiobjectarg(args, 1, 0, &v))
205 if (is_listobject(v)) {
207 getitem = getlistitem;
209 else if (is_tupleobject(v)) {
211 getitem = gettupleitem;
218 for (i = 0; i < n; i++) {
219 w = (*getitem)(v, i);
220 if (!is_tupleobject(w) || gettuplesize(w) != 2) {
224 wnorm = gettupleitem(w, inorm);
225 wvec = gettupleitem(w, 1 - inorm);
226 if (!getifloatarray(wnorm, 1, 0, 3, norm) ||
227 !getifloatarray(wvec, 1, 0, 3, vec))
237 /* nurbssurface(s_knots[], t_knots[], ctl[][], s_order, t_order, type).
238 The dimensions of ctl[] are computed as follows:
239 [len(s_knots) - s_order], [len(t_knots) - t_order]
245 gl_nurbssurface(self, args)
258 long s_byte_stride, t_byte_stride;
263 if (!getilongarraysize(args, 6, 0, &arg1))
265 if ((arg2 = NEW(double, arg1 )) == NULL) {
268 if (!getidoublearray(args, 6, 0, arg1 , arg2))
270 if (!getilongarraysize(args, 6, 1, &arg3))
272 if ((arg4 = NEW(double, arg3 )) == NULL) {
275 if (!getidoublearray(args, 6, 1, arg3 , arg4))
277 if (!getilongarg(args, 6, 3, &arg6))
279 if (!getilongarg(args, 6, 4, &arg7))
281 if (!getilongarg(args, 6, 5, &arg8))
285 else if (arg8 == N_XYZW)
291 s_nctl = arg1 - arg6;
292 t_nctl = arg3 - arg7;
293 if (!getiobjectarg(args, 6, 2, &v))
295 if (!is_listobject(v) || getlistsize(v) != s_nctl) {
299 if ((arg5 = NEW(double, s_nctl*t_nctl*ncoords )) == NULL) {
303 for (s = 0; s < s_nctl; s++) {
304 w = getlistitem(v, s);
305 if (w == NULL || !is_listobject(w) ||
306 getlistsize(w) != t_nctl) {
310 for (t = 0; t < t_nctl; t++) {
311 pt = getlistitem(w, t);
312 if (!getidoublearray(pt, 1, 0, ncoords, pnext))
317 s_byte_stride = sizeof(double) * ncoords;
318 t_byte_stride = s_byte_stride * s_nctl;
319 nurbssurface( arg1 , arg2 , arg3 , arg4 ,
320 s_byte_stride , t_byte_stride , arg5 , arg6 , arg7 , arg8 );
328 /* nurbscurve(knots, ctlpoints, order, type).
329 The length of ctlpoints is len(knots)-order. */
334 gl_nurbscurve(self, args)
344 int ncoords, npoints;
348 if (!getilongarraysize(args, 4, 0, &arg1))
350 if ((arg2 = NEW(double, arg1 )) == NULL) {
353 if (!getidoublearray(args, 4, 0, arg1 , arg2))
355 if (!getilongarg(args, 4, 2, &arg5))
357 if (!getilongarg(args, 4, 3, &arg6))
361 else if (arg6 == N_STW)
367 npoints = arg1 - arg5;
368 if (!getiobjectarg(args, 4, 1, &v))
370 if (!is_listobject(v) || getlistsize(v) != npoints) {
374 if ((arg4 = NEW(double, npoints*ncoords )) == NULL) {
378 for (i = 0; i < npoints; i++) {
379 if (!getidoublearray(getlistitem(v, i), 1, 0, ncoords, pnext))
383 arg3 = (sizeof(double)) * ncoords;
384 nurbscurve( arg1 , arg2 , arg3 , arg4 , arg5 , arg6 );
391 /* pwlcurve(points, type).
392 Points is a list of points. Type must be N_ST. */
397 gl_pwlcurve(self, args)
403 double *data, *pnext;
404 long npoints, ncoords;
406 if (!getiobjectarg(args, 2, 0, &v))
408 if (!getilongarg(args, 2, 1, &type))
410 if (!is_listobject(v)) {
414 npoints = getlistsize(v);
421 if ((data = NEW(double, npoints*ncoords)) == NULL) {
425 for (i = 0; i < npoints; i++) {
426 if (!getidoublearray(getlistitem(v, i), 1, 0, ncoords, pnext))
430 pwlcurve(npoints, data, sizeof(double)*ncoords, type);
437 /* Picking and Selecting */
439 static short *pickbuffer = NULL;
440 static long pickbuffersize;
443 pick_select(args, func)
447 if (!getilongarg(args, 1, 0, &pickbuffersize))
449 if (pickbuffer != NULL) {
450 err_setstr(RuntimeError,
451 "pick/gselect: already picking/selecting");
454 if ((pickbuffer = NEW(short, pickbuffersize)) == NULL) {
457 (*func)(pickbuffer, pickbuffersize);
463 endpick_select(args, func)
471 if (pickbuffer == NULL) {
472 err_setstr(RuntimeError,
473 "endpick/endselect: not in pick/select mode");
476 nhits = (*func)(pickbuffer);
478 nhits = -nhits; /* How to report buffer overflow otherwise? */
480 /* Scan the buffer to see how many integers */
482 for (; nhits > 0; nhits--) {
483 n += 1 + pickbuffer[n];
485 v = newlistobject(n);
488 /* XXX Could do it nicer and interpret the data structure here,
489 returning a list of lists. But this can be done in Python... */
490 for (i = 0; i < n; i++) {
491 w = newintobject((long)pickbuffer[i]);
496 setlistitem(v, i, w);
503 extern void pick(), gselect();
504 extern long endpick(), endselect();
507 static object *gl_pick(self, args) object *self, *args; {
508 return pick_select(args, pick);
512 static object *gl_endpick(self, args) object *self, *args; {
513 return endpick_select(args, endpick);
517 static object *gl_gselect(self, args) object *self, *args; {
518 return pick_select(args, gselect);
522 static object *gl_endselect(self, args) object *self, *args; {
523 return endpick_select(args, endselect);
527 /* XXX The generator botches this one. Here's a quick hack to fix it. */
529 /* XXX The generator botches this one. Here's a quick hack to fix it. */
531 % getmatrix float r[16]
534 gl_getmatrix(self, args)
542 v = newlistobject(16);
546 for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
547 w = mknewfloatobject(arg1[i][j]);
552 setlistitem(v, i*4+j, w);
557 /* Here's an alternate version that returns a 4x4 matrix instead of
558 a vector. Unfortunately it is incompatible with loadmatrix and
561 % altgetmatrix float r[4][4]
564 gl_altgetmatrix(self, args)
572 v = newlistobject(4);
576 for (i = 0; i < 4; i++) {
577 w = newlistobject(4);
582 setlistitem(v, i, w);
584 for (i = 0; i < 4; i++) {
585 for (j = 0; j < 4; j++) {
586 w = mknewfloatobject(arg1[i][j]);
591 setlistitem(getlistitem(v, i), j, w);
600 gl_lrectwrite(self, args)
611 if (!getishortarg(args, 5, 0, &x1))
613 if (!getishortarg(args, 5, 1, &y1))
615 if (!getishortarg(args, 5, 2, &x2))
617 if (!getishortarg(args, 5, 3, &y2))
619 if (!getistringarg(args, 5, 4, &parray))
621 if (!getiobjectarg(args, 5, 4, &s))
624 /* Don't check this, it breaks experiments with pixmode(PM_SIZE, ...) */
625 pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
626 if (!is_stringobject(s) || getstringsize(s) != pixcount*sizeof(long)) {
627 err_setstr(RuntimeError,
628 "string arg to lrectwrite has wrong size");
632 lrectwrite( x1 , y1 , x2 , y2 , (unsigned long *) parray );
640 gl_lrectread(self, args)
650 if (!getishortarg(args, 4, 0, &x1))
652 if (!getishortarg(args, 4, 1, &y1))
654 if (!getishortarg(args, 4, 2, &x2))
656 if (!getishortarg(args, 4, 3, &y2))
658 pixcount = (long)(x2+1-x1) * (long)(y2+1-y1);
659 parray = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
661 return NULL; /* No memory */
662 lrectread(x1, y1, x2, y2, (unsigned long *) getstringvalue(parray));
669 gl_readdisplay(self, args)
673 short x1, y1, x2, y2;
674 unsigned long *parray, hints;
678 if ( !getargs(args, "hhhhl", &x1, &y1, &x2, &y2, &hints) )
680 size = (long)(x2+1-x1) * (long)(y2+1-y1);
681 rv = newsizedstringobject((char *)NULL, size*sizeof(long));
684 parray = (unsigned long *)getstringvalue(rv);
685 size_ret = readdisplay(x1, y1, x2, y2, parray, hints);
686 if ( size_ret != size ) {
687 printf("gl_readdisplay: got %d pixels, expected %d\n",
689 err_setstr(RuntimeError, "readdisplay returned unexpected length");
695 /* Desperately needed, here are tools to compress and decompress
696 the data manipulated by lrectread/lrectwrite.
698 gl.packrect(width, height, packfactor, bigdata) --> smalldata
699 makes 'bigdata' 4*(packfactor**2) times smaller by:
700 - turning it into B/W (a factor 4)
701 - replacing squares of size pacfactor by one
704 gl.unpackrect(width, height, packfactor, smalldata) --> bigdata
705 is the inverse; the numeric arguments must be *the same*.
707 Both work best if width and height are multiples of packfactor
708 (in fact unpackrect will leave garbage bytes).
714 gl_packrect(self, args)
718 long width, height, packfactor;
720 object *unpacked, *packed;
721 int pixcount, packedcount, x, y, r, g, b;
724 unsigned long *parray;
725 if (!getilongarg(args, 4, 0, &width))
727 if (!getilongarg(args, 4, 1, &height))
729 if (!getilongarg(args, 4, 2, &packfactor))
731 if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
733 if (!getiobjectarg(args, 4, 3, &unpacked))
735 if (width <= 0 || height <= 0 || packfactor <= 0) {
736 err_setstr(RuntimeError, "packrect args must be > 0");
739 pixcount = width*height;
740 packedcount = ((width+packfactor-1)/packfactor) *
741 ((height+packfactor-1)/packfactor);
742 if (getstringsize(unpacked) != pixcount*sizeof(long)) {
743 err_setstr(RuntimeError,
744 "string arg to packrect has wrong size");
747 packed = newsizedstringobject((char *)NULL, packedcount);
750 parray = (unsigned long *) getstringvalue(unpacked);
751 p = (unsigned char *) getstringvalue(packed);
752 for (y = 0; y < height; y += packfactor, parray += packfactor*width) {
753 for (x = 0; x < width; x += packfactor) {
756 g = (pixel >> 8) & 0xff;
757 b = (pixel >> 16) & 0xff;
758 *p++ = (30*r+59*g+11*b) / 100;
766 static unsigned long unpacktab[256];
767 static int unpacktab_inited = 0;
770 gl_unpackrect(self, args)
774 long width, height, packfactor;
776 object *unpacked, *packed;
777 int pixcount, packedcount, y;
778 register unsigned char *p;
779 register unsigned long *parray;
780 if (!unpacktab_inited) {
782 for (white = 256; --white >= 0; )
783 unpacktab[white] = white * 0x010101L;
786 if (!getilongarg(args, 4, 0, &width))
788 if (!getilongarg(args, 4, 1, &height))
790 if (!getilongarg(args, 4, 2, &packfactor))
792 if (!getistringarg(args, 4, 3, &s)) /* For type checking only */
794 if (!getiobjectarg(args, 4, 3, &packed))
796 if (width <= 0 || height <= 0 || packfactor <= 0) {
797 err_setstr(RuntimeError, "packrect args must be > 0");
800 pixcount = width*height;
801 packedcount = ((width+packfactor-1)/packfactor) *
802 ((height+packfactor-1)/packfactor);
803 if (getstringsize(packed) != packedcount) {
804 err_setstr(RuntimeError,
805 "string arg to unpackrect has wrong size");
808 unpacked = newsizedstringobject((char *)NULL, pixcount*sizeof(long));
809 if (unpacked == NULL)
811 parray = (unsigned long *) getstringvalue(unpacked);
812 p = (unsigned char *) getstringvalue(packed);
813 if (packfactor == 1 && width*height > 0) {
814 /* Just expand bytes to longs */
815 register int x = width * height;
817 *parray++ = unpacktab[*p++];
822 for (y = 0; y < height-packfactor+1;
823 y += packfactor, parray += packfactor*width) {
825 for (x = 0; x < width-packfactor+1; x += packfactor) {
826 register unsigned long pixel = unpacktab[*p++];
828 for (i = packfactor*width; (i-=width) >= 0;) {
830 for (j = packfactor; --j >= 0; )
831 parray[i+x+j] = pixel;
841 gl_gversion(self, args)
847 return newstringobject(buf);
851 /* End of manually written stubs */
856 if !solaris void devport short s long s
857 void rdr2i long s long s
858 void rectfs short s short s short s short s
859 void rects short s short s short s short s
860 void rmv2i long s long s
897 if !solaris void spclos
905 if !solaris void endpupmode
907 if !solaris void pupmode
909 void pagecolor short s
910 void textcolor short s
914 void linewidth short s
915 void setlinestyle short s
917 void swapinterval short s
918 void writemask short s
919 if !solaris void textwritemask short s
921 void unqdevice short s
922 void curvebasis short s
923 void curveprecision short s
924 void loadname short s
925 void passthrough short s
926 void pushname short s
927 void setmonitor short s
928 if !solaris void setshade short s
929 void setpattern short s
930 if !solaris void pagewritemask short s
937 void chunksize long s
938 void compactify long s
941 void objinsert long s
942 void objreplace long s
944 void blanktime long s
946 # This is not in the library!?
947 ###void pupcolor long s
949 void backbuffer long s
950 void frontbuffer long s
951 if !solaris void lsbackup long s
956 void blankscreen long s
961 void cmov2i long s long s
962 void draw2i long s long s
963 void move2i long s long s
964 void pnt2i long s long s
965 void patchbasis long s long s
966 void patchprecision long s long s
967 void pdr2i long s long s
968 void pmv2i long s long s
969 void rpdr2i long s long s
970 void rpmv2i long s long s
971 void xfpt2i long s long s
972 void objdelete long s long s
973 void patchcurves long s long s
974 void minsize long s long s
975 void maxsize long s long s
976 void keepaspect long s long s
977 void prefsize long s long s
978 void stepunit long s long s
979 void fudge long s long s
980 void winmove long s long s
982 void attachcursor short s short s
983 void deflinestyle short s short s
984 void noise short s short s
985 void picksize short s short s
986 void qenter short s short s
987 void setdepth short s short s
988 void cmov2s short s short s
989 void draw2s short s short s
990 void move2s short s short s
991 void pdr2s short s short s
992 void pmv2s short s short s
993 void pnt2s short s short s
994 void rdr2s short s short s
995 void rmv2s short s short s
996 void rpdr2s short s short s
997 void rpmv2s short s short s
998 void xfpt2s short s short s
1000 void cmov2 float s float s
1001 void draw2 float s float s
1002 void move2 float s float s
1003 void pnt2 float s float s
1004 void pdr2 float s float s
1005 void pmv2 float s float s
1006 void rdr2 float s float s
1007 void rmv2 float s float s
1008 void rpdr2 float s float s
1009 void rpmv2 float s float s
1010 void xfpt2 float s float s
1012 void loadmatrix float s[4*4]
1014 void multmatrix float s[4*4]
1016 void crv float s[3*4]
1018 void rcrv float s[4*4]
1021 # Methods that have strings.
1023 void addtopup long s char *s long s
1024 void charstr char *s
1025 void getport char *s
1026 long strwidth char *s
1027 long winopen char *s
1028 void wintitle char *s
1030 # Methods that have 1 long (# of elements) and an array
1032 void polf long s float s[3*arg1]
1033 void polf2 long s float s[2*arg1]
1034 void poly long s float s[3*arg1]
1035 void poly2 long s float s[2*arg1]
1036 void crvn long s float s[3*arg1]
1037 void rcrvn long s float s[4*arg1]
1039 void polf2i long s long s[2*arg1]
1040 void polfi long s long s[3*arg1]
1041 void poly2i long s long s[2*arg1]
1042 void polyi long s long s[3*arg1]
1044 void polf2s long s short s[2*arg1]
1045 void polfs long s short s[3*arg1]
1046 void polys long s short s[3*arg1]
1047 void poly2s long s short s[2*arg1]
1049 void defcursor short s u_short s[128]
1051 void writepixels short s u_short s[arg1]
1052 # Should be unsigned short...
1053 void defbasis long s float s[4*4]
1054 if !solaris void gewrite short s short s[arg1]
1056 void rotate short s char s
1057 # This is not in the library!?
1058 ###void setbutton short s char s
1059 void rot float s char s
1061 void circfi long s long s long s
1062 void circi long s long s long s
1063 void cmovi long s long s long s
1064 void drawi long s long s long s
1065 void movei long s long s long s
1066 void pnti long s long s long s
1067 void newtag long s long s long s
1068 void pdri long s long s long s
1069 void pmvi long s long s long s
1070 void rdri long s long s long s
1071 void rmvi long s long s long s
1072 void rpdri long s long s long s
1073 void rpmvi long s long s long s
1074 void xfpti long s long s long s
1076 void circ float s float s float s
1077 void circf float s float s float s
1078 void cmov float s float s float s
1079 void draw float s float s float s
1080 void move float s float s float s
1081 void pnt float s float s float s
1082 void scale float s float s float s
1083 void translate float s float s float s
1084 void pdr float s float s float s
1085 void pmv float s float s float s
1086 void rdr float s float s float s
1087 void rmv float s float s float s
1088 void rpdr float s float s float s
1089 void rpmv float s float s float s
1090 void xfpt float s float s float s
1092 void RGBcolor short s short s short s
1093 void RGBwritemask short s short s short s
1094 void setcursor short s short s short s
1095 void tie short s short s short s
1096 void circfs short s short s short s
1097 void circs short s short s short s
1098 void cmovs short s short s short s
1099 void draws short s short s short s
1100 void moves short s short s short s
1101 void pdrs short s short s short s
1102 void pmvs short s short s short s
1103 void pnts short s short s short s
1104 void rdrs short s short s short s
1105 void rmvs short s short s short s
1106 void rpdrs short s short s short s
1107 void rpmvs short s short s short s
1108 void xfpts short s short s short s
1109 void curorigin short s short s short s
1110 void cyclemap short s short s short s
1112 void patch float s[4*4] float s[4*4] float s[4*4]
1113 void splf long s float s[3*arg1] u_short s[arg1]
1114 void splf2 long s float s[2*arg1] u_short s[arg1]
1115 void splfi long s long s[3*arg1] u_short s[arg1]
1116 void splf2i long s long s[2*arg1] u_short s[arg1]
1117 void splfs long s short s[3*arg1] u_short s[arg1]
1118 void splf2s long s short s[2*arg1] u_short s[arg1]
1119 ###void defpattern short s short s u_short s[arg2*arg2/16]
1121 void rpatch float s[4*4] float s[4*4] float s[4*4] float s[4*4]
1123 # routines that send 4 floats
1125 void ortho2 float s float s float s float s
1126 void rect float s float s float s float s
1127 void rectf float s float s float s float s
1128 void xfpt4 float s float s float s float s
1130 void textport short s short s short s short s
1131 void mapcolor short s short s short s short s
1132 void scrmask short s short s short s short s
1133 void setvaluator short s short s short s short s
1134 void viewport short s short s short s short s
1135 void shaderange short s short s short s short s
1136 void xfpt4s short s short s short s short s
1137 void rectfi long s long s long s long s
1138 void recti long s long s long s long s
1139 void xfpt4i long s long s long s long s
1140 void prefposition long s long s long s long s
1142 void arc float s float s float s short s short s
1143 void arcf float s float s float s short s short s
1144 void arcfi long s long s long s short s short s
1145 void arci long s long s long s short s short s
1147 void bbox2 short s short s float s float s float s float s
1148 void bbox2i short s short s long s long s long s long s
1149 void bbox2s short s short s short s short s short s short s
1150 void blink short s short s short s short s short s
1151 void ortho float s float s float s float s float s float s
1152 void window float s float s float s float s float s float s
1153 void lookat float s float s float s float s float s float s short s
1155 void perspective short s float s float s float s
1156 void polarview float s short s short s short s
1157 # XXX getichararray not supported
1158 #void writeRGB short s char s[arg1] char s[arg1] char s[arg1]
1160 void arcfs short s short s short s short s short s
1161 void arcs short s short s short s short s short s
1162 void rectcopy short s short s short s short s short s short s
1163 if !solaris void RGBcursor short s short s short s short s short s short s short s
1165 long getbutton short s
1173 long isqueued short s
1196 long getothermonitor
1199 long getvaluator short s
1202 void getdepth short r short r
1203 void getcpos short r short r
1204 void getsize long r long r
1205 void getorigin long r long r
1206 void getviewport short r short r short r short r
1207 if !solaris void gettp short r short r short r short r
1208 void getgpos float r float r float r float r
1209 void winposition long s long s long s long s
1210 void gRGBcolor short r short r short r
1211 void gRGBmask short r short r short r
1212 void getscrmask short r short r short r short r
1213 ###void gRGBcursor short r short r short r short r short r short r short r short r
1214 void getmcolor short s short r short r short r
1215 void mapw long s short s short s float r float r float r float r float r float r
1216 void mapw2 long s short s short s float r float r
1217 ###void defrasterfont short s short s short s Fontchar s[arg3] short s short s[4*arg5]
1218 ###long qread short r
1219 void getcursor short r u_short r u_short r long r
1221 # For these we receive arrays of stuff
1223 ###void getdev long s short s[arg1] short r[arg1]
1224 #XXX not generated correctly yet
1225 #void getmatrix float r[16]
1226 ###long readpixels short s short r[retval]
1227 ###long readRGB short s char r[retval] char r[retval] char r[retval]
1228 ###long blkqread short s short r[arg1]
1234 void curstype long s
1235 void drawmode long s
1236 void gammaramp short s[256] short s[256] short s[256]
1242 long getvideo long s
1243 void imakebackground
1244 void lmbind short s short s
1245 void lmdef long s long s long s float s[arg3]
1247 void normal float s[3]
1249 void RGBrange short s short s short s short s short s short s short s short s
1250 if !solaris void setvideo long s long s
1251 void shademodel long s
1252 void underlay long s
1254 # New Personal Iris/GT Routines
1270 void blendfunction long s long s
1279 void czclear long s long s
1280 void dglclose long s
1281 long dglopen char *s long s
1282 long getgdesc long s
1283 void getnurbsproperty long s float r
1284 void glcompat long s long s
1285 void iconsize long s long s
1286 void icontitle char *s
1287 void lRGBrange short s short s short s short s short s short s long s long s
1288 void linesmooth long s
1291 ###long lrectread short s short s short s short s long r[retval]
1292 ###void lrectwrite short s short s short s short s long s[(arg2-arg1+1)*(arg4-arg3+1)]
1293 ### Now manual, with string last arg
1294 ###long rectread short s short s short s short s short r[retval]
1295 ###void rectwrite short s short s short s short s short s[(arg2-arg1+1)*(arg4-arg3+1)]
1296 void lsetdepth long s long s
1297 void lshaderange short s short s long s long s
1300 void pntsmooth long s
1301 void readsource long s
1302 void rectzoom float s float s
1303 void sbox float s float s float s float s
1304 void sboxi long s long s long s long s
1305 void sboxs short s short s short s short s
1306 void sboxf float s float s float s float s
1307 void sboxfi long s long s long s long s
1308 void sboxfs short s short s short s short s
1309 void setnurbsproperty long s float s
1310 void setpup long s long s long s
1311 void smoothline long s
1312 void subpixel long s
1314 long swinopen long s
1324 void videocmd long s
1325 long windepth long s
1328 void zfunction long s
1330 void zwritemask long s
1334 void v2d double s[2]
1335 void v3d double s[3]
1336 void v4d double s[4]
1338 # Why isn't this here?
1340 void pixmode long s long s