/// <summary> /// Returns the C# code for a factory that will instantiate the given <see cref="Visual"/> as a /// Windows.UI.Composition Visual. /// </summary> /// <returns>A tuple containing the C# code and list of referenced asset files.</returns> public static CSharpCodegenResult CreateFactoryCode(CodegenConfiguration configuration) { var generator = new CSharpInstantiatorGenerator( configuration: configuration, stringifier: new CSharpStringifier()); return(new CSharpCodegenResult( csText: generator.GenerateCode(), assets: generator.GetAssetsList() )); }
CSharpInstantiatorGenerator(CodegenConfiguration configuration, Stringifier stringifier) : base( configuration, setCommentProperties: false, stringifier: stringifier) { _s = stringifier; _interface = AnimatedVisualSourceInfo.InterfaceType.GetQualifiedName(stringifier); _sourceInterface = _interface + "Source"; _winUiNamespace = AnimatedVisualSourceInfo.WinUi3 ? "Microsoft.UI" : "Windows.UI"; // This is a hack that is required to use Win2D with WinUI3 as of August 2020. It // will not be necessary when an official Win2D for WinUI3 is released. _winUi3CastHack = AnimatedVisualSourceInfo.WinUi3 ? "(IGeometrySource2D)(object)" : string.Empty; }
CSharpInstantiatorGenerator( CodegenConfiguration configuration, Stringifier stringifier) : base( configuration, setCommentProperties: false, stringifier: stringifier) { _s = stringifier; if (AnimatedVisualSourceInfo.WinUIVersion.Major >= 3) { _winUiNamespace = "Microsoft.UI"; // This is a hack that is required to use Win2D with WinUI3 as of August 2020. It // will not be necessary when an official Win2D for WinUI3 is released. _winUi3CastHack = "(IGeometrySource2D)(object)"; } else { _winUiNamespace = "Windows.UI"; _winUi3CastHack = string.Empty; } }