public virtual string ToLcd(int number, Scaling scaling)
        {
            IList <Digit> digits = digitsSplitter.Convert(number);
            IList <Digit> scaled = digitScaler.Scale(digits, scaling);

            return(digitPrinter.Render(scaled));
        }
        public virtual string Repeat(char aChar, Scaling scaling)
        {
            StringBuilder acc = new StringBuilder();

            scaling.Times(() => acc.Append(aChar));
            return(acc.ToString());
        }
        private Digit Scale(Digit digit, Scaling scaling)
        {
            if (scaling.HasNone())
            {
                return(digit);
            }

            List <Line> scaled = new List <Line>();

            bool oddLine = true;

            foreach (Line line in digit.Lines())
            {
                Line scaledLine = line.ScaleHorizontal(repeater, scaling);
                if (oddLine)
                {
                    scaled.Add(scaledLine);
                }
                else
                {
                    scaled.AddRange(repeater.Repeat(scaledLine, scaling));
                }
                oddLine = !oddLine;
            }

            return(digit.Scale(scaled));
        }
        public virtual IList <T> Repeat <T>(T element, Scaling scaling)
        {
            IList <T> elements = new List <T>();

            scaling.Times(() => elements.Add(element));
            return(elements);
        }
        public override bool Equals(object other)
        {
            if (!(other is Scaling))
            {
                return(false);
            }

            Scaling that = (Scaling)other;

            return(this.times == that.times);
        }
Exemple #6
0
        public virtual string ToLcd(int number, Scaling scaling)
        {
            if (scaling == null)
            {
                throw new ArgumentNullException(nameof(scaling));
            }

            IList <Digit> digits = digitsSplitter.Convert(number);
            IList <Digit> scaled = digitScaler.Scale(digits, scaling);

            return(digitPrinter.Render(scaled));
        }
        public virtual string Repeat(char aChar, Scaling scaling)
        {
            if (scaling == null)
            {
                throw new ArgumentNullException(nameof(scaling));
            }

            StringBuilder acc = new StringBuilder();

            scaling.Times(() => acc.Append(aChar));
            return(acc.ToString());
        }
        public static void Main(string[] args)
        {
            LcdDisplay lcdDisplay = new LcdDisplay(                                        //
                new DigitsSplitter(new NumeralSystem(), new DigitFactory(new Patterns())), //
                new DigitScaler(new ScalingRepeater()),                                    //
                new DigitPrinter(new Zipper()));

            int     number  = Convert.ToInt32(args[0]);
            Scaling scaling = Scaling.Of(Convert.ToInt32(args[1]));

            Console.WriteLine(lcdDisplay.ToLcd(number, scaling));
            Console.ReadKey();
        }
        public virtual IList <Digit> Scale(IList <Digit> digits, Scaling scaling)
        {
            if (digits == null)
            {
                throw new ArgumentNullException(nameof(digits));
            }
            if (scaling == null)
            {
                throw new ArgumentNullException(nameof(scaling));
            }

            return(digits.Select(d => Scale(d, scaling)).ToList());
        }
Exemple #10
0
        public virtual Line ScaleHorizontal(ScalingRepeater repeater, Scaling scaling)
        {
            if (repeater == null)
            {
                throw new ArgumentNullException(nameof(repeater));
            }
            if (scaling == null)
            {
                throw new ArgumentNullException(nameof(scaling));
            }

            char[] chars = line.ToCharArray();
            return(new Line(chars[0] + repeater.Repeat(chars[1], scaling) + chars[2]));
        }
        public virtual IList <T> Repeat <T>(T element, Scaling scaling)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }
            if (scaling == null)
            {
                throw new ArgumentNullException(nameof(scaling));
            }

            IList <T> elements = new List <T>();

            scaling.Times(() => elements.Add(element));
            return(elements);
        }
Exemple #12
0
 public Scaling GetScaling()
 {
     return(args.Length > 1 ? Scaling.Of(Convert.ToInt32(args[1])) : Scaling.None);
 }
 public virtual IList <Digit> Scale(IList <Digit> digits, Scaling scaling)
 {
     return(digits.Select(d => Scale(d, scaling)).ToList());
 }