Convert Video mostly over to properties

This commit is contained in:
Matt Nadareski
2026-04-03 12:31:24 -04:00
parent 4fecf8b498
commit 2ed0c1f732
31 changed files with 217 additions and 179 deletions

View File

@@ -234,6 +234,8 @@ namespace SabreTools.Data.Extensions
}
else if (self is Display selfDisplay && clone is Display cloneDisplay)
{
cloneDisplay.AspectX = selfDisplay.AspectX;
cloneDisplay.AspectY = selfDisplay.AspectY;
cloneDisplay.DisplayType = selfDisplay.DisplayType;
cloneDisplay.FlipX = selfDisplay.FlipX;
cloneDisplay.HBEnd = selfDisplay.HBEnd;
@@ -365,8 +367,12 @@ namespace SabreTools.Data.Extensions
}
else if (self is Video selfVideo && clone is Video cloneVideo)
{
cloneVideo.AspectX = selfVideo.AspectX;
cloneVideo.AspectY = selfVideo.AspectY;
cloneVideo.Height = selfVideo.Height;
cloneVideo.Refresh = selfVideo.Refresh;
cloneVideo.Screen = selfVideo.Screen;
cloneVideo.Width = selfVideo.Width;
}
// Handle known properties

View File

@@ -14,19 +14,19 @@ namespace SabreTools.Data.Models.ClrMamePro
[Required]
public string? Orientation { get; set; }
/// <remarks>x, Numeric?</remarks>
public string? X { get; set; }
/// <remarks>x</remarks>
public long? X { get; set; }
/// <remarks>y, Numeric?</remarks>
public string? Y { get; set; }
/// <remarks>y</remarks>
public long? Y { get; set; }
/// <remarks>aspectx, Numeric?</remarks>
public string? AspectX { get; set; }
/// <remarks>aspectx</remarks>
public long? AspectX { get; set; }
/// <remarks>aspecty, Numeric?</remarks>
public string? AspectY { get; set; }
/// <remarks>aspecty</remarks>
public long? AspectY { get; set; }
/// <remarks>freq, Numeric?</remarks>
/// <remarks>freq</remarks>
public double? Freq { get; set; }
}
}

View File

@@ -17,23 +17,18 @@ namespace SabreTools.Data.Models.Listxml
[XmlAttribute("orientation")]
public string? Orientation { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("width")]
public string? Width { get; set; }
public long? Width { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("height")]
public string? Height { get; set; }
public long? Height { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("aspectx")]
public string? AspectX { get; set; }
public long? AspectX { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("aspecty")]
public string? AspectY { get; set; }
public long? AspectY { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("refresh")]
public double? Refresh { get; set; }
}

View File

@@ -8,6 +8,12 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
/// <remarks>Only found in Video</remarks>
public long? AspectX { get; set; }
/// <remarks>Only found in Video</remarks>
public long? AspectY { get; set; }
/// <remarks>(raster|vector|lcd|svg|unknown)</remarks>
public DisplayType? DisplayType { get; set; }

View File

@@ -8,31 +8,29 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
public long? AspectX { get; set; }
public long? AspectY { get; set; }
/// <remarks>Originally "y"</remarks>
public long? Height { get; set; }
/// <remarks>Originally "freq"</remarks>
public double? Refresh { get; set; }
/// <remarks>(raster|vector)</remarks>
public DisplayType? Screen { get; set; }
/// <remarks>Originally "x"</remarks>
public long? Width { get; set; }
#endregion
#region Keys
/// <remarks>long</remarks>
public const string AspectXKey = "aspectx";
/// <remarks>long</remarks>
public const string AspectYKey = "aspecty";
/// <remarks>long; Originally "y"</remarks>
public const string HeightKey = "height";
/// <remarks>(vertical|horizontal)</remarks>
public const string OrientationKey = "orientation";
/// <remarks>long; Originally "x"</remarks>
public const string WidthKey = "width";
#endregion
public Video() => ItemType = ItemType.Video;

View File

