/// <summary>
 /// Dumps to console.
 /// </summary>
 /// <param name="gradientFinder">The gradient finder.</param>
 private static void DumpToConsole(GradientFinder gradientFinder)
 {
     foreach (var part in gradientFinder.GradientParts)
     {
         var magickColor = MagickColor.FromRgba((byte)part.Red, (byte)part.Green, (byte)part.Blue, (byte)part.Alpha);
         Console.WriteLine($"{(part.Position.ToString("00.00", CultureInfo.InvariantCulture) + "%").PadLeft(7)} - {magickColor}");
     }
 }
Exemple #2
0
        public void ComplexGradient(string fileName, bool isHorizontal)
        {
            var fullPath       = this.GetFullPath(fileName);
            var gradientFinder = new GradientFinder(fullPath)
            {
                IsHorizontal = isHorizontal
            };

            gradientFinder.FindGradient();

            Assert.True(gradientFinder.GradientParts.Count > 2);
        }
Exemple #3
0
        public void SimpleGradient(string fileName, bool isHorizontal)
        {
            var fullPath       = this.GetFullPath(fileName);
            var gradientFinder = new GradientFinder(fullPath)
            {
                IsHorizontal = isHorizontal
            };

            gradientFinder.FindGradient();

            Assert.Equal(2, gradientFinder.GradientParts.Count);
        }
Exemple #4
0
        public void ComplexGradientMoreToleranceIsLessPart(string fileName, bool isHorizontal, int minTolerance, int maxTolerance)
        {
            var fullPath = this.GetFullPath(fileName);
            var minToleranceGradientFinder = new GradientFinder(fullPath)
            {
                IsHorizontal = isHorizontal, Tolerance = minTolerance
            };
            var maxToleranceGradientFinder = new GradientFinder(fullPath)
            {
                IsHorizontal = isHorizontal, Tolerance = maxTolerance
            };

            minToleranceGradientFinder.FindGradient();
            maxToleranceGradientFinder.FindGradient();

            Assert.True(minToleranceGradientFinder.GradientParts.Count > maxToleranceGradientFinder.GradientParts.Count);
        }
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Usage : ConvertPngToGradient.exe <filename> <options>");
                Console.WriteLine("<options> can be :");
                Console.WriteLine("--horizontal : the gradient is not vertical, it's horizontal");
                Console.WriteLine("--tolerance<value> : the tolerance to be used, must be between 1 and 255");
                Console.WriteLine("Sample : ConvertPngToGradient.exe mygradiant.png --horizontal --tolerance10");

                return;
            }

            var gradientFinder = new GradientFinder(args[0]);

            for (var index = 1; index < args.Length; index++)
            {
                var argument = args[index];

                if (argument.Equals("--horizontal", StringComparison.InvariantCultureIgnoreCase))
                {
                    gradientFinder.IsHorizontal = true;
                }

                var toleranceMatch = ToleranceRegex.Match(argument);
                if (toleranceMatch.Success)
                {
                    var tolerance = Convert.ToInt32(toleranceMatch.Groups[1].Value);

                    if (tolerance < 0 || tolerance > 255)
                    {
                        Console.WriteLine("Tolerance must be between 1 and 255");
                        return;
                    }

                    gradientFinder.Tolerance = tolerance;
                }
            }

            gradientFinder.FindGradient();
            DumpToConsole(gradientFinder);
        }