Display referesh to double?

This commit is contained in:
Matt Nadareski
2020-09-04 11:04:58 -07:00
parent 762f8dda27
commit ef414dd48b
4 changed files with 76 additions and 9 deletions

View File

@@ -362,7 +362,6 @@ namespace SabreTools.Library.DatFiles
Tag = reader.GetAttribute("tag"),
DisplayType = reader.GetAttribute("type").AsDisplayType(),
FlipX = reader.GetAttribute("flipx").AsYesNo(),
Refresh = reader.GetAttribute("refresh"),
Source = new Source
{
@@ -392,6 +391,13 @@ namespace SabreTools.Library.DatFiles
display.Height = height;
}
// Set the refresh
if (reader.GetAttribute("refresh") != null)
{
if (Double.TryParse(reader.GetAttribute("refresh"), out double refresh))
display.Refresh = refresh;
}
// Set the pixclock
if (reader.GetAttribute("pixclock") != null)
{
@@ -1597,7 +1603,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("flipx", display.FlipX.FromYesNo());
xtw.WriteOptionalAttributeString("width", display.Width?.ToString());
xtw.WriteOptionalAttributeString("height", display.Height?.ToString());
xtw.WriteOptionalAttributeString("refresh", display.Refresh);
xtw.WriteOptionalAttributeString("refresh", display.Refresh?.ToString("N6"));
xtw.WriteOptionalAttributeString("pixclock", display.PixClock?.ToString());
xtw.WriteOptionalAttributeString("htotal", display.HTotal?.ToString());
xtw.WriteOptionalAttributeString("hbend", display.HBEnd?.ToString());

View File

@@ -1441,7 +1441,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("flipx", display.FlipX.FromYesNo());
xtw.WriteOptionalAttributeString("width", display.Width?.ToString());
xtw.WriteOptionalAttributeString("height", display.Height?.ToString());
xtw.WriteOptionalAttributeString("refresh", display.Refresh);
xtw.WriteOptionalAttributeString("refresh", display.Refresh?.ToString("N6"));
xtw.WriteOptionalAttributeString("pixclock", display.PixClock?.ToString());
xtw.WriteOptionalAttributeString("htotal", display.HTotal?.ToString());
xtw.WriteOptionalAttributeString("hbend", display.HBEnd?.ToString());

View File

@@ -58,7 +58,7 @@ namespace SabreTools.Library.DatItems
/// Refresh rate
/// </summary>
[JsonProperty("refresh", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Refresh { get; set; } // TODO: Float?
public double? Refresh { get; set; }
/// <summary>
/// Pixel clock timer
@@ -144,7 +144,10 @@ namespace SabreTools.Library.DatItems
}
if (mappings.Keys.Contains(Field.DatItem_Refresh))
Refresh = mappings[Field.DatItem_Refresh];
{
if (Double.TryParse(mappings[Field.DatItem_Refresh], out double refresh))
Refresh = refresh;
}
if (mappings.Keys.Contains(Field.DatItem_PixClock))
{
@@ -313,9 +316,9 @@ namespace SabreTools.Library.DatItems
return false;
// Filter on refresh
if (filter.DatItem_Refresh.MatchesPositiveSet(Refresh) == false)
if (filter.DatItem_Refresh.MatchesPositive(null, Refresh) == false)
return false;
if (filter.DatItem_Refresh.MatchesNegativeSet(Refresh) == true)
if (filter.DatItem_Refresh.MatchesNegative(null, Refresh) == true)
return false;
// Filter on pixclock

View File

@@ -201,7 +201,7 @@ namespace SabreTools.Library.Filtering
public FilterItem<bool?> DatItem_FlipX { get; private set; } = new FilterItem<bool?>() { Neutral = null };
public FilterItem<long?> DatItem_Width { get; private set; } = new FilterItem<long?>() { Positive = null, Negative = null, Neutral = null };
public FilterItem<long?> DatItem_Height { get; private set; } = new FilterItem<long?>() { Positive = null, Negative = null, Neutral = null };
public FilterItem<string> DatItem_Refresh { get; private set; } = new FilterItem<string>();
public FilterItem<double?> DatItem_Refresh { get; private set; } = new FilterItem<double?>() { Positive = null, Negative = null, Neutral = null };
public FilterItem<long?> DatItem_PixClock { get; private set; } = new FilterItem<long?>() { Positive = null, Negative = null, Neutral = null };
public FilterItem<long?> DatItem_HTotal { get; private set; } = new FilterItem<long?>() { Positive = null, Negative = null, Neutral = null };
public FilterItem<long?> DatItem_HBEnd { get; private set; } = new FilterItem<long?>() { Positive = null, Negative = null, Neutral = null };
@@ -855,7 +855,7 @@ namespace SabreTools.Library.Filtering
break;
case Field.DatItem_Refresh:
SetStringFilter(DatItem_Refresh, value, negate);
SetDoubleFilter(DatItem_Refresh, value, negate);
break;
case Field.DatItem_PixClock:
@@ -1056,6 +1056,64 @@ namespace SabreTools.Library.Filtering
filterItem.Neutral = true;
}
/// <summary>
/// Set a long? filter
/// </summary>
/// <param name="filterItem">FilterItem to populate</param>
/// <param name="value">String value to add</param>
/// <param name="negate">True to set negative filter, false otherwise</param>
private void SetDoubleFilter(FilterItem<double?> filterItem, string value, bool negate)
{
bool? operation = null;
if (value.StartsWith(">"))
operation = true;
else if (value.StartsWith("<"))
operation = false;
else if (value.StartsWith("="))
operation = null;
string valueString = value.TrimStart('>', '<', '=');
if (!Double.TryParse(valueString, out double valueDouble))
return;
// Equal
if (operation == null && !negate)
{
filterItem.Neutral = valueDouble;
}
// Not Equal
else if (operation == null && negate)
{
filterItem.Negative = valueDouble - 1;
filterItem.Positive = valueDouble + 1;
}
// Greater Than or Equal
else if (operation == true && !negate)
{
filterItem.Positive = valueDouble;
}
// Strictly Less Than
else if (operation == true && negate)
{
filterItem.Negative = valueDouble - 1;
}
// Less Than or Equal
else if (operation == false && !negate)
{
filterItem.Negative = valueDouble;
}
// Strictly Greater Than
else if (operation == false && negate)
{
filterItem.Positive = valueDouble + 1;
}
}
/// <summary>
/// Set a long filter
/// </summary>