Ejemplo n.º 1
0
        private void PaletteUpload()
        {
            // we can only display 96 colors in the color grid due to it's size, so if there's more, bin them

            /*while (CustomCollection.Count > 96)
             * {
             *  CustomCollection.RemoveAt(CustomCollection.Count - 1);
             * }*/
            while (colors.Count > 96)
            {
                colors.RemoveAt(customPalette.ColorCollection.Count - 1);
            }

            // or if we have less, fill in the blanks

            /* while (CustomCollection.Count < 96)
             * {
             *   CustomCollection.Add(Color.White);
             * }*/

            if (null != colorGrid)
            {
                colorGrid.Colors.Clear();
                //colorGrid.Colors.AddRange(customPalette.ColorCollection);
                colorGrid.Colors = colors;// new ColorCollection(CustomCollection);
            }
        }
    /// <summary>
    /// Deserializes the <see cref="ColorCollection" /> contained by the specified <see cref="Stream" />.
    /// </summary>
    /// <param name="stream">The <see cref="Stream" /> that contains the palette to deserialize.</param>
    /// <returns>The <see cref="ColorCollection" /> being deserialized.</returns>
    public override ColorCollection Deserialize(Stream stream)
    {
      ColorCollection results;
      int count;

      if (stream == null)
      {
        throw new ArgumentNullException(nameof(stream));
      }

      results = new ColorCollection();

      count = (int)(stream.Length / 3);

      for (int i = 0; i < count; i++)
      {
        int r;
        int g;
        int b;

        r = stream.ReadByte();
        g = stream.ReadByte();
        b = stream.ReadByte();

        results.Add(Color.FromArgb(r, g, b));
      }

      if (count == 257)
      {
        int realCount;

        // undocumented on the spec page, but when poking around
        // the Optimized Colors preset files of CS2, I found that
        // four extra bytes were added to some files. The second of
        // these extra bytes specified how many colours are
        // really in use (anything else is just padding)

        realCount = results[256].G;

        while (results.Count > realCount)
        {
          results.RemoveAt(realCount);
        }
      }

      return results;
    }