public override ExecutionResult Run(IStepExecutionContext context) { var overlayOptions = _options.Overlay; if (!overlayOptions.ApplyOverlay) { return(ExecutionResult.Next()); } Guard.Against.Null(SourceImage, nameof(SourceImage)); var clut = _clutService.GetClut(); OverlayImage = new Image <Rgba32>(SourceImage.Width, SourceImage.Height); var operation = new ApplyClutRowOperation(SourceImage, OverlayImage, clut); ParallelRowIterator.IterateRows(Configuration.Default, SourceImage.Bounds(), in operation); return(ExecutionResult.Next()); }