Convert refresh rates to properties, fix format

This commit is contained in:
Matt Nadareski
2026-04-03 00:04:11 -04:00
parent 3c6cfef070
commit 08e0aa5b77
34 changed files with 83 additions and 77 deletions

View File

@@ -234,6 +234,7 @@ namespace SabreTools.Data.Extensions
{
cloneDisplay.DisplayType = selfDisplay.DisplayType;
cloneDisplay.FlipX = selfDisplay.FlipX;
cloneDisplay.Refresh = selfDisplay.Refresh;
cloneDisplay.Tag = selfDisplay.Tag;
}
else if (self is Driver selfDriver && clone is Driver cloneDriver)
@@ -377,6 +378,7 @@ namespace SabreTools.Data.Extensions
}
else if (self is Video selfVideo && clone is Video cloneVideo)
{
cloneVideo.Refresh = selfVideo.Refresh;
cloneVideo.Screen = selfVideo.Screen;
}

View File

@@ -27,6 +27,6 @@ namespace SabreTools.Data.Models.ClrMamePro
public string? AspectY { get; set; }
/// <remarks>freq, Numeric?</remarks>
public string? Freq { get; set; }
public double? Freq { get; set; }
}
}

View File

@@ -31,10 +31,9 @@ namespace SabreTools.Data.Models.Listxml
[XmlAttribute("height")]
public string? Height { get; set; }
/// <remarks>Numeric</remarks>
[Required]
[XmlAttribute("refresh")]
public string? Refresh { get; set; }
public double? Refresh { get; set; }
/// <remarks>Numeric</remarks>
[XmlAttribute("pixclock")]

View File

@@ -35,6 +35,6 @@ namespace SabreTools.Data.Models.Listxml
/// <remarks>Numeric</remarks>
[XmlAttribute("refresh")]
public string? Refresh { get; set; }
public double? Refresh { get; set; }
}
}

View File

@@ -14,6 +14,8 @@ namespace SabreTools.Data.Models.Metadata
/// <remarks>(yes|no) "no"</remarks>
public bool? FlipX { get; set; }
public double? Refresh { get; set; }
public string? Tag { get; set; }
#endregion
@@ -35,9 +37,6 @@ namespace SabreTools.Data.Models.Metadata
/// <remarks>long</remarks>
public const string PixClockKey = "pixclock";
/// <remarks>double</remarks>
public const string RefreshKey = "refresh";
/// <remarks>(0|90|180|270)</remarks>
/// TODO: Convert to enum
public const string RotateKey = "rotate";

View File

@@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
/// <remarks>Originally "freq"</remarks>
public double? Refresh { get; set; }
/// <remarks>(raster|vector)</remarks>
public DisplayType? Screen { get; set; }
@@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata
/// <remarks>(vertical|horizontal)</remarks>
public const string OrientationKey = "orientation";
/// <remarks>double; Originally "freq"</remarks>
public const string RefreshKey = "refresh";
/// <remarks>long; Originally "x"</remarks>
public const string WidthKey = "width";

View File

@@ -582,7 +582,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Display.HeightKey] = 12345L,
[Data.Models.Metadata.Display.HTotalKey] = 12345L,
[Data.Models.Metadata.Display.PixClockKey] = 12345L,
[Data.Models.Metadata.Display.RefreshKey] = 12345L,
Refresh = 123.45,
[Data.Models.Metadata.Display.RotateKey] = 90,
Tag = "tag",
DisplayType = Data.Models.Metadata.DisplayType.Vector,
@@ -1025,7 +1025,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Video.AspectYKey] = 12345L,
[Data.Models.Metadata.Video.HeightKey] = 12345L,
[Data.Models.Metadata.Video.OrientationKey] = "vertical",
[Data.Models.Metadata.Video.RefreshKey] = 12345L,
Refresh = 123.45,
Screen = Data.Models.Metadata.DisplayType.Vector,
[Data.Models.Metadata.Video.WidthKey] = 12345L,
};
@@ -1356,7 +1356,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HTotalKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.PixClockKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(123.45, display.Refresh);
Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey));
Assert.Equal("tag", display.Tag);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
@@ -1665,7 +1665,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey));
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey));
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(123.45, display.Refresh);
Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey));
Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey));
}

