示例#1
0
 /// <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));
 }
示例#2
0
 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));
 }
示例#3
0
        /*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));
        }