mirror of
https://github.com/python/cpython.git
synced 2025-10-22 14:42:22 +00:00
Added function ttob.
This commit is contained in:
parent
627b2d7cd7
commit
0d2d397bc5
1 changed files with 41 additions and 4 deletions
|
@ -96,6 +96,8 @@ static lumrow PROTO((unsigned char *, unsigned char *, int));
|
||||||
|
|
||||||
static object *ImgfileError;
|
static object *ImgfileError;
|
||||||
|
|
||||||
|
static int reverse_order;
|
||||||
|
|
||||||
#ifdef ADD_TAGS
|
#ifdef ADD_TAGS
|
||||||
/*
|
/*
|
||||||
* addlongimgtag -
|
* addlongimgtag -
|
||||||
|
@ -339,6 +341,8 @@ longimagedata(self, args)
|
||||||
if(badorder) {
|
if(badorder) {
|
||||||
for(z=0; z<zsize; z++) {
|
for(z=0; z<zsize; z++) {
|
||||||
lptr = base;
|
lptr = base;
|
||||||
|
if (reverse_order)
|
||||||
|
lptr += (ysize - 1) * xsize * sizeof(unsigned long);
|
||||||
for(y=0; y<ysize; y++) {
|
for(y=0; y<ysize; y++) {
|
||||||
if(cur != starttab[y+z*ysize]) {
|
if(cur != starttab[y+z*ysize]) {
|
||||||
fseek(inf,starttab[y+z*ysize],SEEK_SET);
|
fseek(inf,starttab[y+z*ysize],SEEK_SET);
|
||||||
|
@ -356,11 +360,16 @@ longimagedata(self, args)
|
||||||
fread(rledat,lengthtab[y+z*ysize],1,inf);
|
fread(rledat,lengthtab[y+z*ysize],1,inf);
|
||||||
cur += lengthtab[y+z*ysize];
|
cur += lengthtab[y+z*ysize];
|
||||||
expandrow(lptr,rledat,3-z);
|
expandrow(lptr,rledat,3-z);
|
||||||
|
if (reverse_order)
|
||||||
|
lptr -= xsize * sizeof(unsigned long);
|
||||||
|
else
|
||||||
lptr += xsize * sizeof(unsigned long);
|
lptr += xsize * sizeof(unsigned long);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lptr = base;
|
lptr = base;
|
||||||
|
if (reverse_order)
|
||||||
|
lptr += (ysize - 1) * xsize * sizeof(unsigned long);
|
||||||
for(y=0; y<ysize; y++) {
|
for(y=0; y<ysize; y++) {
|
||||||
for(z=0; z<zsize; z++) {
|
for(z=0; z<zsize; z++) {
|
||||||
if(cur != starttab[y+z*ysize]) {
|
if(cur != starttab[y+z*ysize]) {
|
||||||
|
@ -371,6 +380,9 @@ longimagedata(self, args)
|
||||||
cur += lengthtab[y+z*ysize];
|
cur += lengthtab[y+z*ysize];
|
||||||
expandrow(lptr,rledat,3-z);
|
expandrow(lptr,rledat,3-z);
|
||||||
}
|
}
|
||||||
|
if (reverse_order)
|
||||||
|
lptr -= xsize * sizeof(unsigned long);
|
||||||
|
else
|
||||||
lptr += xsize * sizeof(unsigned long);
|
lptr += xsize * sizeof(unsigned long);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -398,9 +410,14 @@ longimagedata(self, args)
|
||||||
fseek(inf,512,SEEK_SET);
|
fseek(inf,512,SEEK_SET);
|
||||||
for(z=0; z<zsize; z++) {
|
for(z=0; z<zsize; z++) {
|
||||||
lptr = base;
|
lptr = base;
|
||||||
|
if (reverse_order)
|
||||||
|
lptr += (ysize - 1) * xsize * sizeof(unsigned long);
|
||||||
for(y=0; y<ysize; y++) {
|
for(y=0; y<ysize; y++) {
|
||||||
fread(verdat,xsize,1,inf);
|
fread(verdat,xsize,1,inf);
|
||||||
interleaverow(lptr,verdat,3-z,xsize);
|
interleaverow(lptr,verdat,3-z,xsize);
|
||||||
|
if (reverse_order)
|
||||||
|
lptr -= xsize * sizeof(unsigned long);
|
||||||
|
else
|
||||||
lptr += xsize * sizeof(unsigned long);
|
lptr += xsize * sizeof(unsigned long);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -579,6 +596,8 @@ longstoimage(self, args)
|
||||||
goodwrite *= writeheader(outf,&image);
|
goodwrite *= writeheader(outf,&image);
|
||||||
fseek(outf,512+2*tablen,SEEK_SET);
|
fseek(outf,512+2*tablen,SEEK_SET);
|
||||||
pos = 512+2*tablen;
|
pos = 512+2*tablen;
|
||||||
|
if (reverse_order)
|
||||||
|
lptr += (ysize - 1) * xsize * sizeof(unsigned long);
|
||||||
for(y=0; y<ysize; y++) {
|
for(y=0; y<ysize; y++) {
|
||||||
for(z=0; z<zsize; z++) {
|
for(z=0; z<zsize; z++) {
|
||||||
if(zsize == 1) {
|
if(zsize == 1) {
|
||||||
|
@ -601,6 +620,9 @@ longstoimage(self, args)
|
||||||
lengthtab[y+z*ysize] = len;
|
lengthtab[y+z*ysize] = len;
|
||||||
pos += len;
|
pos += len;
|
||||||
}
|
}
|
||||||
|
if (reverse_order)
|
||||||
|
lptr -= xsize * sizeof(unsigned long);
|
||||||
|
else
|
||||||
lptr += xsize * sizeof(unsigned long);
|
lptr += xsize * sizeof(unsigned long);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -694,10 +716,25 @@ int z, cnt;
|
||||||
return optr - (unsigned char *)rlebuf;
|
return optr - (unsigned char *)rlebuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static object *
|
||||||
|
ttob(self, args)
|
||||||
|
object *self;
|
||||||
|
object *args;
|
||||||
|
{
|
||||||
|
int order, oldorder;
|
||||||
|
|
||||||
|
if (!getargs(args, "d", &order))
|
||||||
|
return NULL;
|
||||||
|
oldorder = reverse_order;
|
||||||
|
reverse_order = order;
|
||||||
|
return newintobject(oldorder);
|
||||||
|
}
|
||||||
|
|
||||||
static struct methodlist rgbimg_methods[] = {
|
static struct methodlist rgbimg_methods[] = {
|
||||||
{"sizeofimage", sizeofimage},
|
{"sizeofimage", sizeofimage},
|
||||||
{"longimagedata", longimagedata},
|
{"longimagedata", longimagedata},
|
||||||
{"longstoimage", longstoimage},
|
{"longstoimage", longstoimage},
|
||||||
|
{"ttob", ttob},
|
||||||
{NULL, NULL} /* sentinel */
|
{NULL, NULL} /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue