diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-11-30 17:10:01 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-11-30 17:10:01 +0000 |
commit | 97abc12b97b06f102356505f438f540fbbb3f858 (patch) | |
tree | d060cca7a962ce8ffae368d893ceb3cd01fe1720 /editor/pnmcrop.c | |
parent | 67b79bdf31266d27f161ff7164357e434cdf8dd1 (diff) | |
download | netpbm-mirror-97abc12b97b06f102356505f438f540fbbb3f858.tar.gz netpbm-mirror-97abc12b97b06f102356505f438f540fbbb3f858.tar.xz netpbm-mirror-97abc12b97b06f102356505f438f540fbbb3f858.zip |
pnmcrop: multi-image input stream
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@158 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'editor/pnmcrop.c')
-rw-r--r-- | editor/pnmcrop.c | 84 |
1 files changed, 45 insertions, 39 deletions
diff --git a/editor/pnmcrop.c b/editor/pnmcrop.c index 4ef778c3..87fd14b3 100644 --- a/editor/pnmcrop.c +++ b/editor/pnmcrop.c @@ -549,6 +549,7 @@ main(int argc, char *argv[]) { /* The program's regular input file. Could be a seekable copy of it in a temporary file. */ + bool eof; /* no more images in input stream */ xelval maxval; int format; @@ -567,53 +568,58 @@ main(int argc, char *argv[]) { ifP = pm_openr_seekable(cmdline.inputFilespec); - pnm_readpnminit(ifP, &cols, &rows, &maxval, &format); + eof = FALSE; + while (!eof) { + pnm_readpnminit(ifP, &cols, &rows, &maxval, &format); - pm_tell2(ifP, &rasterpos, sizeof(rasterpos)); + pm_tell2(ifP, &rasterpos, sizeof(rasterpos)); - background = computeBackground(ifP, cols, rows, maxval, format, - cmdline.background, cmdline.verbose); + background = computeBackground(ifP, cols, rows, maxval, format, + cmdline.background, cmdline.verbose); + + if (cmdline.borderfile) { + findBordersInFile(cmdline.borderfile, + background, cmdline.verbose, &hasBorders, + &oldLeftBorder, &oldRightBorder, + &oldTopBorder, &oldBottomBorder); + } else { + pm_seek2(ifP, &rasterpos, sizeof(rasterpos)); + + findBordersInImage(ifP, cols, rows, maxval, format, + background, cmdline.verbose, &hasBorders, + &oldLeftBorder, &oldRightBorder, + &oldTopBorder, &oldBottomBorder); + } + if (!hasBorders) + pm_error("The image is entirely background; " + "there is nothing to crop."); + + determineNewBorders(cmdline, + oldLeftBorder, oldRightBorder, + oldTopBorder, oldBottomBorder, + &newLeftBorder, &newRightBorder, + &newTopBorder, &newBottomBorder); + + if (cmdline.verbose) + reportCroppingParameters(oldLeftBorder, oldRightBorder, + oldTopBorder, oldBottomBorder, + newLeftBorder, newRightBorder, + newTopBorder, newBottomBorder); - if (cmdline.borderfile) { - findBordersInFile(cmdline.borderfile, - background, cmdline.verbose, &hasBorders, - &oldLeftBorder, &oldRightBorder, - &oldTopBorder, &oldBottomBorder); - } else { pm_seek2(ifP, &rasterpos, sizeof(rasterpos)); - findBordersInImage(ifP, cols, rows, maxval, format, - background, cmdline.verbose, &hasBorders, - &oldLeftBorder, &oldRightBorder, - &oldTopBorder, &oldBottomBorder); + writeCropped(ifP, cols, rows, maxval, format, + oldLeftBorder, oldRightBorder, + oldTopBorder, oldBottomBorder, + newLeftBorder, newRightBorder, + newTopBorder, newBottomBorder, + background, stdout); + + pnm_nextimage(ifP, &eof); } - if (!hasBorders) - pm_error("The image is entirely background; " - "there is nothing to crop."); - - determineNewBorders(cmdline, - oldLeftBorder, oldRightBorder, - oldTopBorder, oldBottomBorder, - &newLeftBorder, &newRightBorder, - &newTopBorder, &newBottomBorder); - - if (cmdline.verbose) - reportCroppingParameters(oldLeftBorder, oldRightBorder, - oldTopBorder, oldBottomBorder, - newLeftBorder, newRightBorder, - newTopBorder, newBottomBorder); - - pm_seek2(ifP, &rasterpos, sizeof(rasterpos)); - - writeCropped(ifP, cols, rows, maxval, format, - oldLeftBorder, oldRightBorder, - oldTopBorder, oldBottomBorder, - newLeftBorder, newRightBorder, - newTopBorder, newBottomBorder, - background, stdout); pm_close(stdout); pm_close(ifP); - + return 0; } |