diff --git a/UIX.RenderApi/Microsoft/Iris/IStringEncodable.cs b/UIX.RenderApi/Microsoft/Iris/IStringEncodable.cs new file mode 100644 index 0000000..84feab6 --- /dev/null +++ b/UIX.RenderApi/Microsoft/Iris/IStringEncodable.cs @@ -0,0 +1,6 @@ +namespace Microsoft.Iris; + +public interface IStringEncodable +{ + string EncodeString(); +} diff --git a/UIX.RenderApi/Microsoft/Iris/Render/Inset.cs b/UIX.RenderApi/Microsoft/Iris/Render/Inset.cs index 8f60440..01bb1d5 100644 --- a/UIX.RenderApi/Microsoft/Iris/Render/Inset.cs +++ b/UIX.RenderApi/Microsoft/Iris/Render/Inset.cs @@ -4,9 +4,11 @@ // MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1 // Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll +using System.Collections.Generic; + namespace Microsoft.Iris.Render { - public struct Inset + public struct Inset : IStringEncodable { private int _left; private int _top; @@ -74,6 +76,14 @@ namespace Microsoft.Iris.Render public override string ToString() => base.ToString(); + public string EncodeString() + { + var values = new int[] { Left, Top, Right, Bottom }; + if (new HashSet(values).Count == 1) + return Top.ToString(); + return string.Join(", ", values); + } + internal Point TopLeft { get => new Point(this.Left, this.Top); diff --git a/UIX.RenderApi/Microsoft/Iris/Render/Size.cs b/UIX.RenderApi/Microsoft/Iris/Render/Size.cs index 955ea17..3a42c19 100644 --- a/UIX.RenderApi/Microsoft/Iris/Render/Size.cs +++ b/UIX.RenderApi/Microsoft/Iris/Render/Size.cs @@ -8,7 +8,7 @@ using System; namespace Microsoft.Iris.Render { - public struct Size + public struct Size : IStringEncodable { private int m_width; private int m_height; @@ -106,5 +106,7 @@ namespace Microsoft.Iris.Render size1.Scale(flScale); return size1; } + + public string EncodeString() => $"{Width}, {Height}"; } } diff --git a/UIX/Microsoft/Iris/Drawing/Color.cs b/UIX/Microsoft/Iris/Drawing/Color.cs index 9a11b65..32eaf33 100644 --- a/UIX/Microsoft/Iris/Drawing/Color.cs +++ b/UIX/Microsoft/Iris/Drawing/Color.cs @@ -12,7 +12,7 @@ using System.Text; namespace Microsoft.Iris.Drawing { [Serializable] - public struct Color : ISerializable + public struct Color : ISerializable, IStringEncodable { private const int ARGBAlphaShift = 24; private const int ARGBRedShift = 16; @@ -230,6 +230,8 @@ namespace Microsoft.Iris.Drawing info.AddValue(nameof(Value), Value); } + public string EncodeString() => string.Join(", ", A, R, G, B); + internal static Color Transparent => new(0U); internal static Color Black => new(0xFF00_0000U); diff --git a/UIX/Microsoft/Iris/Drawing/Font.cs b/UIX/Microsoft/Iris/Drawing/Font.cs index 7c5cf0b..5c051db 100644 --- a/UIX/Microsoft/Iris/Drawing/Font.cs +++ b/UIX/Microsoft/Iris/Drawing/Font.cs @@ -6,7 +6,7 @@ namespace Microsoft.Iris.Drawing { - internal sealed class Font + internal sealed class Font : IStringEncodable { private string _fontName; private float _fontHeight; @@ -70,6 +70,22 @@ namespace Microsoft.Iris.Drawing set => _fontName = value; } + public string EncodeString() + { + System.Collections.Generic.List props = new(4) + { + FontName, + _fontHeight + }; + + if (_altFontHeight != default) + props.Add(_altFontHeight); + if (_fontStyle != default) + props.Add(_fontStyle); + + return string.Join(", ", props); + } + public override bool Equals(object obj) => obj is Font font && _fontName == font._fontName && (_fontHeight == (double)font._fontHeight && _altFontHeight == (double)font._altFontHeight) && _fontStyle == font._fontStyle; public override int GetHashCode() => _fontName.GetHashCode() ^ _fontHeight.GetHashCode() ^ _altFontHeight.GetHashCode() ^ _fontStyle.GetHashCode(); diff --git a/UIX/Microsoft/Iris/Layouts/MajorMinor.cs b/UIX/Microsoft/Iris/Layouts/MajorMinor.cs index 0b0acd7..9270833 100644 --- a/UIX/Microsoft/Iris/Layouts/MajorMinor.cs +++ b/UIX/Microsoft/Iris/Layouts/MajorMinor.cs @@ -11,7 +11,7 @@ using System; namespace Microsoft.Iris.Layouts { - internal struct MajorMinor + internal struct MajorMinor : IStringEncodable { private int major; private int minor; @@ -101,5 +101,7 @@ namespace Microsoft.Iris.Layouts public bool IsEmpty => Major == 0 || Minor == 0; public override string ToString() => InvariantString.Format("(Major={0}, Minor={1})", Major, Minor); + + public string EncodeString() => $"{Major}, {Minor}"; } } diff --git a/UIX/Microsoft/Iris/Markup/UIXTypeID.cs b/UIX/Microsoft/Iris/Markup/UIXTypeID.cs index d7857fe..f39e219 100644 --- a/UIX/Microsoft/Iris/Markup/UIXTypeID.cs +++ b/UIX/Microsoft/Iris/Markup/UIXTypeID.cs @@ -6,7 +6,7 @@ namespace Microsoft.Iris.Markup { - internal static class UIXTypeID + public static class UIXTypeID { public const short None = -1; public const short Accessible = 0; diff --git a/UIX/Microsoft/Iris/Markup/UIXTypes.cs b/UIX/Microsoft/Iris/Markup/UIXTypes.cs index 23a558a..36b67c6 100644 --- a/UIX/Microsoft/Iris/Markup/UIXTypes.cs +++ b/UIX/Microsoft/Iris/Markup/UIXTypes.cs @@ -6,7 +6,7 @@ namespace Microsoft.Iris.Markup { - internal static class UIXTypes + public static class UIXTypes { public static TypeSchema MapIDToType(short ID) => ID != -1 ? UIXLoadResultExports.ExportTable[ID] : null;