Exemple #1
0
 public static IProcessorBuilder SetDefaultHorizontalConveyor(this IProcessorBuilder builder)
 {
     return(builder
            .SetPixelEnergyCalculator()
            .SetPixelPathsProcessor(false)
            .SetShortestPathFinder(false)
            .SetShortestPathRemover(false));
 }
Exemple #2
0
        public static IProcessorBuilder SetShortestPathRemover(this IProcessorBuilder builder, bool vertical)
        {
            IProcessor shortestPathRemover;

            if (vertical)
            {
                shortestPathRemover = new ShortestPathRemover();
            }
            else
            {
                shortestPathRemover = new HorizontalShortestPathRemover();
            }

            return(builder.SetProcessor(shortestPathRemover));
        }
Exemple #3
0
        public static IProcessorBuilder SetPixelPathsProcessor(this IProcessorBuilder builder, bool vertical)
        {
            IProcessor pixelPathsProcessor;

            if (vertical)
            {
                pixelPathsProcessor = new PixelPathsProcessor();
            }
            else
            {
                pixelPathsProcessor = new HorizontalPixelPathsProcessor();
            }

            return(builder.SetProcessor(pixelPathsProcessor));
        }
        public IRuntimeBuilder RegisterProcessor(IProcessorBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (processorBuilders.Contains(builder))
            {
                throw new ArgumentException("The builder has already been added.", nameof(builder));
            }

            processorBuilders.Add(builder);
            return(this);
        }
 /// <summary>
 /// Create <see cref="ProcessorBuilder"/> class with standard preferences.
 /// </summary>
 /// <param name="linkedLibraryFactory">Linked class</param>
 /// <exception cref="ArgumentNullException">Throw if linked library factory is null</exception>
 public StandardProcessorFactory(ILinkedLibraryFactory linkedLibraryFactory)
 {
     if (linkedLibraryFactory == null)
     {
         throw new ArgumentNullException(nameof(linkedLibraryFactory));
     }
     ProcessorBuilder = new ProcessorBuilder()
     {
         LexicalAnalyzer = new LexicalAnalyzer(LexicalRules),
         SyntacticAnalyzer = new SyntacticAnalyzer(SyntacticRules),
         SyntacticTarget = SyntacticTarget,
         Translator = new Translator(TranslateRules),
         Linker = new Linker(LinkerRules, linkedLibraryFactory.CreateLinkedLibrary()),
         Compiler = new Compiler()
     };
 }
Exemple #6
0
        private void ConfigureConveyor(IProcessorBuilder conveyor)
        {
            conveyor.SetPixelEnergyCalculator();

            conveyor.SetProcessor(
                context => SetImageToPictureBox(gradientPictureBox, context));

            conveyor.SetPixelPathsProcessor(vertical: true);

            conveyor.SetProcessor(
                context => SetImageToPictureBox(pixelPathPictureBox, context));

            conveyor.SetShortestPathFinder(vertical: true);

            conveyor.SetProcessor(MarkShortestPathAsRed);

            conveyor.SetProcessor(
                context => SetImageToPictureBox(shortestPathPictureBox, context));
        }
        /// <summary>
        ///  Initializes a new instance of the <see cref="Processor"/> class.
        /// </summary>
        /// <param name="builder">Builder class</param>
        /// <exception cref="ArgumentNullException">Throw if builder properties are null</exception>
        public Processor(IProcessorBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (builder.LexicalAnalyzer == null)
            {
                throw new ArgumentNullException(nameof(builder.LexicalAnalyzer));
            }
            if (builder.SyntacticAnalyzer == null)
            {
                throw new ArgumentNullException(nameof(builder.SyntacticAnalyzer));
            }
            if (builder.SyntacticTarget == null)
            {
                throw new ArgumentNullException(nameof(builder.SyntacticTarget));
            }
            if (builder.Translator == null)
            {
                throw new ArgumentNullException(nameof(builder.Translator));
            }
            if (builder.Linker == null)
            {
                throw new ArgumentNullException(nameof(builder.Linker));
            }
            if (builder.Compiler == null)
            {
                throw new ArgumentNullException(nameof(builder.Compiler));
            }

            LexicalAnalyzer = builder.LexicalAnalyzer;
            SyntacticAnalyzer = builder.SyntacticAnalyzer;
            SyntacticTarget = builder.SyntacticTarget;
            Translator = builder.Translator;
            Linker = builder.Linker;
            Compiler = builder.Compiler;
        }
Exemple #8
0
 public static IProcessorBuilder SetPixelEnergyCalculator(this IProcessorBuilder builder)
 {
     return(builder.SetProcessor(new PixelEnergyCalculator()));
 }
Exemple #9
0
 public static IProcessorBuilder SetProcessor(this IProcessorBuilder builder, Action <ProcessingContext> processingAction)
 {
     return(builder.SetProcessor(new GenericProcessor(processingAction)));
 }
Exemple #10
0
 public static IProcessorBuilder SetJpegImageSaver(this IProcessorBuilder builder, int width, int height)
 {
     return(builder.SetProcessor(new JpegImageSaver(width, height)));
 }