Exemplo n.º 1
0
        public object Create(Type targetType, object source)
        {
            if (source != null)
            {
                Type?sourceType = source.GetType();
                if (typeof(IDictionary).IsAssignableFrom(sourceType))
                {
#pragma warning disable CS8604 // Possible null reference argument.
                    return(CreateFromDictionary(source as IDictionary));

#pragma warning restore CS8604 // Possible null reference argument.
                }

                if (typeof(MeshGeometry3D).IsAssignableFrom(sourceType))
                {
#pragma warning disable CS8604 // Possible null reference argument.
                    return(CreateFromMeshGeometry3D(source as MeshGeometry3D));

#pragma warning restore CS8604 // Possible null reference argument.
                }

                if (ParentFactory != null)
                {
                    return(Create(targetType, ParentFactory.Create <IDictionary>(source)));
                }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 2
0
        public object?Create(Type targetType, object source)
        {
            if (targetType != typeof(Model3D))
            {
                return(null);
            }

            if (Ignore(source))
            {
                return(null);
            }
            if (source != null)
            {
                if (source is IDictionary dictionary)
                {
                    return(CreateFromDictionary(dictionary));
                }
            }
            if (ParentFactory != null)
            {
                IDictionary?dictionary = ParentFactory.Create <IDictionary>(source);
                if (dictionary != null)
                {
                    return(CreateFromDictionary(dictionary));
                }
            }
            return(null);
        }
Exemplo n.º 3
0
        public object Create(Type targetType, object source)
        {
            if (targetType == null)
            {
#pragma warning disable CS8603 // Possible null reference return.
                return(null);

#pragma warning restore CS8603 // Possible null reference return.
            }

            if (!typeof(Material).IsAssignableFrom(targetType))
            {
#pragma warning disable CS8603 // Possible null reference return.
                return(null);

#pragma warning restore CS8603 // Possible null reference return.
            }

            if (source != null && source is Brush)
            {
                return(new DiffuseMaterial(source as Brush));
            }
            if (ParentFactory != null)
            {
                Brush?brush = ParentFactory.Create <Brush>(source);
                if (brush != null)
                {
                    return(new DiffuseMaterial(brush));
                }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 4
0
        private object CreateFromStream(Type target_type, Stream stream, object source)
        {
            if (stream == null)
            {
#pragma warning disable CS8603 // Possible null reference return.
                return(null);

#pragma warning restore CS8603 // Possible null reference return.
            }

            if (ReadFunction != null)
            {
                object?instance = ReadFunction(stream);
                stream.Close();

                if (instance is IDictionary dictionary)
                {
                    IDictionary?new_dictionary = dictionary.ConvertTypes(IDictionaryTypes, DefaultObjectType, TypeKey);
                    new_dictionary.DeepUpdateParents();
                    if (source != null && (source is string))
                    {
                        string filename = stream.GetFileName();
                        if (filename.Length > 0)
                        {
                            new_dictionary.SetFileName(filename);
                        }
                        else
                        {
#pragma warning disable CS8604 // Possible null reference argument.
                            new_dictionary.SetFileName(source.ToString());
#pragma warning restore CS8604 // Possible null reference argument.
                        }
                    }
                    instance = new_dictionary;
                }
                if (instance != null)
                {
                    if (target_type.IsInstanceOfType(instance))
                    {
                        return(instance);
                    }

                    if (ParentFactory != null)
                    {
#pragma warning disable CS8603 // Possible null reference return.
                        return(ParentFactory.Create(target_type, instance));

#pragma warning restore CS8603 // Possible null reference return.
                    }
                }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 5
0
        private Transform3D GetTransform3D(object source)
        {
            if (ParentFactory != null)
            {
#pragma warning disable CS8603 // Possible null reference return.
                return(ParentFactory.Create(typeof(Transform3D), source) as Transform3D);

#pragma warning restore CS8603 // Possible null reference return.
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 6
0
        private Model3D GetUnscaledPrimaryModel3D(IDictionary source)
        {
            if (PrimaryModel3DHelperFunction != null)
            {
                Model3D?model = PrimaryModel3DHelperFunction(source);
                if (model != null)
                {
                    return(model);
                }
            }
            if (ParentFactory != null)
            {
                string?type = source.Get <string>("Type");
                if (type.Length > 0)
                {
                    string?modelName = $"Model3D.{type}.xaml";
                    if (namedCache.ContainsKey(modelName))
                    {
                        Model3D?m3d = namedCache[modelName];
                        if (m3d != null)
                        {
                            return(m3d);
                        }
                    }
                    else
                    {
                        Model3D?m3d = ParentFactory.Create <Model3D>(modelName);
                        namedCache.Add(modelName, m3d);
                        if (m3d != null)
                        {
                            return(m3d);
                        }
                    }
                }

                if (ParentFactory.Create(typeof(GeometryModel3D), source) is GeometryModel3D geometry3D)
                {
                    return(geometry3D);
                }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 7
0
        public object Create(Type targetType, object source)
        {
            if (ParentFactory != null)
            {
                object?matrix3D = ParentFactory.Create(typeof(Matrix3D), source);
                if (matrix3D != null)
                {
                    return(new MatrixTransform3D {
                        Matrix = (Matrix3D)matrix3D
                    });
                }
            }

#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 8
0
        public object Create(Type targetType, object source)
        {
            if (source != null && source is IDictionary)
            {
#pragma warning disable CS8604 // Possible null reference argument.
                return(CreateFromDictionary(source as IDictionary));

#pragma warning restore CS8604 // Possible null reference argument.
            }
            if (ParentFactory != null && source != null)
            {
                return(Create(targetType, ParentFactory.Create <IDictionary>(source)));
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 9
0
        private Stream CreateStream(object source)
        {
            Stream?stream = source as Stream;

            if (stream == null && source != null && ParentFactory != null && !callingParent)
            {
                callingParent = true;
                try
                {
                    stream = ParentFactory.Create(typeof(Stream), source) as Stream;
                }
                finally { callingParent = false; }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(stream);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 10
0
        public object Create(Type targetType, object source)
        {
            if (source != null)
            {
                if (source is Color)
                {
                    return(new SolidColorBrush((Color)source));
                }

                if (source is ImageSource)
                {
#pragma warning disable CS8604 // Possible null reference argument.
                    return(CreateFromImageSource(source as ImageSource));

#pragma warning restore CS8604 // Possible null reference argument.
                }
            }
            if (ParentFactory != null)
            {
#pragma warning disable CS8604 // Possible null reference argument.
                object?color = ParentFactory.Create(typeof(Color), source);
#pragma warning restore CS8604 // Possible null reference argument.
                if (color != null)
                {
                    return(Create(targetType, color));
                }

#pragma warning disable CS8604 // Possible null reference argument.
                object?image = ParentFactory.Create(typeof(ImageSource), source);
#pragma warning restore CS8604 // Possible null reference argument.
                if (image != null)
                {
                    return(Create(targetType, image));
                }
            }
#pragma warning disable CS8603 // Possible null reference return.
            return(null);

#pragma warning restore CS8603 // Possible null reference return.
        }
Exemplo n.º 11
0
        public object?Create(Type targetType, object source)
        {
            if (source == null)
            {
                return(null);
            }

            if (targetType == null)
            {
                return(null);
            }

            if (ParentFactory != null)
            {
                Model3D?model3D = ParentFactory.Create <Model3D>(source);
                if (model3D != null)
                {
                    return(new ModelVisual3D {
                        Content = model3D
                    });
                }
            }
            return(null);
        }