summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwlemb <wlemb>2001-10-05 21:45:23 +0000
committerwlemb <wlemb>2001-10-05 21:45:23 +0000
commite8257944be52a8e1e07f5c80cecc487e88a35b50 (patch)
tree740ac630de162d3af109cb54fcf0c9bd057e5904
parentf0d222efb19a5fa01a8e8d5b3661afcea2e7c54d (diff)
downloadgroff-e8257944be52a8e1e07f5c80cecc487e88a35b50.tar.gz
New files.
-rw-r--r--src/include/color.h75
-rw-r--r--src/include/geometry.h27
-rw-r--r--src/libs/libgroff/color.cc356
-rw-r--r--src/libs/libgroff/geometry.cc278
-rwxr-xr-xtmac/color-html.tmac482
-rwxr-xr-xtmac/color.tmac549
6 files changed, 1767 insertions, 0 deletions
diff --git a/src/include/color.h b/src/include/color.h
new file mode 100644
index 00000000..bd54be4d
--- /dev/null
+++ b/src/include/color.h
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+/* Copyright (C) 2001 Free Software Foundation, Inc.
+ Written by Gaius Mulley <gaius@glam.ac.uk>
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING. If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+enum color_scheme {NONE, CMY, CMYK, RGB, GRAY};
+
+// colors are internally held as CMYK values.
+
+class color {
+private:
+ unsigned int cyan;
+ unsigned int magenta;
+ unsigned int yellow;
+ unsigned int black;
+ color_scheme scheme; // how was the color originally defined?
+ // and now the data structures necessary for the state machine
+ // inside the read routines
+ unsigned int color_space_num; // how many numbers have been read?
+ enum {REAL, HEX, UNDEFINED} encoding;
+ unsigned int hex_length;
+ unsigned int c[4];
+ double d[4];
+
+ int read_encoding(const char *s, unsigned int n);
+
+ public:
+ enum {MAX_COLOR_VAL = 0xffff};
+ color();
+ int is_equal(color *c);
+ int is_gray (void);
+
+ void set_rgb(unsigned int r, unsigned int g, unsigned int b);
+ void set_cmy(unsigned int c, unsigned int m, unsigned int y);
+ void set_cmyk(unsigned int c, unsigned int m,
+ unsigned int y, unsigned int k);
+ void set_gray(unsigned int l);
+
+ void set_rgb(double r, double g, double b);
+ void set_cmy(double c, double m, double y);
+ void set_cmyk(double c, double m, double y, double k);
+ void set_gray(double l);
+
+ int read_rgb(const char *s);
+ int read_cmy(const char *s);
+ int read_cmyk(const char *s);
+ int read_gray(const char *s);
+
+ void get_rgb(unsigned int *r, unsigned int *g, unsigned int *b);
+ void get_cmy(unsigned int *c, unsigned int *m, unsigned int *y);
+ void get_cmyk(unsigned int *c, unsigned int *m,
+ unsigned int *y, unsigned int *k);
+ void get_gray(unsigned int *l);
+
+ void get_rgb(double *r, double *g, double *b);
+ void get_cmy(double *c, double *m, double *y);
+ void get_cmyk(double *c, double *m, double *y, double *k);
+ void get_gray(double *l);
+};
diff --git a/src/include/geometry.h b/src/include/geometry.h
new file mode 100644
index 00000000..d425f157
--- /dev/null
+++ b/src/include/geometry.h
@@ -0,0 +1,27 @@
+// -*- C++ -*-
+/* Copyright (C) 2001 Free Software Foundation, Inc.
+ Written by Gaius Mulley <gaius@glam.ac.uk>
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING. If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+int adjust_arc_center(const int *, double *);
+void check_output_arc_limits(int x, int y,
+ int xv1, int yv1,
+ int xv2, int yv2,
+ double c0, double c1,
+ int *minx, int *maxx,
+ int *miny, int *maxy);
diff --git a/src/libs/libgroff/color.cc b/src/libs/libgroff/color.cc
new file mode 100644
index 00000000..46f80b55
--- /dev/null
+++ b/src/libs/libgroff/color.cc
@@ -0,0 +1,356 @@
+// -*- C++ -*-
+/* Copyright (C) 2001 Free Software Foundation, Inc.
+ Written by Gaius Mulley <gaius@glam.ac.uk>
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING. If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "color.h"
+#include "cset.h"
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <assert.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include "errarg.h"
+#include "error.h"
+
+static inline unsigned int min(unsigned int a, unsigned int b)
+{
+ if (a < b)
+ return a;
+ else
+ return b;
+}
+
+color::color()
+: cyan(0), magenta(0), yellow(0), black(0), scheme(NONE),
+ color_space_num(0), encoding(UNDEFINED), hex_length(0)
+{
+}
+
+int color::is_equal(color *c)
+{
+ return (c->cyan == cyan)
+ && (c->magenta == magenta)
+ && (c->yellow == yellow)
+ && (c->black == black);
+}
+
+int color::is_gray(void)
+{
+ return (scheme == GRAY)
+ || ((magenta == cyan) && (cyan == yellow));
+}
+
+void color::set_rgb(unsigned int r, unsigned int g, unsigned int b)
+{
+ scheme = RGB;
+ r = min(MAX_COLOR_VAL, r);
+ g = min(MAX_COLOR_VAL, g);
+ b = min(MAX_COLOR_VAL, b);
+ black = min(MAX_COLOR_VAL - r, min(MAX_COLOR_VAL - g, MAX_COLOR_VAL - b));
+ if (MAX_COLOR_VAL - black == 0) {
+ cyan = MAX_COLOR_VAL;
+ magenta = MAX_COLOR_VAL;
+ yellow = MAX_COLOR_VAL;
+ }
+ else {
+ cyan = (MAX_COLOR_VAL * (MAX_COLOR_VAL - r - black))
+ / (MAX_COLOR_VAL - black);
+ magenta = (MAX_COLOR_VAL * (MAX_COLOR_VAL - g - black))
+ / (MAX_COLOR_VAL - black);
+ yellow = (MAX_COLOR_VAL * (MAX_COLOR_VAL - b - black))
+ / (MAX_COLOR_VAL - black);
+ }
+}
+
+void color::set_cmy(unsigned int c, unsigned int m, unsigned int y)
+{
+ scheme = CMY;
+ c = min(MAX_COLOR_VAL, c);
+ m = min(MAX_COLOR_VAL, m);
+ y = min(MAX_COLOR_VAL, y);
+ black = min(c, min(m, y));
+ if (MAX_COLOR_VAL - black == 0) {
+ cyan = MAX_COLOR_VAL;
+ magenta = MAX_COLOR_VAL;
+ yellow = MAX_COLOR_VAL;
+ }
+ else {
+ cyan = (MAX_COLOR_VAL * (c - black)) / (MAX_COLOR_VAL - black);
+ magenta = (MAX_COLOR_VAL * (m - black)) / (MAX_COLOR_VAL - black);
+ yellow = (MAX_COLOR_VAL * (y - black)) / (MAX_COLOR_VAL - black);
+ }
+}
+
+void color::set_cmyk(unsigned int c, unsigned int m,
+ unsigned int y, unsigned int k)
+{
+ scheme = CMYK;
+ cyan = c;
+ magenta = m;
+ yellow = y;
+ black = k;
+}
+
+void color::set_gray(unsigned int b)
+{
+ scheme = GRAY;
+ cyan = 0;
+ magenta = 0;
+ yellow = 0;
+ black = min(MAX_COLOR_VAL, b);
+}
+
+void color::set_rgb(double r, double g, double b)
+{
+ set_rgb((unsigned int)(r * MAX_COLOR_VAL),
+ (unsigned int)(g * MAX_COLOR_VAL),
+ (unsigned int)(b * MAX_COLOR_VAL));
+}
+
+void color::set_cmy(double c, double m, double y)
+{
+ set_cmy((unsigned int)(c * MAX_COLOR_VAL),
+ (unsigned int)(m * MAX_COLOR_VAL),
+ (unsigned int)(y * MAX_COLOR_VAL));
+}
+
+void color::set_cmyk(double c, double m, double y, double k)
+{
+ set_cmyk((unsigned int)(c * MAX_COLOR_VAL),
+ (unsigned int)(m * MAX_COLOR_VAL),
+ (unsigned int)(y * MAX_COLOR_VAL),
+ (unsigned int)(k * MAX_COLOR_VAL));
+}
+
+void color::set_gray(double l)
+{
+ set_gray((unsigned int)(l * MAX_COLOR_VAL));
+}
+
+/*
+ * atoh - computes the value of the hex number S in N. Returns 1 if
+ * successful.
+ */
+
+static int atoh(unsigned int *n, const char *s, unsigned int length)
+{
+ unsigned int i = 0;
+ unsigned int val = 0;
+ while ((i < length) && csxdigit(s[i])) {
+ if (!s[i])
+ return 0;
+ if (csdigit(s[i]))
+ val = val*0x10 + (s[i]-'0');
+ else if (csupper(s[i]))
+ val = val*0x10 + (s[i]-'A') + 10;
+ else
+ val = val*0x10 + (s[i]-'a') + 10;
+ i++;
+ }
+ *n = val;
+ return 1;
+}
+
+/*
+ * read_encoding - read the next component of the color encoding from S.
+ * Returns 1 when finished.
+ */
+
+int color::read_encoding(const char *s, unsigned int n)
+{
+ if ((scheme == NONE) && (color_space_num == 0)) {
+ if (*s == '#') {
+ s++;
+ encoding = HEX;
+ if (*s == '#') {
+ hex_length = 4;
+ s++;
+ }
+ else
+ hex_length = 2;
+ }
+ else
+ encoding = REAL;
+ }
+ if (encoding == REAL) {
+ d[color_space_num] = atof(s);
+ color_space_num++;
+ return (color_space_num == n);
+ }
+ else {
+ for (unsigned int i = 0; i < n; i++) {
+ if (!atoh(&c[i], s, hex_length))
+ return 0;
+ if (hex_length == 2)
+ c[i] *= 0x101; // scale up -- 0xff should become 0xffff
+ s += hex_length;
+ }
+ return 1;
+ }
+}
+
+/*
+ * read_rgb - read an rgb color description from S. It returns 1
+ * when the complete color has been read.
+ */
+
+int color::read_rgb(const char *s)
+{
+ assert(scheme == NONE);
+ int finished = read_encoding(s, 3);
+ if (finished) {
+ if (encoding == HEX)
+ set_rgb(c[0], c[1], c[2]);
+ else
+ set_rgb(d[0], d[1], d[2]);
+ }
+ return finished;
+}
+
+/*
+ * read_cmy - read a cmy color description from S. It returns 1
+ * when the complete color has been read.
+ */
+
+int color::read_cmy(const char *s)
+{
+ assert(scheme == NONE);
+ int finished = read_encoding(s, 3);
+ if (finished) {
+ if (encoding == HEX)
+ set_cmy(c[0], c[1], c[2]);
+ else
+ set_cmy(d[0], d[1], d[2]);
+ }
+ return finished;
+}
+
+/*
+ * read_cmyk - read a cmyk color description from S. It returns 1
+ * when the complete color has been read.
+ */
+
+int color::read_cmyk(const char *s)
+{
+ assert(scheme == NONE);
+ int finished = read_encoding(s, 4);
+ if (finished) {
+ if (encoding == HEX)
+ set_cmyk(c[0], c[1], c[2], c[3]);
+ else
+ set_cmyk(d[0], d[1], d[2], d[3]);
+ }
+ return finished;
+}
+
+/*
+ * read_gray - read a gray scale from S. It returns 1.
+ */
+
+int color::read_gray(const char *s)
+{
+ assert(scheme == NONE);
+ int finished = read_encoding(s, 1);
+ if (finished) {
+ if (encoding == HEX)
+ set_gray(c[0]);
+ else
+ set_gray(d[0]);
+ }
+ return finished;
+}
+
+void color::get_rgb(unsigned int *r, unsigned int *g, unsigned int *b)
+{
+ assert(scheme != NONE);
+ *r = MAX_COLOR_VAL
+ - min(MAX_COLOR_VAL,
+ cyan * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+ *g = MAX_COLOR_VAL
+ - min(MAX_COLOR_VAL,
+ magenta * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+ *b = MAX_COLOR_VAL
+ - min(MAX_COLOR_VAL,
+ yellow * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+}
+
+void color::get_cmy(unsigned int *c, unsigned int *m, unsigned int *y)
+{
+ assert(scheme != NONE);
+ *c = min(MAX_COLOR_VAL,
+ cyan * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+ *m = min(MAX_COLOR_VAL,
+ magenta * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+ *y = min(MAX_COLOR_VAL,
+ yellow * (MAX_COLOR_VAL - black) / MAX_COLOR_VAL + black);
+}
+
+void color::get_cmyk(unsigned int *c, unsigned int *m,
+ unsigned int *y, unsigned int *k)
+{
+ assert(scheme != NONE);
+ *c = cyan;
+ *m = magenta;
+ *y = yellow;
+ *k = black;
+}
+
+void color::get_gray(unsigned int *l)
+{
+ assert(scheme != NONE);
+ *l = black;
+}
+
+void color::get_rgb(double *r, double *g, double *b)
+{
+ assert(scheme != NONE);
+ unsigned int ir, ig, ib;
+ get_rgb(&ir, &ig, &ib);
+ *r = (double)ir / MAX_COLOR_VAL;
+ *g = (double)ig / MAX_COLOR_VAL;
+ *b = (double)ib / MAX_COLOR_VAL;
+}
+
+void color::get_cmy(double *c, double *m, double *y)
+{
+ assert(scheme != NONE);
+ unsigned int ic, im, iy;
+ get_cmy(&ic, &im, &iy);
+ *c = (double)ic / MAX_COLOR_VAL;
+ *m = (double)im / MAX_COLOR_VAL;
+ *y = (double)iy / MAX_COLOR_VAL;
+}
+
+void color::get_cmyk(double *c, double *m, double *y, double *k)
+{
+ assert(scheme != NONE);
+ *c = (double)cyan / MAX_COLOR_VAL;
+ *m = (double)magenta / MAX_COLOR_VAL;
+ *y = (double)yellow / MAX_COLOR_VAL;
+ *k = (double)black / MAX_COLOR_VAL;
+}
+
+void color::get_gray(double *l)
+{
+ assert(scheme != NONE);
+ *l = (double)black / MAX_COLOR_VAL;
+}
diff --git a/src/libs/libgroff/geometry.cc b/src/libs/libgroff/geometry.cc
new file mode 100644
index 00000000..7aa0d2b8
--- /dev/null
+++ b/src/libs/libgroff/geometry.cc
@@ -0,0 +1,278 @@
+// -*- C++ -*-
+/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001
+ Free Software Foundation, Inc.
+ Written by Gaius Mulley <gaius@glam.ac.uk>
+ using adjust_arc_center() from printer.cc, written by James Clark.
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with groff; see the file COPYING. If not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+#include <stdio.h>
+#include <math.h>
+
+#undef MAX
+#define MAX(a, b) (((a) > (b)) ? (a) : (b))
+
+#undef MIN
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+
+
+// This utility function adjusts the specified center of the
+// arc so that it is equidistant between the specified start
+// and end points. (p[0], p[1]) is a vector from the current
+// point to the center; (p[2], p[3]) is a vector from the
+// center to the end point. If the center can be adjusted,
+// a vector from the current point to the adjusted center is
+// stored in c[0], c[1] and 1 is returned. Otherwise 0 is
+// returned.
+
+#if 1
+int adjust_arc_center(const int *p, double *c)
+{
+ // We move the center along a line parallel to the line between
+ // the specified start point and end point so that the center
+ // is equidistant between the start and end point.
+ // It can be proved (using Lagrange multipliers) that this will
+ // give the point nearest to the specified center that is equidistant
+ // between the start and end point.
+
+ double x = p[0] + p[2]; // (x, y) is the end point
+ double y = p[1] + p[3];
+ double n = x*x + y*y;
+ if (n != 0) {
+ c[0]= double(p[0]);
+ c[1] = double(p[1]);
+ double k = .5 - (c[0]*x + c[1]*y)/n;
+ c[0] += k*x;
+ c[1] += k*y;
+ return 1;
+ }
+ else
+ return 0;
+}
+#else
+int printer::adjust_arc_center(const int *p, double *c)
+{
+ int x = p[0] + p[2]; // (x, y) is the end point
+ int y = p[1] + p[3];
+ // Start at the current point; go in the direction of the specified
+ // center point until we reach a point that is equidistant between
+ // the specified starting point and the specified end point. Place
+ // the center of the arc there.
+ double n = p[0]*double(x) + p[1]*double(y);
+ if (n > 0) {
+ double k = (double(x)*x + double(y)*y)/(2.0*n);
+ // (cx, cy) is our chosen center
+ c[0] = k*p[0];
+ c[1] = k*p[1];
+ return 1;
+ }
+ else {
+ // We would never reach such a point. So instead start at the
+ // specified end point of the arc. Go towards the specified
+ // center point until we reach a point that is equidistant between
+ // the specified start point and specified end point. Place
+ // the center of the arc there.
+ n = p[2]*double(x) + p[3]*double(y);
+ if (n > 0) {
+ double k = 1 - (double(x)*x + double(y)*y)/(2.0*n);
+ // (c[0], c[1]) is our chosen center
+ c[0] = p[0] + k*p[2];
+ c[1] = p[1] + k*p[3];
+ return 1;
+ }
+ else
+ return 0;
+ }
+}
+#endif
+
+
+/*
+ * check_output_arc_limits - works out the smallest box that will encompass
+ * an arc defined by an origin (x, y) and two
+ * vectors (p0, p1) and (p2, p3).
+ * (x1, y1) -> start of arc
+ * (x1, y1) + (xv1, yv1) -> center of circle
+ * (x1, y1) + (xv1, yv1) + (xv2, yv2) -> end of arc
+ *
+ * Works out in which quadrant the arc starts and
+ * stops, and from this it determines the x, y
+ * max/min limits. The arc is drawn clockwise.
+ *
+ * [I'm sure there is a better way to do this, but
+ * I don't know how. Please can someone let me
+ * know or "improve" this function.]
+ */
+
+void check_output_arc_limits(int x1, int y1,
+ int xv1, int yv1,
+ int xv2, int yv2,
+ double c0, double c1,
+ int *minx, int *maxx,
+ int *miny, int *maxy)
+{
+ int radius = (int)sqrt(c0*c0 + c1*c1);
+ int x2 = x1 + xv1 + xv2; // end of arc is (x2, y2)
+ int y2 = y1 + yv1 + yv2;
+
+ // firstly lets use the `circle' limitation
+ *minx = x1 + xv1 - radius;
+ *maxx = x1 + xv1 + radius;
+ *miny = y1 + yv1 - radius;
+ *maxy = y1 + yv1 + radius;
+
+ // now see which min/max can be reduced and increased for the limits of
+ // the arc
+ //
+ // Q2 | Q1
+ // -----+-----
+ // Q3 | Q4
+ //
+ if (xv1 >= 0 && yv1 >= 0) {
+ // first vector in Q3
+ if (xv2 >= 0 && yv2 >= 0 ) {
+ // second in Q1
+ *maxx = x2;
+ *miny = y1;
+ }
+ else if (xv2 < 0 && yv2 >= 0) {
+ // second in Q2
+ *maxx = x2;
+ *miny = y1;
+ }
+ else if (xv2 >= 0 && yv2 < 0) {
+ // second in Q4
+ *miny = MIN(y1, y2);
+ }
+ else if (xv2 < 0 && yv2 < 0) {
+ // second in Q3
+ if (x1 >= x2) {
+ *minx = x2;
+ *maxx = x1;
+ *miny = MIN(y1, y2);
+ *maxy = MAX(y1, y2);
+ }
+ else {
+ // xv2, yv2 could all be zero?
+ }
+ }
+ }
+ else if (xv1 >= 0 && yv1 < 0) {
+ // first vector in Q2
+ if (xv2 >= 0 && yv2 >= 0) {
+ // second in Q1
+ *maxx = MAX(x1, x2);
+ *minx = MIN(x1, x2);
+ *miny = y1;
+ }
+ else if (xv2 < 0 && yv2 >= 0) {
+ // second in Q2
+ if (x1 < x2) {
+ *maxx = x2;
+ *minx = x1;
+ *miny = MIN(y1, y2);
+ *maxy = MAX(y1, y2);
+ }
+ else {
+ // otherwise almost full circle anyway
+ }
+ }
+ else if (xv2 >= 0 && yv2 < 0) {
+ // second in Q4
+ *miny = y2;
+ *minx = x1;
+ }
+ else if (xv2 < 0 && yv2 < 0) {
+ // second in Q3
+ *minx = MIN(x1, x2);
+ }
+ }
+ else if (xv1 < 0 && yv1 < 0) {
+ // first vector in Q1
+ if (xv2 >= 0 && yv2 >= 0) {
+ // second in Q1
+ if (x1 < x2) {
+ *minx = x1;
+ *maxx = x2;
+ *miny = MIN(y1, y2);
+ *maxy = MAX(y1, y2);
+ }
+ else {
+ // nearly full circle
+ }
+ }
+ else if (xv2 < 0 && yv2 >= 0) {
+ // second in Q2
+ *maxy = MAX(y1, y2);
+ }
+ else if (xv2 >= 0 && yv2 < 0) {
+ // second in Q4
+ *miny = MIN(y1, y2);
+ *maxy = MAX(y1, y2);
+ *minx = MIN(x1, x2);
+ }
+ else if (xv2 < 0 && yv2 < 0) {
+ // second in Q3
+ *minx = x2;
+ *maxy = y1;
+ }
+ }
+ else if (xv1 < 0 && yv1 >= 0) {
+ // first vector in Q4
+ if (xv2 >= 0 && yv2 >= 0) {
+ // second in Q1
+ *maxx = MAX(x1, x2);
+ }
+ else if (xv2 < 0 && yv2 >= 0) {
+ // second in Q2
+ *maxy = MAX(y1, y2);
+ *maxx = MAX(x1, x2);
+ }
+ else if (xv2 >= 0 && yv2 < 0) {
+ // second in Q4
+ if (x1 >= x2) {
+ *miny = MIN(y1, y2);
+ *maxy = MAX(y1, y2);
+ *minx = MIN(x1, x2);
+ *maxx = MAX(x2, x2);
+ }
+ else {
+ // nearly full circle
+ }
+ }
+ else if (xv2 < 0 && yv2 < 0) {
+ // second in Q3
+ *maxy = MAX(y1, y2);
+ *minx = MIN(x1, x2);
+ *maxx = MAX(x1, x2);
+ }
+ }
+
+ // this should *never* happen but if it does it means a case above is wrong
+ // this code is only present for safety sake
+ if (*maxx < *minx) {
+ fprintf(stderr, "assert failed *minx > *maxx\n");
+ fflush(stderr);
+ *maxx = *minx;
+ }
+ if (*maxy < *miny) {
+ fprintf(stderr, "assert failed *miny > *maxy\n");
+ fflush(stderr);
+ *maxy = *miny;
+ }
+}
diff --git a/tmac/color-html.tmac b/tmac/color-html.tmac
new file mode 100755
index 00000000..fce7f208
--- /dev/null
+++ b/tmac/color-html.tmac
@@ -0,0 +1,482 @@
+.\"
+.\" these colors are compliant with html-3.0 and above
+.\"
+.defcolor aliceblue rgb #eff7ff
+.defcolor antiquewhite rgb #f9e8d2
+.defcolor antiquewhite1 rgb #feedd6
+.defcolor antiquewhite2 rgb #ebdbc5
+.defcolor antiquewhite3 rgb #c8b9a6
+.defcolor antiquewhite4 rgb #817468
+.defcolor aquamarine rgb #43b7ba
+.defcolor aquamarine1 rgb #87fdce
+.defcolor aquamarine2 rgb #7deabe
+.defcolor aquamarine3 rgb #69c69f
+.defcolor aquamarine4 rgb #417c64
+.defcolor azure rgb #efffff
+.defcolor azure2 rgb #deecec
+.defcolor azure3 rgb #bcc7c7
+.defcolor azure4 rgb #7a7d7d
+.defcolor beige rgb #f5f3d7
+.defcolor bisque rgb #fde0bc
+.defcolor bisque2 rgb #ead0ae
+.defcolor bisque3 rgb #c7af92
+.defcolor bisque4 rgb #816e59
+.defcolor black rgb #000000
+.defcolor blanchedalmond rgb #fee8c6
+.defcolor blue rgb #0000ff
+.defcolor blue1 rgb #1535ff
+.defcolor blue2 rgb #1531ec
+.defcolor blue3 rgb #1528c7
+.defcolor blue4 rgb #151b7e
+.defcolor blueviolet rgb #7931df
+.defcolor brown rgb #980517
+.defcolor brown1 rgb #f63526
+.defcolor brown2 rgb #e42d17
+.defcolor brown3 rgb #c22217
+.defcolor burlywood1 rgb #fcce8e
+.defcolor burlywood2 rgb #eabe83
+.defcolor burlywood3 rgb #c6a06d
+.defcolor burlywood4 rgb #806341
+.defcolor cadetblue rgb #578693
+.defcolor cadetblue1 rgb #99f3ff
+.defcolor cadetblue2 rgb #8ee2ec
+.defcolor cadetblue3 rgb #77bfc7
+.defcolor cadetblue4 rgb #4c787e
+.defcolor chartreuse rgb #8afb17
+.defcolor chartreuse2 rgb #7fe817
+.defcolor chartreuse3 rgb #6cc417
+.defcolor chartreuse4 rgb #437c17
+.defcolor chocolate rgb #c85a17
+.defcolor coral rgb #f76541
+.defcolor coral2 rgb #e55b3c
+.defcolor coral3 rgb #c34a2c
+.defcolor coral4 rgb #7e2817
+.defcolor cornflowerblue rgb #151b8d
+.defcolor cornsilk rgb #fff7d7
+.defcolor cornsilk2 rgb #ece5c6
+.defcolor cornsilk3 rgb #c8c2a7
+.defcolor cornsilk4 rgb #817a68
+.defcolor cyan rgb #00ffff
+.defcolor cyan1 rgb #57feff
+.defcolor cyan2 rgb #50ebec
+.defcolor cyan3 rgb #46c7c7
+.defcolor cyan4 rgb #307d7e
+.defcolor darkgoldenrod rgb #af7817
+.defcolor darkgoldenrod1 rgb #fbb117
+.defcolor darkgoldenrod2 rgb #e8a317
+.defcolor darkgoldenrod3 rgb #c58917
+.defcolor darkgoldenrod4 rgb #7f5217
+.defcolor darkgreen rgb #254117
+.defcolor darkkhaki rgb #b7ad59
+.defcolor darkolivegreen rgb #4a4117
+.defcolor darkolivegreen1 rgb #ccfb5d
+.defcolor darkolivegreen2 rgb #bce954
+.defcolor darkolivegreen3 rgb #a0c544
+.defcolor darkolivegreen4 rgb #667c26
+.defcolor darkorange rgb #f88017
+.defcolor darkorange1 rgb #f87217
+.defcolor darkorange2 rgb #e56717
+.defcolor darkorange3 rgb #c35617
+.defcolor darkorange4 rgb #7e3117
+.defcolor darkorchid rgb #7d1b7e
+.defcolor darkorchid1 rgb #b041ff
+.defcolor darkorchid2 rgb #a23bec
+.defcolor darkorchid3 rgb #8b31c7
+.defcolor darkorchid4 rgb #571b7e
+.defcolor darksalmon rgb #e18b6b
+.defcolor darkseagreen rgb #8bb381
+.defcolor darkseagreen1 rgb #c3fdb8
+.defcolor darkseagreen2 rgb #b5eaaa
+.defcolor darkseagreen3 rgb #99c68e
+.defcolor darkseagreen4 rgb #617c58
+.defcolor darkslateblue rgb #2b3856
+.defcolor darkslategray rgb #25383c
+.defcolor darkslategray1 rgb #9afeff
+.defcolor darkslategray2 rgb #8eebec
+.defcolor darkslategray3 rgb #78c7c7
+.defcolor darkslategray4 rgb #4c7d7e
+.defcolor darkturquoise rgb #3b9c9c
+.defcolor darkviolet rgb #842dce
+.defcolor deeppink rgb #f52887
+.defcolor deeppink2 rgb #e4287c
+.defcolor deeppink3 rgb #c12267
+.defcolor deeppink4 rgb #7d053f
+.defcolor deepskyblue rgb #3bb9ff
+.defcolor deepskyblue2 rgb #38acec
+.defcolor deepskyblue3 rgb #3090c7
+.defcolor deepskyblue4 rgb #25587e
+.defcolor dimgray rgb #463e41
+.defcolor dodgerblue rgb #1589ff
+.defcolor dodgerblue2 rgb #157dec
+.defcolor dodgerblue3 rgb #1569c7
+.defcolor dodgerblue4 rgb #153e7e
+.defcolor firebrick rgb #800517
+.defcolor firebrick1 rgb #f62817
+.defcolor firebrick2 rgb #e42217
+.defcolor firebrick3 rgb #c11b17
+.defcolor floralwhite rgb #fff9ee
+.defcolor forestgreen rgb #4e9258
+.defcolor gainsboro rgb #d8d9d7
+.defcolor ghostwhite rgb #f7f7ff
+.defcolor gold rgb #d4a017
+.defcolor gold1 rgb #fdd017
+.defcolor gold2 rgb #eac117
+.defcolor gold3 rgb #c7a317
+.defcolor gold4 rgb #806517
+.defcolor goldenrod rgb #edda74
+.defcolor goldenrod1 rgb #fbb917
+.defcolor goldenrod2 rgb #e9ab17
+.defcolor goldenrod3 rgb #c68e17
+.defcolor goldenrod4 rgb #805817
+.defcolor gray rgb #736f6e
+.defcolor gray0 rgb #150517
+.defcolor gray100 rgb #ffffff
+.defcolor gray18 rgb #250517
+.defcolor gray21 rgb #2b1b17
+.defcolor gray23 rgb #302217
+.defcolor gray24 rgb #302226
+.defcolor gray25 rgb #342826
+.defcolor gray26 rgb #34282c
+.defcolor gray27 rgb #382d2c
+.defcolor gray28 rgb #3b3131
+.defcolor gray29 rgb #3e3535
+.defcolor gray30 rgb #413839
+.defcolor gray31 rgb #41383c
+.defcolor gray32 rgb #463e3f
+.defcolor gray34 rgb #4a4344
+.defcolor gray35 rgb #4c4646
+.defcolor gray36 rgb #4e4848
+.defcolor gray37 rgb #504a4b
+.defcolor gray38 rgb #544e4f
+.defcolor gray39 rgb #565051
+.defcolor gray40 rgb #595454
+.defcolor gray41 rgb #5c5858
+.defcolor gray42 rgb #5f5a59
+.defcolor gray43 rgb #625d5d
+.defcolor gray44 rgb #646060
+.defcolor gray45 rgb #666362
+.defcolor gray46 rgb #696565
+.defcolor gray47 rgb #6d6968
+.defcolor gray48 rgb #6e6a6b
+.defcolor gray49 rgb #726e6d
+.defcolor gray50 rgb #747170
+.defcolor gray51 rgb #787473
+.defcolor gray52 rgb #7a7777
+.defcolor gray53 rgb #7c7979
+.defcolor gray54 rgb #807d7c
+.defcolor gray55 rgb #82807e
+.defcolor gray56 rgb #858381
+.defcolor gray57 rgb #878583
+.defcolor gray58 rgb #8b8987
+.defcolor gray59 rgb #8d8b89
+.defcolor gray60 rgb #8f8e8d
+.defcolor gray61 rgb #939190
+.defcolor gray62 rgb #959492
+.defcolor gray63 rgb #999795
+.defcolor gray64 rgb #9a9998
+.defcolor gray65 rgb #9e9c9b
+.defcolor gray66 rgb #a09f9d
+.defcolor gray67 rgb #a3a2a0
+.defcolor gray68 rgb #a5a4a3
+.defcolor gray69 rgb #a9a8a6
+.defcolor gray70 rgb #acaba9
+.defcolor gray71 rgb #aeadac
+.defcolor gray72 rgb #b1b1af
+.defcolor gray73 rgb #b3b3b1
+.defcolor gray74 rgb #b7b6b4
+.defcolor gray75 rgb #b9b8b6
+.defcolor gray76 rgb #bcbbba
+.defcolor gray77 rgb #bebebc
+.defcolor gray78 rgb #c1c1bf
+.defcolor gray79 rgb #c3c4c2
+.defcolor gray80 rgb #c7c7c5
+.defcolor gray81 rgb #cacac9
+.defcolor gray82 rgb #cccccb
+.defcolor gray83 rgb #d0cfcf
+.defcolor gray84 rgb #d2d2d1
+.defcolor gray85 rgb #d5d5d4
+.defcolor gray86 rgb #d7d7d7
+.defcolor gray87 rgb #dbdbd9
+.defcolor gray88 rgb #dddddc
+.defcolor gray89 rgb #e0e0e0
+.defcolor gray90 rgb #e2e3e1
+.defcolor gray91 rgb #e5e6e4
+.defcolor gray92 rgb #e8e9e8
+.defcolor gray93 rgb #ebebea
+.defcolor gray94 rgb #eeeeee
+.defcolor gray95 rgb #f0f1f0
+.defcolor gray96 rgb #f4f4f3
+.defcolor gray97 rgb #f6f6f5
+.defcolor gray98 rgb #f9f9fa
+.defcolor gray99 rgb #fbfbfb
+.defcolor green rgb #00ff00
+.defcolor green1 rgb #5ffb17
+.defcolor green2 rgb #59e817
+.defcolor green3 rgb #4cc417
+.defcolor green4 rgb #347c17
+.defcolor greenyellow rgb #b1fb17
+.defcolor honeydew rgb #f0feee
+.defcolor honeydew2 rgb #deebdc
+.defcolor honeydew3 rgb #bcc7b9
+.defcolor honeydew4 rgb #7a7d74
+.defcolor hotpink rgb #f660ab
+.defcolor hotpink1 rgb #f665ab
+.defcolor hotpink2 rgb #e45e9d
+.defcolor hotpink3 rgb #c25283
+.defcolor hotpink4 rgb #7d2252
+.defcolor indianred rgb #5e2217
+.defcolor indianred1 rgb #f75d59
+.defcolor indianred2 rgb #e55451
+.defcolor indianred3 rgb #c24641
+.defcolor indianred4 rgb #7e2217
+.defcolor ivory rgb #ffffee
+.defcolor ivory2 rgb #ececdc
+.defcolor ivory3 rgb #c9c7b9
+.defcolor ivory4 rgb #817d74
+.defcolor khaki rgb #ada96e
+.defcolor khaki1 rgb #fff380
+.defcolor khaki2 rgb #ede275
+.defcolor khaki3 rgb #c9be62
+.defcolor khaki4 rgb #827839
+.defcolor lavender rgb #e3e4fa
+.defcolor lavenderblush rgb #fdeef4
+.defcolor lavenderblush2 rgb #ebdde2
+.defcolor lavenderblush3 rgb #c8bbbe
+.defcolor lavenderblush4 rgb #817679
+.defcolor lawngreen rgb #87f717
+.defcolor lemonchiffon rgb #fff8c6
+.defcolor lemonchiffon2 rgb #ece5b6
+.defcolor lemonchiffon3 rgb #c9c299
+.defcolor lemonchiffon4 rgb #827b60
+.defcolor lightblue rgb #addfff
+.defcolor lightblue1 rgb #bdedff
+.defcolor lightblue2 rgb #afdcec
+.defcolor lightblue3 rgb #95b9c7
+.defcolor lightblue4 rgb #5e767e
+.defcolor lightcoral rgb #e77471
+.defcolor lightcyan rgb #e0ffff
+.defcolor lightcyan2 rgb #cfecec
+.defcolor lightcyan3 rgb #afc7c7
+.defcolor lightcyan4 rgb #717d7d
+.defcolor lightgoldenrod rgb #ecd872
+.defcolor lightgoldenrod1 rgb #ffe87c
+.defcolor lightgoldenrod2 rgb #ecd672
+.defcolor lightgoldenrod3 rgb #c8b560
+.defcolor lightgoldenrod4 rgb #817339
+.defcolor lightgoldenrodyellow rgb #faf8cc
+.defcolor lightpink rgb #faafba
+.defcolor lightpink1 rgb #f9a7b0
+.defcolor lightpink2 rgb #e799a3
+.defcolor lightpink3 rgb #c48189
+.defcolor lightpink4 rgb #7f4e52
+.defcolor lightsalmon rgb #f9966b
+.defcolor lightsalmon2 rgb #e78a61
+.defcolor lightsalmon3 rgb #c47451
+.defcolor lightsalmon4 rgb #7f462c
+.defcolor lightseagreen rgb #3ea99f
+.defcolor lightskyblue rgb #82cafa
+.defcolor lightskyblue2 rgb #a0cfec
+.defcolor lightskyblue3 rgb #87afc7
+.defcolor lightskyblue4 rgb #566d7e
+.defcolor lightslateblue rgb #736aff
+.defcolor lightslategray rgb #6d7b8d
+.defcolor lightsteelblue rgb #728fce
+.defcolor lightsteelblue1 rgb #c6deff
+.defcolor lightsteelblue2 rgb #b7ceec
+.defcolor lightsteelblue3 rgb #9aadc7
+.defcolor lightsteelblue4 rgb #646d7e
+.defcolor lightyellow rgb #fffedc
+.defcolor lightyellow2 rgb #edebcb
+.defcolor lightyellow3 rgb #c9c7aa
+.defcolor lightyellow4 rgb #827d6b
+.defcolor limegreen rgb #41a317
+.defcolor linen rgb #f9eee2
+.defcolor magenta rgb #ff00ff
+.defcolor magenta1 rgb #f43eff
+.defcolor magenta2 rgb #e238ec
+.defcolor magenta3 rgb #c031c7
+.defcolor maroon rgb #810541
+.defcolor maroon1 rgb #f535aa
+.defcolor maroon2 rgb #e3319d
+.defcolor maroon3 rgb #c12283
+.defcolor maroon4 rgb #7d0552
+.defcolor mediumaquamarine rgb #348781
+.defcolor mediumblue rgb #152dc6
+.defcolor mediumforestgreen rgb #347235
+.defcolor mediumgoldenrod rgb #ccb954
+.defcolor mediumorchid rgb #b048b5
+.defcolor mediumorchid1 rgb #d462ff
+.defcolor mediumorchid2 rgb #c45aec
+.defcolor mediumorchid3 rgb #a74ac7
+.defcolor mediumorchid4 rgb #6a287e
+.defcolor mediumpurple rgb #8467d7
+.defcolor mediumpurple1 rgb #9e7bff
+.defcolor mediumpurple2 rgb #9172ec
+.defcolor mediumpurple3 rgb #7a5dc7
+.defcolor mediumpurple4 rgb #4e387e
+.defcolor mediumseagreen rgb #306754
+.defcolor mediumslateblue rgb #5e5a80
+.defcolor mediumspringgreen rgb #348017
+.defcolor mediumturquoise rgb #48cccd
+.defcolor mediumvioletred rgb #ca226b
+.defcolor midnightblue rgb #151b54
+.defcolor mintcream rgb #f5fff9
+.defcolor mistyrose rgb #fde1dd
+.defcolor mistyrose2 rgb #ead0cc
+.defcolor mistyrose3 rgb #c6afac
+.defcolor mistyrose4 rgb #806f6c
+.defcolor moccasin rgb #fde0ac
+.defcolor navajowhite rgb #fddaa3
+.defcolor navajowhite2 rgb #eac995
+.defcolor navajowhite3 rgb #c7aa7d
+.defcolor navajowhite4 rgb #806a4b
+.defcolor navy rgb #150567
+.defcolor oldlace rgb #fcf3e2
+.defcolor olivedrab rgb #658017
+.defcolor olivedrab1 rgb #c3fb17
+.defcolor olivedrab2 rgb #b5e917
+.defcolor olivedrab3 rgb #99c517
+.defcolor olivedrab4 rgb #617c17
+.defcolor orange rgb #f87a17
+.defcolor orange1 rgb #fa9b17
+.defcolor orange2 rgb #e78e17
+.defcolor orange3 rgb #c57717
+.defcolor orange4 rgb #7f4817
+.defcolor orangered rgb #f63817
+.defcolor orangered2 rgb #e43117
+.defcolor orangered3 rgb #c22817
+.defcolor orangered4 rgb #7e0517
+.defcolor orchid rgb #e57ded
+.defcolor orchid1 rgb #f67dfa
+.defcolor orchid2 rgb #e473e7
+.defcolor orchid3 rgb #c160c3
+.defcolor orchid4 rgb #7d387c
+.defcolor palegoldenrod rgb #ede49e
+.defcolor palegreen rgb #79d867
+.defcolor palegreen1 rgb #a0fc8d
+.defcolor palegreen2 rgb #94e981
+.defcolor palegreen3 rgb #7dc56c
+.defcolor palegreen4 rgb #4e7c41
+.defcolor paleturquoise rgb #aeebec
+.defcolor paleturquoise1 rgb #bcfeff
+.defcolor paleturquoise2 rgb #adebec
+.defcolor paleturquoise3 rgb #92c7c7
+.defcolor paleturquoise4 rgb #5e7d7e
+.defcolor palevioletred rgb #d16587
+.defcolor palevioletred1 rgb #f778a1
+.defcolor palevioletred2 rgb #e56e94
+.defcolor palevioletred3 rgb #c25a7c
+.defcolor palevioletred4 rgb #7e354d
+.defcolor papayawhip rgb #feeccf
+.defcolor peachpuff rgb #fcd5b0
+.defcolor peachpuff2 rgb #eac5a3
+.defcolor peachpuff3 rgb #c6a688
+.defcolor peachpuff4 rgb #806752
+.defcolor peru rgb #c57726
+.defcolor pink rgb #faafbe
+.defcolor pink2 rgb #e7a1b0
+.defcolor pink3 rgb #c48793
+.defcolor pink4 rgb #7f525d
+.defcolor plum rgb #b93b8f
+.defcolor plum1 rgb #f9b7ff
+.defcolor plum2 rgb #e6a9ec
+.defcolor plum3 rgb #c38ec7
+.defcolor plum4 rgb #7e587e
+.defcolor powderblue rgb #addce3
+.defcolor purple rgb #8e35ef
+.defcolor purple1 rgb #893bff
+.defcolor purple2 rgb #7f38ec
+.defcolor purple3 rgb #6c2dc7
+.defcolor purple4 rgb #461b7e
+.defcolor red rgb #ff0000
+.defcolor red1 rgb #f62217
+.defcolor red2 rgb #e41b17
+.defcolor rosybrown rgb #b38481
+.defcolor rosybrown1 rgb #fbbbb9
+.defcolor rosybrown2 rgb #e8adaa
+.defcolor rosybrown3 rgb #c5908e
+.defcolor rosybrown4 rgb #7f5a58
+.defcolor royalblue rgb #2b60de
+.defcolor royalblue1 rgb #306eff
+.defcolor royalblue2 rgb #2b65ec
+.defcolor royalblue3 rgb #2554c7
+.defcolor royalblue4 rgb #15317e
+.defcolor salmon1 rgb #f88158
+.defcolor salmon2 rgb #e67451
+.defcolor salmon3 rgb #c36241
+.defcolor salmon4 rgb #7e3817
+.defcolor sandybrown rgb #ee9a4d
+.defcolor seagreen rgb #4e8975
+.defcolor seagreen1 rgb #6afb92
+.defcolor seagreen2 rgb #64e986
+.defcolor seagreen3 rgb #54c571
+.defcolor seagreen4 rgb #387c44
+.defcolor seashell rgb #fef3eb
+.defcolor seashell2 rgb #ebe2d9
+.defcolor seashell3 rgb #c8bfb6
+.defcolor seashell4 rgb #817873
+.defcolor sienna rgb #8a4117
+.defcolor sienna1 rgb #f87431
+.defcolor sienna2 rgb #e66c2c
+.defcolor sienna3 rgb #c35817
+.defcolor sienna4 rgb #7e3517
+.defcolor skyblue rgb #6698ff
+.defcolor skyblue1 rgb #82caff
+.defcolor skyblue2 rgb #79baec
+.defcolor skyblue3 rgb #659ec7
+.defcolor skyblue4 rgb #41627e
+.defcolor slateblue rgb #737ca1
+.defcolor slateblue1 rgb #7369ff
+.defcolor slateblue2 rgb #6960ec
+.defcolor slateblue3 rgb #574ec7
+.defcolor slateblue4 rgb #342d7e
+.defcolor slategray rgb #657383
+.defcolor slategray1 rgb #c2dfff
+.defcolor slategray2 rgb #b4cfec
+.defcolor slategray3 rgb #98afc7
+.defcolor slategray4 rgb #616d7e
+.defcolor snow rgb #fff9fa
+.defcolor snow2 rgb #ece7e6
+.defcolor snow3 rgb #c8c4c2
+.defcolor snow4 rgb #817c7b
+.defcolor springgreen rgb #4aa02c
+.defcolor springgreen1 rgb #5efb6e
+.defcolor springgreen2 rgb #57e964
+.defcolor springgreen3 rgb #4cc552
+.defcolor springgreen4 rgb #347c2c
+.defcolor steelblue rgb #4863a0
+.defcolor steelblue1 rgb #5cb3ff
+.defcolor steelblue2 rgb #56a5ec
+.defcolor steelblue3 rgb #488ac7
+.defcolor steelblue4 rgb #2b547e
+.defcolor tan rgb #d8af79
+.defcolor tan1 rgb #fa9b3c
+.defcolor tan2 rgb #e78e35
+.defcolor thistle rgb #d2b9d3
+.defcolor thistle1 rgb #fcdfff
+.defcolor thistle2 rgb #e9cfec
+.defcolor thistle3 rgb #c6aec7
+.defcolor thistle4 rgb #806d7e
+.defcolor tomato rgb #f75431
+.defcolor tomato2 rgb #e54c2c
+.defcolor tomato3 rgb #c23e17
+.defcolor turquoise rgb #43c6db
+.defcolor turquoise1 rgb #52f3ff
+.defcolor turquoise2 rgb #4ee2ec
+.defcolor turquoise3 rgb #43bfc7
+.defcolor turquoise4 rgb #30787e
+.defcolor violet rgb #8d38c9
+.defcolor violetred rgb #e9358a
+.defcolor violetred1 rgb #f6358a
+.defcolor violetred2 rgb #e4317f
+.defcolor violetred3 rgb #c12869
+.defcolor violetred4 rgb #7d0541
+.defcolor wheat rgb #f3daa9
+.defcolor wheat1 rgb #fee4b1
+.defcolor wheat2 rgb #ebd3a3
+.defcolor wheat3 rgb #c8b189
+.defcolor wheat4 rgb #816f54
+.defcolor yellow rgb #ffff00
+.defcolor yellow1 rgb #fffc17
+.defcolor yellowgreen rgb #52d017
+.\" make sure that no blank lines creep in at the end of this file.
diff --git a/tmac/color.tmac b/tmac/color.tmac
new file mode 100755
index 00000000..17504f9f
--- /dev/null
+++ b/tmac/color.tmac
@@ -0,0 +1,549 @@
+.\"
+.\" this is a composite of MIT's X Consortium red/green/blue (rgb) color
+.\" specifications, X Consortium version 10.41, 1994.
+.\"
+.defcolor black rgb #000000
+.defcolor grey rgb #bebebe
+.defcolor dimgrey rgb #696969
+.defcolor lightgray rgb #d3d3d3
+.defcolor lightslategrey rgb #778899
+.defcolor slategray rgb #708090
+.defcolor slategray1 rgb #c6e2ff
+.defcolor slategray2 rgb #b9d3ee
+.defcolor slategray3 rgb #9fb6cd
+.defcolor slategray4 rgb #6c7b8b
+.defcolor slategrey rgb #708090
+.defcolor grey0 rgb #000000
+.defcolor grey1 rgb #030303
+.defcolor grey2 rgb #050505
+.defcolor grey3 rgb #080808
+.defcolor grey4 rgb #0a0a0a
+.defcolor grey5 rgb #0d0d0d
+.defcolor grey6 rgb #0f0f0f
+.defcolor grey7 rgb #121212
+.defcolor grey8 rgb #141414
+.defcolor grey9 rgb #171717
+.defcolor grey10 rgb #1a1a1a
+.defcolor grey11 rgb #1c1c1c
+.defcolor grey12 rgb #1f1f1f
+.defcolor grey13 rgb #212121
+.defcolor grey14 rgb #242424
+.defcolor grey15 rgb #262626
+.defcolor grey16 rgb #292929
+.defcolor grey17 rgb #2b2b2b
+.defcolor grey18 rgb #2e2e2e
+.defcolor grey19 rgb #303030
+.defcolor grey20 rgb #333333
+.defcolor grey21 rgb #363636
+.defcolor grey22 rgb #383838
+.defcolor grey23 rgb #3b3b3b
+.defcolor grey24 rgb #3d3d3d
+.defcolor grey25 rgb #404040
+.defcolor grey26 rgb #424242
+.defcolor grey27 rgb #454545
+.defcolor grey28 rgb #474747
+.defcolor grey29 rgb #4a4a4a
+.defcolor grey30 rgb #4d4d4d
+.defcolor grey31 rgb #4f4f4f
+.defcolor grey32 rgb #525252
+.defcolor grey33 rgb #545454
+.defcolor grey34 rgb #575757
+.defcolor grey35 rgb #595959
+.defcolor grey36 rgb #5c5c5c
+.defcolor grey37 rgb #5e5e5e
+.defcolor grey38 rgb #616161
+.defcolor grey39 rgb #636363
+.defcolor grey40 rgb #666666
+.defcolor grey41 rgb #696969
+.defcolor grey42 rgb #6b6b6b
+.defcolor grey43 rgb #6e6e6e
+.defcolor grey44 rgb #707070
+.defcolor grey45 rgb #737373
+.defcolor grey46 rgb #757575
+.defcolor grey47 rgb #787878
+.defcolor grey48 rgb #7a7a7a
+.defcolor grey49 rgb #7d7d7d
+.defcolor grey50 rgb #7f7f7f
+.defcolor grey51 rgb #828282
+.defcolor grey52 rgb #858585
+.defcolor grey53 rgb #878787
+.defcolor grey54 rgb #8a8a8a
+.defcolor grey55 rgb #8c8c8c
+.defcolor grey56 rgb #8f8f8f
+.defcolor grey57 rgb #919191
+.defcolor grey58 rgb #949494
+.defcolor grey59 rgb #969696
+.defcolor grey60 rgb #999999
+.defcolor grey61 rgb #9c9c9c
+.defcolor grey62 rgb #9e9e9e
+.defcolor grey63 rgb #a1a1a1
+.defcolor grey64 rgb #a3a3a3
+.defcolor grey65 rgb #a6a6a6
+.defcolor grey66 rgb #a8a8a8
+.defcolor grey67 rgb #ababab
+.defcolor grey68 rgb #adadad
+.defcolor grey69 rgb #b0b0b0
+.defcolor grey70 rgb #b3b3b3
+.defcolor grey71 rgb #b5b5b5
+.defcolor grey72 rgb #b8b8b8
+.defcolor grey73 rgb #bababa
+.defcolor grey74 rgb #bdbdbd
+.defcolor grey75 rgb #bfbfbf
+.defcolor grey76 rgb #c2c2c2
+.defcolor grey77 rgb #c4c4c4
+.defcolor grey78 rgb #c7c7c7
+.defcolor grey79 rgb #c9c9c9
+.defcolor grey80 rgb #cccccc
+.defcolor grey81 rgb #cfcfcf
+.defcolor grey82 rgb #d1d1d1
+.defcolor grey83 rgb #d4d4d4
+.defcolor grey84 rgb #d6d6d6
+.defcolor grey85 rgb #d9d9d9
+.defcolor grey86 rgb #dbdbdb
+.defcolor grey87 rgb #dedede
+.defcolor grey88 rgb #e0e0e0
+.defcolor grey89 rgb #e3e3e3
+.defcolor grey90 rgb #e5e5e5
+.defcolor grey91 rgb #e8e8e8
+.defcolor grey92 rgb #ebebeb
+.defcolor grey93 rgb #ededed
+.defcolor grey94 rgb #f0f0f0
+.defcolor grey95 rgb #f2f2f2
+.defcolor grey96 rgb #f5f5f5
+.defcolor grey97 rgb #f7f7f7
+.defcolor grey98 rgb #fafafa
+.defcolor grey99 rgb #fcfcfc
+.defcolor grey100 rgb #ffffff
+.defcolor aliceblue rgb #f0f8ff
+.defcolor blueviolet rgb #8a2be2
+.defcolor cadetblue rgb #5f9ea0
+.defcolor cadetblue1 rgb #98f5ff
+.defcolor cadetblue2 rgb #8ee5ee
+.defcolor cadetblue3 rgb #7ac5cd
+.defcolor cadetblue4 rgb #53868b
+.defcolor cornflowerblue rgb #6495ed
+.defcolor darkslateblue rgb #483d8b
+.defcolor darkturquoise rgb #00ced1
+.defcolor deepskyblue rgb #00bfff
+.defcolor deepskyblue1 rgb #00bfff
+.defcolor deepskyblue2 rgb #00b2ee
+.defcolor deepskyblue3 rgb #009acd
+.defcolor deepskyblue4 rgb #00688b
+.defcolor dodgerblue rgb #1e90ff
+.defcolor dodgerblue1 rgb #1e90ff
+.defcolor dodgerblue2 rgb #1c86ee
+.defcolor dodgerblue3 rgb #1874cd
+.defcolor dodgerblue4 rgb #104e8b
+.defcolor lightblue rgb #add8e6
+.defcolor lightblue1 rgb #bfefff
+.defcolor lightblue2 rgb #b2dfee
+.defcolor lightblue3 rgb #9ac0cd
+.defcolor lightblue4 rgb #68838b
+.defcolor lightcyan rgb #e0ffff
+.defcolor lightcyan1 rgb #e0ffff
+.defcolor lightcyan2 rgb #d1eeee
+.defcolor lightcyan3 rgb #b4cdcd
+.defcolor lightcyan4 rgb #7a8b8b
+.defcolor lightskyblue rgb #87cefa
+.defcolor lightskyblue1 rgb #b0e2ff
+.defcolor lightskyblue2 rgb #a4d3ee
+.defcolor lightskyblue3 rgb #8db6cd
+.defcolor lightskyblue4 rgb #607b8b
+.defcolor lightslateblue rgb #8470ff
+.defcolor lightsteelblue rgb #b0c4de
+.defcolor lightsteelblue1 rgb #cae1ff
+.defcolor lightsteelblue2 rgb #bcd2ee
+.defcolor lightsteelblue3 rgb #a2b5cd
+.defcolor lightsteelblue4 rgb #6e7b8b
+.defcolor mediumaquamarine rgb #66cdaa
+.defcolor mediumblue rgb #0000cd
+.defcolor mediumslateblue rgb #7b68ee
+.defcolor mediumturquoise rgb #48d1cc
+.defcolor midnightblue rgb #191970
+.defcolor navyblue rgb #000080
+.defcolor paleturquoise rgb #afeeee
+.defcolor paleturquoise1 rgb #bbffff
+.defcolor paleturquoise2 rgb #aeeeee
+.defcolor paleturquoise3 rgb #96cdcd
+.defcolor paleturquoise4 rgb #668b8b
+.defcolor powderblue rgb #b0e0e6
+.defcolor royalblue rgb #4169e1
+.defcolor royalblue1 rgb #4876ff
+.defcolor royalblue2 rgb #436eee
+.defcolor royalblue3 rgb #3a5fcd
+.defcolor royalblue4 rgb #27408b
+.defcolor skyblue rgb #87ceeb
+.defcolor skyblue1 rgb #87ceff
+.defcolor skyblue2 rgb #7ec0ee
+.defcolor skyblue3 rgb #6ca6cd
+.defcolor skyblue4 rgb #4a708b
+.defcolor slateblue rgb #6a5acd
+.defcolor slateblue1 rgb #836fff
+.defcolor slateblue2 rgb #7a67ee
+.defcolor slateblue3 rgb #6959cd
+.defcolor slateblue4 rgb #473c8b
+.defcolor steelblue rgb #4682b4
+.defcolor steelblue1 rgb #63b8ff
+.defcolor steelblue2 rgb #5cacee
+.defcolor steelblue3 rgb #4f94cd
+.defcolor steelblue4 rgb #36648b
+.defcolor aquamarine rgb #7fffd4
+.defcolor aquamarine1 rgb #7fffd4
+.defcolor aquamarine2 rgb #76eec6
+.defcolor aquamarine3 rgb #66cdaa
+.defcolor aquamarine4 rgb #458b74
+.defcolor azure rgb #f0ffff
+.defcolor azure1 rgb #f0ffff
+.defcolor azure2 rgb #e0eeee
+.defcolor azure3 rgb #c1cdcd
+.defcolor azure4 rgb #838b8b
+.defcolor blue rgb #0000ff
+.defcolor blue1 rgb #0000ff
+.defcolor blue2 rgb #0000ee
+.defcolor blue3 rgb #0000cd
+.defcolor blue4 rgb #00008b
+.defcolor cyan rgb #00ffff
+.defcolor cyan1 rgb #00ffff
+.defcolor cyan2 rgb #00eeee
+.defcolor cyan3 rgb #00cdcd
+.defcolor cyan4 rgb #008b8b
+.defcolor navy rgb #000080
+.defcolor turquoise rgb #40e0d0
+.defcolor turquoise1 rgb #00f5ff
+.defcolor turquoise2 rgb #00e5ee
+.defcolor turquoise3 rgb #00c5cd
+.defcolor turquoise4 rgb #00868b
+.defcolor darkslategray rgb #2f4f4f
+.defcolor darkslategray1 rgb #97ffff
+.defcolor darkslategray2 rgb #8deeee
+.defcolor darkslategray3 rgb #79cdcd
+.defcolor darkslategray4 rgb #528b8b
+.defcolor rosybrown rgb #bc8f8f
+.defcolor rosybrown1 rgb #ffc1c1
+.defcolor rosybrown2 rgb #eeb4b4
+.defcolor rosybrown3 rgb #cd9b9b
+.defcolor rosybrown4 rgb #8b6969
+.defcolor saddlebrown rgb #8b4513
+.defcolor sandybrown rgb #f4a460
+.defcolor beige rgb #f5f5dc
+.defcolor brown rgb #a52a2a
+.defcolor brown1 rgb #ff4040
+.defcolor brown2 rgb #ee3b3b
+.defcolor brown3 rgb #cd3333
+.defcolor brown4 rgb #8b2323
+.defcolor burlywood rgb #deb887
+.defcolor burlywood1 rgb #ffd39b
+.defcolor burlywood2 rgb #eec591
+.defcolor burlywood3 rgb #cdaa7d
+.defcolor burlywood4 rgb #8b7355
+.defcolor chocolate rgb #d2691e
+.defcolor chocolate1 rgb #ff7f24
+.defcolor chocolate2 rgb #ee7621
+.defcolor chocolate3 rgb #cd661d
+.defcolor chocolate4 rgb #8b4513
+.defcolor peru rgb #cd853f
+.defcolor tan rgb #d2b48c
+.defcolor tan1 rgb #ffa54f
+.defcolor tan2 rgb #ee9a49
+.defcolor tan3 rgb #cd853f
+.defcolor tan4 rgb #8b5a2b
+.defcolor darkgreen rgb #006400
+.defcolor darkkhaki rgb #bdb76b
+.defcolor darkolivegreen rgb #556b2f
+.defcolor darkolivegreen1 rgb #caff70
+.defcolor darkolivegreen2 rgb #bcee68
+.defcolor darkolivegreen3 rgb #a2cd5a
+.defcolor darkolivegreen4 rgb #6e8b3d
+.defcolor darkseagreen rgb #8fbc8f
+.defcolor darkseagreen1 rgb #c1ffc1
+.defcolor darkseagreen2 rgb #b4eeb4
+.defcolor darkseagreen3 rgb #9bcd9b
+.defcolor darkseagreen4 rgb #698b69
+.defcolor forestgreen rgb #228b22
+.defcolor greenyellow rgb #adff2f
+.defcolor lawngreen rgb #7cfc00
+.defcolor lightseagreen rgb #20b2aa
+.defcolor limegreen rgb #32cd32
+.defcolor mediumseagreen rgb #3cb371
+.defcolor mediumspringgreen rgb #00fa9a
+.defcolor mintcream rgb #f5fffa
+.defcolor olivedrab rgb #6b8e23
+.defcolor olivedrab1 rgb #c0ff3e
+.defcolor olivedrab2 rgb #b3ee3a
+.defcolor olivedrab3 rgb #9acd32
+.defcolor olivedrab4 rgb #698b22
+.defcolor palegreen rgb #98fb98
+.defcolor palegreen1 rgb #9aff9a
+.defcolor palegreen2 rgb #90ee90
+.defcolor palegreen3 rgb #7ccd7c
+.defcolor palegreen4 rgb #548b54
+.defcolor seagreen rgb #2e8b57
+.defcolor seagreen1 rgb #54ff9f
+.defcolor seagreen2 rgb #4eee94
+.defcolor seagreen3 rgb #43cd80
+.defcolor seagreen4 rgb #2e8b57
+.defcolor springgreen rgb #00ff7f
+.defcolor springgreen1 rgb #00ff7f
+.defcolor springgreen2 rgb #00ee76
+.defcolor springgreen3 rgb #00cd66
+.defcolor springgreen4 rgb #008b45
+.defcolor yellowgreen rgb #9acd32
+.defcolor chartreuse rgb #7fff00
+.defcolor chartreuse1 rgb #7fff00
+.defcolor chartreuse2 rgb #76ee00
+.defcolor chartreuse3 rgb #66cd00
+.defcolor chartreuse4 rgb #458b00
+.defcolor green rgb #00ff00
+.defcolor green1 rgb #00ff00
+.defcolor green2 rgb #00ee00
+.defcolor green3 rgb #00cd00
+.defcolor green4 rgb #008b00
+.defcolor khaki rgb #f0e68c
+.defcolor khaki1 rgb #fff68f
+.defcolor khaki2 rgb #eee685
+.defcolor khaki3 rgb #cdc673
+.defcolor khaki4 rgb #8b864e
+.defcolor darkorange rgb #ff8c00
+.defcolor darkorange1 rgb #ff7f00
+.defcolor darkorange2 rgb #ee7600
+.defcolor darkorange3 rgb #cd6600
+.defcolor darkorange4 rgb #8b4500
+.defcolor darksalmon rgb #e9967a
+.defcolor lightcoral rgb #f08080
+.defcolor lightsalmon rgb #ffa07a
+.defcolor lightsalmon1 rgb #ffa07a
+.defcolor lightsalmon2 rgb #ee9572
+.defcolor lightsalmon3 rgb #cd8162
+.defcolor lightsalmon4 rgb #8b5742
+.defcolor peachpuff rgb #ffdab9
+.defcolor peachpuff1 rgb #ffdab9
+.defcolor peachpuff2 rgb #eecbad
+.defcolor peachpuff3 rgb #cdaf95
+.defcolor peachpuff4 rgb #8b7765
+.defcolor bisque rgb #ffe4c4
+.defcolor bisque1 rgb #ffe4c4
+.defcolor bisque2 rgb #eed5b7
+.defcolor bisque3 rgb #cdb79e
+.defcolor bisque4 rgb #8b7d6b
+.defcolor coral rgb #ff7f50
+.defcolor coral1 rgb #ff7256
+.defcolor coral2 rgb #ee6a50
+.defcolor coral3 rgb #cd5b45
+.defcolor coral4 rgb #8b3e2f
+.defcolor honeydew rgb #f0fff0
+.defcolor honeydew1 rgb #f0fff0
+.defcolor honeydew2 rgb #e0eee0
+.defcolor honeydew3 rgb #c1cdc1
+.defcolor honeydew4 rgb #838b83
+.defcolor orange rgb #ffa500
+.defcolor orange1 rgb #ffa500
+.defcolor orange2 rgb #ee9a00
+.defcolor orange3 rgb #cd8500
+.defcolor orange4 rgb #8b5a00
+.defcolor salmon rgb #fa8072
+.defcolor salmon1 rgb #ff8c69
+.defcolor salmon2 rgb #ee8262
+.defcolor salmon3 rgb #cd7054
+.defcolor salmon4 rgb #8b4c39
+.defcolor sienna rgb #a0522d
+.defcolor sienna1 rgb #ff8247
+.defcolor sienna2 rgb #ee7942
+.defcolor sienna3 rgb #cd6839
+.defcolor sienna4 rgb #8b4726
+.defcolor deeppink rgb #ff1493
+.defcolor deeppink1 rgb #ff1493
+.defcolor deeppink2 rgb #ee1289
+.defcolor deeppink3 rgb #cd1076
+.defcolor deeppink4 rgb #8b0a50
+.defcolor hotpink rgb #ff69b4
+.defcolor hotpink1 rgb #ff6eb4
+.defcolor hotpink2 rgb #ee6aa7
+.defcolor hotpink3 rgb #cd6090
+.defcolor hotpink4 rgb #8b3a62
+.defcolor indianred rgb #cd5c5c
+.defcolor indianred1 rgb #ff6a6a
+.defcolor indianred2 rgb #ee6363
+.defcolor indianred3 rgb #cd5555
+.defcolor indianred4 rgb #8b3a3a
+.defcolor lightpink rgb #ffb6c1
+.defcolor lightpink1 rgb #ffaeb9
+.defcolor lightpink2 rgb #eea2ad
+.defcolor lightpink3 rgb #cd8c95
+.defcolor lightpink4 rgb #8b5f65
+.defcolor mediumvioletred rgb #c71585
+.defcolor mistyrose rgb #ffe4e1
+.defcolor mistyrose1 rgb #ffe4e1
+.defcolor mistyrose2 rgb #eed5d2
+.defcolor mistyrose3 rgb #cdb7b5
+.defcolor mistyrose4 rgb #8b7d7b
+.defcolor orangered rgb #ff4500
+.defcolor orangered1 rgb #ff4500
+.defcolor orangered2 rgb #ee4000
+.defcolor orangered3 rgb #cd3700
+.defcolor orangered4 rgb #8b2500
+.defcolor palevioletred rgb #db7093
+.defcolor palevioletred1 rgb #ff82ab
+.defcolor palevioletred2 rgb #ee799f
+.defcolor palevioletred3 rgb #cd6889
+.defcolor palevioletred4 rgb #8b475d
+.defcolor violetred rgb #d02090
+.defcolor violetred1 rgb #ff3e96
+.defcolor violetred2 rgb #ee3a8c
+.defcolor violetred3 rgb #cd3278
+.defcolor violetred4 rgb #8b2252
+.defcolor firebrick rgb #b22222
+.defcolor firebrick1 rgb #ff3030
+.defcolor firebrick2 rgb #ee2c2c
+.defcolor firebrick3 rgb #cd2626
+.defcolor firebrick4 rgb #8b1a1a
+.defcolor pink rgb #ffc0cb
+.defcolor pink1 rgb #ffb5c5
+.defcolor pink2 rgb #eea9b8
+.defcolor pink3 rgb #cd919e
+.defcolor pink4 rgb #8b636c
+.defcolor red rgb #ff0000
+.defcolor red1 rgb #ff0000
+.defcolor red2 rgb #ee0000
+.defcolor red3 rgb #cd0000
+.defcolor red4 rgb #8b0000
+.defcolor tomato rgb #ff6347
+.defcolor tomato1 rgb #ff6347
+.defcolor tomato2 rgb #ee5c42
+.defcolor tomato3 rgb #cd4f39
+.defcolor tomato4 rgb #8b3626
+.defcolor darkorchid rgb #9932cc
+.defcolor darkorchid1 rgb #bf3eff
+.defcolor darkorchid2 rgb #b23aee
+.defcolor darkorchid3 rgb #9a32cd
+.defcolor darkorchid4 rgb #68228b
+.defcolor darkviolet rgb #9400d3
+.defcolor lavenderblush rgb #fff0f5
+.defcolor lavenderblush1 rgb #fff0f5
+.defcolor lavenderblush2 rgb #eee0e5
+.defcolor lavenderblush3 rgb #cdc1c5
+.defcolor lavenderblush4 rgb #8b8386
+.defcolor mediumorchid rgb #ba55d3
+.defcolor mediumorchid1 rgb #e066ff
+.defcolor mediumorchid2 rgb #d15fee
+.defcolor mediumorchid3 rgb #b452cd
+.defcolor mediumorchid4 rgb #7a378b
+.defcolor mediumpurple rgb #9370db
+.defcolor mediumpurple1 rgb #ab82ff
+.defcolor mediumpurple2 rgb #9f79ee
+.defcolor mediumpurple3 rgb #8968cd
+.defcolor mediumpurple4 rgb #5d478b
+.defcolor lavender rgb #e6e6fa
+.defcolor magenta rgb #ff00ff
+.defcolor magenta1 rgb #ff00ff
+.defcolor magenta2 rgb #ee00ee
+.defcolor magenta3 rgb #cd00cd
+.defcolor magenta4 rgb #8b008b
+.defcolor maroon rgb #b03060
+.defcolor maroon1 rgb #ff34b3
+.defcolor maroon2 rgb #ee30a7
+.defcolor maroon3 rgb #cd2990
+.defcolor maroon4 rgb #8b1c62
+.defcolor orchid rgb #da70d6
+.defcolor orchid1 rgb #ff83fa
+.defcolor orchid2 rgb #ee7ae9
+.defcolor orchid3 rgb #cd69c9
+.defcolor orchid4 rgb #8b4789
+.defcolor plum rgb #dda0dd
+.defcolor plum1 rgb #ffbbff
+.defcolor plum2 rgb #eeaeee
+.defcolor plum3 rgb #cd96cd
+.defcolor plum4 rgb #8b668b
+.defcolor purple rgb #a020f0
+.defcolor purple1 rgb #9b30ff
+.defcolor purple2 rgb #912cee
+.defcolor purple3 rgb #7d26cd
+.defcolor purple4 rgb #551a8b
+.defcolor thistle rgb #d8bfd8
+.defcolor thistle1 rgb #ffe1ff
+.defcolor thistle2 rgb #eed2ee
+.defcolor thistle3 rgb #cdb5cd
+.defcolor thistle4 rgb #8b7b8b
+.defcolor violet rgb #ee82ee
+.defcolor antiquewhite rgb #faebd7
+.defcolor antiquewhite1 rgb #ffefdb
+.defcolor antiquewhite2 rgb #eedfcc
+.defcolor antiquewhite3 rgb #cdc0b0
+.defcolor antiquewhite4 rgb #8b8378
+.defcolor floralwhite rgb #fffaf0
+.defcolor ghostwhite rgb #f8f8ff
+.defcolor navajowhite rgb #ffdead
+.defcolor navajowhite1 rgb #ffdead
+.defcolor navajowhite2 rgb #eecfa1
+.defcolor navajowhite3 rgb #cdb38b
+.defcolor navajowhite4 rgb #8b795e
+.defcolor oldlace rgb #fdf5e6
+.defcolor whitesmoke rgb #f5f5f5
+.defcolor gainsboro rgb #dcdcdc
+.defcolor ivory rgb #fffff0
+.defcolor ivory1 rgb #fffff0
+.defcolor ivory2 rgb #eeeee0
+.defcolor ivory3 rgb #cdcdc1
+.defcolor ivory4 rgb #8b8b83
+.defcolor linen rgb #faf0e6
+.defcolor seashell rgb #fff5ee
+.defcolor seashell1 rgb #fff5ee
+.defcolor seashell2 rgb #eee5de
+.defcolor seashell3 rgb #cdc5bf
+.defcolor seashell4 rgb #8b8682
+.defcolor snow rgb #fffafa
+.defcolor snow1 rgb #fffafa
+.defcolor snow2 rgb #eee9e9
+.defcolor snow3 rgb #cdc9c9
+.defcolor snow4 rgb #8b8989
+.defcolor wheat rgb #f5deb3
+.defcolor wheat1 rgb #ffe7ba
+.defcolor wheat2 rgb #eed8ae
+.defcolor wheat3 rgb #cdba96
+.defcolor wheat4 rgb #8b7e66
+.defcolor white rgb #ffffff
+.defcolor blanchedalmond rgb #ffebcd
+.defcolor darkgoldenrod rgb #b8860b
+.defcolor darkgoldenrod1 rgb #ffb90f
+.defcolor darkgoldenrod2 rgb #eead0e
+.defcolor darkgoldenrod3 rgb #cd950c
+.defcolor darkgoldenrod4 rgb #8b6508
+.defcolor lemonchiffon rgb #fffacd
+.defcolor lemonchiffon1 rgb #fffacd
+.defcolor lemonchiffon2 rgb #eee9bf
+.defcolor lemonchiffon3 rgb #cdc9a5
+.defcolor lemonchiffon4 rgb #8b8970
+.defcolor lightgoldenrod rgb #eedd82
+.defcolor lightgoldenrod1 rgb #ffec8b
+.defcolor lightgoldenrod2 rgb #eedc82
+.defcolor lightgoldenrod3 rgb #cdbe70
+.defcolor lightgoldenrod4 rgb #8b814c
+.defcolor lightgoldenrodyellow rgb #fafad2
+.defcolor lightyellow rgb #ffffe0
+.defcolor lightyellow1 rgb #ffffe0
+.defcolor lightyellow2 rgb #eeeed1
+.defcolor lightyellow3 rgb #cdcdb4
+.defcolor lightyellow4 rgb #8b8b7a
+.defcolor palegoldenrod rgb #eee8aa
+.defcolor papayawhip rgb #ffefd5
+.defcolor cornsilk rgb #fff8dc
+.defcolor cornsilk1 rgb #fff8dc
+.defcolor cornsilk2 rgb #eee8cd
+.defcolor cornsilk3 rgb #cdc8b1
+.defcolor cornsilk4 rgb #8b8878
+.defcolor gold rgb #ffd700
+.defcolor gold1 rgb #ffd700
+.defcolor gold2 rgb #eec900
+.defcolor gold3 rgb #cdad00
+.defcolor gold4 rgb #8b7500
+.defcolor goldenrod rgb #daa520
+.defcolor goldenrod1 rgb #ffc125
+.defcolor goldenrod2 rgb #eeb422
+.defcolor goldenrod3 rgb #cd9b1d
+.defcolor goldenrod4 rgb #8b6914
+.defcolor moccasin rgb #ffe4b5
+.defcolor yellow rgb #ffff00
+.defcolor yellow1 rgb #ffff00
+.defcolor yellow2 rgb #eeee00
+.defcolor yellow3 rgb #cdcd00
+.defcolor yellow4 rgb #8b8b00
+.\" make sure that no blank lines creep in at the end of this file.