#! /usr/bin/gawk -f function makemap(tag,v1,v2,v3,v4,vm,vq, cmap,i,j,k,hih,med,lev) { # Make a colormap with given tag and entry levels. Arguments # "v1..v4" say what actual intensity is displayed for pixel values # 51,102,153,204. The argument "vm" should be the intensity # displayed by pixel value 128 (50%), and "qtr" the intensity of # pixel value 192 (75%). hih[0] = 0; hih[1] = 255; med[0] = 0; med[1] = vm; lev[0] = 0; lev[1] = v1; lev[2] = v2; lev[3] = v3; lev[4] = v4; lev[5] = 255; cmap = ("standard-6x6x6-colormap-" tag ".ppm") printf ("P3\n18 12\n255\n") > cmap; for (i = 0; i < 6; i++ ) { for (j = 0; j < 6; j++ ) { for (k = 0; k < 6; k++ ) printf ( "%d %d %d\n", lev[i], lev[j], lev[k]) >> cmap; } } cmap = ("standard-6-graymap-" tag ".ppm") printf ("P3\n3 2\n255\n") > cmap; for (i = 0; i < 6; i++ ) printf ( "%d %d %d\n", lev[i], lev[i], lev[i]) >> cmap; cmap = ("standard-16-colormap-" tag ".ppm") printf ("P3\n4 4\n255\n") > cmap; for (i = 0; i < 2; i++ ) { for (j = 0; j < 2; j++ ) { for (k = 0; k < 2; k++ ) { printf ( "%d %d %d\n", hih[i], hih[j], hih[k]) >> cmap; if (i+j+k > 0) printf ( "%d %d %d\n", med[i], med[j], med[k]) >> cmap; } } } printf ( "%d %d %d\n", vq, vq, vq) >> cmap; } BEGIN { # makemap("gm10", 051,102,153,204, 128, 192); # makemap("gm18", 014,049,102,171, 074, 153); # makemap("gm19", 012,045,097,167, 069, 149); makemap("gm20", 010,041,092,163, 064, 143); }