*** ppmhist.c.old Tue Feb 18 16:01:08 1992 --- ppmhist.c Sat May 16 14:33:37 1992 *************** *** 35,46 **** #ifndef A_FORCEPROTO int countcompare(); #endif /* A_FORCEPROTO */ ! char* usage = "[ppmfile]"; ppm_init( &argc, argv ); argn = 1; if ( argn != argc ) { ifp = pm_openr( argv[argn] ); --- 35,60 ---- #ifndef A_FORCEPROTO int countcompare(); #endif /* A_FORCEPROTO */ ! char* usage = "[-map] [ppmfile]"; ! int map; ! char *pfmt; ppm_init( &argc, argv ); + map = 0; argn = 1; + while ( argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0' ) + { + if( pm_keymatch( argv[argn], "-map", 2 ) ) + map = 1; + else if( pm_keymatch( argv[argn], "-nomap", 2 ) ) + map = 1; + else + pm_usage( usage ); + ++argn; + } + if ( argn != argc ) { ifp = pm_openr( argv[argn] ); *************** *** 63,74 **** /* Sort by count. */ qsort( (char*) chv, colors, sizeof(struct colorhist_item), countcompare ); /* And print the histogram. */ printf( " r g b \tlum\tcount\n" ); printf( "--- --- ---\t---\t-----\n" ); for ( i = 0; i < colors; i++ ) printf( ! "%3d %3d %3d\t%d\t%d\n", PPM_GETR(chv[i].color), PPM_GETG(chv[i].color), PPM_GETB(chv[i].color), (int) ( PPM_LUMIN( chv[i].color ) + 0.5 ), chv[i].value ); --- 77,104 ---- /* Sort by count. */ qsort( (char*) chv, colors, sizeof(struct colorhist_item), countcompare ); + if( map ) + { + printf("P3\n# color map\n%d 1\n%d\n", colors, maxval); + printf( "# r g b \tlum\tcount\n" ); + printf( "#--- --- --- \t---\t-----\n" ); + + pfmt = " %3d %3d %3d #\t%d\t%d\n"; + + } + else + { /* And print the histogram. */ printf( " r g b \tlum\tcount\n" ); printf( "--- --- ---\t---\t-----\n" ); + + pfmt = "%3d %3d %3d\t%d\t%d\n"; + } + + for ( i = 0; i < colors; i++ ) printf( ! pfmt, PPM_GETR(chv[i].color), PPM_GETG(chv[i].color), PPM_GETB(chv[i].color), (int) ( PPM_LUMIN( chv[i].color ) + 0.5 ), chv[i].value );