public static Tuple <List <PalMap>, Palette> Convert(byte[][] Imgs, int W) { Palette Pal = new Palette(); List <PalMap> PMs = new List <PalMap>(); foreach (byte[] Img in Imgs) { PalMap PM = new PalMap(); PMs.Add(PM); PM.Pixels = new int[Img.Length / W][]; for (int i = 0; i < PM.Pixels.Length; i++) { PM.Pixels[i] = new int[W]; } for (int i = 0; i < Img.Length / 4; i++) { byte B = Img[4 * i]; byte G = Img[4 * i + 1]; byte R = Img[4 * i + 2]; byte A = Img[4 * i + 3]; Colour C = new Colour(R, G, B, A); if (Pal.Colours.Count == 0) { Pal.Colours.Add(C); PM.Pixels[i / W][i % W] = 0; } else { for (int j = 0; j < Pal.Colours.Count; j++) { if (Pal.Colours[j].DecCode == C.DecCode) { PM.Pixels[i / W][i % W] = j; break; } else if (j == Pal.Colours.Count - 1) { Pal.Colours.Add(C); PM.Pixels[i / W][i % W] = j + 1; } } } } } return(new Tuple <List <PalMap>, Palette>(PMs, Pal)); }
public static byte[] Convert(PalMap PM, Palette Pal) { byte[] res = new byte[PM.Width * PM.Height * 4]; for (int i = 0; i < PM.Width * PM.Height; i++) { int w = W(i, PM.Width); int h = H(i, PM.Width); res[4 * i] = Pal.Colours[PM.Pixels[h][w]].B; res[4 * i + 1] = Pal.Colours[PM.Pixels[h][w]].G; res[4 * i + 2] = Pal.Colours[PM.Pixels[h][w]].R; res[4 * i + 3] = Pal.Colours[PM.Pixels[h][w]].A; } return(res); }
public static Tuple<List<PalMap>, Palette> Convert(byte[][] Imgs, int W) { Palette Pal = new Palette(); List<PalMap> PMs = new List<PalMap>(); foreach (byte[] Img in Imgs) { PalMap PM = new PalMap(); PMs.Add(PM); PM.Pixels = new int[Img.Length / W][]; for (int i = 0; i < PM.Pixels.Length; i++) PM.Pixels[i] = new int[W]; for (int i = 0; i < Img.Length / 4; i++) { byte B = Img[4 * i]; byte G = Img[4 * i + 1]; byte R = Img[4 * i + 2]; byte A = Img[4 * i + 3]; Colour C = new Colour(R, G, B, A); if (Pal.Colours.Count == 0) { Pal.Colours.Add(C); PM.Pixels[i / W][i % W] = 0; } else for (int j = 0; j < Pal.Colours.Count; j++) if (Pal.Colours[j].DecCode == C.DecCode) { PM.Pixels[i / W][i % W] = j; break; } else if (j == Pal.Colours.Count - 1) { Pal.Colours.Add(C); PM.Pixels[i / W][i % W] = j + 1; } } } return new Tuple<List<PalMap>, Palette>(PMs, Pal); }
public static byte[] Convert(PalMap PM, Palette Pal) { byte[] res = new byte[PM.Width * PM.Height * 4]; for (int i = 0; i < PM.Width * PM.Height; i++) { int w = W(i, PM.Width); int h = H(i, PM.Width); res[4 * i] = Pal.Colours[PM.Pixels[h][w]].B; res[4 * i + 1] = Pal.Colours[PM.Pixels[h][w]].G; res[4 * i + 2] = Pal.Colours[PM.Pixels[h][w]].R; res[4 * i + 3] = Pal.Colours[PM.Pixels[h][w]].A; } return res; }