package org.codemap.mapview; import static java.lang.Math.min; import static java.lang.Math.round; import static org.codemap.util.ArrayUtil.last; import org.codemap.util.MColor; /** * Color ranges from: http://www.jjguy.com/heatmap/ * @author deif */ public class HeatMapColors { private static int[][] heat_classic = { {255, 224, 224}, {255, 209, 209}, {255, 193, 193}, {255, 176, 176}, {255, 159, 159}, {255, 142, 142}, {255, 126, 126}, {255, 110, 110}, {255, 94, 94}, {255, 81, 81}, {255, 67, 67}, {255, 56, 56}, {255, 46, 46}, {255, 37, 37}, {255, 29, 29}, {255, 23, 23}, {255, 18, 18}, {255, 14, 14}, {255, 11, 11}, {255, 8, 8}, {255, 6, 6}, {255, 5, 5}, {255, 3, 3}, {255, 2, 2}, {255, 2, 2}, {255, 1, 1}, {255, 1, 1}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 0, 0}, {255, 1, 0}, {255, 4, 0}, {255, 6, 0}, {255, 10, 0}, {255, 14, 0}, {255, 18, 0}, {255, 22, 0}, {255, 26, 0}, {255, 31, 0}, {255, 36, 0}, {255, 41, 0}, {255, 45, 0}, {255, 51, 0}, {255, 57, 0}, {255, 62, 0}, {255, 68, 0}, {255, 74, 0}, {255, 81, 0}, {255, 86, 0}, {255, 93, 0}, {255, 99, 0}, {255, 105, 0}, {255, 111, 0}, {255, 118, 0}, {255, 124, 0}, {255, 131, 0}, {255, 137, 0}, {255, 144, 0}, {255, 150, 0}, {255, 156, 0}, {255, 163, 0}, {255, 169, 0}, {255, 175, 0}, {255, 181, 0}, {255, 187, 0}, {255, 192, 0}, {255, 198, 0}, {255, 203, 0}, {255, 208, 0}, {255, 213, 0}, {255, 218, 0}, {255, 222, 0}, {255, 227, 0}, {255, 232, 0}, {255, 235, 0}, {255, 238, 0}, {255, 242, 0}, {255, 245, 0}, {255, 247, 0}, {255, 250, 0}, {255, 251, 0}, {253, 252, 0}, {250, 252, 1}, {248, 252, 2}, {244, 252, 2}, {241, 252, 3}, {237, 252, 3}, {233, 252, 3}, {229, 252, 4}, {225, 252, 4}, {220, 252, 5}, {216, 252, 5}, {211, 252, 6}, {206, 252, 7}, {201, 252, 7}, {197, 252, 8}, {191, 251, 8}, {185, 249, 9}, {180, 247, 9}, {174, 246, 10}, {169, 244, 11}, {164, 242, 11}, {158, 240, 12}, {151, 238, 13}, {146, 236, 14}, {140, 233, 14}, {134, 231, 15}, {128, 228, 16}, {122, 226, 17}, {116, 223, 18}, {110, 221, 19}, {105, 218, 20}, {99, 216, 21}, {93, 214, 22}, {88, 211, 23}, {82, 209, 24}, {76, 207, 25}, {71, 204, 26}, {66, 202, 28}, {60, 200, 30}, {55, 198, 31}, {50, 196, 33}, {45, 194, 34}, {40, 191, 35}, {36, 190, 37}, {31, 188, 39}, {27, 187, 40}, {23, 185, 43}, {19, 184, 44}, {15, 183, 46}, {12, 182, 48}, {9, 181, 51}, {6, 181, 53}, {3, 180, 55}, {1, 180, 57}, {0, 180, 60}, {0, 180, 62}, {0, 180, 65}, {0, 181, 68}, {0, 182, 70}, {0, 182, 74}, {0, 183, 77}, {0, 184, 80}, {0, 184, 84}, {0, 186, 88}, {0, 187, 92}, {0, 188, 95}, {0, 190, 99}, {0, 191, 104}, {0, 193, 108}, {0, 194, 112}, {0, 196, 116}, {0, 198, 120}, {0, 200, 125}, {0, 201, 129}, {0, 203, 134}, {0, 205, 138}, {0, 207, 143}, {0, 209, 147}, {0, 211, 151}, {0, 213, 156}, {0, 215, 160}, {0, 216, 165}, {0, 219, 171}, {0, 222, 178}, {0, 224, 184}, {0, 227, 190}, {0, 229, 197}, {0, 231, 203}, {0, 233, 209}, {0, 234, 214}, {0, 234, 220}, {0, 234, 225}, {0, 234, 230}, {0, 234, 234}, {0, 234, 238}, {0, 234, 242}, {0, 234, 246}, {0, 234, 248}, {0, 234, 251}, {0, 234, 254}, {0, 234, 255}, {0, 232, 255}, {0, 228, 255}, {0, 224, 255}, {0, 219, 255}, {0, 214, 254}, {0, 208, 252}, {0, 202, 250}, {0, 195, 247}, {0, 188, 244}, {0, 180, 240}, {0, 173, 236}, {0, 164, 232}, {0, 156, 228}, {0, 147, 222}, {0, 139, 218}, {0, 130, 213}, {0, 122, 208}, {0, 117, 205}, {0, 112, 203}, {0, 107, 199}, {0, 99, 196}, {0, 93, 193}, {0, 86, 189}, {0, 78, 184}, {0, 71, 180}, {0, 65, 175}, {0, 58, 171}, {0, 52, 167}, {0, 46, 162}, {0, 40, 157}, {0, 35, 152}, {0, 30, 147}, {0, 26, 142}, {0, 22, 136}, {0, 18, 131}, {0, 15, 126}, {0, 12, 120}, {0, 9, 115}, {1, 8, 110}, {1, 6, 106}, {1, 5, 101}, {2, 4, 97}, {3, 4, 92}, {4, 5, 89}, {5, 5, 85}, {6, 6, 82}, {7, 7, 79}, {8, 8, 77}, {10, 10, 77}, {12, 12, 77}, {14, 14, 76}, {16, 16, 74}, {19, 19, 73}, {21, 21, 72}, {24, 24, 71}, {26, 26, 69}, {29, 29, 70}, {32, 32, 69}, {35, 35, 68}, {37, 37, 67}, {40, 40, 67}, {42, 42, 65}, {44, 44, 65}, {46, 46, 64}, {48, 48, 63}, {49, 50, 62}, {51, 51, 61}, {53, 52, 61}, }; private static int[][] pgaitch = { // omit the first few colors as they look too white // {255, 254, 165}, // {255, 254, 164}, // {255, 253, 163}, // {255, 253, 162}, // {255, 253, 161}, // {255, 252, 160}, // {255, 252, 159}, // {255, 252, 157}, // {255, 251, 156}, // {255, 251, 155}, // {255, 251, 153}, // {255, 250, 152}, // {255, 250, 150}, // {255, 250, 149}, // {255, 249, 148}, // {255, 249, 146}, // {255, 249, 145}, // {255, 248, 143}, // {255, 248, 141}, // {255, 248, 139}, // {255, 247, 138}, // {255, 247, 136}, // {255, 246, 134}, // {255, 246, 132}, // {255, 246, 130}, // {255, 245, 129}, // {255, 245, 127}, // {255, 245, 125}, // {255, 244, 123}, // {255, 244, 121}, // {255, 243, 119}, // {255, 243, 117}, // {255, 242, 114}, // {255, 242, 112}, // {255, 241, 111}, // {255, 241, 109}, // {255, 240, 107}, // {255, 240, 105}, // {255, 239, 102}, // {255, 239, 100}, // {255, 238, 99}, // {255, 238, 97}, // {255, 237, 95}, // {255, 237, 92}, // {255, 236, 90}, // {255, 237, 89}, // {255, 236, 87}, // {255, 235, 84}, // {255, 235, 82}, // {255, 234, 80}, // {255, 233, 79}, // {255, 233, 77}, // {255, 232, 74}, // {255, 231, 72}, // {255, 230, 70}, // {255, 230, 69}, // {255, 229, 67}, // {255, 228, 65}, // {255, 227, 63}, // {255, 226, 61}, // {255, 225, 60}, {255, 225, 58}, {255, 224, 56}, {255, 223, 54}, {255, 222, 52}, {255, 222, 51}, {255, 221, 49}, {255, 220, 47}, {255, 219, 46}, {255, 218, 44}, {255, 216, 43}, {255, 215, 42}, {255, 214, 41}, {255, 213, 39}, {255, 212, 39}, {255, 211, 37}, {255, 209, 36}, {255, 208, 34}, {255, 208, 33}, {255, 206, 33}, {255, 205, 32}, {255, 204, 30}, {255, 202, 29}, {255, 201, 29}, {255, 199, 28}, {254, 199, 28}, {254, 199, 27}, {253, 198, 27}, {252, 197, 27}, {251, 196, 27}, {250, 195, 26}, {249, 195, 26}, {248, 194, 26}, {248, 193, 26}, {247, 192, 26}, {246, 192, 25}, {245, 191, 26}, {244, 190, 26}, {243, 189, 25}, {241, 188, 25}, {240, 187, 25}, {239, 187, 25}, {238, 186, 25}, {236, 185, 25}, {236, 184, 26}, {235, 183, 26}, {233, 182, 25}, {232, 181, 25}, {230, 181, 26}, {229, 180, 26}, {228, 179, 25}, {227, 178, 25}, {226, 177, 26}, {224, 176, 26}, {222, 176, 25}, {221, 175, 25}, {220, 173, 26}, {219, 172, 26}, {217, 171, 25}, {215, 170, 25}, {214, 170, 26}, {212, 169, 26}, {211, 167, 25}, {209, 166, 25}, {208, 166, 26}, {206, 165, 26}, {204, 163, 26}, {203, 162, 26}, {202, 161, 25}, {200, 161, 26}, {198, 159, 26}, {197, 158, 26}, {195, 157, 26}, {193, 157, 27}, {192, 155, 27}, {190, 154, 27}, {189, 153, 27}, {187, 152, 28}, {186, 151, 28}, {184, 150, 28}, {182, 149, 28}, {181, 148, 29}, {179, 147, 29}, {177, 146, 29}, {175, 144, 29}, {174, 144, 30}, {172, 142, 30}, {170, 141, 30}, {169, 140, 30}, {167, 139, 31}, {165, 138, 31}, {164, 137, 31}, {162, 136, 31}, {161, 135, 32}, {159, 134, 32}, {157, 133, 32}, {154, 132, 32}, {153, 131, 33}, {151, 130, 33}, {150, 129, 33}, {148, 127, 33}, {147, 127, 34}, {145, 126, 34}, {143, 124, 34}, {141, 123, 34}, {140, 122, 35}, {139, 121, 35}, {137, 120, 35}, {135, 119, 35}, {134, 118, 36}, {132, 117, 36}, {130, 116, 36}, {129, 115, 36}, {127, 113, 36}, {126, 113, 37}, {124, 112, 37}, {122, 111, 37}, {121, 110, 37}, {120, 109, 38}, {118, 108, 38}, {116, 107, 38}, {115, 105, 38}, {113, 104, 38}, {112, 104, 39}, {110, 103, 39}, {108, 102, 39}, {107, 101, 39}, {106, 100, 40}, {104, 99, 40}, {102, 98, 40}, {101, 96, 40}, {99, 96, 40}, {99, 96, 41}, {97, 94, 41}, {96, 93, 41}, {94, 92, 41}, {92, 91, 41}, {92, 90, 42}, {90, 90, 42}, {89, 89, 42}, {87, 87, 42}, {86, 86, 42}, {85, 86, 43}, {84, 85, 43}, {83, 84, 43}, {81, 83, 43}, {80, 82, 43}, {80, 82, 44}, {78, 80, 44}, {77, 80, 44}, {75, 79, 44}, {75, 78, 44}, {74, 78, 45}, {73, 76, 45}, {71, 75, 45}, {71, 75, 45}, {70, 74, 45}, {69, 74, 46}, {68, 73, 46}, {67, 72, 46}, {66, 71, 46}, {65, 71, 46}, {64, 69, 46}, {64, 69, 47}, {63, 68, 47}, {62, 67, 47}, {61, 67, 47}, {60, 66, 47}, {59, 65, 47}, {59, 65, 48}, {59, 64, 48}, {58, 63, 48}, {57, 63, 48}, {56, 62, 48}, {56, 62, 48}, {55, 61, 48}, {55, 61, 49}, {55, 60, 49}, {55, 60, 49}, {54, 59, 49}, {53, 58, 49}, {53, 57, 49}, {52, 57, 49}, {52, 57, 50}, {52, 56, 50}, {52, 56, 50}, {52, 56, 50}, {52, 55, 50}, {51, 54, 50}, {51, 53, 50}, {51, 53, 50}, {51, 52, 50}, {51, 53, 51}, {51, 53, 51}, {51, 52, 51}, {51, 52, 51}, }; private float step; private double current; public HeatMapColors(int steps) { step = (float) getColorArray().length / (float) steps; current = 0.0; } private int[][] getColorArray() { return pgaitch; } public MColor colder() { int index = min(getColorArray().length, (int) round(current)); current += step; return makeColor(getColorArray()[index]); } private MColor makeColor(int[] color) { return new MColor(color[0], color[1], color[2]); } public MColor getColdest() { return makeColor(last(getColorArray())); } }