/// <summary> /// Replaces resources in layer by updated or new ones. /// </summary> /// <param name="psdLayer">The psd layer.</param> /// <param name="pathResource">The path resource.</param> /// <param name="vogkResource">The vector origination data resource.</param> /// <param name="socoResource">The solid color resource.</param> private static void ReplaceVectorPathDataResourceInLayer(Layer psdLayer, VectorPathDataResource pathResource, VogkResource vogkResource, SoCoResource socoResource) { bool pathResourceExist = false; bool vogkResourceExist = false; bool socoResourceExist = false; List <LayerResource> resources = new List <LayerResource>(psdLayer.Resources); for (int i = 0; i < resources.Count; i++) { LayerResource resource = resources[i]; if (resource is VectorPathDataResource) { resources[i] = pathResource; pathResourceExist = true; } else if (resource is VogkResource) { resources[i] = vogkResource; vogkResourceExist = true; } else if (resource is SoCoResource) { resources[i] = socoResource; socoResourceExist = true; } } if (!pathResourceExist) { resources.Add(pathResource); } if (!vogkResourceExist) { resources.Add(vogkResource); } if (!socoResourceExist) { resources.Add(socoResource); } psdLayer.Resources = resources.ToArray(); }
public Effects(BinaryPSDReader reader) : base(reader) { BinaryPSDReader r = this.GetDataReader(); r.BaseStream.Position += 2; //unused ushort nNumEffects = r.ReadUInt16(); this._resources = new Dictionary <string, LayerResource>(); for (int nEffectNum = 0; nEffectNum < nNumEffects; nEffectNum++) { EffectBase res = (EffectBase)LayerResource.ReadLayerResource(r, typeof(EffectBase)); //if (res.Tag != "cmnS") // continue; this._resources.Add(res.Tag, res); // case "sofi": //unknown } this.Data = null; }
/// <summary> /// Removes the vector path data from input layer. /// </summary> /// <param name="psdLayer">The psd layer.</param> public static void RemoveVectorPathDataFromLayer(Layer psdLayer) { List <LayerResource> oldResources = new List <LayerResource>(psdLayer.Resources); List <LayerResource> newResources = new List <LayerResource>(); for (int i = 0; i < oldResources.Count; i++) { LayerResource resource = oldResources[i]; if (resource is VectorPathDataResource || resource is VogkResource || resource is SoCoResource) { continue; } else { newResources.Add(resource); } } psdLayer.Resources = newResources.ToArray(); }