| version 1.1, 2001/09/20 14:12:00 |
version 1.2, 2002/07/07 23:57:58 |
| Line 79 static int GetPixel (int x, int y); |
|
| Line 79 static int GetPixel (int x, int y); |
|
| static void BumpPixel (void); |
static void BumpPixel (void); |
| static int GIFNextPixel (ifunptr getpixel); |
static int GIFNextPixel (ifunptr getpixel); |
| static void GIFEncode (FILE* fp, int GWidth, int GHeight, int GInterlace, |
static void GIFEncode (FILE* fp, int GWidth, int GHeight, int GInterlace, |
| int Background, int BitsPerPixel, int Red[], |
int Background, int BitsPerPixel, int Red[], |
| int Green[], int Blue[], ifunptr GetPixel); |
int Green[], int Blue[], ifunptr GetPixel); |
| static void Putword (int w, FILE* fp); |
static void Putword (int w, FILE* fp); |
| static void compress (int init_bits, FILE* outfile, ifunptr ReadValue); |
static void compress (int init_bits, FILE* outfile, ifunptr ReadValue); |
| static void output (code_int code); |
static void output (code_int code); |
| Line 90 static void char_init (void); |
|
| Line 90 static void char_init (void); |
|
| static void char_out (int c); |
static void char_out (int c); |
| static void flush_char (void); |
static void flush_char (void); |
| void ReadXPMFile(char **stream, int *widthP, int *heightP, int *ncolorsP, |
void ReadXPMFile(char **stream, int *widthP, int *heightP, int *ncolorsP, |
| int *chars_per_pixelP, pixel **colorsP); |
int *chars_per_pixelP, pixel **colorsP); |
| void getline(); |
void getline(); |
| void ToGif(char *stream, char *outFile); |
void ToGif(char *stream, char *outFile); |
| void XpmToGif(char **xpmData, char *outFile); |
void XpmToGif(char **xpmData, char *outFile); |
| Line 196 colorhash_table ppm_alloccolorhash(void) |
|
| Line 196 colorhash_table ppm_alloccolorhash(void) |
|
| |
|
| // Function colorhash_table ppm_computecolorhash(pix, cols, rows, maxcol, colP){{{ |
// Function colorhash_table ppm_computecolorhash(pix, cols, rows, maxcol, colP){{{ |
| colorhash_table ppm_computecolorhash( |
colorhash_table ppm_computecolorhash( |
| pixel** pixels, |
pixel** pixels, |
| int cols, int rows, |
int cols, int rows, |
| int maxcolors, int* colorsP) |
int maxcolors, int* colorsP) |
| { |
{ |
| colorhash_table cht = NULL; |
colorhash_table cht = NULL; |
| register pixel* pP; |
register pixel* pP; |
| Line 296 colorhist_vector ppm_colorhashtocolorhis |
|
| Line 296 colorhist_vector ppm_colorhashtocolorhis |
|
| |
|
| // Function colorhist_vector ppm_computecolorhist(pix, cols, rows, maxcol,colP){{{ |
// Function colorhist_vector ppm_computecolorhist(pix, cols, rows, maxcol,colP){{{ |
| colorhist_vector ppm_computecolorhist(pixel** pixels, int cols, int rows, |
colorhist_vector ppm_computecolorhist(pixel** pixels, int cols, int rows, |
| int maxcolors, int* colorsP) |
int maxcolors, int* colorsP) |
| { |
{ |
| colorhash_table cht = NULL; |
colorhash_table cht = NULL; |
| colorhist_vector chv; |
colorhist_vector chv; |
| Line 311 colorhist_vector ppm_computecolorhist(pi |
|
| Line 311 colorhist_vector ppm_computecolorhist(pi |
|
| |
|
| // Function char *ppm_writeppminit(stream, cols, rows, maxval, forceplain) {{{ |
// Function char *ppm_writeppminit(stream, cols, rows, maxval, forceplain) {{{ |
| char *ppm_writeppminit(char *stream, int cols, int rows, pixval maxval, |
char *ppm_writeppminit(char *stream, int cols, int rows, pixval maxval, |
| int forceplain) |
int forceplain) |
| { |
{ |
| char temp[80]; |
#define TMP_LEN 80 |
| |
char temp[TMP_LEN]; |
| |
|
| if (maxval <= 255 && ! forceplain) |
if (maxval <= 255 && ! forceplain) { |
| sprintf(temp, "%c%c\n%d %d\n%d\n", PPM_MAGIC1, RPPM_MAGIC2, |
if (snprintf(temp, TMP_LEN, "%c%c\n%d %d\n%d\n", PPM_MAGIC1, RPPM_MAGIC2, |
| cols, rows, maxval); |
cols, rows, maxval) == -1) |
| else |
fprintf(stderr, "Warning: string truncated at %s:%d\n", __FILE__, __LINE__); |
| sprintf(temp, "%c%c\n%d %d\n%d\n", PPM_MAGIC1, PPM_MAGIC2, |
} |
| cols, rows, maxval); |
else { |
| |
if (snprintf(temp, TMP_LEN, "%c%c\n%d %d\n%d\n", PPM_MAGIC1, PPM_MAGIC2, |
| |
cols, rows, maxval) == -1) |
| |
fprintf(stderr, "Warning: string truncated at %s:%d\n", __FILE__, __LINE__); |
| |
} |
| |
#undef TMP_LEN |
| |
|
| write_index = strlen(temp); |
write_index = strlen(temp); |
| stream = (char*)my_malloc(sizeof(char)*(write_index+1)); |
stream = (char*)my_malloc(sizeof(char)*(write_index+1)); |
| Line 347 void putus(unsigned short n, char *strea |
|
| Line 353 void putus(unsigned short n, char *strea |
|
| |
|
| // Function void ppm_writeppmrowraw(stream, pixelrow, cols, maxval) {{{ |
// Function void ppm_writeppmrowraw(stream, pixelrow, cols, maxval) {{{ |
| void ppm_writeppmrowraw(char *stream, pixel* pixelrow, int cols, |
void ppm_writeppmrowraw(char *stream, pixel* pixelrow, int cols, |
| pixval maxval) |
pixval maxval) |
| { |
{ |
| register int col; |
register int col; |
| register pixel* pP; |
register pixel* pP; |
| Line 365 void ppm_writeppmrowraw(char *stream, pi |
|
| Line 371 void ppm_writeppmrowraw(char *stream, pi |
|
| |
|
| // Function void ppm_writeppmrowplain(stream, pixelrow, cols, maxval) {{{ |
// Function void ppm_writeppmrowplain(stream, pixelrow, cols, maxval) {{{ |
| void ppm_writeppmrowplain(char *stream, pixel* pixelrow, int cols, |
void ppm_writeppmrowplain(char *stream, pixel* pixelrow, int cols, |
| pixval maxval) |
pixval maxval) |
| { |
{ |
| register int col, charcount; |
register int col, charcount; |
| register pixel* pP; |
register pixel* pP; |
| Line 398 void ppm_writeppmrowplain(char *stream, |
|
| Line 404 void ppm_writeppmrowplain(char *stream, |
|
| |
|
| // Function void ppm_writeppmrow(stream, pixelrow, cols, maxval, forceplain) {{{ |
// Function void ppm_writeppmrow(stream, pixelrow, cols, maxval, forceplain) {{{ |
| void ppm_writeppmrow(char *stream, pixel* pixelrow, int cols, pixval maxval, |
void ppm_writeppmrow(char *stream, pixel* pixelrow, int cols, pixval maxval, |
| int forceplain) |
int forceplain) |
| { |
{ |
| if (maxval <= 255 && ! forceplain) |
if (maxval <= 255 && ! forceplain) |
| ppm_writeppmrowraw(stream, pixelrow, cols, maxval); |
ppm_writeppmrowraw(stream, pixelrow, cols, maxval); |
| Line 528 pixel ppm_parsecolor(char* colorname, pi |
|
| Line 534 pixel ppm_parsecolor(char* colorname, pi |
|
| } |
} |
| } |
} |
| else if ((colorname[0] >= '0' && colorname[0] <= '9') || |
else if ((colorname[0] >= '0' && colorname[0] <= '9') || |
| colorname[0] == '.') { |
colorname[0] == '.') { |
| /* It's an old-style decimal/float rgb specifier. */ |
/* It's an old-style decimal/float rgb specifier. */ |
| float fr, fg, fb; |
float fr, fg, fb; |
| |
|
| Line 556 char **pm_allocarray(int cols, int rows, |
|
| Line 562 char **pm_allocarray(int cols, int rows, |
|
| |
|
| // Function void ppm_readppminitrest(stream, colsP, rowsP, maxvalP) {{{ |
// Function void ppm_readppminitrest(stream, colsP, rowsP, maxvalP) {{{ |
| void ppm_readppminitrest(char *stream, int* colsP, int* rowsP, |
void ppm_readppminitrest(char *stream, int* colsP, int* rowsP, |
| pixval* maxvalP) |
pixval* maxvalP) |
| { |
{ |
| int maxval; |
int maxval; |
| |
|
| Line 600 int ppm_getint(char *stream) |
|
| Line 606 int ppm_getint(char *stream) |
|
| |
|
| // Function void ppm_readppmrow(stream, pixelrow, cols, maxval, format) {{{ |
// Function void ppm_readppmrow(stream, pixelrow, cols, maxval, format) {{{ |
| void ppm_readppmrow(char *stream, pixel* pixelrow, int cols, pixval maxval, |
void ppm_readppmrow(char *stream, pixel* pixelrow, int cols, pixval maxval, |
| int format) |
int format) |
| { |
{ |
| register int col; |
register int col; |
| register pixel* pP; |
register pixel* pP; |
| Line 667 void XpmToGif(char **xpmData, char *outF |
|
| Line 673 void XpmToGif(char **xpmData, char *outF |
|
| pixrow = ppm_allocrow(cols); |
pixrow = ppm_allocrow(cols); |
| |
|
| for (row = 0, ptr = xpmData[row+ncolors+1]; row < rows; ++row, |
for (row = 0, ptr = xpmData[row+ncolors+1]; row < rows; ++row, |
| ptr = xpmData[row+ncolors+1]) { |
ptr = xpmData[row+ncolors+1]) { |
| for (col = 0, pP = pixrow; col < cols; ++col, ++pP, ++ptr) |
for (col = 0, pP = pixrow; col < cols; ++col, ++pP, ++ptr) |
| *pP = colors[(int)*ptr]; |
*pP = colors[(int)*ptr]; |
| stream = (char *)my_realloc(stream, size*cols*3*sizeof(char)+length); |
stream = (char *)my_realloc(stream, size*cols*3*sizeof(char)+length); |
| Line 686 void XpmToGif(char **xpmData, char *outF |
|
| Line 692 void XpmToGif(char **xpmData, char *outF |
|
| |
|
| // Function void ReadXPMFile(stream,widthP,heightP,ncolP,chars_per_pixP,colP) {{{ |
// Function void ReadXPMFile(stream,widthP,heightP,ncolP,chars_per_pixP,colP) {{{ |
| void ReadXPMFile(char **stream, int *widthP, int *heightP, int *ncolorsP, |
void ReadXPMFile(char **stream, int *widthP, int *heightP, int *ncolorsP, |
| int *chars_per_pixelP, pixel **colorsP) |
int *chars_per_pixelP, pixel **colorsP) |
| { |
{ |
| char line[MAX_LINE], str1[MAX_LINE], str2[MAX_LINE]; |
char line[MAX_LINE], str1[MAX_LINE], str2[MAX_LINE]; |
| char *t1; |
char *t1; |
| Line 829 void ToGif(char* stream, char *outFile) |
|
| Line 835 void ToGif(char* stream, char *outFile) |
|
| |
|
| /* All set, let's do it. */ |
/* All set, let's do it. */ |
| GIFEncode(file, cols, rows, 0, 0, BitsPerPixel, Red, Green, Blue, |
GIFEncode(file, cols, rows, 0, 0, BitsPerPixel, Red, Green, Blue, |
| GetPixel); |
GetPixel); |
| |
|
| ppm_freecolorhash(cht); |
ppm_freecolorhash(cht); |
| fclose(file); |
fclose(file); |
| Line 958 static int GIFNextPixel(ifunptr getpixel |
|
| Line 964 static int GIFNextPixel(ifunptr getpixel |
|
| |
|
| // Function static void GIFEncode() {{{ |
// Function static void GIFEncode() {{{ |
| static void GIFEncode(FILE* fp, int GWidth, int GHeight, int GInterlace, |
static void GIFEncode(FILE* fp, int GWidth, int GHeight, int GInterlace, |
| int Background, int BitsPerPixel, int Red[], int Green[], |
int Background, int BitsPerPixel, int Red[], int Green[], |
| int Blue[], ifunptr GetPixel) |
int Blue[], ifunptr GetPixel) |
| { |
{ |
| int B; |
int B; |
| int RWidth, RHeight; |
int RWidth, RHeight; |