/// <summary> /// Parses palette from byte array. /// </summary> /// <param name="palette"> /// Palette data as bytes. Usually multiple of three. /// </param> /// <returns> /// Palette as color array. /// </returns> public static ImagePalette ReadPalette(byte[] palette) { if (palette.Length % 3 != 0) { throw new Exception("Palette has not appropriate length."); } return(ImagePalette.Load(new MemoryStream(palette), palette.Length / 3, PaletteFormat.Binary)); }
private static ImagePalette ReadGlobalPalette(int length, Stream stream) { if (length != 192) { throw new Exception("Global palette has not appropriate length."); } return(ImagePalette.Load(stream, length / 3, PaletteFormat.Binary)); }
/*private static void LoadPalette(int index) * { * int subindex, fileindex; * if(!Common.E(index, out fileindex, out subindex))return; * using(FileStream stream = new FileStream(String.Format(Paths.PaletteN, fileindex), FileMode.Open)) * { * XLDNavigator nav = XLDNavigator.ReadToIndex(stream, (short)subindex); * Palettes[index] = ReadPalette(nav, nav.SubfileLength); * } * }*/ /// <summary> /// Parses palette from stream. /// </summary> /// <param name="input"> /// Input stream containing palette data. /// </param> /// <param name="length"> /// Length of palette bytes. Usually triple of colors count. /// </param> /// <returns> /// Palette as color array. /// </returns> public static ImagePalette ReadPalette(Stream input, int length) { if (length % 3 != 0) { throw new Exception("Palette has not appropriate length."); } return(ImagePalette.Load(input, length / 3, PaletteFormat.Binary)); }