/// <summary>
        ///  Loads a <see cref="ILayer"/> from an XElement.
        /// </summary>
        /// <param name="customDevice"> The custom-device. </param>
        /// <param name="element"> The source XElement. </param>
        /// <returns> The loaded <see cref="ILayer"/>. </returns>
        public static ILayer LoadILayer(CanvasDevice customDevice, XElement element)
        {
            if (element.Attribute("Type") is XAttribute type2)
            {
                string type = type2.Value;

                //Load
                ILayer layer = XML.CreateLayer(customDevice, type);
                {
                    if (element.Attribute("Id") is XAttribute id)
                    {
                        layer.Id = id.Value;
                    }
                    //if (element.Attribute("Type") is XAttribute type) layer.Type = type.Value;
                    if (element.Attribute("Name") is XAttribute name)
                    {
                        layer.Name = name.Value;
                    }
                    if (element.Attribute("Opacity") is XAttribute opacity)
                    {
                        layer.Opacity = (float)opacity;
                    }
                    if (element.Attribute("BlendMode") is XAttribute blendMode)
                    {
                        layer.BlendMode = Retouch_Photo2.Blends.XML.CreateBlendMode(blendMode.Value);
                    }

                    if (element.Attribute("Visibility") is XAttribute visibility)
                    {
                        layer.Visibility = XML.CreateVisibility(visibility.Value);
                    }
                    if (element.Attribute("TagType") is XAttribute tagType)
                    {
                        layer.TagType = Retouch_Photo2.Blends.XML.CreateTagType(tagType.Value);
                    }

                    if (element.Attribute("IsExpand") is XAttribute isExpand)
                    {
                        layer.IsExpand = (bool)isExpand;
                    }
                    if (element.Attribute("IsSelected") is XAttribute isSelected)
                    {
                        layer.IsSelected = (bool)isSelected;
                    }

                    layer.Load(element);

                    if (element.Element("Style") is XElement style)
                    {
                        layer.Style = Retouch_Photo2.Styles.XML.LoadStyle(style);
                    }
                    if (element.Element("Transform") is XElement transform)
                    {
                        layer.Transform = Retouch_Photo2.Layers.XML.LoadTransform(transform);
                    }
                    if (element.Element("Effect") is XElement effect)
                    {
                        layer.Effect = Retouch_Photo2.Effects.XML.LoadEffect(effect);
                    }
                    if (element.Element("Filter") is XElement filter)
                    {
                        layer.Filter = Retouch_Photo2.Filters.XML.LoadFilter(filter);
                    }
                }
                return(layer);
            }
            else
            {
                return(new GroupLayer(customDevice));
            }
        }
示例#2
0
        /// <summary>
        ///  Loads a <see cref="ILayer"/> from an XElement.
        /// </summary>
        /// <param name="element"> The source XElement. </param>
        /// <returns> The loaded <see cref="ILayer"/>. </returns>
        private static ILayer LoadILayer(XElement element)
        {
            // Load
            string type2 = element.Attribute("Type") is XAttribute type ? type.Value : null;
            ILayer layer = XML.CreateLayer(typeof(ILayer), type2);

            {
                if (element.Attribute("Id") is XAttribute id)
                {
                    layer.Id = id.Value;
                }
                //if (element.Attribute("Type") is XAttribute type) layer.Type = type.Value;
                if (element.Attribute("Name") is XAttribute name)
                {
                    layer.Name = name.Value;
                }
                if (element.Attribute("Opacity") is XAttribute opacity)
                {
                    layer.Opacity = (float)opacity;
                }
                if (element.Attribute("BlendMode") is XAttribute blendMode)
                {
                    if (blendMode.Value != "None")
                    {
                        try
                        {
                            layer.BlendMode = (BlendEffectMode)Enum.Parse(typeof(BlendEffectMode), blendMode.Value);
                        }
                        catch (Exception) { }
                    }
                }

                if (element.Attribute("Visibility") is XAttribute visibility)
                {
                    layer.Visibility = visibility.Value == "Collapsed" ? Visibility.Collapsed : Visibility.Visible;
                }
                if (element.Attribute("TagType") is XAttribute tagType)
                {
                    try
                    {
                        layer.TagType = (TagType)Enum.Parse(typeof(TagType), tagType.Value);
                    }
                    catch (Exception) { }
                }

                if (element.Attribute("IsExpand") is XAttribute isExpand)
                {
                    layer.IsExpand = (bool)isExpand;
                }
                if (element.Attribute("IsSelected") is XAttribute isSelected)
                {
                    layer.IsSelected = (bool)isSelected;
                }

                layer.Load(element);

                if (element.Element("Style") is XElement style)
                {
                    layer.Style = Retouch_Photo2.Styles.XML.LoadStyle(style);
                }
                if (element.Element("Transform") is XElement transform)
                {
                    layer.Transform = Retouch_Photo2.Layers.XML.LoadTransform(transform);
                }
                if (element.Element("Effect") is XElement effect)
                {
                    layer.Effect = Retouch_Photo2.Effects.XML.LoadEffect(effect);
                }
                if (element.Element("Filter") is XElement filter)
                {
                    layer.Filter = Retouch_Photo2.Filters.XML.LoadFilter(filter);
                }
            }
            return(layer);
        }