summaryrefslogtreecommitdiff
path: root/src/cmap.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-04-29 14:48:00 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-04-29 14:48:00 +0200
commit70d41b06a96e421ce97558cdb2dae6d036479102 (patch)
tree25c059521bef196c77a2dd2dad98d4a2819b75ec /src/cmap.cxx
parent9fe77c6ff5f017bcd9169891d64700759df6b4ee (diff)
Reformat src/cmap.cxx and regen src/fl_cmap.h
- remove obsolete code / comments (see Git for history) - add copyright to generated file src/fl_cmap.h - generate copyright year in src/fl_cmap.h automatically - add color indices as comments to color values - remove $Id header - replace $Id trailer with a more useful comment
Diffstat (limited to 'src/cmap.cxx')
-rw-r--r--src/cmap.cxx198
1 files changed, 101 insertions, 97 deletions
diff --git a/src/cmap.cxx b/src/cmap.cxx
index 6fc08e023..0825a50f5 100644
--- a/src/cmap.cxx
+++ b/src/cmap.cxx
@@ -1,28 +1,30 @@
//
-// "$Id$"
-//
// Colormap generation program for the Fast Light Tool Kit (FLTK).
//
-// Copyright 1998-2016 by Bill Spitzak and others.
+// Copyright 1998-2020 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
-// http://www.fltk.org/COPYING.php
+// https://www.fltk.org/COPYING.php
//
// Please report all bugs and problems on the following page:
//
-// http://www.fltk.org/str.php
+// https://www.fltk.org/str.php
//
+//
// This program produces the contents of "fl_cmap.h" as stdout
//
-// Compile, link, and run (example):
+// Compile, link, run and delete the program 'cmap' (for instance on a
+// Linux system) to generate fl_cmap.h:
//
-// gcc -o cmap cmap.cxx -lm && ./cmap > fl_cmap.h
+// $ gcc -o cmap cmap.cxx -lm && ./cmap > fl_cmap.h && rm -f ./cmap
#include <stdio.h>
+#include <math.h>
+#include <time.h>
// This table is initialized with color values I got by reading the
// colormap on an IRIX 4.3 machine:
@@ -32,13 +34,16 @@
// fltk programs more friendly on color-adjusted screens. If you want
// pure colors you should get them out of the colormap.
-//#define III 244 // maximum intensity of the basic colors
+// #define III 244 // maximum intensity of the basic colors
// that results in errors and unshared colormap entries, so full intensity:
+
#define III 255 // maximum intensity of the basic colors
static short cmap[256][3] = {
-// 3-bit colormap:
+
+ // 3-bit colormap:
+
{ 0, 0, 0}, // black
{III, 0, 0}, // red
{ 0,III, 0}, // green
@@ -47,7 +52,9 @@ static short cmap[256][3] = {
{III, 0,III}, // magenta
{ 0,III,III}, // cyan
{III,III,III}, // white
-// pastel versions of those colors, from SGI's standard color map:
+
+ // pastel versions of those colors, from SGI's standard color map:
+
{ 85, 85, 85}, // 1/3 gray
{198,113,113}, // salmon? pale red?
{113,198,113}, // pale green
@@ -55,37 +62,22 @@ static short cmap[256][3] = {
{113,113,198}, // pale blue
{142, 56,142}, // purple, orchid, pale magenta
{ 56,142,142}, // cadet blue, aquamarine, pale cyan
-// The next location is used for FL_SELECTION_COLOR. It formerly was 2/3 gray
-// but this is changed to be the Windows blue color. This allows the default
-// behavior on both X and Windows to match:
- { 0, 0,128},
-//{170,170,170}, // old 2/3 gray color
-// These next 16 are the FL_FREE_COLOR area. In some versions of fltk
-// these were filled with random colors that a Irix 5.3 machine placed
-// in these locations. Other versions of fltk filled this with the 1/3
-// gray above to discourage their use. This newest version uses colors
-// that NewTek has assigned for their GUI:
-#if 0
- // The Irix 5.3 colors:
- { 16, 16, 16},
- {128, 40,128},
- {198, 30, 30},
- { 66, 30, 30},
- {176,140,140},
- { 0, 20, 20},
- { 20, 10, 10},
- { 40, 20, 20},
- { 60, 30, 30},
- { 0, 80, 80},
- { 0, 40, 40},
- { 20, 20, 0},
- { 40, 40, 0},
- { 80, 80, 10},
- {150,150, 20},
- {160, 10, 10},
-#else
- // The NewTek colors: (from George Yohng)
- {168,168,152},
+
+ // The next location (15) is used for FL_SELECTION_COLOR. It formerly was
+ // 2/3 gray but this is changed to be the Windows blue color. This allows
+ // the default behavior on both X and Windows to match:
+ // {170,170,170}, // old 2/3 gray color
+
+ { 0, 0,128}, // 15 = FL_SELECTION_COLOR
+
+ // These next 16 (index 16 - 31) are the FL_FREE_COLOR area. In some
+ // versions of fltk these were filled with random colors that a Irix 5.3
+ // machine placed in these locations.
+
+ // This version uses colors that NewTek has assigned for their GUI
+ // (from George Yohng):
+
+ {168,168,152}, // 16 = FL_FREE_COLOR
{232,232,216},
{104,104, 88},
{152,168,168},
@@ -100,9 +92,9 @@ static short cmap[256][3] = {
{144,144,144},
{192,192,192},
{ 80, 80, 80},
- {160,160,160},
-#endif
-// The rest of the colormap is a gray ramp and table, filled in below:
+ {160,160,160}, // 31
+
+ // The rest of the colormap is a gray ramp and table, filled in below:
};
// This is Fl::background from Fl_get_system_colors.cxx, with modifications:
@@ -111,83 +103,95 @@ static short cmap[256][3] = {
#define FL_NUM_GRAY 24
#define FL_GRAY 49 // old value is 47
typedef unsigned char uchar;
-#include <math.h>
void background(uchar r, uchar g, uchar b) {
// replace the gray ramp so that color 47 (by default 2/3) is this color
- if (!r) r = 1; else if (r==255) r = 254;
- double powr = log(r/255.0)/log((FL_GRAY-FL_GRAY_RAMP)/(FL_NUM_GRAY-1.0));
- if (!g) g = 1; else if (g==255) g = 254;
- double powg = log(g/255.0)/log((FL_GRAY-FL_GRAY_RAMP)/(FL_NUM_GRAY-1.0));
- if (!b) b = 1; else if (b==255) b = 254;
- double powb = log(b/255.0)/log((FL_GRAY-FL_GRAY_RAMP)/(FL_NUM_GRAY-1.0));
+ if (!r)
+ r = 1;
+ else if (r == 255)
+ r = 254;
+ double powr = log(r / 255.0) / log((FL_GRAY - FL_GRAY_RAMP) / (FL_NUM_GRAY - 1.0));
+ if (!g)
+ g = 1;
+ else if (g == 255)
+ g = 254;
+ double powg = log(g / 255.0) / log((FL_GRAY - FL_GRAY_RAMP) / (FL_NUM_GRAY - 1.0));
+ if (!b)
+ b = 1;
+ else if (b == 255)
+ b = 254;
+ double powb = log(b / 255.0) / log((FL_GRAY - FL_GRAY_RAMP) / (FL_NUM_GRAY - 1.0));
for (int i = 0; i < FL_NUM_GRAY; i++) {
- double gray = i/(FL_NUM_GRAY-1.0);
- cmap[i+FL_GRAY_RAMP][0] = uchar(pow(gray,powr)*255+.5);
- cmap[i+FL_GRAY_RAMP][1] = uchar(pow(gray,powg)*255+.5);
- cmap[i+FL_GRAY_RAMP][2] = uchar(pow(gray,powb)*255+.5);
+ double gray = i / (FL_NUM_GRAY - 1.0);
+ cmap[i + FL_GRAY_RAMP][0] = uchar(pow(gray, powr) * 255 + .5);
+ cmap[i + FL_GRAY_RAMP][1] = uchar(pow(gray, powg) * 255 + .5);
+ cmap[i + FL_GRAY_RAMP][2] = uchar(pow(gray, powb) * 255 + .5);
}
}
int main() {
- int i,r,g,b;
-#if 0
- /* Read colormap colors into internal table */
- long cmwin;
- noport();
- cmwin = winopen("CM");
- for (i=0; i<256; i++)
- getmcolor(i,&cmap[i][0],&cmap[i][1],&cmap[i][2]);
- winclose(cmwin);
-#endif
-
- // overwrite the X allocation area with one color so people are
- // discouraged from using it:
-
- // for (i=16; i<32; i++) {cmap[i][0]=cmap[i][1]=cmap[i][2] = 85;}
+ int i, r, g, b, year;
+ time_t t = time(0);
+ struct tm *lt = localtime(&t);
+ year = lt->tm_year + 1900; // copyright year
// fill in the gray ramp:
- background(0xc0, 0xc0, 0xc0); // microsoft colors
// background(170, 170, 170); // old fltk colors
+ background(0xc0, 0xc0, 0xc0); // microsoft colors
+
// copy the 1/3 and 2/3 gray to the closest locations in gray ramp:
cmap[39][0] = cmap[39][1] = cmap[39][2] = 85;
cmap[47][0] = cmap[47][1] = cmap[47][2] = 170;
// fill in the color cube
i = 56;
- for (b=0; b<5; b++)
- for (r=0; r<5; r++)
- for (g=0; g<8; g++) {
- cmap[i][0] = r*255/4;
- cmap[i][1] = g*255/7;
- cmap[i][2] = b*255/4;
+ for (b = 0; b < 5; b++) {
+ for (r = 0; r < 5; r++) {
+ for (g = 0; g < 8; g++) {
+ cmap[i][0] = r * 255 / 4;
+ cmap[i][1] = g * 255 / 7;
+ cmap[i][2] = b * 255 / 4;
i++;
}
+ }
+ }
- // write comment into 'cmap.h' so the reader knows what it is good for
-
- printf("//\n");
- printf("// \"$%s$\"\n","Id"); // avoid expansion of Id
- printf("//\n");
- printf("// DO NOT EDIT THIS FILE !\n");
- printf("//\n");
- printf("// This file must be created with \"src/cmap.cxx\".\n");
- printf("//\n");
-
- // write color map values
-
- for (i=0; i<256; i++) {
- printf("\t0x%02x%02x%02x00",cmap[i][0],cmap[i][1],cmap[i][2]);
- if (i < 255) printf(",\n");
+ // write comment into 'cmap.h' so the reader knows what it is good for
+
+ printf("//\n");
+ printf("// DO NOT EDIT THIS FILE !\n");
+ printf("//\n");
+ printf("// This file must be created with \"src/cmap.cxx\".\n");
+ printf("//\n");
+ printf("// Copyright 1998-%d by Bill Spitzak and others.\n", year);
+ printf("//\n");
+ printf("// This library is free software. Distribution and use rights are outlined in\n");
+ printf("// the file \"COPYING\" which should have been included with this file. If this\n");
+ printf("// file is missing or damaged, see the license at:\n");
+ printf("//\n");
+ printf("// https://www.fltk.org/COPYING.php\n");
+ printf("//\n");
+ printf("// Please report all bugs and problems on the following page:\n");
+ printf("//\n");
+ printf("// https://www.fltk.org/str.php\n");
+ printf("//\n");
+
+ // write color map values
+
+ for (i = 0; i < 256; i++) {
+ printf("\t0x%02x%02x%02x00", cmap[i][0], cmap[i][1], cmap[i][2]);
+ if (i < 255)
+ printf(", // %3d\n", i);
+ else
+ printf(" // %3d\n", i);
}
- printf("\n");
- // write final comment
+ // write final comment
- printf("//\n");
- printf("// End of \"$%s$\".\n","Id"); // avoid expansion of Id
- printf("//\n");
+ printf("//\n");
+ printf("// End of fl_cmap.h - generated by cmap.cxx\n");
+ printf("//\n");
return 0;
}