diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2024-03-16 16:48:22 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2024-03-16 16:48:22 +0000 |
commit | 5076ffea9a12ba419e9e569294dfaefce0389e06 (patch) | |
tree | 4715c05a4b4ef50877e4c6d1bf02594518d84c63 | |
parent | c5dd241c34d1177f7fa17c28972606dbecc8613d (diff) | |
download | netpbm-mirror-5076ffea9a12ba419e9e569294dfaefce0389e06.tar.gz netpbm-mirror-5076ffea9a12ba419e9e569294dfaefce0389e06.tar.xz netpbm-mirror-5076ffea9a12ba419e9e569294dfaefce0389e06.zip |
more fixes for targets entirely outside input image
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@4881 9d0c8265-081b-0410-96cb-a4ca84ce46f8
-rw-r--r-- | editor/pamcut.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/editor/pamcut.c b/editor/pamcut.c index 31b44f81..b6190098 100644 --- a/editor/pamcut.c +++ b/editor/pamcut.c @@ -699,8 +699,9 @@ extractRowsGen(const struct pam * const inpamP, destroyRowCutter(rowCutterP); /* Write out bottom padding */ - if (bottomrow > inpamP->height-1) - writeBlackRows(outpamP, bottomrow - (inpamP->height-1)); + if (bottomrow >= inpamP->height) + writeBlackRows(outpamP, bottomrow - MAX(inpamP->height, toprow) + 1); + } @@ -758,14 +759,16 @@ extractRowsPbm(const struct pam * const inpamP, } bitrow = pbm_allocrow_packed(totalWidth); - - makeBlackPbmRow(bitrow, totalWidth); /* Initialize row buffer to all black for top and side padding */ /* Write out top padding */ - for (row = toprow; row < MIN(0, bottomrow+1); ++row) - pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0); + if (toprow < 0) { + makeBlackPbmRow(bitrow, outpamP->width); + for (row = toprow; row < MIN(0, bottomrow+1); ++row) + pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0); + } + makeBlackPbmRow(bitrow, totalWidth); for (row = 0; row < inpamP->height; ++row){ if (row >= toprow && row <= bottomrow) { pbm_readpbmrow_bitoffset(inpamP->file, bitrow, inpamP->width, @@ -783,9 +786,11 @@ extractRowsPbm(const struct pam * const inpamP, } /* Write out bottom padding */ - makeBlackPbmRow(bitrow, outpamP->width); - for (row = MAX(inpamP->height, toprow); row < bottomrow+1; ++row) - pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0); + if (bottomrow >= inpamP->height) { + makeBlackPbmRow(bitrow, outpamP->width); + for (row = MAX(inpamP->height, toprow); row < bottomrow+1; ++row) + pbm_writepbmrow_packed(outpamP->file, bitrow, outpamP->width, 0); + } pbm_freerow_packed(bitrow); } |