diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2022-03-25 02:12:00 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2022-03-25 02:12:00 +0000 |
commit | e86fe83f8ea2ac1c4de367e3680d8146c4564c8d (patch) | |
tree | 4abaecc8c579c04f2bfe33627b6f96409a6e97ba /converter | |
parent | 93055cbd559056f3bded65107d1fe8f2b7baaa1b (diff) | |
download | netpbm-mirror-e86fe83f8ea2ac1c4de367e3680d8146c4564c8d.tar.gz netpbm-mirror-e86fe83f8ea2ac1c4de367e3680d8146c4564c8d.tar.xz netpbm-mirror-e86fe83f8ea2ac1c4de367e3680d8146c4564c8d.zip |
Fix bug from previous commit
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@4313 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'converter')
-rw-r--r-- | converter/other/pamtoxvmini.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/converter/other/pamtoxvmini.c b/converter/other/pamtoxvmini.c index e2e841da..047de75a 100644 --- a/converter/other/pamtoxvmini.c +++ b/converter/other/pamtoxvmini.c @@ -179,7 +179,7 @@ getPaletteIndexThroughCache(struct pam * const pamP, static void -writeXvRaster(struct pam * const pamP, +writeXvRaster(struct pam * const inpamP, xvPalette * const xvPaletteP, FILE * const ofP) { /*---------------------------------------------------------------------------- @@ -197,34 +197,40 @@ writeXvRaster(struct pam * const pamP, unsigned int row; unsigned char * xvrow; struct pam scaledPam; + struct pam scaledRgbPam; + + pnm_setminallocationdepth(inpamP, 3); paletteHash = pnm_createtuplehash(); - tuplerow = pnm_allocpamrow(pamP); - xvrow = (unsigned char*)pm_allocrow(pamP->width, 1); + tuplerow = pnm_allocpamrow(inpamP); + xvrow = (unsigned char*)pm_allocrow(inpamP->width, 1); - scaledPam = *pamP; + scaledPam = *inpamP; /* initial value */ scaledPam.maxval = 255; - scaledPam.depth = MAX(3, pamP->depth); - for (row = 0; row < pamP->height; ++row) { + scaledRgbPam = scaledPam; /* initial value */ + scaledRgbPam.depth = MAX(3, scaledPam.depth); + + for (row = 0; row < inpamP->height; ++row) { unsigned int col; - pnm_readpamrow(pamP, tuplerow); - pnm_scaletuplerow(pamP, tuplerow, tuplerow, scaledPam.maxval); + pnm_readpamrow(inpamP, tuplerow); + pnm_scaletuplerow(inpamP, tuplerow, tuplerow, scaledPam.maxval); pnm_makerowrgb(&scaledPam, tuplerow); - for (col = 0; col < scaledPam.width; ++col) { + for (col = 0; col < scaledRgbPam.width; ++col) { unsigned int paletteIndex; - getPaletteIndexThroughCache(&scaledPam, tuplerow[col], xvPaletteP, - paletteHash, &paletteIndex); + getPaletteIndexThroughCache(&scaledRgbPam, tuplerow[col], + xvPaletteP, paletteHash, + &paletteIndex); assert(paletteIndex < 256); xvrow[col] = paletteIndex; } - fwrite(xvrow, 1, scaledPam.width, ofP); + fwrite(xvrow, 1, scaledRgbPam.width, ofP); } pm_freerow((char*)xvrow); @@ -254,8 +260,6 @@ main(int argc, pnm_readpaminit(ifP, &pam, PAM_STRUCT_SIZE(allocation_depth)); - pnm_setminallocationdepth(&pam, 3); - writeXvHeader(stdout, pam.width, pam.height); writeXvRaster(&pam, &xvPalette, stdout); |