diff --git a/main.c b/main.c index 003556f..8f8cce9 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,6 @@ /* * Atpdec - * Copyright (c) 2003 by Thierry Leconte (F4DWV) + * Copyright (c) 2004 by Thierry Leconte (F4DWV) * * $Id$ * @@ -32,7 +32,7 @@ #include "version.h" -extern getpixelrow (float *pixelv); +extern int getpixelrow(float *pixelv); #define SYNC_WIDTH 39 #define SPC_WIDTH 47 @@ -42,438 +42,366 @@ extern getpixelrow (float *pixelv); #define IMG_WIDTH 2080 static SNDFILE *inwav; -static int -initsnd (char *filename) + +static int initsnd(char *filename) { - SF_INFO infwav; + SF_INFO infwav; /* open wav input file */ - infwav.format = 0; - inwav = sf_open (filename, SFM_READ, &infwav); - if (inwav == NULL) { - fprintf (stderr, "could not open %s\n", filename); - return (1); - } - if (infwav.samplerate != 11025) { - fprintf (stderr, "Bad Input File sample rate: %d. Must be 11025\n", - infwav.samplerate); - return (1); - } - if (infwav.channels != 1) { - fprintf (stderr, "Too many channels in input file : %d\n", - infwav.channels); - return (1); - } - - return (0); + infwav.format = 0; + inwav = sf_open(filename, SFM_READ, &infwav); + if (inwav == NULL) { + fprintf(stderr, "could not open %s\n", filename); + return (1); + } + if (infwav.samplerate != 11025) { + fprintf(stderr, "Bad Input File sample rate: %d. Must be 11025\n", + infwav.samplerate); + return (1); + } + if (infwav.channels != 1) { + fprintf(stderr, "Too many channels in input file : %d\n", + infwav.channels); + return (1); + } + + return (0); } -int -getsample (float *sample, int nb) +int getsample(float *sample, int nb) { - return (sf_read_float (inwav, sample, nb)); + return (sf_read_float(inwav, sample, nb)); } static png_text text_ptr[] = { - {PNG_TEXT_COMPRESSION_NONE, "Software", version, sizeof (version)} - , - {PNG_TEXT_COMPRESSION_NONE, "Channel", NULL, 0} - , - {PNG_TEXT_COMPRESSION_NONE, "Description", "NOAA POES satellite Image", 25} + {PNG_TEXT_COMPRESSION_NONE, "Software", version, sizeof(version)} + , + {PNG_TEXT_COMPRESSION_NONE, "Channel", NULL, 0} + , + {PNG_TEXT_COMPRESSION_NONE, "Description", "NOAA POES satellite Image", + 25} }; static int -ImageOut (char *filename, char *chid, float **prow, int nrow, int depth, - int width, int offset) +ImageOut(char *filename, char *chid, float **prow, int nrow, + int width, int offset) { - FILE *pngfile; - png_infop info_ptr; - png_structp png_ptr; - int n; + FILE *pngfile; + png_infop info_ptr; + png_structp png_ptr; + int n; /* init png lib */ - png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - fprintf (stderr, "could not open create png_ptr\n"); - return (1); - } - - info_ptr = png_create_info_struct (png_ptr); - if (!info_ptr) { - png_destroy_write_struct (&png_ptr, (png_infopp) NULL); - fprintf (stderr, "could not open create info_ptr\n"); - return (1); - } - - png_set_IHDR (png_ptr, info_ptr, width, nrow, - depth, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - - text_ptr[1].text = chid; - text_ptr[1].text_length = strlen (chid); - png_set_text (png_ptr, info_ptr, text_ptr, 3); - png_set_pHYs (png_ptr, info_ptr, 4000, 4000, PNG_RESOLUTION_METER); - - printf ("Writing %s ... ", filename); - fflush (stdout); -#ifdef WIN32 - pngfile = fopen (filename, "wb"); -#else - pngfile = fopen (filename, "w"); -#endif - if (pngfile == NULL) { - fprintf (stderr, "could not open %s\n", filename); - return (1); - } - png_init_io (png_ptr, pngfile); - png_write_info (png_ptr, info_ptr); - - for (n = 0; n < nrow; n++) { - float *pixelv; - png_byte pixel[2 * IMG_WIDTH]; - int i; - - pixelv = prow[n]; - for (i = 0; i < width; i++) { - float pv; - - pv = pixelv[i + offset]; - switch (depth) { - case 8: - pixel[i] = floor (pv); - break; -#ifndef WIN32 - case 16: - ((unsigned short *) pixel)[i] = - htons ((unsigned short) floor (pv * 255.0)); - break; -#endif - } + png_ptr = + png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + fprintf(stderr, "could not open create png_ptr\n"); + return (1); + } + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + png_destroy_write_struct(&png_ptr, (png_infopp) NULL); + fprintf(stderr, "could not open create info_ptr\n"); + return (1); + } + + png_set_IHDR(png_ptr, info_ptr, width, nrow, + 8, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + text_ptr[1].text = chid; + text_ptr[1].text_length = strlen(chid); + png_set_text(png_ptr, info_ptr, text_ptr, 3); + png_set_pHYs(png_ptr, info_ptr, 4000, 4000, PNG_RESOLUTION_METER); + + printf("Writing %s ... ", filename); + fflush(stdout); + pngfile = fopen(filename, "wb"); + if (pngfile == NULL) { + fprintf(stderr, "could not open %s\n", filename); + return (1); } - png_write_row (png_ptr, pixel); - } - png_write_end (png_ptr, info_ptr); - fclose (pngfile); - printf ("Done\n"); - png_destroy_write_struct (&png_ptr, &info_ptr); - return (0); + png_init_io(png_ptr, pngfile); + png_write_info(png_ptr, info_ptr); + + for (n = 0; n < nrow; n++) { + float *pixelv; + png_byte pixel[2*IMG_WIDTH]; + int i; + + pixelv = prow[n]; + for (i = 0; i < width; i++) { + pixel[i] = pixelv[i + offset]; + } + png_write_row(png_ptr, pixel); + } + png_write_end(png_ptr, info_ptr); + fclose(pngfile); + printf("Done\n"); + png_destroy_write_struct(&png_ptr, &info_ptr); + return (0); } -int -ImageColorOut (char *filename, float **prow, int nrow) +int ImageColorOut(char *filename, float **prow, int nrow) { - FILE *pngfile; - png_infop info_ptr; - png_structp png_ptr; - int n; - float *pixelc,*pixeln,*pixelp; - float pv[CH_WIDTH]; - float pt[CH_WIDTH]; - - extern void false_color (double v, double t, float *r, float *g, float *b); - extern void dres( - float av, float at, float bv, float bt, - float cv, float ct, float dv, float dt, - float *v , float *t); + FILE *pngfile; + png_infop info_ptr; + png_structp png_ptr; + int n; + float *pixelc, *pixeln; + + extern void falsecolor(double v, double t, float *r, float *g, + float *b); /* init png lib */ - png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) { - fprintf (stderr, "could not open create png_ptr\n"); - return (1); - } - - info_ptr = png_create_info_struct (png_ptr); - if (!info_ptr) { - png_destroy_write_struct (&png_ptr, (png_infopp) NULL); - fprintf (stderr, "could not open create info_ptr\n"); - return (1); - } - - png_set_IHDR (png_ptr, info_ptr, 2*CH_WIDTH-3, 2*nrow-3, - 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - - text_ptr[1].text = "False Colors"; - png_set_pHYs (png_ptr, info_ptr, 2000, 2000, PNG_RESOLUTION_METER); - - text_ptr[1].text_length = strlen (text_ptr[1].text); - png_set_text (png_ptr, info_ptr, text_ptr, 3); - - printf ("Computing False colors & writing : %s ...", filename); - fflush (stdout); -#ifdef WIN32 - pngfile = fopen (filename, "wb"); -#else - pngfile = fopen (filename, "w"); -#endif - if (pngfile == NULL) { - fprintf (stderr, "could not open %s\n", filename); - return (1); - } - png_init_io (png_ptr, pngfile); - png_write_info (png_ptr, info_ptr); - - pixelc=NULL;pixeln=prow[0]; - - for (n = 0; n < nrow-1; n++) { - png_color pixa[2*CH_WIDTH]; - png_color pixb[2*CH_WIDTH]; - int i; - - pixelp=pixelc;pixelc=pixeln;pixeln=prow[n+1]; - - for (i = 0; i < CH_WIDTH-1; i++) { - float av,bv,cv,dv; - float at,bt,ct,dt; - float pvc,ptc; - float v,t; - float r, g, b; - - av = pixelc[i+SYNC_WIDTH + SPC_WIDTH]; - bv = pixeln[i+SYNC_WIDTH + SPC_WIDTH]; - cv = pixelc[i+1+SYNC_WIDTH + SPC_WIDTH]; - dv = pixeln[i+1+SYNC_WIDTH + SPC_WIDTH]; - if(n!=0) { - at = 0.667*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - bt = 0.667*pixeln[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - ct = 0.667*pixelc[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - dt = 0.667*pixeln[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelc[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - } else { - at = pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - bt = pixeln[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - ct = pixelc[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - dt = pixeln[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - } - - dres (av,at,bv,bt,cv,ct,dv,dt,&v,&t); - - falsecolor (v, t, &r, &g, &b); - pixb[2*i].red = (unsigned int) (255.0 * r); - pixb[2*i].green = (unsigned int) (255.0 * g); - pixb[2*i].blue = (unsigned int) (255.0 * b); - - pvc=v;ptc=t; - - if(n!=0) { - av = pv[i]; - bv = pixelc[i+SYNC_WIDTH + SPC_WIDTH]; - cv = pixelc[i+1+SYNC_WIDTH + SPC_WIDTH]; - dv = pvc; - at = pt[i]; - bt = 0.667*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - ct = 0.667*pixelc[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+1+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - dt = ptc; - - dres (av,at,bv,bt,cv,ct,dv,dt,&v,&t); - - falsecolor (v, t, &r, &g, &b); - pixa[2*i].red = (unsigned int) (255.0 * r); - pixa[2*i].green = (unsigned int) (255.0 * g); - pixa[2*i].blue = (unsigned int) (255.0 * b); - } - pv[i]=pvc;pt[i]=ptc; - - if (i!=0) { - - if (n!=0) { - v = pixelc[i+SYNC_WIDTH + SPC_WIDTH]; - t = 0.667*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - falsecolor (v, t, &r, &g, &b); - pixa[2*i-1].red = (unsigned int) (255.0 * r); - pixa[2*i-1].green = (unsigned int) (255.0 * g); - pixa[2*i-1].blue = (unsigned int) (255.0 * b); - } - - av = pixelc[i+SYNC_WIDTH + SPC_WIDTH]; - bv = pv[i-1]; - cv = pvc; - dv = pixeln[i+SYNC_WIDTH + SPC_WIDTH]; - if(n!=0) { - at = 0.667*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelp[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - dt = 0.667*pixeln[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] - + 0.333*pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - } else { - at = pixelc[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - dt = pixeln[i+SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; - } - bt = pt[i-1]; - ct = ptc; - - dres (av,at,bv,bt,cv,ct,dv,dt,&v,&t); - - falsecolor (v, t, &r, &g, &b); - pixb[2*i-1].red = (unsigned int) (255.0 * r); - pixb[2*i-1].green = (unsigned int) (255.0 * g); - pixb[2*i-1].blue = (unsigned int) (255.0 * b); - } + png_ptr = + png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + fprintf(stderr, "could not open create png_ptr\n"); + return (1); + } + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + png_destroy_write_struct(&png_ptr, (png_infopp) NULL); + fprintf(stderr, "could not open create info_ptr\n"); + return (1); + } + + png_set_IHDR(png_ptr, info_ptr, 2 * (CH_WIDTH - 1), 2 * (nrow - 1), + 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + png_set_pHYs(png_ptr, info_ptr, 2000, 2000, PNG_RESOLUTION_METER); + text_ptr[1].text = "False Colors"; + text_ptr[1].text_length = strlen(text_ptr[1].text); + png_set_text(png_ptr, info_ptr, text_ptr, 3); + + printf("Computing False colors & writing : %s ...", filename); + fflush(stdout); + pngfile = fopen(filename, "wb"); + if (pngfile == NULL) { + fprintf(stderr, "could not open %s\n", filename); + return (1); + } + png_init_io(png_ptr, pngfile); + png_write_info(png_ptr, info_ptr); + + for (n = 0; n < nrow - 1; n++) { + png_color pix[2 * CH_WIDTH]; + float r, g, b; + float v, vs, t, ts; + int i; + + pixelc = prow[n]; + pixeln = prow[n + 1]; + + v = (pixelc[SYNC_WIDTH + SPC_WIDTH] + + pixeln[SYNC_WIDTH + SPC_WIDTH]) / 2.0; + for (i = 0; i < CH_WIDTH - 1; i++) { + + t = pixelc[i + SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]; + + falsecolor(v, t, &r, &g, &b); + pix[2 * i].red = 255.0 * r; + pix[2 * i].green = 255.0 * g; + pix[2 * i].blue = 255.0 * b; + + vs = (pixelc[i + 1 + SYNC_WIDTH + SPC_WIDTH] + + pixeln[i + 1 + SYNC_WIDTH + SPC_WIDTH]) / 2.0; + v = (v + vs) / 2.0; + t = (pixelc[i + SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] + + pixelc[i + 1 + SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]) / 2.0; + + falsecolor(v, t, &r, &g, &b); + pix[2 * i + 1].red = 255.0 * r; + pix[2 * i + 1].green = 255.0 * g; + pix[2 * i + 1].blue = 255.0 * b; + + v = vs; + } + png_write_row(png_ptr, (png_bytep) pix); + + t = (pixelc[SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] + + pixeln[SYNC_WIDTH + SPC_WIDTH + CH_OFFSET]) / 2.0; + for (i = 0; i < CH_WIDTH - 1; i++) { + + v = pixeln[i + SYNC_WIDTH + SPC_WIDTH]; + + falsecolor(v, t, &r, &g, &b); + pix[2 * i].red = 255.0 * r; + pix[2 * i].green = 255.0 * g; + pix[2 * i].blue = 255.0 * b; + + v = (pixeln[i + SYNC_WIDTH + SPC_WIDTH] + + pixeln[i + 1 + SYNC_WIDTH + SPC_WIDTH]) / 2.0; + ts = (pixelc[i + SYNC_WIDTH + SPC_WIDTH + CH_OFFSET] + + pixeln[i + 1 + SYNC_WIDTH + SPC_WIDTH + + CH_OFFSET]) / 2.0; + t = (t + ts) / 2.0; + falsecolor(v, t, &r, &g, &b); + pix[2 * i + 1].red = 255.0 * r; + pix[2 * i + 1].green = 255.0 * g; + pix[2 * i + 1].blue = 255.0 * b; + + t = ts; + } + png_write_row(png_ptr, (png_bytep) pix); } - if(n!=0) png_write_row (png_ptr, (png_bytep) pixa); - png_write_row (png_ptr, (png_bytep) pixb); - - } - png_write_end (png_ptr, info_ptr); - fclose (pngfile); - printf ("Done\n"); - png_destroy_write_struct (&png_ptr, &info_ptr); - return (0); + png_write_end(png_ptr, info_ptr); + fclose(pngfile); + printf("Done\n"); + png_destroy_write_struct(&png_ptr, &info_ptr); + return (0); } -extern int Calibrate (float **prow, int nrow, int offset); -extern int Temperature (float **prow, int nrow, int ch, int offset); -extern void readfconf (char *file); +extern int Calibrate(float **prow, int nrow, int offset); +extern void Temperature(float **prow, int nrow, int ch, int offset); +extern void readfconf(char *file); extern int optind, opterr; extern char *optarg; int satnum = 1; -static void -usage (void) +static void usage(void) { - fprintf (stderr, "atpdec [options] soundfiles ...\n"); - fprintf (stderr, - "options:\n-d \tDestination directory\n-i [a|b|c|t]\tOutput image type\n\t\t\tr: Raw\n\t\t\ta: A chan.\n\t\t\tb: B chan.\n\t\t\tc: False color\n\t\t\tt: Temperature\n-c \tFalse color config file\n-p\t\t16bits output\n-s [0|1]\tSatellite id (for temperature and false color generation)\n\t\t\t0:NOAA15\n\t\t\t1:NOAA17\n"); + fprintf(stderr, "atpdec [options] soundfiles ...\n"); + fprintf(stderr, + "options:\n-d \tDestination directory\n-i [a|b|c|t]\tOutput image type\n\t\t\tr: Raw\n\t\t\ta: A chan.\n\t\t\tb: B chan.\n\t\t\tc: False color\n\t\t\tt: Temperature\n-c \tFalse color config file\n-s [0|1]\tSatellite id (for temperature and false color generation)\n\t\t\t0:NOAA15\n\t\t\t1:NOAA17\n"); + exit(1); } -main (int argc, char **argv) +int main(int argc, char **argv) { - char pngfilename[1024]; - char name[1024]; - char pngdirname[1024] = ""; - char imgopt[20] = "ac"; - float *prow[3000]; - char *chid[6] = { "1", "2", "3A", "4", "5", "3B" }; - int depth = 8; - int n, nrow; - int ch; - int c; - - printf ("%s\n", version); - - opterr = 0; - while ((c = getopt (argc, argv, "c:d:i:ps:")) != EOF) { - switch (c) { - case 'd': - strcpy (pngdirname, optarg); - break; - case 'c': - readfconf (optarg); - break; - case 'i': - strcpy (imgopt, optarg); - break; - case 'p': - depth = 16; - break; - case 's': - satnum = atoi (optarg); - if (satnum < 0 || satnum > 1) { - fprintf (stderr, "invalid satellite\n"); - exit (1); - } - break; - default: - usage (); + char pngfilename[1024]; + char name[1024]; + char pngdirname[1024] = ""; + char imgopt[20] = "ac"; + float *prow[3000]; + char *chid[6] = { "1", "2", "3A", "4", "5", "3B" }; + int nrow; + int ch; + int c; + + printf("%s\n", version); + + opterr = 0; + while ((c = getopt(argc, argv, "c:d:i:s:")) != EOF) { + switch (c) { + case 'd': + strcpy(pngdirname, optarg); + break; + case 'c': + readfconf(optarg); + break; + case 'i': + strcpy(imgopt, optarg); + break; + case 's': + satnum = atoi(optarg); + if (satnum < 0 || satnum > 1) { + fprintf(stderr, "invalid satellite\n"); + exit(1); + } + break; + default: + usage(); + } } - } - for (nrow = 0; nrow < 3000; nrow++) - prow[nrow] = NULL; + for (nrow = 0; nrow < 3000; nrow++) + prow[nrow] = NULL; - for (; optind < argc; optind++) { - int a = 0, b = 0; + for (; optind < argc; optind++) { + int a = 0, b = 0; - strcpy (pngfilename, argv[optind]); - strcpy (name, basename (pngfilename)); - strtok (name, "."); - if (pngdirname[0] == '\0') { - strcpy (pngfilename, argv[optind]); - strcpy (pngdirname, dirname (pngfilename)); - } + strcpy(pngfilename, argv[optind]); + strcpy(name, basename(pngfilename)); + strtok(name, "."); + if (pngdirname[0] == '\0') { + strcpy(pngfilename, argv[optind]); + strcpy(pngdirname, dirname(pngfilename)); + } /* open snd input */ - if (initsnd (argv[optind])) - exit (1); + if (initsnd(argv[optind])) + exit(1); /* main loop */ - printf ("Decoding: %s \n", argv[optind]); - for (nrow = 0; nrow < 3000; nrow++) { - if (prow[nrow] == NULL) - prow[nrow] = (float *) malloc (sizeof (float) * 2150); - if (getpixelrow (prow[nrow]) == 0) - break; - printf ("%d\r", nrow); - fflush (stdout); - } - printf ("\nDone\n", nrow); - sf_close (inwav); + printf("Decoding: %s \n", argv[optind]); + for (nrow = 0; nrow < 3000; nrow++) { + if (prow[nrow] == NULL) + prow[nrow] = (float *) malloc(sizeof(float) * 2150); + if (getpixelrow(prow[nrow]) == 0) + break; + printf("%d\r", nrow); + fflush(stdout); + } + printf("\nDone\n"); + sf_close(inwav); /* raw image */ - if (strchr (imgopt, (int) 'r') != NULL) { - sprintf (pngfilename, "%s/%s-r.png", pngdirname, name); - ImageOut (pngfilename, "raw", prow, nrow, depth, IMG_WIDTH, 0); - } + if (strchr(imgopt, (int) 'r') != NULL) { + sprintf(pngfilename, "%s/%s-r.png", pngdirname, name); + ImageOut(pngfilename, "raw", prow, nrow, IMG_WIDTH, 0); + } /* Channel A */ - if (((strchr (imgopt, (int) 'a') != NULL) - || (strchr (imgopt, (int) 'c') != NULL) - || (strchr (imgopt, (int) 'd') != NULL))) { - ch = Calibrate (prow, nrow, SYNC_WIDTH); - if (ch >= 0) { - if (strchr (imgopt, (int) 'a') != NULL) { - sprintf (pngfilename, "%s/%s-%s.png", pngdirname, name, chid[ch]); - ImageOut (pngfilename, chid[ch], prow, nrow, depth, - SPC_WIDTH + CH_WIDTH + TELE_WIDTH, SYNC_WIDTH); + if (((strchr(imgopt, (int) 'a') != NULL) + || (strchr(imgopt, (int) 'c') != NULL) + || (strchr(imgopt, (int) 'd') != NULL))) { + ch = Calibrate(prow, nrow, SYNC_WIDTH); + if (ch >= 0) { + if (strchr(imgopt, (int) 'a') != NULL) { + sprintf(pngfilename, "%s/%s-%s.png", pngdirname, name, + chid[ch]); + ImageOut(pngfilename, chid[ch], prow, nrow, + SPC_WIDTH + CH_WIDTH + TELE_WIDTH, + SYNC_WIDTH); + } + } + if (ch < 2) + a = 1; } - } - if (ch < 2) - a = 1; - } /* Channel B */ - if ((strchr (imgopt, (int) 'b') != NULL) - || (strchr (imgopt, (int) 'c') != NULL) - || (strchr (imgopt, (int) 't') != NULL) - || (strchr (imgopt, (int) 'd') != NULL)) { - ch = Calibrate (prow, nrow, CH_OFFSET + SYNC_WIDTH); - if (ch >= 0) { - if (strchr (imgopt, (int) 'b') != NULL) { - sprintf (pngfilename, "%s/%s-%s.png", pngdirname, name, chid[ch]); - ImageOut (pngfilename, chid[ch], prow, nrow, depth, - SPC_WIDTH + CH_WIDTH + TELE_WIDTH, - CH_OFFSET + SYNC_WIDTH); - } - } - if (ch > 2) { - b = 1; - Temperature (prow, nrow, ch, CH_OFFSET + SYNC_WIDTH); - if (strchr (imgopt, (int) 't') != NULL) { - sprintf (pngfilename, "%s/%s-t.png", pngdirname, name); - ImageOut (pngfilename, "Temperature", prow, nrow, depth, - CH_WIDTH, CH_OFFSET + SYNC_WIDTH + SPC_WIDTH); + if ((strchr(imgopt, (int) 'b') != NULL) + || (strchr(imgopt, (int) 'c') != NULL) + || (strchr(imgopt, (int) 't') != NULL) + || (strchr(imgopt, (int) 'd') != NULL)) { + ch = Calibrate(prow, nrow, CH_OFFSET + SYNC_WIDTH); + if (ch >= 0) { + if (strchr(imgopt, (int) 'b') != NULL) { + sprintf(pngfilename, "%s/%s-%s.png", pngdirname, name, + chid[ch]); + ImageOut(pngfilename, chid[ch], prow, nrow, + SPC_WIDTH + CH_WIDTH + TELE_WIDTH, + CH_OFFSET + SYNC_WIDTH); + } + } + if (ch > 2) { + b = 1; + Temperature(prow, nrow, ch, CH_OFFSET + SYNC_WIDTH); + if (strchr(imgopt, (int) 't') != NULL) { + sprintf(pngfilename, "%s/%s-t.png", pngdirname, name); + ImageOut(pngfilename, "Temperature", prow, nrow, + CH_WIDTH, CH_OFFSET + SYNC_WIDTH + SPC_WIDTH); + } + } } - } - } /* distribution */ - if (a && b && strchr (imgopt, (int) 'd') != NULL) { - sprintf (pngfilename, "%s/%s-d.pnm", pngdirname, name); - } + if (a && b && strchr(imgopt, (int) 'd') != NULL) { + sprintf(pngfilename, "%s/%s-d.pnm", pngdirname, name); + } /* color image */ - if (a && b && strchr (imgopt, (int) 'c') != NULL) { - sprintf (pngfilename, "%s/%s-c.png", pngdirname, name); - ImageColorOut (pngfilename, prow, nrow); - } + if (a && b && strchr(imgopt, (int) 'c') != NULL) { + sprintf(pngfilename, "%s/%s-c.png", pngdirname, name); + ImageColorOut(pngfilename, prow, nrow); + } - } - exit (0); + } + exit(0); }