@@ -101,7 +101,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Disk? disk = Array.Find(datItems, item => item is Disk disk && !disk.DiskAreaSpecified && !disk.PartSpecified) as Disk;
ValidateDisk(disk);
Display? display = Array.Find(datItems, item => item is Display display && display.ReadLong(Data.Models.Metadata.Video.AspectXKey) is null) as Display;
Display? display = Array.Find(datItems, item => item is Display display && display.AspectX is null) as Display;
ValidateDisplay(display);
Driver? driver = Array.Find(datItems, item => item is Driver) as Driver;
@@ -176,7 +176,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Sound? sound = Array.Find(datItems, item => item is Sound) as Sound;
ValidateSound(sound);
Display? video = Array.Find(datItems, item => item is Display display && display.ReadLong(Data.Models.Metadata.Video.AspectXKey) is not null) as Display;
Display? video = Array.Find(datItems, item => item is Display display && display.AspectX is not null) as Display;
ValidateVideo(video);
}
@@ -576,6 +576,8 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Display
{
AspectX = 12345,
AspectY = 12345,
FlipX = true,
HBEnd = 12345,
HBStart = 12345,
@@ -1021,13 +1023,13 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Video
{
[Data.Models.Metadata.Video.AspectXKey] = 12345L,
[Data.Models.Metadata.Video.AspectYKey] = 12345L,
[Data.Models.Metadata.Video.HeightKey] = 12345L,
AspectX = 12345,
AspectY = 12345,
Height = 12345,
[Data.Models.Metadata.Video.OrientationKey] = "vertical",
Refresh = 123.45,
Screen = Data.Models.Metadata.DisplayType.Vector,
[Data.Models.Metadata.Video.WidthKey] = 12345L,
Width = 12345,
};
}
@@ -1350,6 +1352,8 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateDisplay(Display? display)
{
Assert.NotNull(display);
Assert.Null(display.AspectX);
Assert.Null(display.AspectY);
Assert.True(display.FlipX);
Assert.Equal(12345, display.HBEnd);
Assert.Equal(12345, display.HBStart);
@@ -1661,8 +1665,8 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateVideo(Display? display)
{
Assert.NotNull(display);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey));
Assert.Equal(12345L, display.AspectX);
Assert.Equal(12345L, display.AspectY);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345, display.Height);
Assert.Equal(123.45, display.Refresh);

View File

@@ -521,7 +521,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Data.Models.Metadata.Display[]? displays = machine.ReadArray<Data.Models.Metadata.Display>(Data.Models.Metadata.Machine.DisplayKey);
Assert.NotNull(displays);
Assert.Equal(2, displays.Length);
Data.Models.Metadata.Display? display = Array.Find(displays, d => !d.ContainsKey(Data.Models.Metadata.Video.AspectXKey));
Data.Models.Metadata.Display? display = Array.Find(displays, d => d.AspectX == null);
ValidateMetadataDisplay(display);
Data.Models.Metadata.Driver[]? drivers = machine.ReadArray<Data.Models.Metadata.Driver>(Data.Models.Metadata.Machine.DriverKey);
@@ -867,6 +867,8 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataDisplay(Data.Models.Metadata.Display? display)
{
Assert.NotNull(display);
Assert.Null(display.AspectX);
Assert.Null(display.AspectY);
Assert.True(display.FlipX);
Assert.Equal(12345, display.HBEnd);
Assert.Equal(12345, display.HBStart);
@@ -1254,13 +1256,13 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataVideo(Data.Models.Metadata.Video? video)
{
Assert.NotNull(video);
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectXKey));
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectYKey));
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey));
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(12345, video.Height);
Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey));
Assert.Equal(123.45, video.Refresh);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey));
Assert.Equal(12345, video.Width);
}
#endregion

View File

