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; }