private void ScratchForm_Load(object sender, EventArgs e) { string fileName; ColorCollection source; ColorCollection destination; AdobePhotoshopColorSwatchSerializer serializer; fileName = Path.GetTempFileName(); //source = ColorCollection.LoadPalette(Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "palettes"), "grayscale.pal")); source = ColorCollection.LoadPalette(Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "palettes"), "db32.gpl")); serializer = new AdobePhotoshopColorSwatchSerializer(); using (Stream stream = File.Create(fileName)) { serializer.Serialize(stream, source, AdobePhotoshopColorSwatchColorSpace.Hsb); //serializer.Serialize(stream, source, AdobePhotoShopColorSwatchColorSpace.Grayscale); } destination = ColorCollection.LoadPalette(fileName); colorGrid1.Colors = source; colorGrid2.Colors = destination; File.Delete(fileName); }
public void CanWriteTest() { // arrange IPaletteSerializer target; bool actual; target = new AdobePhotoshopColorSwatchSerializer(); // act actual = target.CanWrite; // assert actual.Should().BeTrue(); }
public void SerializeHslTest() { // arrange AdobePhotoshopColorSwatchSerializer target; ColorCollection expected; ColorCollection actual; MemoryStream write; target = new AdobePhotoshopColorSwatchSerializer(); expected = this.CreateDawnBringer32Palette(false); write = new MemoryStream(); // act target.Serialize(write, expected, AdobePhotoshopColorSwatchColorSpace.Hsb); using (MemoryStream read = new MemoryStream(write.ToArray())) { actual = new AdobePhotoshopColorSwatchSerializer().Deserialize(read); } // assert // TODO: Source HSL values are comprised of floating point numbers but the Adobe // file specification only allows whole numbers. This is causing a loss of precision // when converting to RGB with a +/- 1 difference. Might be a problem, might not be... // the intended use case is for RGB palettes only but may need to revisit this actual.Count.Should().Be(expected.Count); for (int i = 0; i < actual.Count; i++) { Color actualColor; Color expectedColor; actualColor = actual[i]; expectedColor = expected[i]; ((int)actualColor.R).Should().BeInRange(expectedColor.R - 1, expectedColor.R + 1); ((int)actualColor.G).Should().BeInRange(expectedColor.G - 1, expectedColor.G + 1); ((int)actualColor.B).Should().BeInRange(expectedColor.B - 1, expectedColor.B + 1); } }
public void DeserializeTest() { // arrange IPaletteSerializer target; string fileName; ColorCollection expected; ColorCollection actual; fileName = Path.Combine(this.DataPath, "db32.aco"); target = new AdobePhotoshopColorSwatchSerializer(); expected = this.CreateDawnBringer32Palette(false); // act using (Stream stream = File.OpenRead(fileName)) { actual = target.Deserialize(stream); } // assert actual.Should().Equal(expected); }
public void SerializeGrayscaleTest() { // arrange AdobePhotoshopColorSwatchSerializer target; ColorCollection expected; ColorCollection actual; MemoryStream write; target = new AdobePhotoshopColorSwatchSerializer(); expected = ColorCollection.LoadPalette(Path.Combine(this.DataPath, "grayscale.pal")); write = new MemoryStream(); // act target.Serialize(write, expected, AdobePhotoshopColorSwatchColorSpace.Grayscale); using (MemoryStream read = new MemoryStream(write.ToArray())) { actual = new AdobePhotoshopColorSwatchSerializer().Deserialize(read); } // assert // TODO: The grayscale color space suffers the same problem as HSB - see that test for more details actual.Count.Should().Be(expected.Count); for (int i = 0; i < actual.Count; i++) { Color actualColor; Color expectedColor; actualColor = actual[i]; expectedColor = expected[i]; ((int)actualColor.R).Should().BeInRange(expectedColor.R - 1, expectedColor.R + 1); ((int)actualColor.G).Should().BeInRange(expectedColor.G - 1, expectedColor.G + 1); ((int)actualColor.B).Should().BeInRange(expectedColor.B - 1, expectedColor.B + 1); } }
public void SerializeTest() { // arrange IPaletteSerializer target; ColorCollection expected; ColorCollection actual; MemoryStream write; target = new AdobePhotoshopColorSwatchSerializer(); expected = this.CreateDawnBringer32Palette(false); write = new MemoryStream(); // act target.Serialize(write, expected); using (MemoryStream read = new MemoryStream(write.ToArray())) { actual = new AdobePhotoshopColorSwatchSerializer().Deserialize(read); } // assert CollectionAssert.AreEqual(expected, actual); }