View File

@@ -873,7 +873,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HeightKey));
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.HTotalKey));
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.PixClockKey));
Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey));
Assert.Equal(123.45, display.Refresh);
Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey));
Assert.Equal("tag", display.Tag);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
@@ -1258,7 +1258,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.AspectYKey));
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey));
Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey));
Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.RefreshKey));
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));
}

View File

@@ -880,7 +880,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Display.DisplayType),
Data.Models.Metadata.Display.RefreshKey,
nameof(Data.Models.Metadata.Display.Refresh),
]));
}

View File

@@ -936,7 +936,7 @@ namespace SabreTools.Metadata.DatFiles
[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.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(),
[Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(),
Refresh = displayItem.Refresh,
Screen = displayItem.DisplayType,
[Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString()
};

View File

@@ -310,8 +310,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Display display:
if (display.DisplayType is null)
missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType));
if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null)
missingFields.Add(Data.Models.Metadata.Display.RefreshKey);
if (display.Refresh is null)
missingFields.Add(nameof(Data.Models.Metadata.Display.Refresh));
break;
case Sound sound:

View File

@@ -29,6 +29,12 @@ namespace SabreTools.Metadata.DatItems.Formats
public override Data.Models.Metadata.ItemType ItemType
=> Data.Models.Metadata.ItemType.Display;
public double? Refresh
{
get => (_internal as Data.Models.Metadata.Display)?.Refresh;
set => (_internal as Data.Models.Metadata.Display)?.Refresh = value;
}
public string? Tag
{
get => (_internal as Data.Models.Metadata.Display)?.Tag;
@@ -64,10 +70,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (pixClock is not null)
Write<string?>(Data.Models.Metadata.Display.PixClockKey, pixClock.ToString());
double? refresh = ReadDouble(Data.Models.Metadata.Display.RefreshKey);
if (refresh is not null)
Write<string?>(Data.Models.Metadata.Display.RefreshKey, refresh.ToString());
long? rotate = ReadLong(Data.Models.Metadata.Display.RotateKey);
if (rotate is not null)
Write<string?>(Data.Models.Metadata.Display.RotateKey, rotate.ToString());
@@ -102,7 +104,7 @@ namespace SabreTools.Metadata.DatItems.Formats
Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey)));
DisplayType = item.Screen;
Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey)));
Write(Data.Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Data.Models.Metadata.Video.RefreshKey)));
Refresh = item.Refresh;
Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey)));
switch (item.ReadString(Data.Models.Metadata.Video.OrientationKey))
@@ -131,10 +133,6 @@ namespace SabreTools.Metadata.DatItems.Formats
if (height is not null)
Write<string?>(Data.Models.Metadata.Display.HeightKey, height.ToString());
double? refresh = ReadDouble(Data.Models.Metadata.Video.RefreshKey);
if (refresh is not null)
Write<string?>(Data.Models.Metadata.Display.RefreshKey, refresh.ToString());
long? width = ReadLong(Data.Models.Metadata.Video.WidthKey);
if (width is not null)
Write<string?>(Data.Models.Metadata.Display.WidthKey, width.ToString());

View File

@@ -476,6 +476,9 @@ namespace SabreTools.Metadata.Filter
case Display item when fieldName == "flipx":
checkValue = item.FlipX.FromYesNo();
return true;
case Display item when fieldName == "refresh":
checkValue = item.Refresh?.ToString();
return true;
case Display item when fieldName == "type":
checkValue = item.DisplayType?.AsStringValue();
return true;
@@ -749,6 +752,9 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Channels?.ToString();
return true;
case Video item when fieldName == "refresh":
checkValue = item.Refresh?.ToString();
return true;
case Video item when fieldName == "screen":
checkValue = item.Screen?.AsStringValue();
return true;

View File

@@ -40,6 +40,7 @@ namespace SabreTools.Metadata
/// </summary>
/// <param name="fieldName">Field to retrieve</param>
/// <returns>Value from the field, if possible</returns>
/// TODO: Determine if this can be removed
public bool? ReadBool(string fieldName)
=> _internal.ReadBool(fieldName);
@@ -48,6 +49,7 @@ namespace SabreTools.Metadata
/// </summary>
/// <param name="fieldName">Field to retrieve</param>
/// <returns>Value from the field, if possible</returns>
/// TODO: Determine if this can be removed
public double? ReadDouble(string fieldName)
=> _internal.ReadDouble(fieldName);

