示例#1
0
 public void Write(Color64 value)
 {
     Write(value.r);
     Write(value.g);
     Write(value.b);
     Write(value.a);
 }
示例#2
0
        public void ConversionTest()
        {
            Color32 c = Color32.FromArgb(0x11223344);

            Color64 c64 = new Color64(c);

            Assert.AreEqual(c, c64.ToColor32());
        }
示例#3
0
        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);
        }