@@ -929,16 +929,16 @@ namespace SabreTools.Metadata.DatFiles
var displayItem = item.GetInternalClone();
// Create a Video for any item that has specific fields
if (displayItem.ContainsKey(Data.Models.Metadata.Video.AspectXKey))
if (displayItem.AspectX != null)
{
var videoItem = new Data.Models.Metadata.Video
{
[Data.Models.Metadata.Video.AspectXKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectXKey).ToString(),
[Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(),
[Data.Models.Metadata.Video.HeightKey] = displayItem.Height.ToString(),
AspectX = displayItem.AspectX,
AspectY = displayItem.AspectY,
Height = displayItem.Height,
Refresh = displayItem.Refresh,
Screen = displayItem.DisplayType,
[Data.Models.Metadata.Video.WidthKey] = displayItem.Width.ToString()
Width = displayItem.Width,
};
switch (displayItem.ReadLong(Data.Models.Metadata.Display.RotateKey))

View File

@@ -1,7 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
using SabreTools.Text.Extensions;
namespace SabreTools.Metadata.DatItems.Formats
{
@@ -13,6 +12,18 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
public long? AspectX
{
get => (_internal as Data.Models.Metadata.Display)?.AspectX;
set => (_internal as Data.Models.Metadata.Display)?.AspectX = value;
}
public long? AspectY
{
get => (_internal as Data.Models.Metadata.Display)?.AspectY;
set => (_internal as Data.Models.Metadata.Display)?.AspectY = value;
}
public Data.Models.Metadata.DisplayType? DisplayType
{
get => (_internal as Data.Models.Metadata.Display)?.DisplayType;
@@ -117,13 +128,12 @@ namespace SabreTools.Metadata.DatItems.Formats
public Display(Data.Models.Metadata.Video item) : base()
{
// TODO: Convert this block to more traditional set of if/then
Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey)));
Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey)));
AspectX = item.AspectX;
AspectY = item.AspectY;
DisplayType = item.Screen;
Height = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey));
Height = item.Height;
Refresh = item.Refresh;
Width = NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey));
Width = item.Width;
switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey))
{
@@ -137,15 +147,6 @@ namespace SabreTools.Metadata.DatItems.Formats
// TODO: Log invalid values
break;
}
// Process flag values
long? aspectX = ReadLong(Data.Models.Metadata.Video.AspectXKey);
if (aspectX is not null)
Write<string?>(Data.Models.Metadata.Video.AspectXKey, aspectX.ToString());
long? aspectY = ReadLong(Data.Models.Metadata.Video.AspectYKey);
if (aspectY is not null)
Write<string?>(Data.Models.Metadata.Video.AspectYKey, aspectY.ToString());
}
public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item)

View File

@@ -511,6 +511,12 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Writable.FromYesNo();
return true;
case Display item when fieldName == "aspectx":
checkValue = item.AspectX?.ToString();
return true;
case Display item when fieldName == "aspecty":
checkValue = item.AspectY?.ToString();
return true;
case Display item when fieldName == "flipx":
checkValue = item.FlipX.FromYesNo();
return true;
@@ -520,7 +526,7 @@ namespace SabreTools.Metadata.Filter
case Display item when fieldName == "hbstart":
checkValue = item.HBStart?.ToString();
return true;
case Display item when fieldName == "height":
case Display item when fieldName == "height" || fieldName == "y":
checkValue = item.Height?.ToString();
return true;
case Display item when fieldName == "htotal":
@@ -529,7 +535,7 @@ namespace SabreTools.Metadata.Filter
case Display item when fieldName == "pixclock":
checkValue = item.PixClock?.ToString();
return true;
case Display item when fieldName == "refresh":
case Display item when fieldName == "refresh" || fieldName == "freq":
checkValue = item.Refresh?.ToString();
return true;
case Display item when fieldName == "type":
@@ -547,7 +553,7 @@ namespace SabreTools.Metadata.Filter
case Display item when fieldName == "vtotal":
checkValue = item.VTotal?.ToString();
return true;
case Display item when fieldName == "width":
case Display item when fieldName == "width" || fieldName == "x":
checkValue = item.Width?.ToString();
return true;
@@ -817,12 +823,24 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Channels?.ToString();
return true;
case Video item when fieldName == "refresh":
case Video item when fieldName == "aspectx":
checkValue = item.AspectX?.ToString();
return true;
case Video item when fieldName == "aspecty":
checkValue = item.AspectY?.ToString();
return true;
case Video item when fieldName == "height" || fieldName == "y":
checkValue = item.Height?.ToString();
return true;
case Video item when fieldName == "refresh" || fieldName == "freq":
checkValue = item.Refresh?.ToString();
return true;
case Video item when fieldName == "screen":
checkValue = item.Screen?.AsStringValue();
return true;
case Video item when fieldName == "width" || fieldName == "x":
checkValue = item.Width?.ToString();
return true;
// Fallthrough to Dictionary-based checking
default: break;