View File

@@ -170,7 +170,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Y = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Freq = "XXXXXX",
Freq = 123.45,
};
var sound = new Data.Models.ClrMamePro.Sound
@@ -457,7 +457,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", video.Y);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Freq);
Assert.Equal(123.45, video.Freq);
}
/// <summary>

View File

@@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -144,7 +144,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -558,7 +558,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -580,7 +580,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -122,7 +122,7 @@ namespace SabreTools.Serialization.CrossModel.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -140,7 +140,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -552,7 +552,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -346,7 +346,7 @@ namespace SabreTools.Serialization.CrossModel
Y = item.ReadString(Data.Models.Metadata.Video.HeightKey),
AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey),
AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey),
Freq = item.ReadString(Data.Models.Metadata.Video.RefreshKey),
Freq = item.Refresh,
};
return video;
}

View File

@@ -359,7 +359,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Video.HeightKey] = item.Y,
[Data.Models.Metadata.Video.AspectXKey] = item.AspectX,
[Data.Models.Metadata.Video.AspectYKey] = item.AspectY,
[Data.Models.Metadata.Video.RefreshKey] = item.Freq,
Refresh = item.Freq,
};
return video;
}

View File

@@ -429,7 +429,7 @@ namespace SabreTools.Serialization.CrossModel
FlipX = item.FlipX,
Width = item.ReadString(Data.Models.Metadata.Display.WidthKey),
Height = item.ReadString(Data.Models.Metadata.Display.HeightKey),
Refresh = item.ReadString(Data.Models.Metadata.Display.RefreshKey),
Refresh = item.Refresh,
PixClock = item.ReadString(Data.Models.Metadata.Display.PixClockKey),
HTotal = item.ReadString(Data.Models.Metadata.Display.HTotalKey),
HBEnd = item.ReadString(Data.Models.Metadata.Display.HBEndKey),
@@ -664,7 +664,7 @@ namespace SabreTools.Serialization.CrossModel
Height = item.ReadString(Data.Models.Metadata.Video.HeightKey),
AspectX = item.ReadString(Data.Models.Metadata.Video.AspectXKey),
AspectY = item.ReadString(Data.Models.Metadata.Video.AspectYKey),
Refresh = item.ReadString(Data.Models.Metadata.Video.RefreshKey),
Refresh = item.Refresh,
};
return video;
}

View File

@@ -467,7 +467,7 @@ namespace SabreTools.Serialization.CrossModel
FlipX = item.FlipX,
[Data.Models.Metadata.Display.WidthKey] = item.Width,
[Data.Models.Metadata.Display.HeightKey] = item.Height,
[Data.Models.Metadata.Display.RefreshKey] = item.Refresh,
Refresh = item.Refresh,
[Data.Models.Metadata.Display.PixClockKey] = item.PixClock,
[Data.Models.Metadata.Display.HTotalKey] = item.HTotal,
[Data.Models.Metadata.Display.HBEndKey] = item.HBEnd,
@@ -705,7 +705,7 @@ namespace SabreTools.Serialization.CrossModel
[Data.Models.Metadata.Video.HeightKey] = item.Height,
[Data.Models.Metadata.Video.AspectXKey] = item.AspectX,
[Data.Models.Metadata.Video.AspectYKey] = item.AspectY,
[Data.Models.Metadata.Video.RefreshKey] = item.Refresh,
Refresh = item.Refresh,
};
return video;
}

View File

@@ -287,7 +287,7 @@ namespace SabreTools.Serialization.Readers.Test
Y = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Freq = "XXXXXX",
Freq = 123.45,
};
var sound = new Data.Models.ClrMamePro.Sound
@@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", video.Y);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Freq);
Assert.Equal(123.45, video.Freq);
}
/// <summary>

View File

