From: <hez...@us...> - 2009-08-20 00:09:17
|
Revision: 10302 http://plplot.svn.sourceforge.net/plplot/?rev=10302&view=rev Author: hezekiahcarty Date: 2009-08-20 00:09:10 +0000 (Thu, 20 Aug 2009) Log Message: ----------- Add option to not interpolate cmap1 when loaded with plspal1 To get the same result as the initial implementation, use: plspal1(palette_file, true) For "segmented" cmap1: plspal1(palette_file, false) Modified Paths: -------------- trunk/examples/c/x16c.c trunk/include/plplot.h trunk/src/plargs.c trunk/src/plcore.c trunk/src/plctrl.c Modified: trunk/examples/c/x16c.c =================================================================== --- trunk/examples/c/x16c.c 2009-08-19 21:37:38 UTC (rev 10301) +++ trunk/examples/c/x16c.c 2009-08-20 00:09:10 UTC (rev 10302) @@ -126,7 +126,7 @@ /* Load colour palettes*/ plspal0("cmap0_black_on_white.pal"); - plspal1("cmap1_gray.pal"); + plspal1("cmap1_gray.pal", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); /* Initialize plplot */ @@ -223,7 +223,7 @@ /* Load colour palettes*/ plspal0("cmap0_black_on_white.pal"); - plspal1("cmap1_blue_yellow.pal"); + plspal1("cmap1_blue_yellow.pal", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); @@ -250,7 +250,7 @@ /* Load colour palettes*/ plspal0("cmap0_black_on_white.pal"); - plspal1("cmap1_blue_red.pal"); + plspal1("cmap1_blue_red.pal", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); @@ -276,7 +276,7 @@ /* Load colour palettes*/ plspal0(""); - plspal1(""); + plspal1("", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); @@ -305,7 +305,7 @@ if(exclude) { /* Load colour palettes*/ plspal0("cmap0_black_on_white.pal"); - plspal1("cmap1_gray.pal"); + plspal1("cmap1_gray.pal", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); @@ -330,7 +330,7 @@ /* Load colour palettes*/ plspal0("cmap0_black_on_white.pal"); - plspal1("cmap1_gray.pal"); + plspal1("cmap1_gray.pal", 1); /* Reduce colors in cmap 0 so that cmap 1 is useful on a 16-color display */ plscmap0n(3); Modified: trunk/include/plplot.h =================================================================== --- trunk/include/plplot.h 2009-08-19 21:37:38 UTC (rev 10301) +++ trunk/include/plplot.h 2009-08-20 00:09:10 UTC (rev 10302) @@ -1486,7 +1486,7 @@ /* Set the colors for color table 1 from a cmap1 file */ PLDLLIMPEXP void -c_plspal1(const char *filename); +c_plspal1(const char *filename, PLBOOL interpolate); /* Set the pause (on end-of-page) status */ Modified: trunk/src/plargs.c =================================================================== --- trunk/src/plargs.c 2009-08-19 21:37:38 UTC (rev 10301) +++ trunk/src/plargs.c 2009-08-20 00:09:10 UTC (rev 10302) @@ -2270,5 +2270,5 @@ static int opt_cmap1(const char *opt, const char *optarg, void *client_data) { - plspal1(optarg); + plspal1(optarg, TRUE); } Modified: trunk/src/plcore.c =================================================================== --- trunk/src/plcore.c 2009-08-19 21:37:38 UTC (rev 10301) +++ trunk/src/plcore.c 2009-08-20 00:09:10 UTC (rev 10302) @@ -2140,7 +2140,7 @@ plspal0(""); if (plsc->cmap1 == NULL) - plspal1(""); + plspal1("", TRUE); } plsc->psdoc = NULL; Modified: trunk/src/plctrl.c =================================================================== --- trunk/src/plctrl.c 2009-08-19 21:37:38 UTC (rev 10301) +++ trunk/src/plctrl.c 2009-08-20 00:09:10 UTC (rev 10302) @@ -1258,7 +1258,7 @@ \*--------------------------------------------------------------------------*/ void -c_plspal1(const char *filename) +c_plspal1(const char *filename, PLBOOL interpolate) { int i; int number_colors; @@ -1268,6 +1268,7 @@ int r_i, g_i, b_i, pos_i, rev_i; double r_d, g_d, b_d, a_d, pos_d; PLFLT *r, *g, *b, *a, *pos; + PLINT *ri, *gi, *bi; PLBOOL *rev; FILE *fp; char msgbuf[1024]; @@ -1316,6 +1317,9 @@ r = (PLFLT *)malloc(number_colors * sizeof(PLFLT)); g = (PLFLT *)malloc(number_colors * sizeof(PLFLT)); b = (PLFLT *)malloc(number_colors * sizeof(PLFLT)); + ri = (PLINT *)malloc(number_colors * sizeof(PLINT)); + gi = (PLINT *)malloc(number_colors * sizeof(PLINT)); + bi = (PLINT *)malloc(number_colors * sizeof(PLINT)); a = (PLFLT *)malloc(number_colors * sizeof(PLFLT)); pos = (PLFLT *)malloc(number_colors * sizeof(PLFLT)); rev = (PLBOOL *)malloc(number_colors * sizeof(PLBOOL)); @@ -1400,12 +1404,25 @@ pos[0] = 0.0; pos[number_colors-1] = 1.0; - c_plscmap1la(rgb, number_colors, pos, r, g, b, a, rev); + if (interpolate) { + c_plscmap1la(rgb, number_colors, pos, r, g, b, a, rev); + } + else { + for (i = 0; i < number_colors; i++) { + ri[i] = r[i] * 255.0; + gi[i] = g[i] * 255.0; + bi[i] = b[i] * 255.0; + } + c_plscmap1a(ri, gi, bi, a, number_colors); + } } free(r); free(g); free(b); + free(ri); + free(gi); + free(bi); free(a); free(pos); free(rev); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |