public void Color_Types_From_Vector3_Produce_Equal_Scaled_Component_OutPut()
        {
            Rgba32     color       = new Rgba32(new Vector3(24 / 255F, 48 / 255F, 96 / 255F));
            RgbaVector colorVector = new RgbaVector(new Vector3(24 / 255F, 48 / 255F, 96 / 255F));

            Assert.Equal(color.R, (byte)(colorVector.R * 255));
            Assert.Equal(color.G, (byte)(colorVector.G * 255));
            Assert.Equal(color.B, (byte)(colorVector.B * 255));
            Assert.Equal(color.A, (byte)(colorVector.A * 255));
        }
        public void Color_Types_From_Floats_Produce_Equal_Scaled_Component_OutPut()
        {
            var color       = new Rgba32(24 / 255F, 48 / 255F, 96 / 255F, 192 / 255F);
            var colorVector = new RgbaVector(24 / 255F, 48 / 255F, 96 / 255F, 192 / 255F);

            Assert.Equal(color.R, (byte)(colorVector.R * 255));
            Assert.Equal(color.G, (byte)(colorVector.G * 255));
            Assert.Equal(color.B, (byte)(colorVector.B * 255));
            Assert.Equal(color.A, (byte)(colorVector.A * 255));
        }
        public void Color_Types_From_Bytes_Produce_Equal_Scaled_Component_OutPut()
        {
            Rgba32     color       = new Rgba32(24, 48, 96, 192);
            RgbaVector colorVector = new RgbaVector(24, 48, 96, 192);

            Assert.Equal(color.R, (byte)(colorVector.R * 255));
            Assert.Equal(color.G, (byte)(colorVector.G * 255));
            Assert.Equal(color.B, (byte)(colorVector.B * 255));
            Assert.Equal(color.A, (byte)(colorVector.A * 255));
        }
        public void Color_Types_From_Hex_Produce_Equal_Scaled_Component_OutPut()
        {
            var color       = Rgba32.FromHex("183060C0");
            var colorVector = RgbaVector.FromHex("183060C0");

            Assert.Equal(color.R, (byte)(colorVector.R * 255));
            Assert.Equal(color.G, (byte)(colorVector.G * 255));
            Assert.Equal(color.B, (byte)(colorVector.B * 255));
            Assert.Equal(color.A, (byte)(colorVector.A * 255));
        }
Beispiel #5
0
        public void Color_Types_To_BgraBytes_Produce_Equal_OutPut()
        {
            Rgba32     color       = new Rgba32(24, 48, 96, 192);
            RgbaVector colorVector = new RgbaVector(24, 48, 96, 192);

            byte[] bgra       = new byte[4];
            byte[] bgraVector = new byte[4];

            color.ToZyxwBytes(bgra, 0);
            colorVector.ToZyxwBytes(bgraVector, 0);

            Assert.Equal(bgra, bgraVector);
        }
        public void Color_Types_To_RgbBytes_Produce_Equal_OutPut()
        {
            var color       = new Rgba32(24, 48, 96, 192);
            var colorVector = new RgbaVector(24, 48, 96, 192);

            var rgb       = default(Rgb24);
            var rgbVector = default(Rgb24);

            color.ToRgb24(ref rgb);
            colorVector.ToRgb24(ref rgbVector);

            Assert.Equal(rgb, rgbVector);
        }
Beispiel #7
0
        public void Color_Types_To_RgbaBytes_Produce_Equal_OutPut()
        {
            var color       = new Rgba32(24, 48, 96, 192);
            var colorVector = new RgbaVector(24 / 255F, 48 / 255F, 96 / 255F, 192 / 255F);

            Rgba32 rgba       = default;
            Rgba32 rgbaVector = default;

            color.ToRgba32(ref rgba);
            colorVector.ToRgba32(ref rgbaVector);

            Assert.Equal(rgba, rgbaVector);
        }
        public void FloatLayout()
        {
            var     color     = new RgbaVector(1F, 2, 3, 4);
            Vector4 colorBase = Unsafe.As <RgbaVector, Vector4>(ref Unsafe.Add(ref color, 0));

            float[] ordered = new float[4];
            colorBase.CopyTo(ordered);

            Assert.Equal(1, ordered[0]);
            Assert.Equal(2, ordered[1]);
            Assert.Equal(3, ordered[2]);
            Assert.Equal(4, ordered[3]);
        }
        public void AreNotEqual()
        {
            var color1 = new RgbaVector(1, 0, 0, 1);
            var color2 = new RgbaVector(0, 0, 0, 1);
            var color3 = RgbaVector.FromHex("#000");
            var color4 = RgbaVector.FromHex("#000000");
            var color5 = RgbaVector.FromHex("#FF000000");

            Assert.NotEqual(color1, color2);
            Assert.NotEqual(color1, color3);
            Assert.NotEqual(color1, color4);
            Assert.NotEqual(color1, color5);
        }
        public void Color_Types_To_BgraBytes_Produce_Equal_OutPut()
        {
            var color       = new Rgba32(24, 48, 96, 192);
            var colorVector = new RgbaVector(24, 48, 96, 192);

            var bgra       = default(Bgra32);
            var bgraVector = default(Bgra32);

            color.ToBgra32(ref bgra);
            colorVector.ToBgra32(ref bgraVector);

            Assert.Equal(bgra, bgraVector);
        }
Beispiel #11
0
        public void Color_Types_To_RgbaBytes_Produce_Equal_OutPut()
        {
            Rgba32     color       = new Rgba32(24, 48, 96, 192);
            RgbaVector colorVector = new RgbaVector(24, 48, 96, 192);

            byte[] rgba       = new byte[4];
            byte[] rgbaVector = new byte[4];

            color.ToXyzwBytes(rgba, 0);
            colorVector.ToXyzwBytes(rgbaVector, 0);

            Assert.Equal(rgba, rgbaVector);
        }
        public void AreEqual()
        {
            var color1 = new RgbaVector(0, 0, 0F);
            var color2 = new RgbaVector(0, 0, 0, 1F);
            var color3 = RgbaVector.FromHex("#000");
            var color4 = RgbaVector.FromHex("#000F");
            var color5 = RgbaVector.FromHex("#000000");
            var color6 = RgbaVector.FromHex("#000000FF");

            Assert.Equal(color1, color2);
            Assert.Equal(color1, color3);
            Assert.Equal(color1, color4);
            Assert.Equal(color1, color5);
            Assert.Equal(color1, color6);
        }
        public void ConstructorAssignsProperties()
        {
            var color1 = new RgbaVector(1, .1F, .133F, .864F);

            Assert.Equal(1F, color1.R);
            Assert.Equal(.1F, color1.G);
            Assert.Equal(.133F, color1.B);
            Assert.Equal(.864F, color1.A);

            var color2 = new RgbaVector(1, .1f, .133f);

            Assert.Equal(1F, color2.R);
            Assert.Equal(.1F, color2.G);
            Assert.Equal(.133F, color2.B);
            Assert.Equal(1F, color2.A);
        }
        public void FromAndToHex()
        {
            var color = RgbaVector.FromHex("#AABBCCDD");

            Assert.Equal(170 / 255F, color.R);
            Assert.Equal(187 / 255F, color.G);
            Assert.Equal(204 / 255F, color.B);
            Assert.Equal(221 / 255F, color.A);

            color.A = 170 / 255F;
            color.B = 187 / 255F;
            color.G = 204 / 255F;
            color.R = 221 / 255F;

            Assert.Equal("DDCCBBAA", color.ToHex());

            color.R = 0;

            Assert.Equal("00CCBBAA", color.ToHex());

            color.A = 255 / 255F;

            Assert.Equal("00CCBBFF", color.ToHex());
        }
        public void ColorBurn()
        {
            RgbaVector colorBurn = RgbaVector.ColorBurn(Backdrop, Source);

            Assert.Equal(colorBurn.ToVector4(), new RgbaVector(0, 0, 0).ToVector4(), FloatComparer);
        }
        public void Darken()
        {
            RgbaVector darken = RgbaVector.Darken(Backdrop, Source);

            Assert.Equal(darken.ToVector4(), new RgbaVector(0, 102, 0).ToVector4(), FloatComparer);
        }
        public void Exclusion()
        {
            RgbaVector exclusion = RgbaVector.Exclusion(Backdrop, Source);

            Assert.Equal(exclusion.ToVector4(), new RgbaVector(204, 122, 153).ToVector4(), FloatComparer);
        }
        public void Difference()
        {
            RgbaVector difference = RgbaVector.Difference(Backdrop, Source);

            Assert.Equal(difference.ToVector4(), new RgbaVector(204, 0, 153).ToVector4(), FloatComparer);
        }
        public void Normal()
        {
            RgbaVector normal = RgbaVector.Normal(Backdrop, Source);

            Assert.True(normal == Source);
        }
        public void HardLight()
        {
            RgbaVector hardLight = RgbaVector.HardLight(Backdrop, Source);

            Assert.Equal(hardLight.ToVector4(), new RgbaVector(0, 82, 51).ToVector4(), FloatComparer);
        }
        public void Overlay()
        {
            RgbaVector overlay = RgbaVector.Overlay(Backdrop, Source);

            Assert.Equal(overlay.ToVector4(), new RgbaVector(153, 82, 0).ToVector4(), FloatComparer);
        }
        public void SoftLight()
        {
            RgbaVector softLight = RgbaVector.SoftLight(Backdrop, Source);

            Assert.Equal(softLight.ToVector4(), new RgbaVector(163, 90, 0).ToVector4(), FloatComparer);
        }
        public void ColorDodge()
        {
            RgbaVector colorDodge = RgbaVector.ColorDodge(Backdrop, Source);

            Assert.Equal(colorDodge.ToVector4(), new RgbaVector(204, 170, 0).ToVector4(), FloatComparer);
        }
        public void Lighten()
        {
            RgbaVector lighten = RgbaVector.Lighten(Backdrop, Source);

            Assert.Equal(lighten.ToVector4(), new RgbaVector(204, 102, 153).ToVector4(), FloatComparer);
        }
