summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/cstubs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Modules/cstubs b/Modules/cstubs
index 6ff8f54..04f4578 100644
--- a/Modules/cstubs
+++ b/Modules/cstubs
@@ -657,6 +657,35 @@ gl_lrectread(self, args)
return parray;
}
+% readdisplay
+
+static object *
+gl_readdisplay(self, args)
+ object *self;
+ object *args;
+{
+ short x1, y1, x2, y2;
+ unsigned long *parray, hints;
+ long size, size_ret;
+ object *rv;
+
+ if ( !getargs(args, "hhhhl", &x1, &y1, &x2, &y2, &hints) )
+ return 0;
+ size = (long)(x2+1-x1) * (long)(y2+1-y1);
+ rv = newsizedstringobject((char *)NULL, size*sizeof(long));
+ if ( rv == NULL )
+ return NULL;
+ parray = (unsigned long *)getstringvalue(rv);
+ size_ret = readdisplay(x1, y1, x2, y2, parray, hints);
+ if ( size_ret != size ) {
+ printf("gl_readdisplay: got %d pixels, expected %d\n",
+ size_ret, size);
+ err_setstr(RuntimeError, "readdisplay returned unexpected length");
+ return NULL;
+ }
+ return rv;
+}
+
/* Desperately needed, here are tools to compress and decompress
the data manipulated by lrectread/lrectwrite.