From 97abc12b97b06f102356505f438f540fbbb3f858 Mon Sep 17 00:00:00 2001 From: giraffedata Date: Thu, 30 Nov 2006 17:10:01 +0000 Subject: pnmcrop: multi-image input stream git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@158 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- editor/pnmcrop.c | 84 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 39 deletions(-) (limited to 'editor/pnmcrop.c') 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; } -- cgit 1.4.1