Private/Writers/Write-AssHeader.ps1
|
function Write-AssHeader { <# .SYNOPSIS Serializes an AssHeader (Script Info + Styles sections) to ASS text. #> [OutputType([string])] param( [Parameter(Mandatory)] [AssHeader] $Header ) $sb = [System.Text.StringBuilder]::new() # Script Info section [void]$sb.AppendLine('[Script Info]') [void]$sb.AppendLine('; Script generated by SubtitleTools PowerShell module') [void]$sb.AppendLine('ScriptType: {0}' -f $Header.ScriptType) if ($Header.Title) { [void]$sb.AppendLine('Title: {0}' -f $Header.Title) } if ($Header.OriginalScript) { [void]$sb.AppendLine('Original Script: {0}' -f $Header.OriginalScript) } if ($Header.PlayResX) { [void]$sb.AppendLine('PlayResX: {0}' -f $Header.PlayResX) } if ($Header.PlayResY) { [void]$sb.AppendLine('PlayResY: {0}' -f $Header.PlayResY) } if ($Header.YCbCrMatrix) { [void]$sb.AppendLine('YCbCr Matrix: {0}' -f $Header.YCbCrMatrix) } foreach ($key in $Header.ExtraFields.Keys) { [void]$sb.AppendLine('{0}: {1}' -f $key, $Header.ExtraFields[$key]) } [void]$sb.AppendLine() # Styles section $sectionName = if ($Header.ScriptType -eq 'v4.00+') { '[V4+ Styles]' } else { '[V4 Styles]' } [void]$sb.AppendLine($sectionName) [void]$sb.AppendLine('Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding') foreach ($style in $Header.Styles) { [void]$sb.AppendLine($style.ToAssLine()) } [void]$sb.AppendLine() return $sb.ToString() } |