public void Build(IWorkflowBuilder <GeostationaryWorkflowData> builder) { builder .Initialise() .CreateActivity() .InitialiseProgressBar(data => data.Activity !.Registrations.Count + 1) .If(data => data.Activity !.Registrations.Any()) .Do(branch => branch .ForEach(data => data.Activity !.Registrations, _ => false) .Do(registration => registration .SetWorkflowRegistration() .ShouldWriteSingle() .Branch(true, builder.CreateBranch() .LoadImageSingle() .NormaliseImage() .EqualiseOverlayHistogram() .RenderOverlay() .RenderUnderlay() .ComposeOverlay() .ColourCorrect() .ApplyHaze() .SaveImage() ) ) ) .LogCompletion(); }
public void Build(IWorkflowBuilder <EquirectangularWorkflowData> builder) { builder .Initialise() .RegisterImages() .InitialiseProgressBar(data => data.Activities.Count) .If(data => data.Activities.Any()) .Do(branch => branch .ForEach(data => data.Activities, _ => false) .Do(activityStep => activityStep .SetWorkflowActivity() .CalculateVisibleRange() .CalculateGlobalOffset() .ForEach(data => data.Activity !.Registrations, _ => false) // Single registration .Do(registration => registration .SetWorkflowRegistration() .ShouldWriteSingle() .Branch(true, builder .CreateBranch() .LoadImageSingle() .NormaliseImage() .ToEquirectangular() .StitchImages() .GetCropBounds() .RenderUnderlay() .ColourCorrect() .CropImage() .SaveImage() ) ) ) ) .LogCompletion(); }
public void Build(IWorkflowBuilder <GeostationaryTimelapseWorkflowData> builder) { builder .Initialise() .PrepareTimeIntervals() .InitialiseProgressBar(data => data.TimeIntervals.Count) .If(data => data.TimeIntervals.Any()) .Do(branch => branch .ForEach(data => data.TimeIntervals, options => false) .Do(step => step .SetTargetTimestamp() .SetTargetLongitude() .CreateActivities() .ShouldWrite(data => $" / {Angle.FromRadians(data.Longitude!.Value).Degrees:F3}° longitude") .Branch(true, step .CreateBranch() .InitialiseImageProgressBar(data => data.Activity !.Registrations.Count + 1) .CalculateVisibleRange() .CalculateGlobalOffset() .ForEach(data => data.Activity !.Registrations, _ => false) .Do(registration => registration .SetWorkflowRegistration() .LoadImage(data => data.ImageProgressBar) .NormaliseImage() .ToEquirectangular() ) .StitchImages() .EqualiseOverlayHistogram(data => data.TargetImage) .RenderOverlay(data => data.TargetImage) .RenderUnderlay() .ComposeOverlay() .ToGeostationary(data => data.Longitude) .ColourCorrect() .ApplyHaze() .SaveStitchedImage(data => data.ImageProgressBar) ) ) ) .LogCompletion(); }
public void Build(IWorkflowBuilder <TimelapseWorkflowData> builder) { builder .Initialise() .PrepareTimeIntervals() .InitialiseProgressBar(data => data.TimeIntervals.Count) .If(data => data.TimeIntervals.Any()) .Do(branch => branch .ForEach(data => data.TimeIntervals, options => false) .Do(step => step .SetTargetTimestamp() .CreateActivities() .ShouldWrite() .Branch(true, step .CreateBranch() .InitialiseImageProgressBar(data => data.Activity !.Registrations.Count + 1) .GetVisibleRange() .GetGlobalOffset() .ForEach(data => data.Activity !.Registrations, _ => false) .Do(registration => registration .SetWorkflowRegistration() .LoadImage(data => data.ImageProgressBar) .NormaliseImage() .ToEquirectangular() ) .StitchImages() .RenderOverlay(data => data.TargetImage) .GetCropBounds() .RenderUnderlay() .ComposeOverlay() .ColourCorrect() .OffsetImage() .CropImage() .SaveStitchedImage(data => data.ImageProgressBar) ) ) ) .LogCompletion(); }