diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 29c95cd8..6716d528 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -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 diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index 1cfec8b7..b5652170 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -14,19 +14,19 @@ namespace SabreTools.Data.Models.ClrMamePro [Required] public string? Orientation { get; set; } - /// x, Numeric? - public string? X { get; set; } + /// x + public long? X { get; set; } - /// y, Numeric? - public string? Y { get; set; } + /// y + public long? Y { get; set; } - /// aspectx, Numeric? - public string? AspectX { get; set; } + /// aspectx + public long? AspectX { get; set; } - /// aspecty, Numeric? - public string? AspectY { get; set; } + /// aspecty + public long? AspectY { get; set; } - /// freq, Numeric? + /// freq public double? Freq { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 015a1b90..679bff82 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -17,23 +17,18 @@ namespace SabreTools.Data.Models.Listxml [XmlAttribute("orientation")] public string? Orientation { get; set; } - /// Numeric [XmlAttribute("width")] - public string? Width { get; set; } + public long? Width { get; set; } - /// Numeric [XmlAttribute("height")] - public string? Height { get; set; } + public long? Height { get; set; } - /// Numeric [XmlAttribute("aspectx")] - public string? AspectX { get; set; } + public long? AspectX { get; set; } - /// Numeric [XmlAttribute("aspecty")] - public string? AspectY { get; set; } + public long? AspectY { get; set; } - /// Numeric [XmlAttribute("refresh")] public double? Refresh { get; set; } } diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index a8cb0632..7f34c784 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -8,6 +8,12 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// Only found in Video + public long? AspectX { get; set; } + + /// Only found in Video + public long? AspectY { get; set; } + /// (raster|vector|lcd|svg|unknown) public DisplayType? DisplayType { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 421eb4c7..5a9ed874 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -8,31 +8,29 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public long? AspectX { get; set; } + + public long? AspectY { get; set; } + + /// Originally "y" + public long? Height { get; set; } + /// Originally "freq" public double? Refresh { get; set; } /// (raster|vector) public DisplayType? Screen { get; set; } + /// Originally "x" + public long? Width { get; set; } + #endregion #region Keys - /// long - public const string AspectXKey = "aspectx"; - - /// long - public const string AspectYKey = "aspecty"; - - /// long; Originally "y" - public const string HeightKey = "height"; - /// (vertical|horizontal) public const string OrientationKey = "orientation"; - /// long; Originally "x" - public const string WidthKey = "width"; - #endregion public Video() => ItemType = ItemType.Video; diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index d8b7c529..4baee9dc 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -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); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 14f7127b..3c1df829 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -521,7 +521,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Display[]? displays = machine.ReadArray(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.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 diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index d62fd3d4..345d44a3 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -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)) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index 75a24100..d142b6e9 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -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(Data.Models.Metadata.Video.AspectXKey, aspectX.ToString()); - - long? aspectY = ReadLong(Data.Models.Metadata.Video.AspectYKey); - if (aspectY is not null) - Write(Data.Models.Metadata.Video.AspectYKey, aspectY.ToString()); } public Display(Data.Models.Metadata.Video item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 7fd359c3..840bb9d2 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -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; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 7bd9b982..713d92cb 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -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 diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index 17a6c784..33e0edfe 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -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); } diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 1cc288df..43e7a4a7 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -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); } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 620f47cd..f867f8b0 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -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); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 01861dfd..acdfa589 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -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); } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index b08037f3..06bb0beb 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -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; diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index dd867657..7ef9f37c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -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; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 56154c51..308907e0 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -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; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 3304c5e7..07c2156e 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -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; diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index b2eb58de..da040978 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -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); } diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index ebcc67fa..aa8f37ec 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -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); } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index 9e905028..282d4489 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -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); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 77389109..28ad0f7f 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -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); } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 6227cef7..110d9514 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -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); diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index eba1a94e..3c0531c0 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -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; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index fb511c22..8cd453f9 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -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; diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 85c441eb..9e6a4f78 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -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; diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 392f8627..c218515e 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -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 } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 3c534975..d9d01652 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -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(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index a2a53f40..fa2e3fe6 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -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(); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index eceae2c1..a924071e 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -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();