Beispiel #1
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            int count = reader.ReadInt32();

            List<DescriptorStructure> dss = new List<DescriptorStructure>();

            for (int i = 0; i < count; i++)
            {
                string s = reader.ReadAscii(4);
                string k = reader.ReadAscii(4);
                var c = reader.ReadByte();
                var p = reader.ReadBytes(3);
                var l = reader.ReadInt32();
                var p2 = reader.Position;
                var ds = new DescriptorStructure(reader);
                dss.Add(ds);
                reader.Position = p2 + l;
            }

            props["Items"] = dss;

            value = props;
        }
Beispiel #2
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            int count = reader.ReadInt32();

            List <DescriptorStructure> dss = new List <DescriptorStructure>();

            for (int i = 0; i < count; i++)
            {
                string s  = reader.ReadAscii(4);
                string k  = reader.ReadAscii(4);
                var    c  = reader.ReadByte();
                var    p  = reader.ReadBytes(3);
                var    l  = reader.ReadInt32();
                var    p2 = reader.Position;
                var    ds = new DescriptorStructure(reader);
                dss.Add(ds);
                reader.Position = p2 + l;
            }

            props["Items"] = dss;

            value = props;
        }
 protected override void ReadValue(PsdReader reader, object userData, out byte[] value)
 {
     if (this.Length > 0)
     {
         value = reader.ReadBytes((int)this.Length);
     }
     else
     {
         value = new byte[] { };
     }
 }
 protected override void ReadData(PsdReader reader, object userData)
 {
     if (this.Length > 0)
     {
         ColorModeData = reader.ReadBytes((int)this.Length);
     }
     else
     {
         ColorModeData = new byte[] { };
     }
 }
Beispiel #5
0
        protected override void ReadData(PsdReader reader, object userData)
        {
            PsdLayer     layer   = userData as PsdLayer;
            LayerRecords records = layer.Records;

            using (MemoryStream stream = new MemoryStream(reader.ReadBytes((int)this.Length)))
                using (PsdReader r = new PsdReader(stream, reader.Resolver, reader.Uri))
                {
                    r.Version = reader.Version;
                    this.ReadValue(r, layer.Depth, records.Channels);
                }

            Channels = records.Channels;
        }
Beispiel #6
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties(1);

            // There seems a undocumented zero padding in XMP block...
            // TODO: Find the XMP document that explains how it works
            byte[] bytes = reader.ReadBytes((int)Length);
            byte[] truncatedByteArray = _RemoveTailingZeros(bytes);
            string xmpString          = Encoding.UTF8.GetString(truncatedByteArray);

            props.Add("Xmp", xmpString);

            value = props;
        }
Beispiel #7
0
        protected override void ReadData(PsdReader reader, object userData)
        {
            int count = reader.ReadInt32();

            List <StructureDescriptor> dss = new List <StructureDescriptor>();

            for (int i = 0; i < count; i++)
            {
                string s  = reader.ReadAscii(4);
                string k  = reader.ReadAscii(4);
                var    c  = reader.ReadByte();
                var    p  = reader.ReadBytes(3);
                var    l  = reader.ReadInt32();
                var    p2 = reader.Position;
                var    ds = new StructureDescriptor(reader);
                dss.Add(ds);
                reader.Position = p2 + l;
            }

            //props["Items"] = dss;
        }
Beispiel #8
0
        protected override void ReadData(PsdReader reader, object userData)
        {
            var version = reader.ReadInt32();
            var flags = reader.ReadUInt32();

            var bezierDescriptors = new List<BezierDescriptor>();

            while (reader.Position + 26 <= EndPosition)
            {
                var descriptor = reader.ReadUInt16();

                switch (descriptor)
                {
                    case 0:
                    {
                        var subpath = new BezierSubpathRecord();
                        bezierDescriptors.Add(subpath);

                        subpath.Descriptor = descriptor;
                        subpath.IsClosed = true;
                        subpath.NumPoints = reader.ReadInt16();
                        reader.ReadBytes(22);
                        break;
                    }

                    case 3:
                    {
                        var subpath = new BezierSubpathRecord();
                        bezierDescriptors.Add(subpath);

                        subpath.Descriptor = descriptor;
                        subpath.NumPoints = reader.ReadInt16();
                        reader.ReadBytes(22);
                        break;
                    }

                    case 1:
                    case 2:
                    case 4:
                    case 5:
                    {
                        var knot = new BezierKnot();
                        bezierDescriptors.Add(knot);

                        knot.Descriptor = descriptor;
                        knot.Point1Y = ReadBezierPoint(reader);
                        knot.Point1X = ReadBezierPoint(reader);
                        knot.Point2Y = ReadBezierPoint(reader);
                        knot.Point2X = ReadBezierPoint(reader);
                        knot.Point3Y = ReadBezierPoint(reader);
                        knot.Point3X = ReadBezierPoint(reader);
                        break;
                    }

                    case 6:
                    {
                        var record = new BezierPathFillRuleRecord();
                        bezierDescriptors.Add(record);

                        record.Descriptor = descriptor;
                        reader.ReadBytes(24);
                        break;
                    }

                    case 7:
                    {
                        var record = new BezierClipboardRecord();
                        bezierDescriptors.Add(record);

                        record.Descriptor = descriptor;
                        reader.ReadBytes(24);
                        break;
                    }

                    case 8:
                    {
                        var record = new BezierInitialFillRuleRecord();
                        bezierDescriptors.Add(record);

                        record.Descriptor = descriptor;
                        record.FillStartMode = reader.ReadInt16();
                        reader.ReadBytes(22);
                        break;
                    }

                    default:
                        reader.ReadBytes(24);
                        break;
                }
            }

            Beziers = bezierDescriptors.ToArray();
        }