mirror of
https://github.com/python/cpython.git
synced 2025-10-18 04:38:07 +00:00
Grandly renamed.
Note that since I have no idea how to test this, I didn't write a test case. It does seem to at least compile on my system though.
This commit is contained in:
parent
dbfed710a1
commit
7bd9fbdea2
1 changed files with 52 additions and 50 deletions
|
@ -14,8 +14,8 @@
|
||||||
* Changed to incorporate into Python.
|
* Changed to incorporate into Python.
|
||||||
* Sjoerd Mullender - 1993
|
* Sjoerd Mullender - 1993
|
||||||
*/
|
*/
|
||||||
#include "allobjects.h"
|
#include "Python.h"
|
||||||
#include "modsupport.h"
|
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -83,12 +83,12 @@ typedef struct {
|
||||||
|
|
||||||
#define CHANOFFSET(z) (3-(z)) /* this is byte order dependent */
|
#define CHANOFFSET(z) (3-(z)) /* this is byte order dependent */
|
||||||
|
|
||||||
static void expandrow PROTO((unsigned char *, unsigned char *, int));
|
static void expandrow Py_PROTO((unsigned char *, unsigned char *, int));
|
||||||
static void setalpha PROTO((unsigned char *, int));
|
static void setalpha Py_PROTO((unsigned char *, int));
|
||||||
static void copybw PROTO((long *, int));
|
static void copybw Py_PROTO((long *, int));
|
||||||
static void interleaverow PROTO((unsigned char *, unsigned char *, int, int));
|
static void interleaverow Py_PROTO((unsigned char*, unsigned char*, int, int));
|
||||||
static int compressrow PROTO((unsigned char *, unsigned char *, int, int));
|
static int compressrow Py_PROTO((unsigned char *, unsigned char *, int, int));
|
||||||
static void lumrow PROTO((unsigned char *, unsigned char *, int));
|
static void lumrow Py_PROTO((unsigned char *, unsigned char *, int));
|
||||||
|
|
||||||
#ifdef ADD_TAGS
|
#ifdef ADD_TAGS
|
||||||
#define TAGLEN (5)
|
#define TAGLEN (5)
|
||||||
|
@ -96,7 +96,7 @@ static void lumrow PROTO((unsigned char *, unsigned char *, int));
|
||||||
#define TAGLEN (0)
|
#define TAGLEN (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static object *ImgfileError;
|
static PyObject *ImgfileError;
|
||||||
|
|
||||||
static int reverse_order;
|
static int reverse_order;
|
||||||
|
|
||||||
|
@ -229,29 +229,29 @@ int len;
|
||||||
* return the xsize and ysize of an iris image file.
|
* return the xsize and ysize of an iris image file.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static object *
|
static PyObject *
|
||||||
sizeofimage(self, args)
|
sizeofimage(self, args)
|
||||||
object *self, *args;
|
PyObject *self, *args;
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
IMAGE image;
|
IMAGE image;
|
||||||
FILE *inf;
|
FILE *inf;
|
||||||
|
|
||||||
if (!getargs(args, "s", &name))
|
if (!PyArg_Parse(args, "s", &name))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
inf = fopen(name,"r");
|
inf = fopen(name,"r");
|
||||||
if(!inf) {
|
if(!inf) {
|
||||||
err_setstr(ImgfileError, "can't open image file");
|
PyErr_SetString(ImgfileError, "can't open image file");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
readheader(inf,&image);
|
readheader(inf,&image);
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
if(image.imagic != IMAGIC) {
|
if(image.imagic != IMAGIC) {
|
||||||
err_setstr(ImgfileError, "bad magic number in image file");
|
PyErr_SetString(ImgfileError, "bad magic number in image file");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return mkvalue("(ii)", image.xsize, image.ysize);
|
return Py_BuildValue("(ii)", image.xsize, image.ysize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -260,9 +260,9 @@ sizeofimage(self, args)
|
||||||
* pointer to an array of longs.
|
* pointer to an array of longs.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static object *
|
static PyObject *
|
||||||
longimagedata(self, args)
|
longimagedata(self, args)
|
||||||
object *self, *args;
|
PyObject *self, *args;
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
unsigned char *base, *lptr;
|
unsigned char *base, *lptr;
|
||||||
|
@ -274,26 +274,26 @@ longimagedata(self, args)
|
||||||
int xsize, ysize, zsize;
|
int xsize, ysize, zsize;
|
||||||
int bpp, rle, cur, badorder;
|
int bpp, rle, cur, badorder;
|
||||||
int rlebuflen;
|
int rlebuflen;
|
||||||
object *rv;
|
PyObject *rv;
|
||||||
|
|
||||||
if (!getargs(args, "s", &name))
|
if (!PyArg_Parse(args, "s", &name))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
inf = fopen(name,"r");
|
inf = fopen(name,"r");
|
||||||
if(!inf) {
|
if(!inf) {
|
||||||
err_setstr(ImgfileError,"can't open image file");
|
PyErr_SetString(ImgfileError,"can't open image file");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
readheader(inf,&image);
|
readheader(inf,&image);
|
||||||
if(image.imagic != IMAGIC) {
|
if(image.imagic != IMAGIC) {
|
||||||
err_setstr(ImgfileError,"bad magic number in image file");
|
PyErr_SetString(ImgfileError,"bad magic number in image file");
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
rle = ISRLE(image.type);
|
rle = ISRLE(image.type);
|
||||||
bpp = BPP(image.type);
|
bpp = BPP(image.type);
|
||||||
if(bpp != 1 ) {
|
if(bpp != 1 ) {
|
||||||
err_setstr(ImgfileError,"image must have 1 byte per pix chan");
|
PyErr_SetString(ImgfileError,"image must have 1 byte per pix chan");
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -327,8 +327,8 @@ longimagedata(self, args)
|
||||||
|
|
||||||
fseek(inf,512+2*tablen,SEEK_SET);
|
fseek(inf,512+2*tablen,SEEK_SET);
|
||||||
cur = 512+2*tablen;
|
cur = 512+2*tablen;
|
||||||
rv = newsizedstringobject((char *) 0,
|
rv = PyString_FromStringAndSize((char *) 0,
|
||||||
(xsize*ysize+TAGLEN)*sizeof(long));
|
(xsize*ysize+TAGLEN)*sizeof(long));
|
||||||
if (rv == NULL) {
|
if (rv == NULL) {
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
free(lengthtab);
|
free(lengthtab);
|
||||||
|
@ -336,7 +336,7 @@ longimagedata(self, args)
|
||||||
free(rledat);
|
free(rledat);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
base = (unsigned char *) getstringvalue(rv);
|
base = (unsigned char *) PyString_AsString(rv);
|
||||||
#ifdef ADD_TAGS
|
#ifdef ADD_TAGS
|
||||||
addlongimgtag(base,xsize,ysize);
|
addlongimgtag(base,xsize,ysize);
|
||||||
#endif
|
#endif
|
||||||
|
@ -351,9 +351,10 @@ longimagedata(self, args)
|
||||||
cur = starttab[y+z*ysize];
|
cur = starttab[y+z*ysize];
|
||||||
}
|
}
|
||||||
if(lengthtab[y+z*ysize]>rlebuflen) {
|
if(lengthtab[y+z*ysize]>rlebuflen) {
|
||||||
err_setstr(ImgfileError,"rlebuf is too small - bad poop");
|
PyErr_SetString(ImgfileError,
|
||||||
|
"rlebuf is too small - bad poop");
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
DECREF(rv);
|
Py_DECREF(rv);
|
||||||
free(rledat);
|
free(rledat);
|
||||||
free(starttab);
|
free(starttab);
|
||||||
free(lengthtab);
|
free(lengthtab);
|
||||||
|
@ -398,13 +399,13 @@ longimagedata(self, args)
|
||||||
free(rledat);
|
free(rledat);
|
||||||
return rv;
|
return rv;
|
||||||
} else {
|
} else {
|
||||||
rv = newsizedstringobject((char *) 0,
|
rv = PyString_FromStringAndSize((char *) 0,
|
||||||
(xsize*ysize+TAGLEN)*sizeof(long));
|
(xsize*ysize+TAGLEN)*sizeof(long));
|
||||||
if (rv == NULL) {
|
if (rv == NULL) {
|
||||||
fclose(inf);
|
fclose(inf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
base = (unsigned char *) getstringvalue(rv);
|
base = (unsigned char *) PyString_AsString(rv);
|
||||||
#ifdef ADD_TAGS
|
#ifdef ADD_TAGS
|
||||||
addlongimgtag(base,xsize,ysize);
|
addlongimgtag(base,xsize,ysize);
|
||||||
#endif
|
#endif
|
||||||
|
@ -551,9 +552,9 @@ int z;
|
||||||
* RGBA image file is saved.
|
* RGBA image file is saved.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static object *
|
static PyObject *
|
||||||
longstoimage(self, args)
|
longstoimage(self, args)
|
||||||
object *self, *args;
|
PyObject *self, *args;
|
||||||
{
|
{
|
||||||
unsigned char *lptr;
|
unsigned char *lptr;
|
||||||
char *name;
|
char *name;
|
||||||
|
@ -566,13 +567,14 @@ longstoimage(self, args)
|
||||||
unsigned char *lumbuf;
|
unsigned char *lumbuf;
|
||||||
int rlebuflen, goodwrite;
|
int rlebuflen, goodwrite;
|
||||||
|
|
||||||
if (!getargs(args, "(s#iiis)", &lptr, &len, &xsize, &ysize, &zsize, &name))
|
if (!PyArg_Parse(args, "(s#iiis)", &lptr, &len, &xsize, &ysize, &zsize,
|
||||||
|
&name))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
goodwrite = 1;
|
goodwrite = 1;
|
||||||
outf = fopen(name,"w");
|
outf = fopen(name,"w");
|
||||||
if(!outf) {
|
if(!outf) {
|
||||||
err_setstr(ImgfileError,"can't open output file");
|
PyErr_SetString(ImgfileError,"can't open output file");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
tablen = ysize*zsize*sizeof(long);
|
tablen = ysize*zsize*sizeof(long);
|
||||||
|
@ -609,7 +611,7 @@ longstoimage(self, args)
|
||||||
len = compressrow(lptr,rlebuf,CHANOFFSET(z),xsize);
|
len = compressrow(lptr,rlebuf,CHANOFFSET(z),xsize);
|
||||||
}
|
}
|
||||||
if(len>rlebuflen) {
|
if(len>rlebuflen) {
|
||||||
err_setstr(ImgfileError,"rlebuf is too small - bad poop");
|
PyErr_SetString(ImgfileError,"rlebuf is too small - bad poop");
|
||||||
free(starttab);
|
free(starttab);
|
||||||
free(lengthtab);
|
free(lengthtab);
|
||||||
free(rlebuf);
|
free(rlebuf);
|
||||||
|
@ -637,10 +639,10 @@ longstoimage(self, args)
|
||||||
free(lumbuf);
|
free(lumbuf);
|
||||||
fclose(outf);
|
fclose(outf);
|
||||||
if(goodwrite) {
|
if(goodwrite) {
|
||||||
INCREF(None);
|
Py_INCREF(Py_None);
|
||||||
return None;
|
return Py_None;
|
||||||
} else {
|
} else {
|
||||||
err_setstr(ImgfileError,"not enough space for image!!");
|
PyErr_SetString(ImgfileError,"not enough space for image!!");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -718,21 +720,21 @@ int z, cnt;
|
||||||
return optr - (unsigned char *)rlebuf;
|
return optr - (unsigned char *)rlebuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static object *
|
static PyObject *
|
||||||
ttob(self, args)
|
ttob(self, args)
|
||||||
object *self;
|
PyObject *self;
|
||||||
object *args;
|
PyObject *args;
|
||||||
{
|
{
|
||||||
int order, oldorder;
|
int order, oldorder;
|
||||||
|
|
||||||
if (!getargs(args, "i", &order))
|
if (!PyArg_Parse(args, "i", &order))
|
||||||
return NULL;
|
return NULL;
|
||||||
oldorder = reverse_order;
|
oldorder = reverse_order;
|
||||||
reverse_order = order;
|
reverse_order = order;
|
||||||
return newintobject(oldorder);
|
return PyInt_FromLong(oldorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct methodlist rgbimg_methods[] = {
|
static PyMethodDef rgbimg_methods[] = {
|
||||||
{"sizeofimage", sizeofimage},
|
{"sizeofimage", sizeofimage},
|
||||||
{"longimagedata", longimagedata},
|
{"longimagedata", longimagedata},
|
||||||
{"longstoimage", longstoimage},
|
{"longstoimage", longstoimage},
|
||||||
|
@ -743,10 +745,10 @@ static struct methodlist rgbimg_methods[] = {
|
||||||
void
|
void
|
||||||
initrgbimg()
|
initrgbimg()
|
||||||
{
|
{
|
||||||
object *m, *d;
|
PyObject *m, *d;
|
||||||
m = initmodule("rgbimg", rgbimg_methods);
|
m = Py_InitModule("rgbimg", rgbimg_methods);
|
||||||
d = getmoduledict(m);
|
d = PyModule_GetDict(m);
|
||||||
ImgfileError = newstringobject("rgbimg.error");
|
ImgfileError = PyString_FromString("rgbimg.error");
|
||||||
if (ImgfileError == NULL || dictinsert(d, "error", ImgfileError))
|
if (ImgfileError == NULL || PyDict_SetItemString(d, "error", ImgfileError))
|
||||||
fatal("can't define rgbimg.error");
|
Py_FatalError("can't define rgbimg.error");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue