Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit 7152667

Browse files
authored
Debug file
Contains RainbowVis-JS, to create a pallete of colors. SEE https://github.com/anomal/RainbowVis-JS
1 parent 0e7e149 commit 7152667

File tree

2 files changed

+513
-0
lines changed

2 files changed

+513
-0
lines changed

rainbowvis.js

Lines changed: 308 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,308 @@
1+
/*
2+
RainbowVis-JS
3+
Released under Eclipse Public License - v 1.0
4+
*/
5+
6+
function Rainbow()
7+
{
8+
"use strict";
9+
var gradients = null;
10+
var minNum = 0;
11+
var maxNum = 100;
12+
var colours = ['ff0000', 'ffff00', '00ff00', '0000ff'];
13+
setColours(colours);
14+
15+
function setColours (spectrum)
16+
{
17+
if (spectrum.length < 2) {
18+
throw new Error('Rainbow must have two or more colours.');
19+
} else {
20+
var increment = (maxNum - minNum)/(spectrum.length - 1);
21+
var firstGradient = new ColourGradient();
22+
firstGradient.setGradient(spectrum[0], spectrum[1]);
23+
firstGradient.setNumberRange(minNum, minNum + increment);
24+
gradients = [ firstGradient ];
25+
26+
for (var i = 1; i < spectrum.length - 1; i++) {
27+
var colourGradient = new ColourGradient();
28+
colourGradient.setGradient(spectrum[i], spectrum[i + 1]);
29+
colourGradient.setNumberRange(minNum + increment * i, minNum + increment * (i + 1));
30+
gradients[i] = colourGradient;
31+
}
32+
33+
colours = spectrum;
34+
}
35+
}
36+
37+
this.setSpectrum = function ()
38+
{
39+
setColours(arguments);
40+
return this;
41+
}
42+
43+
this.setSpectrumByArray = function (array)
44+
{
45+
setColours(array);
46+
return this;
47+
}
48+
49+
this.colourAt = function (number)
50+
{
51+
if (isNaN(number)) {
52+
throw new TypeError(number + ' is not a number');
53+
} else if (gradients.length === 1) {
54+
return gradients[0].colourAt(number);
55+
} else {
56+
var segment = (maxNum - minNum)/(gradients.length);
57+
var index = Math.min(Math.floor((Math.max(number, minNum) - minNum)/segment), gradients.length - 1);
58+
return gradients[index].colourAt(number);
59+
}
60+
}
61+
62+
this.colorAt = this.colourAt;
63+
64+
this.setNumberRange = function (minNumber, maxNumber)
65+
{
66+
if (maxNumber > minNumber) {
67+
minNum = minNumber;
68+
maxNum = maxNumber;
69+
setColours(colours);
70+
} else {
71+
throw new RangeError('maxNumber (' + maxNumber + ') is not greater than minNumber (' + minNumber + ')');
72+
}
73+
return this;
74+
}
75+
}
76+
77+
function ColourGradient()
78+
{
79+
"use strict";
80+
var startColour = 'ff0000';
81+
var endColour = '0000ff';
82+
var minNum = 0;
83+
var maxNum = 100;
84+
85+
this.setGradient = function (colourStart, colourEnd)
86+
{
87+
startColour = getHexColour(colourStart);
88+
endColour = getHexColour(colourEnd);
89+
}
90+
91+
this.setNumberRange = function (minNumber, maxNumber)
92+
{
93+
if (maxNumber > minNumber) {
94+
minNum = minNumber;
95+
maxNum = maxNumber;
96+
} else {
97+
throw new RangeError('maxNumber (' + maxNumber + ') is not greater than minNumber (' + minNumber + ')');
98+
}
99+
}
100+
101+
this.colourAt = function (number)
102+
{
103+
return calcHex(number, startColour.substring(0,2), endColour.substring(0,2))
104+
+ calcHex(number, startColour.substring(2,4), endColour.substring(2,4))
105+
+ calcHex(number, startColour.substring(4,6), endColour.substring(4,6));
106+
}
107+
108+
function calcHex(number, channelStart_Base16, channelEnd_Base16)
109+
{
110+
var num = number;
111+
if (num < minNum) {
112+
num = minNum;
113+
}
114+
if (num > maxNum) {
115+
num = maxNum;
116+
}
117+
var numRange = maxNum - minNum;
118+
var cStart_Base10 = parseInt(channelStart_Base16, 16);
119+
var cEnd_Base10 = parseInt(channelEnd_Base16, 16);
120+
var cPerUnit = (cEnd_Base10 - cStart_Base10)/numRange;
121+
var c_Base10 = Math.round(cPerUnit * (num - minNum) + cStart_Base10);
122+
return formatHex(c_Base10.toString(16));
123+
}
124+
125+
function formatHex(hex)
126+
{
127+
if (hex.length === 1) {
128+
return '0' + hex;
129+
} else {
130+
return hex;
131+
}
132+
}
133+
134+
function isHexColour(string)
135+
{
136+
var regex = /^#?[0-9a-fA-F]{6}$/i;
137+
return regex.test(string);
138+
}
139+
140+
function getHexColour(string)
141+
{
142+
if (isHexColour(string)) {
143+
return string.substring(string.length - 6, string.length);
144+
} else {
145+
var name = string.toLowerCase();
146+
if (colourNames.hasOwnProperty(name)) {
147+
return colourNames[name];
148+
}
149+
throw new Error(string + ' is not a valid colour.');
150+
}
151+
}
152+
153+
// Extended list of CSS colornames s taken from
154+
// http://www.w3.org/TR/css3-color/#svg-color
155+
var colourNames = {
156+
aliceblue: "F0F8FF",
157+
antiquewhite: "FAEBD7",
158+
aqua: "00FFFF",
159+
aquamarine: "7FFFD4",
160+
azure: "F0FFFF",
161+
beige: "F5F5DC",
162+
bisque: "FFE4C4",
163+
black: "000000",
164+
blanchedalmond: "FFEBCD",
165+
blue: "0000FF",
166+
blueviolet: "8A2BE2",
167+
brown: "A52A2A",
168+
burlywood: "DEB887",
169+
cadetblue: "5F9EA0",
170+
chartreuse: "7FFF00",
171+
chocolate: "D2691E",
172+
coral: "FF7F50",
173+
cornflowerblue: "6495ED",
174+
cornsilk: "FFF8DC",
175+
crimson: "DC143C",
176+
cyan: "00FFFF",
177+
darkblue: "00008B",
178+
darkcyan: "008B8B",
179+
darkgoldenrod: "B8860B",
180+
darkgray: "A9A9A9",
181+
darkgreen: "006400",
182+
darkgrey: "A9A9A9",
183+
darkkhaki: "BDB76B",
184+
darkmagenta: "8B008B",
185+
darkolivegreen: "556B2F",
186+
darkorange: "FF8C00",
187+
darkorchid: "9932CC",
188+
darkred: "8B0000",
189+
darksalmon: "E9967A",
190+
darkseagreen: "8FBC8F",
191+
darkslateblue: "483D8B",
192+
darkslategray: "2F4F4F",
193+
darkslategrey: "2F4F4F",
194+
darkturquoise: "00CED1",
195+
darkviolet: "9400D3",
196+
deeppink: "FF1493",
197+
deepskyblue: "00BFFF",
198+
dimgray: "696969",
199+
dimgrey: "696969",
200+
dodgerblue: "1E90FF",
201+
firebrick: "B22222",
202+
floralwhite: "FFFAF0",
203+
forestgreen: "228B22",
204+
fuchsia: "FF00FF",
205+
gainsboro: "DCDCDC",
206+
ghostwhite: "F8F8FF",
207+
gold: "FFD700",
208+
goldenrod: "DAA520",
209+
gray: "808080",
210+
green: "008000",
211+
greenyellow: "ADFF2F",
212+
grey: "808080",
213+
honeydew: "F0FFF0",
214+
hotpink: "FF69B4",
215+
indianred: "CD5C5C",
216+
indigo: "4B0082",
217+
ivory: "FFFFF0",
218+
khaki: "F0E68C",
219+
lavender: "E6E6FA",
220+
lavenderblush: "FFF0F5",
221+
lawngreen: "7CFC00",
222+
lemonchiffon: "FFFACD",
223+
lightblue: "ADD8E6",
224+
lightcoral: "F08080",
225+
lightcyan: "E0FFFF",
226+
lightgoldenrodyellow: "FAFAD2",
227+
lightgray: "D3D3D3",
228+
lightgreen: "90EE90",
229+
lightgrey: "D3D3D3",
230+
lightpink: "FFB6C1",
231+
lightsalmon: "FFA07A",
232+
lightseagreen: "20B2AA",
233+
lightskyblue: "87CEFA",
234+
lightslategray: "778899",
235+
lightslategrey: "778899",
236+
lightsteelblue: "B0C4DE",
237+
lightyellow: "FFFFE0",
238+
lime: "00FF00",
239+
limegreen: "32CD32",
240+
linen: "FAF0E6",
241+
magenta: "FF00FF",
242+
maroon: "800000",
243+
mediumaquamarine: "66CDAA",
244+
mediumblue: "0000CD",
245+
mediumorchid: "BA55D3",
246+
mediumpurple: "9370DB",
247+
mediumseagreen: "3CB371",
248+
mediumslateblue: "7B68EE",
249+
mediumspringgreen: "00FA9A",
250+
mediumturquoise: "48D1CC",
251+
mediumvioletred: "C71585",
252+
midnightblue: "191970",
253+
mintcream: "F5FFFA",
254+
mistyrose: "FFE4E1",
255+
moccasin: "FFE4B5",
256+
navajowhite: "FFDEAD",
257+
navy: "000080",
258+
oldlace: "FDF5E6",
259+
olive: "808000",
260+
olivedrab: "6B8E23",
261+
orange: "FFA500",
262+
orangered: "FF4500",
263+
orchid: "DA70D6",
264+
palegoldenrod: "EEE8AA",
265+
palegreen: "98FB98",
266+
paleturquoise: "AFEEEE",
267+
palevioletred: "DB7093",
268+
papayawhip: "FFEFD5",
269+
peachpuff: "FFDAB9",
270+
peru: "CD853F",
271+
pink: "FFC0CB",
272+
plum: "DDA0DD",
273+
powderblue: "B0E0E6",
274+
purple: "800080",
275+
red: "FF0000",
276+
rosybrown: "BC8F8F",
277+
royalblue: "4169E1",
278+
saddlebrown: "8B4513",
279+
salmon: "FA8072",
280+
sandybrown: "F4A460",
281+
seagreen: "2E8B57",
282+
seashell: "FFF5EE",
283+
sienna: "A0522D",
284+
silver: "C0C0C0",
285+
skyblue: "87CEEB",
286+
slateblue: "6A5ACD",
287+
slategray: "708090",
288+
slategrey: "708090",
289+
snow: "FFFAFA",
290+
springgreen: "00FF7F",
291+
steelblue: "4682B4",
292+
tan: "D2B48C",
293+
teal: "008080",
294+
thistle: "D8BFD8",
295+
tomato: "FF6347",
296+
turquoise: "40E0D0",
297+
violet: "EE82EE",
298+
wheat: "F5DEB3",
299+
white: "FFFFFF",
300+
whitesmoke: "F5F5F5",
301+
yellow: "FFFF00",
302+
yellowgreen: "9ACD32"
303+
}
304+
}
305+
306+
if (typeof module !== 'undefined') {
307+
module.exports = Rainbow;
308+
}

0 commit comments

Comments
 (0)