/// <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();
            }
Esempio n. 2
0
        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();
            }