diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2013-06-29 19:19:47 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2013-06-29 19:19:47 +0000 |
commit | 380588e187c12000ac8082cb2a20a905d3c422a5 (patch) | |
tree | 296b1324b7a9360646a34ae836b8eb486b7feede /generator/ppmcie.c | |
parent | f8b633c2be1231a0c194214271caa456dc669ecb (diff) | |
download | netpbm-mirror-380588e187c12000ac8082cb2a20a905d3c422a5.tar.gz netpbm-mirror-380588e187c12000ac8082cb2a20a905d3c422a5.tar.xz netpbm-mirror-380588e187c12000ac8082cb2a20a905d3c422a5.zip |
Release 10.63.00
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@1968 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'generator/ppmcie.c')
-rw-r--r-- | generator/ppmcie.c | 114 |
1 files changed, 56 insertions, 58 deletions
diff --git a/generator/ppmcie.c b/generator/ppmcie.c index 69af5732..717ed13b 100644 --- a/generator/ppmcie.c +++ b/generator/ppmcie.c @@ -35,10 +35,8 @@ #include "nstring.h" #define CLAMP(v, l, h) ((v) < (l) ? (l) : (v) > (h) ? (h) : (v)) -#define TRUE 1 -#define FALSE 0 -#define Maxval 255 /* Maxval to use in generated pixmaps */ +pixval const cieMaxval = 255; /* Maxval to use in generated pixmaps */ /* A color system is defined by the CIE x and y coordinates of its three primary illuminants and the x and y coordinates of the white @@ -522,12 +520,12 @@ makeAllBlack(pixel ** const pixels, static void drawTongueOutline(pixel ** const pixels, - int const pixcols, - int const pixrows, - pixval const maxval, - bool const upvp, - int const xBias, - int const yBias) { + int const pixcols, + int const pixrows, + pixval const maxval, + bool const upvp, + int const xBias, + int const yBias) { int const pxcols = pixcols - xBias; int const pxrows = pixrows - yBias; @@ -546,7 +544,7 @@ drawTongueOutline(pixel ** const pixels, &icx, &icy); if (wavelength > 380) - ppmd_line(pixels, pixcols, pixrows, Maxval, + ppmd_line(pixels, pixcols, pixrows, maxval, B(lx, ly), B(icx, icy), PPMD_NULLDRAWPROC, (char *) &rgbcolor); else { @@ -585,12 +583,12 @@ findTongue(pixel ** const pixels, ++i); if (i >= pxcols) - *presentP = FALSE; + *presentP = false; else { int j; int const leftEdge = i; - *presentP = TRUE; + *presentP = true; for (j = pxcols - 1; j >= leftEdge && PPM_GETR(Bixels(row, j)) == 0; @@ -652,16 +650,16 @@ fillInTongue(pixel ** const pixels, xyz_to_rgb(cs, cx, cy, cz, &jr, &jg, &jb); - mx = Maxval; + mx = maxval; /* Check whether the requested color is within the gamut achievable with the given color system. If not, draw it in a reduced intensity, interpolated by desaturation to the closest within-gamut color. */ - if (constrain_rgb(&jr, &jg, &jb)) { - mx = highlightGamut ? Maxval : ((Maxval + 1) * 3) / 4; - } + if (constrain_rgb(&jr, &jg, &jb)) + mx = highlightGamut ? maxval : ((maxval + 1) * 3) / 4; + /* Scale to max(rgb) = 1. */ jmax = MAX(jr, MAX(jg, jb)); if (jmax > 0) { @@ -959,14 +957,14 @@ plotBlackBodyCurve(pixel ** const pixels, } if (t > 1000) { - ppmd_line(pixels, pixcols, pixrows, Maxval, + ppmd_line(pixels, pixcols, pixrows, maxval, B(lx, ly), B(xb, yb), PPMD_NULLDRAWPROC, (char *) &rgbcolor); /* Draw tick mark every 1000 kelvins */ if ((((int) t) % 1000) == 0) { - ppmd_line(pixels, pixcols, pixrows, Maxval, + ppmd_line(pixels, pixcols, pixrows, maxval, B(lx, ly - Sz(2)), B(lx, ly + Sz(2)), PPMD_NULLDRAWPROC, (char *) &rgbcolor); @@ -978,7 +976,7 @@ plotBlackBodyCurve(pixel ** const pixels, char bb[20]; sprintf(bb, "%g", t); - ppmd_text(pixels, pixcols, pixrows, Maxval, + ppmd_text(pixels, pixcols, pixrows, maxval, B(lx - Sz(12), ly - Sz(4)), Sz(6), 0, bb, PPMD_NULLDRAWPROC, (char *) &rgbcolor); } @@ -1057,7 +1055,7 @@ plotMonochromeWavelengths( PPM_ASSIGN(rgbcolor, maxval, maxval, maxval); tx = icx + ((x < 520) ? Sz(-2) : ((x >= 535) ? Sz(2) : 0)); ty = icy + ((x < 520) ? 0 : ((x >= 535) ? Sz(-1) : Sz(-2))); - ppmd_line(pixels, pixcols, pixrows, Maxval, + ppmd_line(pixels, pixcols, pixrows, maxval, B(icx, icy), B(tx, ty), PPMD_NULLDRAWPROC, (char *) &rgbcolor); @@ -1089,13 +1087,13 @@ plotMonochromeWavelengths( } /* gamma correct from linear rgb to nonlinear rgb. */ gamma_correct_rgb(cs, &jr, &jg, &jb); - r = Maxval * jr; - g = Maxval * jg; - b = Maxval * jb; + r = maxval * jr; + g = maxval * jg; + b = maxval * jb; PPM_ASSIGN(rgbcolor, (pixval) r, (pixval) g, (pixval) b); sprintf(wl, "%d", x); - ppmd_text(pixels, pixcols, pixrows, Maxval, + ppmd_text(pixels, pixcols, pixrows, maxval, B(icx + bx, icy + by), Sz(6), 0, wl, PPMD_NULLDRAWPROC, (char *) &rgbcolor); } @@ -1127,7 +1125,7 @@ writeLabel(pixel ** const pixels, cs->xBlue, cs->yBlue, cs->xWhite, cs->yWhite); sysdesc[sizeof(sysdesc)-1] = '\0'; /* for robustness */ - ppmd_text(pixels, pixcols, pixrows, Maxval, + ppmd_text(pixels, pixcols, pixrows, maxval, pixcols / 3, Sz(24), Sz(12), 0, sysdesc, PPMD_NULLDRAWPROC, (char *) &rgbcolor); } @@ -1135,8 +1133,8 @@ writeLabel(pixel ** const pixels, int -main(int argc, - char * argv[]) { +main(int argc, + const char * argv[]) { int argn; const char * const usage = "[-[no]black] [-[no]wpoint] [-[no]label] [-no[axes]] [-full]\n\ @@ -1146,24 +1144,24 @@ main(int argc, [-size <s>] [-xsize|-width <x>] [-ysize|-height <y>]"; const struct colorSystem *cs; - int widspec = FALSE, hgtspec = FALSE; + bool widspec = false, hgtspec = false; unsigned int xBias, yBias; - int upvp = FALSE; /* xy or u'v' color coordinates? */ - int showWhite = TRUE; /* Show white point ? */ - int showBlack = TRUE; /* Show black body curve ? */ - int fullChart = FALSE; /* Fill entire tongue ? */ - int showLabel = TRUE; /* Show labels ? */ - int showAxes = TRUE; /* Plot axes ? */ - - ppm_init(&argc, argv); + bool upvp = false; /* xy or u'v' color coordinates? */ + bool showWhite = true; /* Show white point ? */ + bool showBlack = true; /* Show black body curve ? */ + bool fullChart = false; /* Fill entire tongue ? */ + bool showLabel = true; /* Show labels ? */ + bool showAxes = true; /* Plot axes ? */ + + pm_proginit(&argc, argv); argn = 1; cs = &Rec709system; /* default */ while (argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0') { if (pm_keymatch(argv[argn], "-xy", 2)) { - upvp = FALSE; + upvp = false; } else if (pm_keymatch(argv[argn], "-upvp", 1)) { - upvp = TRUE; + upvp = true; } else if (pm_keymatch(argv[argn], "-xsize", 1) || pm_keymatch(argv[argn], "-width", 2)) { if (widspec) { @@ -1172,7 +1170,7 @@ main(int argc, argn++; if ((argn == argc) || (sscanf(argv[argn], "%d", &sxsize) != 1)) pm_usage(usage); - widspec = TRUE; + widspec = true; } else if (pm_keymatch(argv[argn], "-ysize", 1) || pm_keymatch(argv[argn], "-height", 2)) { if (hgtspec) { @@ -1181,7 +1179,7 @@ main(int argc, argn++; if ((argn == argc) || (sscanf(argv[argn], "%d", &sysize) != 1)) pm_usage(usage); - hgtspec = TRUE; + hgtspec = true; } else if (pm_keymatch(argv[argn], "-size", 2)) { if (hgtspec || widspec) { pm_error("already specified a size/height/ysize"); @@ -1190,7 +1188,7 @@ main(int argc, if ((argn == argc) || (sscanf(argv[argn], "%d", &sysize) != 1)) pm_usage(usage); sxsize = sysize; - hgtspec = widspec = TRUE; + hgtspec = widspec = true; } else if (pm_keymatch(argv[argn], "-rec709", 1)) { cs = &Rec709system; } else if (pm_keymatch(argv[argn], "-ntsc", 1)) { @@ -1204,23 +1202,23 @@ main(int argc, } else if (pm_keymatch(argv[argn], "-cie", 1)) { cs = &CIEsystem; } else if (pm_keymatch(argv[argn], "-black", 3)) { - showBlack = TRUE; /* Show black body curve */ + showBlack = true; /* Show black body curve */ } else if (pm_keymatch(argv[argn], "-wpoint", 2)) { - showWhite = TRUE; /* Show white point of color system */ + showWhite = true; /* Show white point of color system */ } else if (pm_keymatch(argv[argn], "-noblack", 3)) { - showBlack = FALSE; /* Don't show black body curve */ + showBlack = false; /* Don't show black body curve */ } else if (pm_keymatch(argv[argn], "-nowpoint", 3)) { - showWhite = FALSE; /* Don't show white point of system */ + showWhite = false; /* Don't show white point of system */ } else if (pm_keymatch(argv[argn], "-label", 1)) { - showLabel = TRUE; /* Show labels. */ + showLabel = true; /* Show labels. */ } else if (pm_keymatch(argv[argn], "-nolabel", 3)) { - showLabel = FALSE; /* Don't show labels */ + showLabel = false; /* Don't show labels */ } else if (pm_keymatch(argv[argn], "-axes", 1)) { - showAxes = TRUE; /* Show axes. */ + showAxes = true; /* Show axes. */ } else if (pm_keymatch(argv[argn], "-noaxes", 3)) { - showAxes = FALSE; /* Don't show axes */ + showAxes = false; /* Don't show axes */ } else if (pm_keymatch(argv[argn], "-full", 1)) { - fullChart = TRUE; /* Fill whole tongue full-intensity */ + fullChart = true; /* Fill whole tongue full-intensity */ } else if (pm_keymatch(argv[argn], "-gamma", 2)) { cs = &Customsystem; argn++; @@ -1289,32 +1287,32 @@ main(int argc, makeAllBlack(pixels, pixcols, pixrows); - drawTongueOutline(pixels, pixcols, pixrows, Maxval, upvp, xBias, yBias); + drawTongueOutline(pixels, pixcols, pixrows, cieMaxval, upvp, xBias, yBias); - fillInTongue(pixels, pixcols, pixrows, Maxval, cs, upvp, xBias, yBias, + fillInTongue(pixels, pixcols, pixrows, cieMaxval, cs, upvp, xBias, yBias, fullChart); if (showAxes) - drawAxes(pixels, pixcols, pixrows, Maxval, upvp, xBias, yBias); + drawAxes(pixels, pixcols, pixrows, cieMaxval, upvp, xBias, yBias); if (showWhite) - plotWhitePoint(pixels, pixcols, pixrows, Maxval, + plotWhitePoint(pixels, pixcols, pixrows, cieMaxval, cs, upvp, xBias, yBias); if (showBlack) - plotBlackBodyCurve(pixels, pixcols, pixrows, Maxval, + plotBlackBodyCurve(pixels, pixcols, pixrows, cieMaxval, upvp, xBias, yBias); /* Plot wavelengths around periphery of the tongue. */ if (showAxes) - plotMonochromeWavelengths(pixels, pixcols, pixrows, Maxval, + plotMonochromeWavelengths(pixels, pixcols, pixrows, cieMaxval, cs, upvp, xBias, yBias); if (showLabel) - writeLabel(pixels, pixcols, pixrows, Maxval, cs); + writeLabel(pixels, pixcols, pixrows, cieMaxval, cs); - ppm_writeppm(stdout, pixels, pixcols, pixrows, Maxval, FALSE); + ppm_writeppm(stdout, pixels, pixcols, pixrows, cieMaxval, 0); return 0; } |