--- OLD/ppm/pcxtoppm.c Thu Jan 1 00:00:00 1970 +++ NEW/ppm/pcxtoppm.c Thu Jan 1 00:00:00 1970 @@ -58,6 +58,28 @@ static unsigned char StdBlue[] = { 0, 255, 0, 170, 0, 170, 0, 170, 85, 255, 85, 255, 85, 255, 85, 255 }; +static void pcx_256col_to_pgm(FILE *ifp, int cols, int rows, int bpl) +{ + gray *pgm_row; + unsigned char *img_row; + int row; + int col; + + if (cols > bpl) + { pm_message("warning - BytesPerLine = %d, truncating image to %d pixels",bpl,bpl); + cols = bpl; + } + pgm_row = pgm_allocrow(cols); + img_row = malloc(bpl); + for (row=0;row= 1 && Planes <= 4 ) @@ -165,7 +199,12 @@ case 8: switch( Planes ) { case 1: - pcx_256col_to_ppm(ifp, Width, Height, BytesPerLine); + if (gen_pgm) + { pcx_256col_to_pgm(ifp,Width,Height,BytesPerLine); + } + else + { pcx_256col_to_ppm(ifp, Width, Height, BytesPerLine); + } break; case 3: case 4: @@ -243,8 +282,8 @@ pm_message("done!"); #endif ppm_freerow(ppmrow); - pm_freerow(rawrow); - pm_freerow(pcxrow); + pm_freerow((void *)rawrow); + pm_freerow((void *)pcxrow); } @@ -306,7 +345,7 @@ #endif ppm_freerow(ppmrow); - pm_freearray(image, rows); + pm_freearray((void *)image, rows); } @@ -366,10 +405,10 @@ ppm_freerow(ppmrow); if( intensityrow ) - pm_freerow(intensityrow); - pm_freerow(bluerow); - pm_freerow(greenrow); - pm_freerow(redrow); + pm_freerow((void *)intensityrow); + pm_freerow((void *)bluerow); + pm_freerow((void *)greenrow); + pm_freerow((void *)redrow); } @@ -535,4 +574,3 @@ } } } -