Beispiel #25
0
        public override TextureContent Process(TextureContent input, ContentProcessorContext context)
        {
            if (input.Faces[0][0].TryGetFormat(out SurfaceFormat format))
            {
                // If it is already a compressed format, we cannot do anything else so just return it
                if (format.IsCompressedFormat())
                {
                    return(input);
                }
            }

            if (ColorKeyEnabled || ResizeToPowerOfTwo || MakeSquare || PremultiplyAlpha || GenerateMipmaps)
            {
                // Convert to floating point format for modifications. Keep the original format for conversion back later on if required.
                var originalType = input.Faces[0][0].GetType();
                try
                {
                    input.ConvertBitmapType(typeof(PixelBitmapContent <RgbaVector>));
                }
                catch (Exception ex)
                {
                    context.Logger.LogImportantMessage("Could not convert input texture for processing. " + ex.ToString());
                    throw;
                }

                if (GenerateMipmaps)
                {
                    input.GenerateMipmaps(true);
                }

                for (int f = 0; f < input.Faces.Count; ++f)
                {
                    var face = input.Faces[f];
                    for (int m = 0; m < face.Count; ++m)
                    {
                        var bmp = (PixelBitmapContent <RgbaVector>)face[m];

                        if (ColorKeyEnabled)
                        {
                            var original = new RgbaVector(); // TODO: UNsafe.SkipInit
                            original.FromScaledVector(ColorKeyColor.ToScaledVector4());
                            bmp.ReplaceColor(original, new RgbaVector(0, 0, 0, 0));
                        }

                        if (ResizeToPowerOfTwo)
                        {
                            if (!GraphicsUtil.IsPowerOfTwo(bmp.Width) ||
                                !GraphicsUtil.IsPowerOfTwo(bmp.Height) ||
                                (MakeSquare && bmp.Height != bmp.Width))
                            {
                                var newWidth  = GraphicsUtil.GetNextPowerOfTwo(bmp.Width);
                                var newHeight = GraphicsUtil.GetNextPowerOfTwo(bmp.Height);
                                if (MakeSquare)
                                {
                                    newWidth = newHeight = Math.Max(newWidth, newHeight);
                                }

                                var resized = new PixelBitmapContent <RgbaVector>(newWidth, newHeight);
                                BitmapContent.Copy(bmp, resized);
                                bmp = resized;
                            }
                        }
                        else if (MakeSquare && bmp.Height != bmp.Width)
                        {
                            var newSize = Math.Max(bmp.Width, bmp.Height);
                            var resized = new PixelBitmapContent <RgbaVector>(newSize, newSize);
                            BitmapContent.Copy(bmp, resized);
                        }

                        if (PremultiplyAlpha)
                        {
                            var pixels = bmp.GetPixelSpan();
                            for (int i = 0; i < pixels.Length; i++)
                            {
                                ref RgbaVector pixel = ref pixels[i];
                                pixel.R *= pixel.A;
                                pixel.G *= pixel.A;
                                pixel.B *= pixel.A;
                            }
                        }

                        face[m] = bmp;
                    }
                }

                // If no change to the surface format was desired, change it back now before it early outs
                if (TextureFormat == TextureProcessorOutputFormat.NoChange)
                {
                    input.ConvertBitmapType(originalType);
                }
            }