* fix formatting rules * reformat ersatztv * reformat ersatztv.application * reformat ersatztv.core * refactor ersatztv.core.tests * reformat ersatztv.ffmpeg * reformat ersatztv.ffmpeg.tests * reformat ersatztv.infrastructure * cleanup infra mysql * cleanup infra sqlite * cleanup infra tests * cleanup ersatztv.scanner * cleanup ersatztv.scanner.tests * sln cleanup * update dependencies
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using ErsatzTV.FFmpeg.State;
|
|
using YamlDotNet.Serialization;
|
|
using YamlDotNet.Serialization.NamingConventions;
|
|
|
|
namespace ErsatzTV.Core.Graphics;
|
|
|
|
public class ImageGraphicsElement
|
|
{
|
|
public string Image { get; set; }
|
|
|
|
[YamlMember(Alias = "opacity_percent", ApplyNamingConventions = false)]
|
|
public int? OpacityPercent { get; set; }
|
|
|
|
[YamlMember(Alias = "opacity_expression", ApplyNamingConventions = false)]
|
|
public string OpacityExpression { get; set; }
|
|
|
|
public WatermarkLocation Location { get; set; }
|
|
|
|
[YamlMember(Alias = "horizontal_margin_percent", ApplyNamingConventions = false)]
|
|
public double? HorizontalMarginPercent { get; set; }
|
|
|
|
[YamlMember(Alias = "vertical_margin_percent", ApplyNamingConventions = false)]
|
|
public double? VerticalMarginPercent { get; set; }
|
|
|
|
[YamlMember(Alias = "location_x", ApplyNamingConventions = false)]
|
|
public double? LocationX { get; set; }
|
|
|
|
[YamlMember(Alias = "location_y", ApplyNamingConventions = false)]
|
|
public double? LocationY { get; set; }
|
|
|
|
[YamlMember(Alias = "z_index", ApplyNamingConventions = false)]
|
|
public int? ZIndex { get; set; }
|
|
|
|
public bool Scale { get; set; }
|
|
|
|
[YamlMember(Alias = "scale_width_percent", ApplyNamingConventions = false)]
|
|
public double? ScaleWidthPercent { get; set; }
|
|
|
|
public static async Task<Option<ImageGraphicsElement>> FromFile(string fileName)
|
|
{
|
|
try
|
|
{
|
|
string yaml = await File.ReadAllTextAsync(fileName);
|
|
|
|
// TODO: validate schema
|
|
// if (await yamlScheduleValidator.ValidateSchedule(yaml, isImport) == false)
|
|
// {
|
|
// return Option<YamlPlayoutDefinition>.None;
|
|
// }
|
|
|
|
IDeserializer deserializer = new DeserializerBuilder()
|
|
.WithNamingConvention(CamelCaseNamingConvention.Instance)
|
|
.Build();
|
|
|
|
return deserializer.Deserialize<ImageGraphicsElement>(yaml);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return Option<ImageGraphicsElement>.None;
|
|
}
|
|
}
|
|
}
|