View File

@@ -389,10 +389,18 @@ namespace SabreTools.Metadata
}
else if (self is Video selfVideo && other is Video otherVideo)
{
if (selfVideo.AspectX != otherVideo.AspectX)
return false;
if (selfVideo.AspectY != otherVideo.AspectY)
return false;
if (selfVideo.Height != otherVideo.Height)
return false;
if (selfVideo.Refresh != otherVideo.Refresh)
return false;
if (selfVideo.Screen != otherVideo.Screen)
return false;
if (selfVideo.Width != otherVideo.Width)
return false;
}
// Check all pairs to see if they're equal

View File

@@ -166,10 +166,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
X = "XXXXXX",
Y = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
X = 12345,
Y = 12345,
AspectX = 12345,
AspectY = 12345,
Freq = 123.45,
};
@@ -453,10 +453,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.X);
Assert.Equal("XXXXXX", video.Y);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.X);
Assert.Equal(12345, video.Y);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Freq);
}

View File

@@ -140,10 +140,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -576,10 +576,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -136,10 +136,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -570,10 +570,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -136,10 +136,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -570,10 +570,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -342,10 +342,10 @@ namespace SabreTools.Serialization.CrossModel
{
Screen = item.Screen,
Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey),
X = item.ReadString(Data.Models.Metadata.Video.WidthKey),
Y = item.ReadString(Data.Models.Metadata.Video.HeightKey),
AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey),
AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey),
X = item.Width,
Y = item.Height,
AspectX = item.AspectX,
AspectY = item.AspectY,
Freq = item.Refresh,
};
return video;

View File

@@ -355,10 +355,10 @@ namespace SabreTools.Serialization.CrossModel
{
Screen = item.Screen,
[Data.Models.Metadata.Video.OrientationKey] = item.Orientation,
[Data.Models.Metadata.Video.WidthKey] = item.X,
[Data.Models.Metadata.Video.HeightKey] = item.Y,
[Data.Models.Metadata.Video.AspectXKey] = item.AspectX,
[Data.Models.Metadata.Video.AspectYKey] = item.AspectY,
Width = item.X,
Height = item.Y,
AspectX = item.AspectX,
AspectY = item.AspectY,
Refresh = item.Freq,
};
return video;

View File

@@ -660,10 +660,10 @@ namespace SabreTools.Serialization.CrossModel
{
Screen = item.Screen,
Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey),
Width = item.ReadString(Data.Models.Metadata.Video.WidthKey),
Height = item.ReadString(Data.Models.Metadata.Video.HeightKey),
AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey),
AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey),
Width = item.Width,
Height = item.Height,
AspectX = item.AspectX,
AspectY = item.AspectY,
Refresh = item.Refresh,
};
return video;

View File

@@ -701,10 +701,10 @@ namespace SabreTools.Serialization.CrossModel
{
Screen = item.Screen,
[Data.Models.Metadata.Video.OrientationKey] = item.Orientation,
[Data.Models.Metadata.Video.WidthKey] = item.Width,
[Data.Models.Metadata.Video.HeightKey] = item.Height,
[Data.Models.Metadata.Video.AspectXKey] = item.AspectX,
[Data.Models.Metadata.Video.AspectYKey] = item.AspectY,
Width = item.Width,
Height = item.Height,
AspectX = item.AspectX,
AspectY = item.AspectY,
Refresh = item.Refresh,
};
return video;

View File

