diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/cstubs | 29 |
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. |