public void Write(Color64 value) { Write(value.r); Write(value.g); Write(value.b); Write(value.a); }
public void ConversionTest() { Color32 c = Color32.FromArgb(0x11223344); Color64 c64 = new Color64(c); Assert.AreEqual(c, c64.ToColor32()); }
public void UnionTest(ulong value, ushort a, ushort r, ushort g, ushort b) { Color64 c = new Color64(value); Assert.AreEqual(a, c.A); Assert.AreEqual(r, c.R); Assert.AreEqual(g, c.G); Assert.AreEqual(b, c.B); c = new Color64(a, r, g, b); Assert.AreEqual(value, (ulong)c.ToArgb()); }
public static Color64[,] Scale16(Color32[,] sourcePixels) { var sourceWidth = sourcePixels.GetLength(1); var sourceHeight = sourcePixels.GetLength(0); var destinationWidth = (int)Math.Floor(sourceWidth / 16.0); var destinationHeight = (int)Math.Floor(sourceHeight / 16.0); var destinationPixels = new Color64[destinationHeight, destinationWidth]; Parallel.For(0, destinationWidth, i => { var ii = i * 16; Parallel.For(0, destinationHeight, j => { var sum = new int[4]; var jj = j * 16; for (var x = 0; x < 16; x++) { var iii = ii + x; for (var y = 0; y < 16; y++) { var jjj = jj + y; sum[0] += sourcePixels[jjj, iii].r; sum[1] += sourcePixels[jjj, iii].g; sum[2] += sourcePixels[jjj, iii].b; sum[3] += sourcePixels[jjj, iii].a; } } destinationPixels[j, i].r = (ushort)(257 * sum[0] / 256); destinationPixels[j, i].g = (ushort)(257 * sum[1] / 256); destinationPixels[j, i].b = (ushort)(257 * sum[2] / 256); destinationPixels[j, i].a = (ushort)(257 * sum[3] / 256); }); }); return(destinationPixels); }