@@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -211,7 +211,7 @@ namespace SabreTools.Serialization.Readers.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -625,7 +625,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -647,7 +647,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers.Test
FlipX = true,
Width = "XXXXXX",
Height = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
PixClock = "XXXXXX",
HTotal = "XXXXXX",
HBEnd = "XXXXXX",
@@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers.Test
Height = "XXXXXX",
AspectX = "XXXXXX",
AspectY = "XXXXXX",
Refresh = "XXXXXX",
Refresh = 123.45,
};
var sound = new Data.Models.Listxml.Sound
@@ -619,7 +619,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal(true, display.FlipX);
Assert.Equal("XXXXXX", display.Width);
Assert.Equal("XXXXXX", display.Height);
Assert.Equal("XXXXXX", display.Refresh);
Assert.Equal(123.45, display.Refresh);
Assert.Equal("XXXXXX", display.PixClock);
Assert.Equal("XXXXXX", display.HTotal);
Assert.Equal("XXXXXX", display.HBEnd);
@@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", video.Height);
Assert.Equal("XXXXXX", video.AspectX);
Assert.Equal("XXXXXX", video.AspectY);
Assert.Equal("XXXXXX", video.Refresh);
Assert.Equal(123.45, video.Refresh);
}
/// <summary>

View File

@@ -821,7 +821,7 @@ namespace SabreTools.Serialization.Readers
video.AspectY = kvp.Value;
break;
case "freq":
video.Freq = kvp.Value;
video.Freq = NumberHelper.ConvertToDouble(kvp.Value);
break;
default:
// TODO: Log invalid values

View File

@@ -580,7 +580,7 @@ namespace SabreTools.Serialization.Readers
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
obj.PixClock = reader.GetAttribute("pixclock");
obj.HTotal = reader.GetAttribute("htotal");
obj.HBEnd = reader.GetAttribute("hbend");
@@ -1181,7 +1181,7 @@ namespace SabreTools.Serialization.Readers
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;
}

View File

@@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
obj.PixClock = reader.GetAttribute("pixclock");
obj.HTotal = reader.GetAttribute("htotal");
obj.HBEnd = reader.GetAttribute("hbend");
@@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;
}

View File

@@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers
obj.FlipX = reader.GetAttribute("flipx").AsYesNo();
obj.Width = reader.GetAttribute("width");
obj.Height = reader.GetAttribute("height");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
obj.PixClock = reader.GetAttribute("pixclock");
obj.HTotal = reader.GetAttribute("htotal");
obj.HBEnd = reader.GetAttribute("hbend");
@@ -1179,7 +1179,7 @@ namespace SabreTools.Serialization.Readers
obj.Height = reader.GetAttribute("height");
obj.AspectX = reader.GetAttribute("aspectx");
obj.AspectY = reader.GetAttribute("aspecty");
obj.Refresh = reader.GetAttribute("refresh");
obj.Refresh = NumberHelper.ConvertToDouble(reader.GetAttribute("refresh"));
return obj;
}

View File

@@ -418,7 +418,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("y", video.Y);
writer.WriteOptionalAttributeString("aspectx", video.AspectX);
writer.WriteOptionalAttributeString("aspecty", video.AspectY);
writer.WriteOptionalAttributeString("freq", video.Freq);
writer.WriteOptionalAttributeString("freq", video.Freq?.ToString("0.000000"));
writer.WriteEndElement(); // video
}
}

View File

@@ -395,7 +395,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock);
writer.WriteOptionalAttributeString("htotal", obj.HTotal);
writer.WriteOptionalAttributeString("hbend", obj.HBEnd);
@@ -843,7 +843,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();
}

View File

@@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock);
writer.WriteOptionalAttributeString("htotal", obj.HTotal);
writer.WriteOptionalAttributeString("hbend", obj.HBEnd);
@@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();
}

View File

@@ -393,7 +393,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo());
writer.WriteOptionalAttributeString("width", obj.Width);
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteOptionalAttributeString("pixclock", obj.PixClock);
writer.WriteOptionalAttributeString("htotal", obj.HTotal);
writer.WriteOptionalAttributeString("hbend", obj.HBEnd);
@@ -841,7 +841,7 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("height", obj.Height);
writer.WriteOptionalAttributeString("aspectx", obj.AspectX);
writer.WriteOptionalAttributeString("aspecty", obj.AspectY);
writer.WriteRequiredAttributeString("refresh", obj.Refresh);
writer.WriteRequiredAttributeString("refresh", obj.Refresh?.ToString("0.000000"));
writer.WriteEndElement();
}