Ejemplo n.º 1
0
        public override void Write(BinaryPSDWriter writer)
        {
            writer.StartLengthBlock(typeof(uint));
            if (this.Rectangle != null)
            {
                writer.WritePSDRectangle(this.Rectangle); //new Rectangle(this.Rectangle).Write(writer);
                writer.Write(this._color);
                writer.Write(this._flags);

                if (this._otherRectangle != null)
                {
                    writer.Write(this._flags2);
                    writer.Write(this._maskBg);
                    writer.WritePSDRectangle(this._otherRectangle); //new Rectangle(this._otherRectangle).Write(writer);
                }
                else
                {
                    writer.Write((short)0); //padding
                }
            }
            writer.EndLengthBlock();
        }
Ejemplo n.º 2
0
        public override void Write(BinaryPSDWriter writer)
        {
            writer.StartLengthBlock(typeof(uint));
            if (this.Rectangle != null)
            {
                writer.WritePSDRectangle(this.Rectangle); //new Rectangle(this.Rectangle).Write(writer);
                writer.Write(this._color);
                writer.Write(this._flags);

                if (this._otherRectangle != null)
                {
                    writer.Write(this._flags2);
                    writer.Write(this._maskBg);
                    writer.WritePSDRectangle(this._otherRectangle); //new Rectangle(this._otherRectangle).Write(writer);
                }
                else
                    writer.Write((short)0); //padding
            }
            writer.EndLengthBlock();
        }
Ejemplo n.º 3
0
        public void Write(BinaryPSDWriter writer)
        {
            writer.WritePSDRectangle(this._rect); // new Rectangle(this._rect).Write(writer);

            writer.Write((ushort)this._channels.Count);
            foreach (Channel channel in this._channels.Values)
            {
                channel.Write(writer);
            }

            writer.Write("8BIM");

            BlendKeys     bk    = (BlendKeys)Enum.Parse(typeof(BlendKeys), this.BlendKey);
            _blendKeysPsd bkPsd = (_blendKeysPsd)(int)bk;

            writer.Write(bkPsd.ToString());

            writer.Write(this.Opacity);
            writer.Write(this.Clipping);
            writer.Write(this.Flags);
            writer.Write((byte)0); //padding
            writer.StartLengthBlock(typeof(uint));

            if (this._mask != null || (this._blendRanges != null && this._blendRanges.Count > 0) || !string.IsNullOrEmpty(this.Name))
            {
                if (this._mask != null)
                {
                    this._mask.Write(writer);
                }
                else
                {
                    writer.Write((uint)0); //TODO: should be a static of Mask..?
                }
                //blending ranges
                writer.Write((uint)this._blendRanges.Count * 4);
                foreach (System.Drawing.Color clr in this._blendRanges)
                {
                    writer.Write((uint)clr.ToArgb());
                }


                //why is there padding here? Seems unnecessary.
                long namePosition = writer.BaseStream.Position;

                writer.WritePascalString(this.Name);

                int paddingBytes = (int)((writer.BaseStream.Position - namePosition) % 4);
                for (int i = 0; i < paddingBytes; i++)
                {
                    writer.Write((byte)0);
                }


                foreach (LayerResource res in this._resources.Values)
                {
                    res.Write(writer);
                }
            }

            writer.EndLengthBlock();
        }
Ejemplo n.º 4
0
        public void Write(BinaryPSDWriter writer)
        {
            writer.WritePSDRectangle(this._rect); // new Rectangle(this._rect).Write(writer);

            writer.Write((ushort)this._channels.Count);
            foreach (Channel channel in this._channels.Values)
            {
                channel.Write(writer);
            }

            writer.Write("8BIM");

            BlendKeys bk = (BlendKeys)Enum.Parse(typeof(BlendKeys), this.BlendKey);
            _blendKeysPsd bkPsd = (_blendKeysPsd)(int)bk;
            writer.Write(bkPsd.ToString());

            writer.Write(this.Opacity);
            writer.Write(this.Clipping);
            writer.Write(this.Flags);
            writer.Write((byte)0); //padding
            writer.StartLengthBlock(typeof(uint));

            if (this._mask != null || (this._blendRanges != null && this._blendRanges.Count > 0) || !string.IsNullOrEmpty(this.Name))
            {
                if (this._mask != null)
                    this._mask.Write(writer);
                else
                    writer.Write((uint)0); //TODO: should be a static of Mask..?

                //blending ranges
                writer.Write((uint)this._blendRanges.Count * 4);
                foreach (System.Drawing.Color clr in this._blendRanges)
                    writer.Write((uint)clr.ToArgb());

                //why is there padding here? Seems unnecessary.
                long namePosition = writer.BaseStream.Position;

                writer.WritePascalString(this.Name);

                int paddingBytes = (int)((writer.BaseStream.Position - namePosition) % 4);
                for (int i = 0; i < paddingBytes; i++)
                    writer.Write((byte)0);

                foreach (LayerResource res in this._resources.Values)
                {
                    res.Write(writer);
                }
            }

            writer.EndLengthBlock();
        }