diff --git a/src/Generator/CodeWriter.cs b/src/Generator/CodeWriter.cs index 826b296..0552c19 100644 --- a/src/Generator/CodeWriter.cs +++ b/src/Generator/CodeWriter.cs @@ -40,6 +40,7 @@ public sealed class CodeWriter : IDisposable _builder.AppendLine(); _builder.AppendLine($"using System;"); + _builder.AppendLine($"using System.Numerics;"); _builder.AppendLine($"using System.Diagnostics;"); _builder.AppendLine($"using System.Runtime.CompilerServices;"); _builder.AppendLine($"using System.Diagnostics.CodeAnalysis;"); diff --git a/src/Generator/Program.cs b/src/Generator/Program.cs index 4e7511d..5498807 100644 --- a/src/Generator/Program.cs +++ b/src/Generator/Program.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using System.Globalization; +using System.Reflection.Metadata; using System.Text; using Newtonsoft.Json; @@ -24,6 +25,9 @@ public static class Program "Graphics.Direct2D.Common.json", "Graphics.Imaging.json", //"Graphics.DirectWrite.json", + //"Graphics.Direct2D.json", + + //"Graphics.Imaging.D2D.json", }; private static readonly Dictionary s_csNameMappings = new() @@ -64,6 +68,7 @@ public static class Program { "Foundation.LUID", "Luid" }, { "Foundation.LARGE_INTEGER", "LargeInteger" }, { "Foundation.ULARGE_INTEGER", "ULargeInteger" }, + { "Foundation.FILETIME", "ulong" }, { "System.Com.IUnknown", "IUnknown" }, { "System.Com.ISequentialStream", "Com.ISequentialStream" }, @@ -84,9 +89,9 @@ public static class Program { "Graphics.Direct3D.D3DVECTOR", "Vector3" }, { "Graphics.Direct3D.D3DMATRIX", "Matrix4x4" }, { "Graphics.Direct2D.Common.D2D_MATRIX_3X2_F", "Matrix3x2" }, - { "Graphics.Direct2D.Common.D2D_MATRIX_4X3_F", "Matrix4x3" }, + { "Graphics.Direct2D.Common.D2D_MATRIX_4X3_F", "Win32.Graphics.Direct2D.Common.Matrix4x3" }, { "Graphics.Direct2D.Common.D2D_MATRIX_4X4_F", "Matrix4x4" }, - { "Graphics.Direct2D.Common.D2D_MATRIX_5X4_F", "Matrix5x4" }, + { "Graphics.Direct2D.Common.D2D_MATRIX_5X4_F", "Win32.Graphics.Direct2D.Common.Matrix5x4" }, { "Graphics.Direct2D.Common.D2D_POINT_2F", "System.Drawing.PointF" }, { "Graphics.Direct2D.Common.D2D_VECTOR_2F", "Vector2" }, { "Graphics.Direct2D.Common.D2D_VECTOR_3F", "Vector3" }, @@ -857,6 +862,7 @@ public static class Program private static readonly HashSet s_visitedEnums = new(); private static readonly HashSet s_visitedStructs = new(); + private static readonly Dictionary>> s_visitedComTypes = new(); private static bool s_generateUnmanagedDocs = true; @@ -1179,11 +1185,26 @@ public static class Program && iterateType.Interface.Name != "IStream" && iterateType.Interface.Name != "IPersistStream") { - iterateType = api.Types.First(item => item.Name == iterateType.Interface.Name); + string fullTypeName = $"{iterateType.Interface.Api}.{iterateType.Interface.Name}"; + iterateType = api.Types.FirstOrDefault(item => item.Name == iterateType.Interface.Name); - foreach (ApiFunction method in iterateType.Methods) + if (iterateType != null) { - methodsToGenerate.Add(new(method, iterateType.Name)); + foreach (ApiFunction method in iterateType.Methods) + { + methodsToGenerate.Add(new(method, iterateType.Name)); + } + } + else + { + var knownMethods = s_visitedComTypes.First(item => item.Key == fullTypeName).Value; + + foreach (var knownMethod in knownMethods) + { + methodsToGenerate.Add(knownMethod); + } + + break; } } @@ -1864,7 +1885,14 @@ public static class Program else if (parameterType.EndsWith("**") == false && parameter.Attrs.Any(item => item is string str && (str == "RetVal" || str == "Out"))) { - if (parameter.Type.Child.Kind != "ApiRef") + if (parameter.Type.Child == null) + { + //if (!IsPrimitive(parameter.Type)) + //{ + // parameterType += "*"; + //} + } + else if (parameter.Type.Child.Kind != "ApiRef") { if (!IsPrimitive(parameter.Type)) { @@ -1960,6 +1988,7 @@ public static class Program } writer.WriteLine(); + s_visitedComTypes.Add($"{writer.Api}.{comType.Name}", methodsToGenerate); } private static bool ShouldSkipConstant(ApiDataConstant constant) diff --git a/src/Vortice.Win32/Generated/Graphics/Direct2D.Common.cs b/src/Vortice.Win32/Generated/Graphics/Direct2D.Common.cs index d34c96a..d07ea83 100644 --- a/src/Vortice.Win32/Generated/Graphics/Direct2D.Common.cs +++ b/src/Vortice.Win32/Generated/Graphics/Direct2D.Common.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Direct3D.Dxc.cs b/src/Vortice.Win32/Generated/Graphics/Direct3D.Dxc.cs index 11ef166..ae81ccd 100644 --- a/src/Vortice.Win32/Generated/Graphics/Direct3D.Dxc.cs +++ b/src/Vortice.Win32/Generated/Graphics/Direct3D.Dxc.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Direct3D.cs b/src/Vortice.Win32/Generated/Graphics/Direct3D.cs index bceb106..d0aa418 100644 --- a/src/Vortice.Win32/Generated/Graphics/Direct3D.cs +++ b/src/Vortice.Win32/Generated/Graphics/Direct3D.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Direct3D11.cs b/src/Vortice.Win32/Generated/Graphics/Direct3D11.cs index 10d6a78..3240fae 100644 --- a/src/Vortice.Win32/Generated/Graphics/Direct3D11.cs +++ b/src/Vortice.Win32/Generated/Graphics/Direct3D11.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Direct3D12.cs b/src/Vortice.Win32/Generated/Graphics/Direct3D12.cs index 71864d1..70ab54e 100644 --- a/src/Vortice.Win32/Generated/Graphics/Direct3D12.cs +++ b/src/Vortice.Win32/Generated/Graphics/Direct3D12.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs b/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs index 8206c6a..9268b4e 100644 --- a/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs +++ b/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Dxgi.cs b/src/Vortice.Win32/Generated/Graphics/Dxgi.cs index 24b03a0..94caffd 100644 --- a/src/Vortice.Win32/Generated/Graphics/Dxgi.cs +++ b/src/Vortice.Win32/Generated/Graphics/Dxgi.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Graphics.cs b/src/Vortice.Win32/Generated/Graphics/Graphics.cs index c101702..63e1e9d 100644 --- a/src/Vortice.Win32/Generated/Graphics/Graphics.cs +++ b/src/Vortice.Win32/Generated/Graphics/Graphics.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis; diff --git a/src/Vortice.Win32/Generated/Graphics/Imaging.cs b/src/Vortice.Win32/Generated/Graphics/Imaging.cs index 0636b78..d5922bb 100644 --- a/src/Vortice.Win32/Generated/Graphics/Imaging.cs +++ b/src/Vortice.Win32/Generated/Graphics/Imaging.cs @@ -8,6 +8,7 @@ // ------------------------------------------------------------------------------ using System; +using System.Numerics; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Diagnostics.CodeAnalysis;