/// <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); }