Skip to content

Commit 8fb81fe

Browse files
committed
generate colormap classes programmatically
1 parent 7a672a0 commit 8fb81fe

126 files changed

Lines changed: 6156 additions & 315 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Spectrogram/Colormap.cs

Lines changed: 131 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,143 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Drawing;
4+
using System.Linq;
45
using System.Text;
56

67
namespace Spectrogram
78
{
89
public class Colormap
910
{
11+
public static Colormap Afmhot => new Colormap(new Colormaps.Afmhot());
12+
public static Colormap AfmhotReversed => new Colormap(new Colormaps.AfmhotReversed());
1013
public static Colormap Argo => new Colormap(new Colormaps.Argo());
14+
public static Colormap Autumn => new Colormap(new Colormaps.Autumn());
15+
public static Colormap AutumnReversed => new Colormap(new Colormaps.AutumnReversed());
16+
public static Colormap Binary => new Colormap(new Colormaps.Binary());
17+
public static Colormap BinaryReversed => new Colormap(new Colormaps.BinaryReversed());
1118
public static Colormap Blues => new Colormap(new Colormaps.Blues());
19+
public static Colormap BluesReversed => new Colormap(new Colormaps.BluesReversed());
20+
public static Colormap Bone => new Colormap(new Colormaps.Bone());
21+
public static Colormap BoneReversed => new Colormap(new Colormaps.BoneReversed());
22+
public static Colormap Brbg => new Colormap(new Colormaps.Brbg());
23+
public static Colormap BrbgReversed => new Colormap(new Colormaps.BrbgReversed());
24+
public static Colormap Brg => new Colormap(new Colormaps.Brg());
25+
public static Colormap BrgReversed => new Colormap(new Colormaps.BrgReversed());
26+
public static Colormap Bugn => new Colormap(new Colormaps.Bugn());
27+
public static Colormap BugnReversed => new Colormap(new Colormaps.BugnReversed());
28+
public static Colormap Bupu => new Colormap(new Colormaps.Bupu());
29+
public static Colormap BupuReversed => new Colormap(new Colormaps.BupuReversed());
30+
public static Colormap Bwr => new Colormap(new Colormaps.Bwr());
31+
public static Colormap BwrReversed => new Colormap(new Colormaps.BwrReversed());
1232
public static Colormap Cividis => new Colormap(new Colormaps.Cividis());
13-
public static Colormap Grayscale => new Colormap(new Colormaps.Grayscale());
14-
public static Colormap GrayscaleReversed => new Colormap(new Colormaps.GrayscaleReversed());
33+
public static Colormap CividisReversed => new Colormap(new Colormaps.CividisReversed());
34+
public static Colormap Cmrmap => new Colormap(new Colormaps.Cmrmap());
35+
public static Colormap CmrmapReversed => new Colormap(new Colormaps.CmrmapReversed());
36+
public static Colormap Cool => new Colormap(new Colormaps.Cool());
37+
public static Colormap CoolReversed => new Colormap(new Colormaps.CoolReversed());
38+
public static Colormap Coolwarm => new Colormap(new Colormaps.Coolwarm());
39+
public static Colormap CoolwarmReversed => new Colormap(new Colormaps.CoolwarmReversed());
40+
public static Colormap Copper => new Colormap(new Colormaps.Copper());
41+
public static Colormap CopperReversed => new Colormap(new Colormaps.CopperReversed());
42+
public static Colormap Cubehelix => new Colormap(new Colormaps.Cubehelix());
43+
public static Colormap CubehelixReversed => new Colormap(new Colormaps.CubehelixReversed());
44+
public static Colormap Flag => new Colormap(new Colormaps.Flag());
45+
public static Colormap FlagReversed => new Colormap(new Colormaps.FlagReversed());
46+
public static Colormap GistReversedainbow => new Colormap(new Colormaps.GistReversedainbow());
47+
public static Colormap GistReversedainbowReversed => new Colormap(new Colormaps.GistReversedainbowReversed());
48+
public static Colormap Gnbu => new Colormap(new Colormaps.Gnbu());
49+
public static Colormap GnbuReversed => new Colormap(new Colormaps.GnbuReversed());
50+
public static Colormap Gnuplot => new Colormap(new Colormaps.Gnuplot());
51+
public static Colormap Gnuplot2 => new Colormap(new Colormaps.Gnuplot2());
52+
public static Colormap Gnuplot2Reversed => new Colormap(new Colormaps.Gnuplot2Reversed());
53+
public static Colormap GnuplotReversed => new Colormap(new Colormaps.GnuplotReversed());
54+
public static Colormap Gray => new Colormap(new Colormaps.Gray());
55+
public static Colormap GrayReversed => new Colormap(new Colormaps.GrayReversed());
1556
public static Colormap Greens => new Colormap(new Colormaps.Greens());
16-
public static Colormap Jet => new Colormap(new Colormaps.Jet());
57+
public static Colormap GreensReversed => new Colormap(new Colormaps.GreensReversed());
58+
public static Colormap Greys => new Colormap(new Colormaps.Greys());
59+
public static Colormap GreysReversed => new Colormap(new Colormaps.GreysReversed());
60+
public static Colormap Hot => new Colormap(new Colormaps.Hot());
61+
public static Colormap HotReversed => new Colormap(new Colormaps.HotReversed());
62+
public static Colormap Hsv => new Colormap(new Colormaps.Hsv());
63+
public static Colormap HsvReversed => new Colormap(new Colormaps.HsvReversed());
1764
public static Colormap Inferno => new Colormap(new Colormaps.Inferno());
65+
public static Colormap InfernoReversed => new Colormap(new Colormaps.InfernoReversed());
66+
public static Colormap Jet => new Colormap(new Colormaps.Jet());
67+
public static Colormap JetReversed => new Colormap(new Colormaps.JetReversed());
1868
public static Colormap Magma => new Colormap(new Colormaps.Magma());
69+
public static Colormap MagmaReversed => new Colormap(new Colormaps.MagmaReversed());
70+
public static Colormap Ocean => new Colormap(new Colormaps.Ocean());
71+
public static Colormap OceanReversed => new Colormap(new Colormaps.OceanReversed());
72+
public static Colormap Oranges => new Colormap(new Colormaps.Oranges());
73+
public static Colormap OrangesReversed => new Colormap(new Colormaps.OrangesReversed());
74+
public static Colormap Orrd => new Colormap(new Colormaps.Orrd());
75+
public static Colormap OrrdReversed => new Colormap(new Colormaps.OrrdReversed());
76+
public static Colormap Pink => new Colormap(new Colormaps.Pink());
77+
public static Colormap PinkReversed => new Colormap(new Colormaps.PinkReversed());
78+
public static Colormap Piyg => new Colormap(new Colormaps.Piyg());
79+
public static Colormap PiygReversed => new Colormap(new Colormaps.PiygReversed());
1980
public static Colormap Plasma => new Colormap(new Colormaps.Plasma());
81+
public static Colormap PlasmaReversed => new Colormap(new Colormaps.PlasmaReversed());
82+
public static Colormap Prgn => new Colormap(new Colormaps.Prgn());
83+
public static Colormap PrgnReversed => new Colormap(new Colormaps.PrgnReversed());
84+
public static Colormap PrismReversed => new Colormap(new Colormaps.PrismReversed());
85+
public static Colormap Pubu => new Colormap(new Colormaps.Pubu());
86+
public static Colormap PubuReversed => new Colormap(new Colormaps.PubuReversed());
87+
public static Colormap Pubugn => new Colormap(new Colormaps.Pubugn());
88+
public static Colormap PubugnReversed => new Colormap(new Colormaps.PubugnReversed());
89+
public static Colormap Puor => new Colormap(new Colormaps.Puor());
90+
public static Colormap PuorReversed => new Colormap(new Colormaps.PuorReversed());
91+
public static Colormap Purd => new Colormap(new Colormaps.Purd());
92+
public static Colormap PurdReversed => new Colormap(new Colormaps.PurdReversed());
93+
public static Colormap Purples => new Colormap(new Colormaps.Purples());
94+
public static Colormap PurplesReversed => new Colormap(new Colormaps.PurplesReversed());
95+
public static Colormap Rainbow => new Colormap(new Colormaps.Rainbow());
96+
public static Colormap RainbowReversed => new Colormap(new Colormaps.RainbowReversed());
97+
public static Colormap Rdbu => new Colormap(new Colormaps.Rdbu());
98+
public static Colormap RdbuReversed => new Colormap(new Colormaps.RdbuReversed());
99+
public static Colormap Rdgy => new Colormap(new Colormaps.Rdgy());
100+
public static Colormap RdgyReversed => new Colormap(new Colormaps.RdgyReversed());
101+
public static Colormap Rdpu => new Colormap(new Colormaps.Rdpu());
102+
public static Colormap RdpuReversed => new Colormap(new Colormaps.RdpuReversed());
103+
public static Colormap Rdylbu => new Colormap(new Colormaps.Rdylbu());
104+
public static Colormap RdylbuReversed => new Colormap(new Colormaps.RdylbuReversed());
105+
public static Colormap Rdylgn => new Colormap(new Colormaps.Rdylgn());
106+
public static Colormap RdylgnReversed => new Colormap(new Colormaps.RdylgnReversed());
107+
public static Colormap Reds => new Colormap(new Colormaps.Reds());
108+
public static Colormap RedsReversed => new Colormap(new Colormaps.RedsReversed());
109+
public static Colormap Seismic => new Colormap(new Colormaps.Seismic());
110+
public static Colormap SeismicReversed => new Colormap(new Colormaps.SeismicReversed());
111+
public static Colormap Spectral => new Colormap(new Colormaps.Spectral());
112+
public static Colormap SpectralReversed => new Colormap(new Colormaps.SpectralReversed());
113+
public static Colormap Spring => new Colormap(new Colormaps.Spring());
114+
public static Colormap SpringReversed => new Colormap(new Colormaps.SpringReversed());
115+
public static Colormap Summer => new Colormap(new Colormaps.Summer());
116+
public static Colormap SummerReversed => new Colormap(new Colormaps.SummerReversed());
117+
public static Colormap Terrain => new Colormap(new Colormaps.Terrain());
118+
public static Colormap TerrainReversed => new Colormap(new Colormaps.TerrainReversed());
119+
public static Colormap Twilight => new Colormap(new Colormaps.Twilight());
120+
public static Colormap TwilightReversed => new Colormap(new Colormaps.TwilightReversed());
20121
public static Colormap Viridis => new Colormap(new Colormaps.Viridis());
122+
public static Colormap ViridisReversed => new Colormap(new Colormaps.ViridisReversed());
123+
public static Colormap Winter => new Colormap(new Colormaps.Winter());
124+
public static Colormap WinterReversed => new Colormap(new Colormaps.WinterReversed());
125+
public static Colormap Wistia => new Colormap(new Colormaps.Wistia());
126+
public static Colormap WistiaReversed => new Colormap(new Colormaps.WistiaReversed());
127+
public static Colormap Ylgn => new Colormap(new Colormaps.Ylgn());
128+
public static Colormap YlgnReversed => new Colormap(new Colormaps.YlgnReversed());
129+
public static Colormap Ylgnbu => new Colormap(new Colormaps.Ylgnbu());
130+
public static Colormap YlgnbuReversed => new Colormap(new Colormaps.YlgnbuReversed());
131+
public static Colormap Ylorbr => new Colormap(new Colormaps.Ylorbr());
132+
public static Colormap YlorbrReversed => new Colormap(new Colormaps.YlorbrReversed());
133+
public static Colormap Ylorrd => new Colormap(new Colormaps.Ylorrd());
134+
public static Colormap YlorrdReversed => new Colormap(new Colormaps.YlorrdReversed());
21135

22136
private readonly IColormap cmap;
23137
public readonly string Name;
24138
public Colormap(IColormap colormap)
25139
{
26-
cmap = colormap ?? new Colormaps.Grayscale();
140+
cmap = colormap ?? new Colormaps.Gray();
27141
Name = cmap.GetType().Name;
28142
}
29143

@@ -32,6 +146,19 @@ public override string ToString()
32146
return $"Colormap {Name}";
33147
}
34148

149+
public static Colormap[] GetColormaps()
150+
{
151+
IColormap[] ics = AppDomain.CurrentDomain.GetAssemblies()
152+
.SelectMany(s => s.GetTypes())
153+
.Where(p => p.IsInterface == false)
154+
.Where(p => p.ToString().StartsWith("Spectrogram.Colormaps."))
155+
.Select(x => x.ToString())
156+
.Select(path => (IColormap)Activator.CreateInstance(Type.GetType(path)))
157+
.ToArray();
158+
159+
return ics.Select(x => new Colormap(x)).ToArray();
160+
}
161+
35162
public (byte r, byte g, byte b) GetRGB(byte value)
36163
{
37164
return cmap.GetRGB(value);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
3+
namespace Spectrogram.Colormaps
4+
{
5+
class Afmhot : IColormap
6+
{
7+
public (byte r, byte g, byte b) GetRGB(byte value)
8+
{
9+
byte[] bytes = BitConverter.GetBytes(rgb[value]);
10+
return (bytes[2], bytes[1], bytes[0]);
11+
}
12+
13+
// RGB values are derived from the Afmhot colormap in Matplotlib 3.2.1 (https://matplotlib.org)
14+
private readonly int[] rgb =
15+
{
16+
00000000, 00131072, 00262144, 00393216, 00524288, 00655360, 00786432, 00917504,
17+
01048576, 01179648, 01310720, 01441792, 01572864, 01703936, 01835008, 01966080,
18+
02097152, 02228224, 02359296, 02490368, 02621440, 02752512, 02883584, 03014656,
19+
03145728, 03276800, 03407872, 03538944, 03670016, 03801088, 03932160, 04063232,
20+
04194304, 04259840, 04456448, 04587520, 04718592, 04784128, 04980736, 05111808,
21+
05242880, 05308416, 05505024, 05636096, 05767168, 05832704, 06029312, 06160384,
22+
06291456, 06356992, 06553600, 06684672, 06815744, 06881280, 07077888, 07208960,
23+
07340032, 07405568, 07602176, 07733248, 07864320, 07929856, 08126464, 08257536,
24+
08388608, 08520192, 08586240, 08783360, 08914944, 09046528, 09178112, 09309696,
25+
09441280, 09572864, 09638912, 09836032, 09967616, 10099200, 10230784, 10362368,
26+
10493952, 10625536, 10691584, 10888704, 11020288, 11151872, 11283456, 11415040,
27+
11546624, 11678208, 11744256, 11941376, 12072960, 12204544, 12336128, 12467712,
28+
12599296, 12730880, 12796928, 12994048, 13125632, 13257216, 13388800, 13520384,
29+
13651968, 13783552, 13849600, 14046720, 14178304, 14309888, 14441472, 14573056,
30+
14704640, 14836224, 14902272, 15099392, 15230976, 15362560, 15494144, 15625728,
31+
15757312, 15888896, 15954944, 16152064, 16283648, 16415232, 16546816, 16678400,
32+
16744448, 16744962, 16745476, 16745990, 16746504, 16747019, 16747533, 16748047,
33+
16748560, 16749074, 16749588, 16750102, 16750617, 16751131, 16751645, 16752159,
34+
16752672, 16753186, 16753700, 16754214, 16754728, 16755243, 16755757, 16756271,
35+
16756784, 16757298, 16757812, 16758326, 16758841, 16759355, 16759869, 16760383,
36+
16760897, 16761410, 16761924, 16762438, 16762952, 16763467, 16763981, 16764495,
37+
16765009, 16765522, 16766036, 16766550, 16767065, 16767579, 16768093, 16768607,
38+
16769121, 16769634, 16770148, 16770662, 16771176, 16771691, 16772205, 16772719,
39+
16773233, 16773746, 16774260, 16774774, 16775289, 16775803, 16776317, 16776831,
40+
16777089, 16777091, 16777092, 16777094, 16777096, 16777099, 16777101, 16777103,
41+
16777105, 16777107, 16777108, 16777110, 16777113, 16777115, 16777117, 16777119,
42+
16777121, 16777123, 16777124, 16777126, 16777128, 16777131, 16777133, 16777135,
43+
16777137, 16777139, 16777140, 16777142, 16777145, 16777147, 16777149, 16777151,
44+
16777153, 16777155, 16777156, 16777158, 16777160, 16777163, 16777165, 16777167,
45+
16777169, 16777171, 16777172, 16777174, 16777177, 16777179, 16777181, 16777183,
46+
16777185, 16777187, 16777188, 16777190, 16777192, 16777195, 16777197, 16777199,
47+
16777201, 16777203, 16777204, 16777206, 16777209, 16777211, 16777213, 16777215,
48+
};
49+
}
50+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
3+
namespace Spectrogram.Colormaps
4+
{
5+
class AfmhotReversed : IColormap
6+
{
7+
public (byte r, byte g, byte b) GetRGB(byte value)
8+
{
9+
byte[] bytes = BitConverter.GetBytes(rgb[value]);
10+
return (bytes[2], bytes[1], bytes[0]);
11+
}
12+
13+
// RGB values are derived from the AfmhotReversed colormap in Matplotlib 3.2.1 (https://matplotlib.org)
14+
private readonly int[] rgb =
15+
{
16+
16777215, 16777213, 16777211, 16777209, 16777207, 16777204, 16777203, 16777201,
17+
16777199, 16777197, 16777195, 16777193, 16777190, 16777188, 16777187, 16777185,
18+
16777183, 16777181, 16777179, 16777177, 16777175, 16777172, 16777171, 16777169,
19+
16777167, 16777165, 16777163, 16777161, 16777158, 16777156, 16777155, 16777153,
20+
16777151, 16777149, 16777147, 16777145, 16777143, 16777141, 16777139, 16777137,
21+
16777135, 16777133, 16777131, 16777128, 16777126, 16777124, 16777123, 16777121,
22+
16777119, 16777117, 16777115, 16777113, 16777111, 16777109, 16777107, 16777105,
23+
16777103, 16777101, 16777099, 16777096, 16777094, 16777092, 16777091, 16777089,
24+
16776831, 16776317, 16775803, 16775289, 16774775, 16774261, 16773746, 16773233,
25+
16772719, 16772205, 16771691, 16771176, 16770662, 16770148, 16769634, 16769121,
26+
16768607, 16768093, 16767579, 16767065, 16766551, 16766037, 16765522, 16765009,
27+
16764495, 16763981, 16763467, 16762952, 16762438, 16761924, 16761410, 16760897,
28+
16760383, 16759869, 16759355, 16758841, 16758327, 16757813, 16757298, 16756784,
29+
16756271, 16755757, 16755243, 16754728, 16754214, 16753700, 16753186, 16752672,
30+
16752159, 16751645, 16751131, 16750617, 16750103, 16749589, 16749074, 16748560,
31+
16748047, 16747533, 16747019, 16746504, 16745990, 16745476, 16744962, 16744448,
32+
16678400, 16546816, 16415232, 16283648, 16152064, 15954944, 15888896, 15757312,
33+
15625728, 15494144, 15362560, 15230976, 15033856, 14902272, 14836224, 14704640,
34+
14573056, 14441472, 14309888, 14178304, 14046720, 13849600, 13783552, 13651968,
35+
13520384, 13388800, 13257216, 13125632, 12928512, 12796928, 12730880, 12599296,
36+
12467712, 12336128, 12204544, 12072960, 11941376, 11744256, 11678208, 11546624,
37+
11415040, 11283456, 11151872, 11020288, 10823168, 10691584, 10625536, 10493952,
38+
10362368, 10230784, 10099200, 09967616, 09836032, 09638912, 09572864, 09441280,
39+
09309696, 09178112, 09046528, 08914944, 08717824, 08586240, 08520192, 08388608,
40+
08257536, 08126464, 07995392, 07864320, 07733248, 07536640, 07405568, 07340032,
41+
07208960, 07077888, 06946816, 06815744, 06619136, 06488064, 06356992, 06291456,
42+
06160384, 06029312, 05898240, 05767168, 05636096, 05439488, 05308416, 05242880,
43+
05111808, 04980736, 04849664, 04718592, 04521984, 04390912, 04259840, 04194304,
44+
04063232, 03932160, 03801088, 03670016, 03538944, 03342336, 03211264, 03145728,
45+
03014656, 02883584, 02752512, 02621440, 02424832, 02293760, 02162688, 02097152,
46+
01966080, 01835008, 01703936, 01572864, 01441792, 01245184, 01114112, 01048576,
47+
00917504, 00786432, 00655360, 00524288, 00327680, 00196608, 00065536, 00000000,
48+
};
49+
}
50+
}

0 commit comments

Comments
 (0)