+#include "Main.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "Main.h"
#include "Defines.h"
#include "Error.h"
#include "Utilities.h"
-#define N_SHADES 10
+#define N_MONO_SHADES 10
-static floatish shades[ N_SHADES ] = {
+static floatish m_shades[ N_MONO_SHADES ] = {
0.00000, 0.20000, 0.60000, 0.30000, 0.90000,
0.40000, 1.00000, 0.70000, 0.50000, 0.80000
};
+#define N_COLOUR_SHADES 27
+
+/* HACK: 0.100505 means 100% red, 50% green, 50% blue */
+
+static floatish c_shades[ N_COLOUR_SHADES ] = {
+ 0.000000, 0.000010, 0.001000, 0.001010, 0.100000,
+ 0.100010, 0.101000, 0.101010, 0.000005, 0.000500,
+ 0.000510, 0.001005, 0.050000, 0.050010, 0.051000,
+ 0.051010, 0.100005, 0.100500, 0.100510, 0.101005,
+ 0.000505, 0.050005, 0.050500, 0.050510, 0.051005,
+ 0.100505, 0.050505
+};
+
static floatish
ThinkOfAShade()
{
- static int thisshade = 0;
+ static int thisshade = -1;
+
+ thisshade++;
+ return cflag ?
+ c_shades[ thisshade % N_COLOUR_SHADES ] :
+ m_shades[ thisshade % N_MONO_SHADES ] ;
+}
+
+static floatish
+extract_colour(shade,factor)
+ floatish shade;
+ intish factor;
+{
+ intish i,j;
- floatish x;
+ i = (int)(shade * factor);
+ j = i / 100;
+ return (i - j * 100) / 10.0;
+}
- x = shades[ thisshade ];
- thisshade = (thisshade + 1) % N_SHADES;
- return x;
+void
+SetPSColour(shade)
+ floatish shade;
+{
+ if (cflag) {
+ fprintf(psfp, "%f %f %f setrgbcolor\n",
+ extract_colour(shade, (intish)100),
+ extract_colour(shade, (intish)10000),
+ extract_colour(shade, (intish)1000000));
+ } else {
+ fprintf(psfp, "%f setgray\n", shade);
+ }
}