Turn the Shorts tab into a step-by-step wizard and port amigadb-short-fx-v4.sh: Video background style, auto/manual crop, source fade-in, and blur/opacity/margin settings.
64 lines
2.7 KiB
C#
64 lines
2.7 KiB
C#
namespace AmiReel.Models;
|
|
|
|
/// <summary>One page of the Shorts create-wizard. Extra effect pages are inserted only when the style needs them.</summary>
|
|
public enum ShortWizardStep
|
|
{
|
|
Clip,
|
|
Effect,
|
|
StyleOptions,
|
|
Titles,
|
|
Encode,
|
|
}
|
|
|
|
/// <summary>Builds the Shorts wizard page list for a chosen visual style.</summary>
|
|
public static class ShortWizard
|
|
{
|
|
public static IReadOnlyList<ShortWizardStep> StepsFor(ShortStyle style)
|
|
{
|
|
List<ShortWizardStep> steps = [ShortWizardStep.Clip, ShortWizardStep.Effect];
|
|
if (NeedsStyleOptions(style))
|
|
steps.Add(ShortWizardStep.StyleOptions);
|
|
steps.Add(ShortWizardStep.Titles);
|
|
steps.Add(ShortWizardStep.Encode);
|
|
return steps;
|
|
}
|
|
|
|
public static bool NeedsStyleOptions(ShortStyle style) =>
|
|
style is ShortStyle.Brand or ShortStyle.Video;
|
|
|
|
public static string Title(ShortWizardStep step) => step switch
|
|
{
|
|
ShortWizardStep.Clip => "Source clip",
|
|
ShortWizardStep.Effect => "Visual effect",
|
|
ShortWizardStep.StyleOptions => "Effect settings",
|
|
ShortWizardStep.Titles => "Title card",
|
|
ShortWizardStep.Encode => "Encoding",
|
|
_ => "Short",
|
|
};
|
|
|
|
public static string Description(ShortStyle style) => style switch
|
|
{
|
|
ShortStyle.Brand => "Title-card background image with a framed source clip.",
|
|
ShortStyle.Pixel => "Pixelated backdrop with neon scan bars.",
|
|
ShortStyle.Mirror => "Reflected source strips above and below the clip.",
|
|
ShortStyle.Crop => "Full-frame vertical crop of the source.",
|
|
ShortStyle.Workbench => "Workbench-style window around the source.",
|
|
ShortStyle.Blur => "Blurred backdrop with a centered source.",
|
|
ShortStyle.Crt => "CRT curvature, scanlines, and a rolling highlight.",
|
|
ShortStyle.Copper => "Amiga copper bars behind the source.",
|
|
ShortStyle.Stars => "Twinkling star field behind a framed clip.",
|
|
ShortStyle.Grid => "Neon grid horizon behind the source.",
|
|
ShortStyle.Tiles => "Four-tile mirrored backdrop.",
|
|
ShortStyle.Scan => "Chunky scanlines and moving bars.",
|
|
ShortStyle.Starfield => "Fast-moving star streaks.",
|
|
ShortStyle.Plasma => "Demoscene plasma backdrop.",
|
|
ShortStyle.Rasterbars => "Classic raster bars above and below the clip.",
|
|
ShortStyle.Vhs => "Tape noise, chroma shift, and scanlines.",
|
|
ShortStyle.Monitor => "CRT monitor bezel around the source.",
|
|
ShortStyle.Split => "Split-band source strips around the main clip.",
|
|
ShortStyle.Spectrum => "Scrolling audio spectrum. The source video must have audio.",
|
|
ShortStyle.Video => "Looping background video with the Amiga clip overlaid.",
|
|
_ => "",
|
|
};
|
|
}
|