about summary refs log tree commit diff
path: root/converter/pgm/rawtopgm.c
diff options
context:
space:
mode:
Diffstat (limited to 'converter/pgm/rawtopgm.c')
-rw-r--r--converter/pgm/rawtopgm.c174
1 files changed, 94 insertions, 80 deletions
diff --git a/converter/pgm/rawtopgm.c b/converter/pgm/rawtopgm.c
index 2e5fbb7d..7eb68694 100644
--- a/converter/pgm/rawtopgm.c
+++ b/converter/pgm/rawtopgm.c
@@ -10,6 +10,7 @@
 ** implied warranty.
 */
 
+#include <stdbool.h>
 #include <math.h>
 
 #include "pm_c_util.h"
@@ -17,7 +18,7 @@
 #include "shhopt.h"
 #include "pgm.h"
 
-struct cmdline_info {
+struct CmdlineInfo {
     /* All the information the user supplied in the command line,
        in a form easy for the program to use.
     */
@@ -37,8 +38,8 @@ struct cmdline_info {
 
 
 static void
-parse_command_line(int argc, char ** argv,
-                   struct cmdline_info *cmdlineP) {
+parseCommandLine(int argc, const char ** argv,
+                 struct CmdlineInfo * const cmdlineP) {
 /*----------------------------------------------------------------------------
    Note that the file spec array we return is stored in the storage that
    was passed to us as the argv array.
@@ -73,7 +74,7 @@ parse_command_line(int argc, char ** argv,
             NULL,   0);
 
     /* Set the defaults */
-    cmdlineP->bottomfirst = FALSE;
+    cmdlineP->bottomfirst = false;
     cmdlineP->headerskip = 0;
     cmdlineP->rowskip = 0.0;
     cmdlineP->bpp = 1;
@@ -81,33 +82,33 @@ parse_command_line(int argc, char ** argv,
     cmdlineP->maxval = -1;
 
     opt.opt_table = option_def;
-    opt.short_allowed = FALSE;  /* We have no short (old-fashioned) options */
-    opt.allowNegNum = FALSE;  /* We may have parms that are negative numbers */
+    opt.short_allowed = false;  /* We have no short (old-fashioned) options */
+    opt.allowNegNum = false;  /* We may have parms that are negative numbers */
 
-    pm_optParseOptions3(&argc, argv, opt, sizeof(opt), 0);
+    pm_optParseOptions3(&argc, (char **)argv, opt, sizeof(opt), 0);
         /* Uses and sets argc, argv, and some of *cmdlineP and others. */
 
     if (argc-1 == 0) {
         cmdlineP->inputFileName = "-";
-        cmdlineP->autosize = TRUE;
+        cmdlineP->autosize = true;
     } else if (argc-1 == 1) {
         cmdlineP->inputFileName = argv[1];
-        cmdlineP->autosize = TRUE;
+        cmdlineP->autosize = true;
     } else if (argc-1 == 2) {
         cmdlineP->inputFileName = "-";
-        cmdlineP->autosize = FALSE;
+        cmdlineP->autosize = false;
         cmdlineP->width = pm_parse_width(argv[1]);
         cmdlineP->height = pm_parse_height(argv[2]);
     } else if (argc-1 == 3) {
         cmdlineP->inputFileName = argv[3];
-        cmdlineP->autosize = FALSE;
+        cmdlineP->autosize = false;
         cmdlineP->width = pm_parse_width(argv[1]);
         cmdlineP->height = pm_parse_height(argv[2]);
     } else
         pm_error("Program takes zero, one, two, or three arguments.  You "
                  "specified %d", argc-1);
 
-    if (cmdlineP->bpp != 1 && cmdlineP->bpp != 2) 
+    if (cmdlineP->bpp != 1 && cmdlineP->bpp != 2)
         pm_error("Bytes per pixel (-bpp) must be 1 or 2.  You specified %d.",
                  cmdlineP->bpp);
 
@@ -125,7 +126,7 @@ parse_command_line(int argc, char ** argv,
         pm_error("If you specify -rowskip, you must also give the image "
                  "dimensions.");
     if (cmdlineP->rowskip && cmdlineP->bottomfirst)
-        pm_error("You canot specify both -rowskip and -bottomfirst.  This is "
+        pm_error("You cannot specify both -rowskip and -bottomfirst.  This is "
                  "a limitation of this program.");
 
 }
@@ -133,52 +134,59 @@ parse_command_line(int argc, char ** argv,
 
 
 static void
-compute_image_size(const struct cmdline_info cmdline, const long nread,
-                   int * const rows_p, int * const cols_p) {
+computeImageSize(struct CmdlineInfo const cmdline,
+                 long               const nRead,
+                 unsigned int *     const rowsP,
+                 unsigned int *     const colsP) {
 
     if (cmdline.autosize) {
-        int sqrt_trunc = 
-            (int) sqrt((double) (nread-cmdline.headerskip));
-        if (sqrt_trunc*sqrt_trunc+cmdline.headerskip != nread) 
+        int sqrtTrunc =
+            (int) sqrt((double) (nRead - cmdline.headerskip));
+        if (sqrtTrunc * sqrtTrunc + cmdline.headerskip != nRead)
             pm_error( "You must specify the dimensions of the image unless "
                       "it is a quadratic image.  This one is not quadratic: "
                       "The number of "
                       "pixels in the input is %ld, which is not a perfect "
-                      "square.", nread-cmdline.headerskip);
-        *rows_p = *cols_p = sqrt_trunc;
-        pm_message( "Image size: %d cols, %d rows", *cols_p, *rows_p);
+                      "square.", nRead - cmdline.headerskip);
+        *rowsP = *colsP = sqrtTrunc;
+        pm_message( "Image size: %u cols, %u rows", *colsP, *rowsP);
     } else {
-        *rows_p = cmdline.height;
-        *cols_p = cmdline.width;
+        *rowsP = cmdline.height;
+        *colsP = cmdline.width;
     }
 }
 
 
 
 static void
-skip_header(FILE *ifp, const int headerskip) {
+skipHeader(FILE *       const ifP,
+           unsigned int const headerskip) {
+
     int i;
 
-    for ( i = 0; i < headerskip; ++i ) {
+    for (i = 0; i < headerskip; ++i) {
         /* Read a byte out of the file */
         int val;
-        val = getc( ifp );
-        if ( val == EOF )
-            pm_error("EOF / read error reading Byte %d in the header", i );
+        val = getc(ifP);
+        if (val == EOF)
+            pm_error("EOF / read error reading Byte %u in the header", i );
     }
 }
 
 
 
 static gray
-read_from_file(FILE *ifp, const int bpp, const int row, const int col,
-               const int littleendian) {
+readFromFile(FILE *        const ifP,
+             unsigned int  const bpp,
+             unsigned int  const row,
+             unsigned int  const col,
+             bool          const littleEndian) {
 /*----------------------------------------------------------------------------
-   Return the next sample value from the input file 'ifp', assuming the
+   Return the next sample value from the input file *ifP, assuming the
    input stream is 'bpp' bytes per pixel (1 or 2).  In the case of two
-   bytes, if 'littleendian', assume least significant byte is first.
+   bytes, if 'littleEndian', assume least significant byte is first.
    Otherwise, assume MSB first.
-   
+
    In error messages, say this is Column 'col', Row 'row'.  Exit program if
    error.
 -----------------------------------------------------------------------------*/
@@ -186,18 +194,18 @@ read_from_file(FILE *ifp, const int bpp, const int row, const int col,
 
     if (bpp == 1) {
         int val;
-        val = getc(ifp);
+        val = getc(ifP);
         if (val == EOF)
-            pm_error( "EOF / read error at Row %d Column %d",
+            pm_error( "EOF / read error at Row %u Column %u",
                       row, col);
         retval = (gray) val;
     } else {
         short val;
         int rc;
-        rc = littleendian ? 
-            pm_readlittleshort(ifp, &val) : pm_readbigshort(ifp, &val);
+        rc = littleEndian ?
+            pm_readlittleshort(ifP, &val) : pm_readbigshort(ifP, &val);
         if (rc != 0)
-            pm_error( "EOF / read error at Row %d Column %d",
+            pm_error( "EOF / read error at Row %u Column %u",
                       row, col);
         retval = (gray) val;
     }
@@ -207,87 +215,93 @@ read_from_file(FILE *ifp, const int bpp, const int row, const int col,
 
 
 int
-main(int argc, char *argv[] ) {
+main(int argc, const char ** argv) {
 
-    struct cmdline_info cmdline;
-    FILE* ifp;
-    gray* grayrow;
-    int rows, cols;
+    struct CmdlineInfo cmdline;
+    FILE * ifP;
+    gray * grayrow;
+    unsigned int rows, cols;
     gray maxval;
-    char* buf;
-    /* pixels_1 and pixels_2 are the array of pixels in the input buffer
-       (assuming we are using an input buffer).  pixels_1 is the array
-       as if the pixels are one byte each.  pixels_2 is the array as if
+    char * buf;
+    /* pixels1 and pixels2 are the array of pixels in the input buffer
+       (assuming we are using an input buffer).  pixels1 is the array
+       as if the pixels are one byte each.  pixels2 is the array as if
        they are two bytes each.
        */
-    unsigned char *pixels_1;  
-    unsigned short *pixels_2;
-    long nread;
-    int row;
+    unsigned char * pixels1;
+    unsigned short * pixels2;
+    long nRead;
+    unsigned int row;
     float toskip;
 
-    pgm_init( &argc, argv );
+    pm_proginit(&argc, argv);
 
-    parse_command_line(argc, argv, &cmdline);
+    parseCommandLine(argc, argv, &cmdline);
 
-    ifp = pm_openr(cmdline.inputFileName);
+    ifP = pm_openr(cmdline.inputFileName);
 
     if (cmdline.autosize || cmdline.bottomfirst) {
-        buf = pm_read_unknown_size( ifp, &nread );
-        pixels_1 = (unsigned char *) buf;
-        pixels_2 = (unsigned short *) buf;
+        buf = pm_read_unknown_size(ifP, &nRead);
+        pixels1 = (unsigned char *) buf;
+        pixels2 = (unsigned short *) buf;
     } else
         buf = NULL;
 
-    compute_image_size(cmdline, nread, &rows, &cols);
+    computeImageSize(cmdline, nRead, &rows, &cols);
 
     if (!buf)
-        skip_header(ifp, cmdline.headerskip);
+        skipHeader(ifP, cmdline.headerskip);
 
     toskip = 0.00001;
 
     if (cmdline.maxval == -1)
         maxval = (cmdline.bpp == 1 ? (gray) 255 : (gray) 65535);
     else
-        maxval = (gray) cmdline.maxval;
+        maxval = cmdline.maxval;
 
-    pgm_writepgminit( stdout, cols, rows, maxval, 0 );
-    grayrow = pgm_allocrow( cols );
+    pgm_writepgminit(stdout, cols, rows, maxval, 0);
 
-    for ( row = 0; row < rows; ++row) {
-        int col;
+    grayrow = pgm_allocrow(cols);
+
+    for (row = 0; row < rows; ++row) {
+        unsigned int col;
         unsigned int rowpos; /* index of this row in pixel array */
+
         if (cmdline.bottomfirst)
             rowpos = (rows-row-1) * cols;
         else
             rowpos = row * cols;
 
-        for ( col = 0; col < cols; ++col )
+        for (col = 0; col < cols; ++col) {
             if (buf) {
                 if (cmdline.bpp == 1)
-                    grayrow[col] = pixels_1[rowpos+col];
+                    grayrow[col] = pixels1[rowpos+col];
                 else
-                    grayrow[col] = pixels_2[rowpos+col];
+                    grayrow[col] = pixels2[rowpos+col];
             } else {
-                grayrow[col] = read_from_file(ifp, cmdline.bpp, 
-                                              row, col,
-                                              cmdline.littleendian);
+                grayrow[col] = readFromFile(ifP, cmdline.bpp,
+                                            row, col,
+                                            cmdline.littleendian > 0);
             }
-        for ( toskip += cmdline.rowskip; toskip >= 1.0; toskip -= 1.0 ) {
+        }
+        for (toskip += cmdline.rowskip; toskip >= 1.0; toskip -= 1.0) {
             /* Note that if we're using a buffer, cmdline.rowskip is zero */
             int val;
-            val = getc( ifp );
-            if ( val == EOF )
-                pm_error( "EOF / read error skipping bytes at the end "
-                          "of Row %d.", row);
+            val = getc(ifP);
+            if (val == EOF)
+                pm_error("EOF / read error skipping bytes at the end "
+                         "of Row %u.", row);
         }
-        pgm_writepgmrow( stdout, grayrow, cols, maxval, 0 );
+        pgm_writepgmrow(stdout, grayrow, cols, maxval, 0);
     }
-    
+
     if (buf)
         free(buf);
-    pm_close( ifp );
-    pm_close( stdout );
+    pm_close(ifP);
+    pm_close(stdout);
 
-    exit( 0 );
+    return 0;
 }
+
+
+