111 lines
3.1 KiB
Java
Executable File
111 lines
3.1 KiB
Java
Executable File
package org.gcube.contentmanagement.graphtools.plotting.graphs;
|
|
|
|
/*
|
|
* Copyright 1999-2004 Carnegie Mellon University.
|
|
* Portions Copyright 2002-2004 Sun Microsystems, Inc.
|
|
* Portions Copyright 2002-2004 Mitsubishi Electric Research Laboratories.
|
|
* All Rights Reserved. Use is subject to license terms.
|
|
*
|
|
* See the file "README" for information on usage and
|
|
* redistribution of this file, and for a DISCLAIMER OF ALL
|
|
* WARRANTIES.
|
|
*
|
|
*/
|
|
|
|
import java.util.Arrays;
|
|
import java.awt.Color;
|
|
|
|
public class ColorMap
|
|
{
|
|
public int size;
|
|
public byte r[];
|
|
public byte g[];
|
|
public byte b[];
|
|
public Color table[];
|
|
|
|
public static ColorMap getJet()
|
|
{
|
|
return getJet(64);
|
|
}
|
|
|
|
public static ColorMap getJet(int n)
|
|
{
|
|
byte r[] = new byte[n];
|
|
byte g[] = new byte[n];
|
|
byte b[] = new byte[n];
|
|
|
|
int maxval = 255;
|
|
//Arrays.fill(g, 0, 8, (byte)0);
|
|
Arrays.fill(g, 0, n/8, (byte)0);
|
|
//for(int x = 0; x < 16; x++)
|
|
// g[x+8] = (byte)(maxval*x/16);
|
|
for(int x = 0; x < n/4; x++)
|
|
g[x+n/8] = (byte)(maxval*x*4/n);
|
|
//Arrays.fill(g, 24, 40, (byte)maxval);
|
|
Arrays.fill(g, n*3/8, n*5/8, (byte)maxval);
|
|
//for(int x = 0; x < 16; x++)
|
|
// g[x+40] = (byte)(maxval-(maxval*x/16));
|
|
for(int x = 0; x < n/4; x++)
|
|
g[x+n*5/8] = (byte)(maxval-(maxval*x*4/n));
|
|
//Arrays.fill(g, 56, 64, (byte)0);
|
|
Arrays.fill(g, n*7/8, n, (byte)0);
|
|
|
|
//for(int x = 0; x < g.length; x++)
|
|
// b[x] = g[(x+16) % g.length];
|
|
for(int x = 0; x < g.length; x++)
|
|
b[x] = g[(x+n/4) % g.length];
|
|
//Arrays.fill(b, 56, 64, (byte)0);
|
|
Arrays.fill(b, n*7/8, n, (byte)0);
|
|
//Arrays.fill(g, 0, 8, (byte)0);
|
|
Arrays.fill(g, 0, n/8, (byte)0);
|
|
//for(int x = 8; x < g.length; x++)
|
|
// r[x] = g[(x+48) % g.length];
|
|
for(int x = n/8; x < g.length; x++)
|
|
r[x] = g[(x+n*6/8) % g.length];
|
|
|
|
ColorMap cm = new ColorMap();
|
|
cm.size = n;
|
|
cm.r = r;
|
|
cm.g = g;
|
|
cm.b = b;
|
|
cm.table = new Color[n];
|
|
for(int x = 0; x < n; x++)
|
|
//cm.table[x] = new Color((int)r[x]+maxval/2+1,
|
|
//(int)g[x]+maxval/2+1, (int)b[x]+maxval/2+1);
|
|
cm.table[x] = new Color(cm.getColor(x));
|
|
return cm;
|
|
}
|
|
|
|
|
|
public int getColor(int idx)
|
|
{
|
|
int pixel = ((r[idx] << 16) & 0xff0000)
|
|
| ((g[idx] << 8) & 0xff00)
|
|
| (b[idx] & 0xff);
|
|
|
|
return pixel;
|
|
}
|
|
|
|
public String toString()
|
|
{
|
|
StringBuffer s = new StringBuffer(500);
|
|
for(int x = 0; x < size; x++)
|
|
{
|
|
s.append(x+": {"+r[x]+",\t"+g[x]+",\t"+b[x]+"}\t");
|
|
if(x%3 == 2)
|
|
s.append("\n");
|
|
}
|
|
|
|
return s.toString();
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
ColorMap jet = getJet();
|
|
ColorMap jet128 = getJet(128);
|
|
|
|
|
|
System.out.println("Jet:\n"+jet+"\n\nJet128:\n"+jet128);
|
|
}
|
|
}
|