diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2014-02-15 19:38:27 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2014-02-15 19:38:27 +0000 |
commit | fce82bced2d7898a2f6d1a4d90b5f522b3505334 (patch) | |
tree | 7ca56f63b697c54b92b73bc3915372f2db02a5e2 /generator/pgmmake.c | |
parent | d3c2eecaedfdc3fa6f1bd304c07a705c0d7bb9e5 (diff) | |
download | netpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.tar.gz netpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.tar.xz netpbm-mirror-fce82bced2d7898a2f6d1a4d90b5f522b3505334.zip |
speedup - compute row only once
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@2126 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'generator/pgmmake.c')
-rw-r--r-- | generator/pgmmake.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/generator/pgmmake.c b/generator/pgmmake.c index e33f64e0..f8f8b09c 100644 --- a/generator/pgmmake.c +++ b/generator/pgmmake.c @@ -46,16 +46,18 @@ parseCommandLine(int argc, char ** argv, pm_optParseOptions3(&argc, argv, opt, sizeof(opt), 0); /* Uses and sets argc, argv, and some of *cmdlineP and others. */ + free (option_def); + if (!maxvalSpec) cmdlineP->maxval = PGM_MAXMAXVAL; else { if (cmdlineP->maxval > PGM_OVERALLMAXVAL) pm_error("The value you specified for -maxval (%u) is too big. " "Max allowed is %u", cmdlineP->maxval, PGM_OVERALLMAXVAL); - + if (cmdlineP->maxval < 1) pm_error("You cannot specify 0 for -maxval"); - } + } if (argc-1 < 3) pm_error("Need 3 arguments: gray level, width, height."); @@ -82,7 +84,7 @@ main(int argc, char *argv[]) { struct cmdlineInfo cmdline; gray * grayrow; - unsigned int row; + unsigned int col, row; pgm_init(&argc, argv); @@ -91,12 +93,12 @@ main(int argc, char *argv[]) { pgm_writepgminit(stdout, cmdline.cols, cmdline.rows, cmdline.maxval, 0); grayrow = pgm_allocrow(cmdline.cols); - for (row = 0; row < cmdline.rows; ++row) { - unsigned int col; - for (col = 0; col < cmdline.cols; ++col) - grayrow[col] = cmdline.grayLevel; + /* All rows are identical. Fill once. */ + for (col = 0; col < cmdline.cols; ++col) + grayrow[col] = cmdline.grayLevel; + + for (row = 0; row < cmdline.rows; ++row) pgm_writepgmrow(stdout, grayrow, cmdline.cols, cmdline.maxval, 0); - } pgm_freerow(grayrow); pm_close(stdout); |