@@ -283,10 +283,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
X = "XXXXXX",
Y = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
X = 12345,
Y = 12345,
AspectX = 12345,
AspectY = 12345,
Freq = 123.45,
};
@@ -570,10 +570,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.X);
Assert.Equal("XXXXXX", video.Y);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.X);
Assert.Equal(12345, video.Y);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Freq);
}

View File

@@ -207,10 +207,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -643,10 +643,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -203,10 +203,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -637,10 +637,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -203,10 +203,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Screen = Data.Models.Metadata.DisplayType.Vector,
Orientation = "XXXXXX",
Width = "XXXXXX",
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Width = 12345,
Height = 12345,
AspectX = 12345,
AspectY = 12345,
Refresh = 123.45,
};
@@ -637,10 +637,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(video);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen);
Assert.Equal("XXXXXX", video.Orientation);
Assert.Equal("XXXXXX", video.Width);
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal(12345, video.Width);
Assert.Equal(12345, video.Height);
Assert.Equal(12345, video.AspectX);
Assert.Equal(12345, video.AspectY);
Assert.Equal(123.45, video.Refresh);
}

View File

@@ -809,16 +809,16 @@ namespace SabreTools.Serialization.Readers
video.Orientation = kvp.Value;
break;
case "x":
video.X = kvp.Value;
video.X = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "y":
video.Y = kvp.Value;
video.Y = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "aspectx":
video.AspectX = kvp.Value;
video.AspectX = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "aspecty":
video.AspectY = kvp.Value;
video.AspectY = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "freq":
video.Freq = NumberHelper.ConvertToDouble(kvp.Value);

View File

@@ -1177,10 +1177,10 @@ namespace SabreTools.Serialization.Readers
obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width"));
obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height"));
obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx"));
obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty"));
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;

View File

@@ -1175,10 +1175,10 @@ namespace SabreTools.Serialization.Readers
obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width"));
obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height"));
obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx"));
obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty"));
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;

View File

@@ -1175,10 +1175,10 @@ namespace SabreTools.Serialization.Readers
obj.Screen = reader.GetAttribute("screen").AsDisplayType();
obj.Orientation = reader.GetAttribute("orientation");
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Width = NumberHelper.ConvertToInt64(reader.GetAttribute("width"));
obj.Height = NumberHelper.ConvertToInt64(reader.GetAttribute("height"));
obj.AspectX = NumberHelper.ConvertToInt64(reader.GetAttribute("aspectx"));
obj.AspectY = NumberHelper.ConvertToInt64(reader.GetAttribute("aspecty"));
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;

View File

@@ -414,10 +414,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteStartElement("video");
writer.WriteRequiredAttributeString("screen", video.Screen?.AsStringValue(), throwOnError: true);
writer.WriteRequiredAttributeString("orientation", video.Orientation, throwOnError: true);
writer.WriteOptionalAttributeString("x", video.X);
writer.WriteOptionalAttributeString("y", video.Y);
writer.WriteOptionalAttributeString("aspectx", video.AspectX);
writer.WriteOptionalAttributeString("aspecty", video.AspectY);
writer.WriteOptionalAttributeString("x", video.X?.ToString());
writer.WriteOptionalAttributeString("y", video.Y.ToString());
writer.WriteOptionalAttributeString("aspectx", video.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", video.AspectY.ToString());
writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000"));
writer.WriteEndElement(); // video
}

View File

@@ -839,10 +839,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteOptionalAttributeString("width", obj.Width.ToString());
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();

View File

@@ -837,10 +837,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteOptionalAttributeString("width", obj.Width.ToString());
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();

View File

@@ -837,10 +837,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue());
writer.WriteRequiredAttributeString("orientation", obj.Orientation);
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteOptionalAttributeString("width", obj.Width.ToString());
writer.WriteOptionalAttributeString("height", obj.Height.ToString());
writer.WriteOptionalAttributeString("aspectx", obj.AspectX.ToString());
writer.WriteOptionalAttributeString("aspecty", obj.AspectY.ToString());
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();