using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core.Tools; namespace SabreTools.DatItems.Formats { /// /// Represents one machine display /// [JsonObject("display"), XmlRoot("display")] public sealed class Display : DatItem { #region Fields /// /> protected override ItemType ItemType => ItemType.Display; #endregion #region Constructors public Display() : base() { } public Display(Models.Metadata.Display item) : base(item) { // Process flag values if (GetBoolFieldValue(Models.Metadata.Display.FlipXKey) != null) SetFieldValue(Models.Metadata.Display.FlipXKey, GetBoolFieldValue(Models.Metadata.Display.FlipXKey).FromYesNo()); if (GetInt64FieldValue(Models.Metadata.Display.HBEndKey) != null) SetFieldValue(Models.Metadata.Display.HBEndKey, GetInt64FieldValue(Models.Metadata.Display.HBEndKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.HBStartKey) != null) SetFieldValue(Models.Metadata.Display.HBStartKey, GetInt64FieldValue(Models.Metadata.Display.HBStartKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.HeightKey) != null) SetFieldValue(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Display.HeightKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.HTotalKey) != null) SetFieldValue(Models.Metadata.Display.HTotalKey, GetInt64FieldValue(Models.Metadata.Display.HTotalKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.PixClockKey) != null) SetFieldValue(Models.Metadata.Display.PixClockKey, GetInt64FieldValue(Models.Metadata.Display.PixClockKey).ToString()); if (GetDoubleFieldValue(Models.Metadata.Display.RefreshKey) != null) SetFieldValue(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Display.RefreshKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.RotateKey) != null) SetFieldValue(Models.Metadata.Display.RotateKey, GetInt64FieldValue(Models.Metadata.Display.RotateKey).ToString()); if (GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey) != null) SetFieldValue(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey).AsEnumValue().AsStringValue()); if (GetInt64FieldValue(Models.Metadata.Display.VBEndKey) != null) SetFieldValue(Models.Metadata.Display.VBEndKey, GetInt64FieldValue(Models.Metadata.Display.VBEndKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.VBStartKey) != null) SetFieldValue(Models.Metadata.Display.VBStartKey, GetInt64FieldValue(Models.Metadata.Display.VBStartKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.VTotalKey) != null) SetFieldValue(Models.Metadata.Display.VTotalKey, GetInt64FieldValue(Models.Metadata.Display.VTotalKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Display.WidthKey) != null) SetFieldValue(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Display.WidthKey).ToString()); } public Display(Models.Metadata.Video item) : base() { SetFieldValue(Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Models.Metadata.Video.AspectXKey))); SetFieldValue(Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Models.Metadata.Video.AspectYKey))); SetFieldValue(Models.Metadata.Display.DisplayTypeKey, item.ReadString(Models.Metadata.Video.ScreenKey).AsEnumValue().AsStringValue()); SetFieldValue(Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Models.Metadata.Video.HeightKey))); SetFieldValue(Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Models.Metadata.Video.RefreshKey))); SetFieldValue(Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Models.Metadata.Video.WidthKey))); switch (item.ReadString(Models.Metadata.Video.OrientationKey)) { case "horizontal": SetFieldValue(Models.Metadata.Display.RotateKey, 0); break; case "vertical": SetFieldValue(Models.Metadata.Display.RotateKey, 90); break; } // Process flag values if (GetInt64FieldValue(Models.Metadata.Video.AspectXKey) != null) SetFieldValue(Models.Metadata.Video.AspectXKey, GetInt64FieldValue(Models.Metadata.Video.AspectXKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Video.AspectYKey) != null) SetFieldValue(Models.Metadata.Video.AspectYKey, GetInt64FieldValue(Models.Metadata.Video.AspectYKey).ToString()); if (GetInt64FieldValue(Models.Metadata.Video.HeightKey) != null) SetFieldValue(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Video.HeightKey).ToString()); if (GetDoubleFieldValue(Models.Metadata.Video.RefreshKey) != null) SetFieldValue(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Video.RefreshKey).ToString()); if (GetStringFieldValue(Models.Metadata.Video.ScreenKey) != null) SetFieldValue(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Video.ScreenKey).AsEnumValue().AsStringValue()); if (GetInt64FieldValue(Models.Metadata.Video.WidthKey) != null) SetFieldValue(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Video.WidthKey).ToString()); } #endregion } }