/// <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()
                       ));
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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;
            }
        }